diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json index b120500fa7..ef9cd885ea 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json @@ -3,7 +3,7 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "^4.4.3", + "@abp/aspnetcore.mvc.ui.theme.shared": "^4.4.4", "highlight.js": "^9.13.1" }, "devDependencies": {} diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js index 1fee6e798d..d7b5d2d9c4 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js @@ -1,4 +1,6 @@ /* https://select2.org/troubleshooting/common-problems */ -$.fn.modal.Constructor.prototype._enforceFocus = function () { }; \ No newline at end of file +if ($.fn.modal) { + $.fn.modal.Constructor.prototype._enforceFocus = function () { }; +} diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock index a8845ef5c3..88b28dd51c 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock @@ -2,30 +2,30 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.shared@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.3.tgz#464148bbf641e6988852235f94dc3393131c657e" - integrity sha512-/aXlX5JZ/CYD6KdIBL2V216aNidqxf7ugU9dZPK1FbGSixN805lJVIu766ufEA5xZrMIGPL/O7MZmu+hJyclTA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.4.3" - "@abp/bootstrap" "~4.4.3" - "@abp/bootstrap-datepicker" "~4.4.3" - "@abp/datatables.net-bs4" "~4.4.3" - "@abp/font-awesome" "~4.4.3" - "@abp/jquery-form" "~4.4.3" - "@abp/jquery-validation-unobtrusive" "~4.4.3" - "@abp/lodash" "~4.4.3" - "@abp/luxon" "~4.4.3" - "@abp/malihu-custom-scrollbar-plugin" "~4.4.3" - "@abp/select2" "~4.4.3" - "@abp/sweetalert" "~4.4.3" - "@abp/timeago" "~4.4.3" - "@abp/toastr" "~4.4.3" - -"@abp/aspnetcore.mvc.ui@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.3.tgz#b7c217f23d39793a63baff9a56ff063bb0da3049" - integrity sha512-dVZe5HcKRTg0gfWom7vY70JRZkHm1nFtYWq+ciEPvVqPAClzDEvJucoKiUTzfgmPQO13Yv5/GonTV99MV9sLHg== +"@abp/aspnetcore.mvc.ui.theme.shared@^4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.4.tgz#22191efb159572abbd071e12cce847768721a2ee" + integrity sha512-Fp4OXxaSSsTzDlWlVYksSTKXbXvUdILbJNlk+r03TD7VmJCaNx49BxLyUEhJIyP3SY8oOno1UnsDjygbFHJ0xw== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.4.4" + "@abp/bootstrap" "~4.4.4" + "@abp/bootstrap-datepicker" "~4.4.4" + "@abp/datatables.net-bs4" "~4.4.4" + "@abp/font-awesome" "~4.4.4" + "@abp/jquery-form" "~4.4.4" + "@abp/jquery-validation-unobtrusive" "~4.4.4" + "@abp/lodash" "~4.4.4" + "@abp/luxon" "~4.4.4" + "@abp/malihu-custom-scrollbar-plugin" "~4.4.4" + "@abp/select2" "~4.4.4" + "@abp/sweetalert" "~4.4.4" + "@abp/timeago" "~4.4.4" + "@abp/toastr" "~4.4.4" + +"@abp/aspnetcore.mvc.ui@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.4.tgz#2f8e9488cad566f333d62fa717621477fb7fe658" + integrity sha512-/ngxU+vyUfBfpJ7+4/2Fyo5arUAY+LrjauoH9rkdXxpNjNNKjSUsoVqRAwRc1QMJh3iuUOeJgzx0gtkcE2ihiQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -34,145 +34,145 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.3.tgz#08fd1642ede232badb62a1536982ad2bfce6c265" - integrity sha512-pwb+3DbLkhuNnjD74UwqZgK5hnoxAFFu8y7qlJEkSiKsLWrKNlJS+PHF1LLifPqXogU1MKwc18AuXnHOEKjzbQ== +"@abp/bootstrap-datepicker@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.4.tgz#f2bddae93c4d126f926e4c9f0b4d41b5638ec4ba" + integrity sha512-WfP8KqMNcwAIyVim0MpyMo7sg1kVd9LzrqeAOdu5nPrJ9iV5N3y/JIw4JUkSaOh/zQPLgZUMg1NEhDHOkbaOHw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.3.tgz#76968df98fd5c6e5d26abea9cea5c9d76646d24e" - integrity sha512-InA3AI1ydkqd7AYz+f9RAag1h/uhFsFAFGIo34jllIeFhG4C59EbkNwdWDk96lNHmt0qutQYydsO6WKPlgnjYA== +"@abp/bootstrap@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.4.tgz#34ff3d94cea5b95fa78acdd5837d36569e0244db" + integrity sha512-fE8MsiUJD7K/lzKCsQ5FUU6KbZL6GORBMUdenm5OAUGpQWKPdLZ8mF2rjNsb2+kQgVQCuei7eYl+6712idCF9A== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.3.tgz#fc79a2eebf37a61a6cc05287b722750000f38522" - integrity sha512-gQ2rNyj1MpYCfLTg7Id/20AH4dqs0XIt/n+WqlgeGoYvEpAm4lakHWL7mxZaDQ+iMI/lVVrBhuzwuQv7xKpEIQ== +"@abp/core@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.4.tgz#e157da92b884d7d9a1e3ba50f65be42c60047d78" + integrity sha512-t3Mu7Bvs0o439CVSx9uxBJ+yTFrt2Pyep9/6Vh6Su+b4aoZeQt6ZTKWeJqUVZ7Y/LMt+AbJ/dtbFHvhV8yVuXg== dependencies: - "@abp/utils" "^4.4.3" + "@abp/utils" "~4.4.4" -"@abp/datatables.net-bs4@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.3.tgz#69d3704d057fe39c3b4aff0654f098fac3a27f49" - integrity sha512-Rs8u9BqaVnA7SYhaP849dVNQjaUdO3y5d95b5hv9kLgxquIEf/FIAmGMc0p9BkCK74SkRJ3WJLlR8DXxLi/tEw== +"@abp/datatables.net-bs4@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.4.tgz#37f4c5664ba1a8c4f5b03e675192f6b0ef66cf1b" + integrity sha512-byccQ1dSzhxpLggDwyPoOSOGF+6lBrr9r+WC3OCzWkBUuD6gXpRzDumjAAgIe12hGfXGDRibuD7Ji3qPLzcHzw== dependencies: - "@abp/datatables.net" "~4.4.3" + "@abp/datatables.net" "~4.4.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.3.tgz#1515dcc2bdc7c65c1f24a366c738e1b21ad05723" - integrity sha512-j0cIadlcIOLb/ZQnbqXi4sMEgyLCFA08GMIljvN6GhBObZjMQh4Eazk/B+a4xw+ATk0rbAW3dJyMx80zpi82cg== +"@abp/datatables.net@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.4.tgz#add4b07eef578dd02f84892bbe495642459c4669" + integrity sha512-+9JHEu71xADrTFIKoujXAO0nwUvAuRU9gJpVuJFg4G6juILbEqARo2mUTXEx+UyqnzhwoRJ0K1VFyBJnCY0R0Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" datatables.net "^1.10.21" -"@abp/font-awesome@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.3.tgz#9b0b03da07245e4458305e54490b4e37cbcc2b40" - integrity sha512-R6s0jcAhmpUTdc4b/NJkfHXbXblmcuTNwiNG/CJJ/QNrVhk7OolzyqR5k/moaBpb4Uaqf5u07Aau24rOH35q5w== +"@abp/font-awesome@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.4.tgz#47ff0c880ceb95382e0b1371912230cd7d7602c8" + integrity sha512-lkuyC7drFfzavkNJNLuQ+EJYTBb5ZlPNPnGFAxEpRyjJuJ5j+n84JxVBXwg+oPOfmZ+hOeEQPA7j7TdcC4EZDQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.3.tgz#3d5760e9ece4984165304fa028a5eb997adc4d9f" - integrity sha512-lk0QYruQVwXhVFYBiIrNx5zqF7fY7PKuGGvPQMHyeNaljvpbuK5FPwkge0y6nToWA4Y7PhSCYBU7xvkBuqEDgA== +"@abp/jquery-form@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.4.tgz#0638484b9318ba98acaf765aac0396f5f523dce5" + integrity sha512-JWN82DzSbSk2vAPQaapv+8PPCN8si4peLoWJAoHTVizAvis3YamdcG+QLYbTCAVKRlh7kiLRgbAAroy3ppbZ7Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.3.tgz#c08e336debe60a119a5abd0cb66032da6ace6b08" - integrity sha512-mfvYChTALH5nmB0docrEkS5/+Yxt6SgbQOjPVuQx5PgqoVscmf2/JvsBnW73/YVdQBkVXs339hoDGPA6K2WR9w== +"@abp/jquery-validation-unobtrusive@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.4.tgz#2ef0ce29eeb9e6aac9a87338a67aab2060b63026" + integrity sha512-XA9s0uzGXjBju1ZS42xd3IWproSxLBdGEZIYoSbVmaxS0YDBa8FqffbNb/fgY9M8dqujZEasDVuQPhXLBRN+jA== dependencies: - "@abp/jquery-validation" "~4.4.3" + "@abp/jquery-validation" "~4.4.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.3.tgz#331f3671e6e37bed4dc737942e8eb2a6d1297722" - integrity sha512-RjKn9xxoYQz0v8yzWcVlbIQYZQTcXgYFX7GMJf04V/QbdU6vsge+5vHKzhcaW5XWL8+GgKHTqqoxbqzdJykaPA== +"@abp/jquery-validation@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.4.tgz#fa71e1729b692b40097175d68caad29ea13d5155" + integrity sha512-vrP/Vpne86GbPnHR8M8PGvm+B9kGd/JJiPzVN/egxEvvBKdw0APGk9R03Tji2Qu8CuZxvPnKzHHBwKRinWX3Ng== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-validation "^1.19.2" -"@abp/jquery@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.3.tgz#9d2dc238596a6e5c878b5be4b1d49e7e8f95aec4" - integrity sha512-BN2KU1mw0hyQD8/61ZOIDM0hyMDkhZix4TOWCQa3s18pWHlBEsjKVnINQlz9J9k4TZEdQP9D3wZmw+XUfZjoIw== +"@abp/jquery@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.4.tgz#cbf5f99562ad5f01c41aa61704b0136c4ad68594" + integrity sha512-0fltJprq9DMHHWeTAN7i8kAcod5czQ48LdjeIY3wuLDWkGgMVcfarECQ9cu7QekMryB0HFdrUjMJHIhxqzxc3Q== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" jquery "~3.6.0" -"@abp/lodash@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.3.tgz#8e936ebc54a9043eee80cb22f3dad5ea8a2306cb" - integrity sha512-QKFjdRd8cEZp7fg9MhuFhD5CP3MBw7CfaJ3yj0W1e5Tx+xtV+rYz4PrOE8/BLb4un7gxqUrEWBgdIzY+lBR7mQ== +"@abp/lodash@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.4.tgz#8abd3986bcf64561ecbc86f23f53677b3c34eda9" + integrity sha512-IyAZHiR1vPYhbla0lTH/iYK38PCR+9wP5zgrWGD0JSP9R642GEEhdeiuzwclv1aNGretg+TSATr+zSWB5V1DYQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" lodash "^4.17.15" -"@abp/luxon@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.3.tgz#bd3328f45714155870bc8a91d41a197a613392b0" - integrity sha512-rPVzSXEy+rJZLIQ10boOq6suQAZQWJyB5P+rvfSx8h9sbRpsQ5fJOX2ShnUUf/+49KHzRRIqy+vrhr1oiE0C8Q== +"@abp/luxon@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.4.tgz#429b28dddbd8fa65c6c58978451d426bb886c5a3" + integrity sha512-pw75sGoQ/d4OaNlmGwt55Eq7AGWXUBuXyrsNQWSJmkPV9AS2s//ZoxZut1Wu/qaKo5DV4VitEW1U21MuKoEZPA== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.3.tgz#194f39ebbabad7853089549a7e19cfd2a7393e98" - integrity sha512-bhME41UsDCPGxnLP+zqH8nsx1uAxRR8tAeBKOJV24Xf8FHEjUQEDBXG0t1PBYGZVn1/0Ugao7Z12G9uZOiZVog== +"@abp/malihu-custom-scrollbar-plugin@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.4.tgz#fea9aa4755993dac45a8ad10938da789ec523518" + integrity sha512-Mgtzpw94SjN91YWPdV/TfvDt5JZNpW6iCHfL2NjfH3sTXCywK/CanmhdQ0FYJCasRWVPTHfQPWydFsnyzHWXRQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.3.tgz#71015901aae117360f876c744903613494800c83" - integrity sha512-s7ArMLq2LC0m1oFcuCJghf5lEnGbq1D8/WaIKGmmD0ERL0g5xMccFlNbXm+Z79MJoTvQFssSLPTLZICjzWPKJw== +"@abp/select2@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.4.tgz#80d0e0b64cec86a3aa069e9086958946f631d2bf" + integrity sha512-8qx0nj9ZHrdnEPccpLhavHu4YnVp0Z5ZyfpfACVS2GgaxsR31DbltlGdnr2IfRyhK8nJWLNsW8UNhSoXQwGYEw== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" select2 "^4.0.13" -"@abp/sweetalert@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.3.tgz#287b9c89f90885742b074b4e3a427f0ec482952d" - integrity sha512-tAEgHMaTe+E+uS+Mt8XV3dt5yJJHg01Zsbp4ojO3wvdoAS6MKRXWdH05u3ZdwRQrJFbSgQjY85vWn/a/PnYRng== +"@abp/sweetalert@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.4.tgz#1af8934290d4e5adb7c620363ef2a9b746a6eeab" + integrity sha512-TgXm4rhqzTghKzgbxDT5NQcQ/PRFkgwJtnNWZK3XDZiKzw0auT8Wa3GtSsJJD5tl3Dx6VfnTtmf0gpPU5/9fKQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" sweetalert "^2.1.2" -"@abp/timeago@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.3.tgz#7d31b9fcc128e9b8c6bb7870c4284427e9f9f383" - integrity sha512-E8FeAraStlYsHz6D1oBrwM5eHhZeCGrP7aA768Ke5UGIZPoYwyIIYLRfK4MCoCLKgTVlRrUn0Dj7Xkj9tWOfBQ== +"@abp/timeago@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.4.tgz#91ddb61439eaa138a42b9179ec92845efb05af29" + integrity sha512-r53FieaMDar60tGAu+NLr2qCem1+NhPgd7MtYEemJil8HUYci7T0fXvWcYhlrn98zipzEx3eiWo4eBwvIP8MLg== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" timeago "^1.6.7" -"@abp/toastr@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.3.tgz#45ef155fdbb6134a50794e456f820671c72e4105" - integrity sha512-dmKYS7iw/a+eWCD+J+nZ1htmGEjJSCsV1H8dDwA+ZxYJrE2/ejUh0LZ+b8Hsvobqfe/6bwYBj6oe0R9+vszCfg== +"@abp/toastr@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.4.tgz#1cd04ad6dfcb866bfaad3ec288407b0bf3f47c41" + integrity sha512-B7Q0Gza71nITTbryHcHqiIxtJzFbVmXeoPlcLlc/i4zvMaoibihevN10vXmPnfkdQUvTgViIjwA4/ZnBmyM11Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" toastr "^2.1.4" -"@abp/utils@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.3.tgz#5d6939be5463adaa938357d74d1a35fed21b0115" - integrity sha512-B2E89fhM7vKDz9He6EeNc9P5RVYThiBLpTkKvJTeXG+DJtrP2ZbEICe1fcDA48wLFokXXKgx/SjoJlMvObhilQ== +"@abp/utils@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.4.tgz#0bd79fa4635224fcae7ff61224a8c54266db73bf" + integrity sha512-h8Nt2OPqi8EiXKAuvJIpBlCHhavL7BHr+ntJXY6yM4aCdcQtJdSAgNmh0skzEGnf1hZxrYOugtAz4Pk1WNjv/g== dependencies: just-compare "^1.3.0" diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json index b6296c9d9f..9184d879ea 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json @@ -3,8 +3,8 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.3", - "@abp/prismjs": "^4.4.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.4", + "@abp/prismjs": "^4.4.4" }, "devDependencies": {} } diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js index 1fee6e798d..d7b5d2d9c4 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js @@ -1,4 +1,6 @@ /* https://select2.org/troubleshooting/common-problems */ -$.fn.modal.Constructor.prototype._enforceFocus = function () { }; \ No newline at end of file +if ($.fn.modal) { + $.fn.modal.Constructor.prototype._enforceFocus = function () { }; +} diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock index 004a774613..39d3f42d0f 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.3.tgz#26b230021334f7859fbb80f9c379a1192cc3fe97" - integrity sha512-FR1XIiZljhjBuHQKr2kdd0gD82sy8+oVPrJ+BrSKK3N4OsOTpVxZnUhixLeDRv1Lmw3twwmLCEcp8snPix/wPg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.3.tgz#464148bbf641e6988852235f94dc3393131c657e" - integrity sha512-/aXlX5JZ/CYD6KdIBL2V216aNidqxf7ugU9dZPK1FbGSixN805lJVIu766ufEA5xZrMIGPL/O7MZmu+hJyclTA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.4.3" - "@abp/bootstrap" "~4.4.3" - "@abp/bootstrap-datepicker" "~4.4.3" - "@abp/datatables.net-bs4" "~4.4.3" - "@abp/font-awesome" "~4.4.3" - "@abp/jquery-form" "~4.4.3" - "@abp/jquery-validation-unobtrusive" "~4.4.3" - "@abp/lodash" "~4.4.3" - "@abp/luxon" "~4.4.3" - "@abp/malihu-custom-scrollbar-plugin" "~4.4.3" - "@abp/select2" "~4.4.3" - "@abp/sweetalert" "~4.4.3" - "@abp/timeago" "~4.4.3" - "@abp/toastr" "~4.4.3" - -"@abp/aspnetcore.mvc.ui@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.3.tgz#b7c217f23d39793a63baff9a56ff063bb0da3049" - integrity sha512-dVZe5HcKRTg0gfWom7vY70JRZkHm1nFtYWq+ciEPvVqPAClzDEvJucoKiUTzfgmPQO13Yv5/GonTV99MV9sLHg== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.4.tgz#ecaaee9d8af8e14a1c9fa65bf3cb6e56c6a82e99" + integrity sha512-FBctV4JuYnTqCCzA/1EG2wUdTYYcilTNSWvk/4YZkndvu9T5iu48qdac1Gq3Ux8JIFer9D0oAPld0YlweYYOGw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.4.tgz#22191efb159572abbd071e12cce847768721a2ee" + integrity sha512-Fp4OXxaSSsTzDlWlVYksSTKXbXvUdILbJNlk+r03TD7VmJCaNx49BxLyUEhJIyP3SY8oOno1UnsDjygbFHJ0xw== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.4.4" + "@abp/bootstrap" "~4.4.4" + "@abp/bootstrap-datepicker" "~4.4.4" + "@abp/datatables.net-bs4" "~4.4.4" + "@abp/font-awesome" "~4.4.4" + "@abp/jquery-form" "~4.4.4" + "@abp/jquery-validation-unobtrusive" "~4.4.4" + "@abp/lodash" "~4.4.4" + "@abp/luxon" "~4.4.4" + "@abp/malihu-custom-scrollbar-plugin" "~4.4.4" + "@abp/select2" "~4.4.4" + "@abp/sweetalert" "~4.4.4" + "@abp/timeago" "~4.4.4" + "@abp/toastr" "~4.4.4" + +"@abp/aspnetcore.mvc.ui@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.4.tgz#2f8e9488cad566f333d62fa717621477fb7fe658" + integrity sha512-/ngxU+vyUfBfpJ7+4/2Fyo5arUAY+LrjauoH9rkdXxpNjNNKjSUsoVqRAwRc1QMJh3iuUOeJgzx0gtkcE2ihiQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,162 +41,162 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.3.tgz#08fd1642ede232badb62a1536982ad2bfce6c265" - integrity sha512-pwb+3DbLkhuNnjD74UwqZgK5hnoxAFFu8y7qlJEkSiKsLWrKNlJS+PHF1LLifPqXogU1MKwc18AuXnHOEKjzbQ== +"@abp/bootstrap-datepicker@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.4.tgz#f2bddae93c4d126f926e4c9f0b4d41b5638ec4ba" + integrity sha512-WfP8KqMNcwAIyVim0MpyMo7sg1kVd9LzrqeAOdu5nPrJ9iV5N3y/JIw4JUkSaOh/zQPLgZUMg1NEhDHOkbaOHw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.3.tgz#76968df98fd5c6e5d26abea9cea5c9d76646d24e" - integrity sha512-InA3AI1ydkqd7AYz+f9RAag1h/uhFsFAFGIo34jllIeFhG4C59EbkNwdWDk96lNHmt0qutQYydsO6WKPlgnjYA== +"@abp/bootstrap@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.4.tgz#34ff3d94cea5b95fa78acdd5837d36569e0244db" + integrity sha512-fE8MsiUJD7K/lzKCsQ5FUU6KbZL6GORBMUdenm5OAUGpQWKPdLZ8mF2rjNsb2+kQgVQCuei7eYl+6712idCF9A== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/clipboard@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-4.4.3.tgz#558b69dbb3875bd37cf98e6ed83ff0881bd89924" - integrity sha512-kgtAqoKOAPlplkR80xJGAXSwh6GkOJxcTKmyDmnQObLbUjxnSo5vXpWDEcBDRrGw7g1I+Owj0JUZQbhkFpcksw== +"@abp/clipboard@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-4.4.4.tgz#2fbcdfcd884079737efaacce028333656da918ea" + integrity sha512-hpnhEzmsY8Nu3qsNGurrD3JXsPnv8N/aUyZ7hfFHwNA5Uses/cVFNgzJL4lie1ykoDKE5D/SZnLoe/a3aQuMoA== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" clipboard "^2.0.6" -"@abp/core@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.3.tgz#fc79a2eebf37a61a6cc05287b722750000f38522" - integrity sha512-gQ2rNyj1MpYCfLTg7Id/20AH4dqs0XIt/n+WqlgeGoYvEpAm4lakHWL7mxZaDQ+iMI/lVVrBhuzwuQv7xKpEIQ== +"@abp/core@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.4.tgz#e157da92b884d7d9a1e3ba50f65be42c60047d78" + integrity sha512-t3Mu7Bvs0o439CVSx9uxBJ+yTFrt2Pyep9/6Vh6Su+b4aoZeQt6ZTKWeJqUVZ7Y/LMt+AbJ/dtbFHvhV8yVuXg== dependencies: - "@abp/utils" "^4.4.3" + "@abp/utils" "~4.4.4" -"@abp/datatables.net-bs4@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.3.tgz#69d3704d057fe39c3b4aff0654f098fac3a27f49" - integrity sha512-Rs8u9BqaVnA7SYhaP849dVNQjaUdO3y5d95b5hv9kLgxquIEf/FIAmGMc0p9BkCK74SkRJ3WJLlR8DXxLi/tEw== +"@abp/datatables.net-bs4@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.4.tgz#37f4c5664ba1a8c4f5b03e675192f6b0ef66cf1b" + integrity sha512-byccQ1dSzhxpLggDwyPoOSOGF+6lBrr9r+WC3OCzWkBUuD6gXpRzDumjAAgIe12hGfXGDRibuD7Ji3qPLzcHzw== dependencies: - "@abp/datatables.net" "~4.4.3" + "@abp/datatables.net" "~4.4.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.3.tgz#1515dcc2bdc7c65c1f24a366c738e1b21ad05723" - integrity sha512-j0cIadlcIOLb/ZQnbqXi4sMEgyLCFA08GMIljvN6GhBObZjMQh4Eazk/B+a4xw+ATk0rbAW3dJyMx80zpi82cg== +"@abp/datatables.net@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.4.tgz#add4b07eef578dd02f84892bbe495642459c4669" + integrity sha512-+9JHEu71xADrTFIKoujXAO0nwUvAuRU9gJpVuJFg4G6juILbEqARo2mUTXEx+UyqnzhwoRJ0K1VFyBJnCY0R0Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" datatables.net "^1.10.21" -"@abp/font-awesome@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.3.tgz#9b0b03da07245e4458305e54490b4e37cbcc2b40" - integrity sha512-R6s0jcAhmpUTdc4b/NJkfHXbXblmcuTNwiNG/CJJ/QNrVhk7OolzyqR5k/moaBpb4Uaqf5u07Aau24rOH35q5w== +"@abp/font-awesome@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.4.tgz#47ff0c880ceb95382e0b1371912230cd7d7602c8" + integrity sha512-lkuyC7drFfzavkNJNLuQ+EJYTBb5ZlPNPnGFAxEpRyjJuJ5j+n84JxVBXwg+oPOfmZ+hOeEQPA7j7TdcC4EZDQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.3.tgz#3d5760e9ece4984165304fa028a5eb997adc4d9f" - integrity sha512-lk0QYruQVwXhVFYBiIrNx5zqF7fY7PKuGGvPQMHyeNaljvpbuK5FPwkge0y6nToWA4Y7PhSCYBU7xvkBuqEDgA== +"@abp/jquery-form@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.4.tgz#0638484b9318ba98acaf765aac0396f5f523dce5" + integrity sha512-JWN82DzSbSk2vAPQaapv+8PPCN8si4peLoWJAoHTVizAvis3YamdcG+QLYbTCAVKRlh7kiLRgbAAroy3ppbZ7Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.3.tgz#c08e336debe60a119a5abd0cb66032da6ace6b08" - integrity sha512-mfvYChTALH5nmB0docrEkS5/+Yxt6SgbQOjPVuQx5PgqoVscmf2/JvsBnW73/YVdQBkVXs339hoDGPA6K2WR9w== +"@abp/jquery-validation-unobtrusive@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.4.tgz#2ef0ce29eeb9e6aac9a87338a67aab2060b63026" + integrity sha512-XA9s0uzGXjBju1ZS42xd3IWproSxLBdGEZIYoSbVmaxS0YDBa8FqffbNb/fgY9M8dqujZEasDVuQPhXLBRN+jA== dependencies: - "@abp/jquery-validation" "~4.4.3" + "@abp/jquery-validation" "~4.4.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.3.tgz#331f3671e6e37bed4dc737942e8eb2a6d1297722" - integrity sha512-RjKn9xxoYQz0v8yzWcVlbIQYZQTcXgYFX7GMJf04V/QbdU6vsge+5vHKzhcaW5XWL8+GgKHTqqoxbqzdJykaPA== +"@abp/jquery-validation@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.4.tgz#fa71e1729b692b40097175d68caad29ea13d5155" + integrity sha512-vrP/Vpne86GbPnHR8M8PGvm+B9kGd/JJiPzVN/egxEvvBKdw0APGk9R03Tji2Qu8CuZxvPnKzHHBwKRinWX3Ng== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-validation "^1.19.2" -"@abp/jquery@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.3.tgz#9d2dc238596a6e5c878b5be4b1d49e7e8f95aec4" - integrity sha512-BN2KU1mw0hyQD8/61ZOIDM0hyMDkhZix4TOWCQa3s18pWHlBEsjKVnINQlz9J9k4TZEdQP9D3wZmw+XUfZjoIw== +"@abp/jquery@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.4.tgz#cbf5f99562ad5f01c41aa61704b0136c4ad68594" + integrity sha512-0fltJprq9DMHHWeTAN7i8kAcod5czQ48LdjeIY3wuLDWkGgMVcfarECQ9cu7QekMryB0HFdrUjMJHIhxqzxc3Q== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" jquery "~3.6.0" -"@abp/lodash@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.3.tgz#8e936ebc54a9043eee80cb22f3dad5ea8a2306cb" - integrity sha512-QKFjdRd8cEZp7fg9MhuFhD5CP3MBw7CfaJ3yj0W1e5Tx+xtV+rYz4PrOE8/BLb4un7gxqUrEWBgdIzY+lBR7mQ== +"@abp/lodash@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.4.tgz#8abd3986bcf64561ecbc86f23f53677b3c34eda9" + integrity sha512-IyAZHiR1vPYhbla0lTH/iYK38PCR+9wP5zgrWGD0JSP9R642GEEhdeiuzwclv1aNGretg+TSATr+zSWB5V1DYQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" lodash "^4.17.15" -"@abp/luxon@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.3.tgz#bd3328f45714155870bc8a91d41a197a613392b0" - integrity sha512-rPVzSXEy+rJZLIQ10boOq6suQAZQWJyB5P+rvfSx8h9sbRpsQ5fJOX2ShnUUf/+49KHzRRIqy+vrhr1oiE0C8Q== +"@abp/luxon@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.4.tgz#429b28dddbd8fa65c6c58978451d426bb886c5a3" + integrity sha512-pw75sGoQ/d4OaNlmGwt55Eq7AGWXUBuXyrsNQWSJmkPV9AS2s//ZoxZut1Wu/qaKo5DV4VitEW1U21MuKoEZPA== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.3.tgz#194f39ebbabad7853089549a7e19cfd2a7393e98" - integrity sha512-bhME41UsDCPGxnLP+zqH8nsx1uAxRR8tAeBKOJV24Xf8FHEjUQEDBXG0t1PBYGZVn1/0Ugao7Z12G9uZOiZVog== +"@abp/malihu-custom-scrollbar-plugin@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.4.tgz#fea9aa4755993dac45a8ad10938da789ec523518" + integrity sha512-Mgtzpw94SjN91YWPdV/TfvDt5JZNpW6iCHfL2NjfH3sTXCywK/CanmhdQ0FYJCasRWVPTHfQPWydFsnyzHWXRQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/prismjs@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-4.4.3.tgz#08f3f8c46a070b33a3d869b5548c57fd6b1beb5c" - integrity sha512-YnZrlvlmznZp7x0s+KNUVPcTxsIdGcluht7BQA7u1uoRSabqUm8jNt64IOPGMyDkdMwcjmjeCVpj1F1lcDPo+A== +"@abp/prismjs@^4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-4.4.4.tgz#d743682fed6c8a97a19690a7107de6c2ff3f0bd1" + integrity sha512-WtzEnVSmFmT2qFfU58h6ZV8TNbf5TcW2acblW6w9cxPOnpUITIp87zHuTA3bT/gP9ybq3hgs3iFMg6n5IqzVzw== dependencies: - "@abp/clipboard" "~4.4.3" - "@abp/core" "~4.4.3" + "@abp/clipboard" "~4.4.4" + "@abp/core" "~4.4.4" prismjs "^1.20.0" -"@abp/select2@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.3.tgz#71015901aae117360f876c744903613494800c83" - integrity sha512-s7ArMLq2LC0m1oFcuCJghf5lEnGbq1D8/WaIKGmmD0ERL0g5xMccFlNbXm+Z79MJoTvQFssSLPTLZICjzWPKJw== +"@abp/select2@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.4.tgz#80d0e0b64cec86a3aa069e9086958946f631d2bf" + integrity sha512-8qx0nj9ZHrdnEPccpLhavHu4YnVp0Z5ZyfpfACVS2GgaxsR31DbltlGdnr2IfRyhK8nJWLNsW8UNhSoXQwGYEw== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" select2 "^4.0.13" -"@abp/sweetalert@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.3.tgz#287b9c89f90885742b074b4e3a427f0ec482952d" - integrity sha512-tAEgHMaTe+E+uS+Mt8XV3dt5yJJHg01Zsbp4ojO3wvdoAS6MKRXWdH05u3ZdwRQrJFbSgQjY85vWn/a/PnYRng== +"@abp/sweetalert@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.4.tgz#1af8934290d4e5adb7c620363ef2a9b746a6eeab" + integrity sha512-TgXm4rhqzTghKzgbxDT5NQcQ/PRFkgwJtnNWZK3XDZiKzw0auT8Wa3GtSsJJD5tl3Dx6VfnTtmf0gpPU5/9fKQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" sweetalert "^2.1.2" -"@abp/timeago@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.3.tgz#7d31b9fcc128e9b8c6bb7870c4284427e9f9f383" - integrity sha512-E8FeAraStlYsHz6D1oBrwM5eHhZeCGrP7aA768Ke5UGIZPoYwyIIYLRfK4MCoCLKgTVlRrUn0Dj7Xkj9tWOfBQ== +"@abp/timeago@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.4.tgz#91ddb61439eaa138a42b9179ec92845efb05af29" + integrity sha512-r53FieaMDar60tGAu+NLr2qCem1+NhPgd7MtYEemJil8HUYci7T0fXvWcYhlrn98zipzEx3eiWo4eBwvIP8MLg== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" timeago "^1.6.7" -"@abp/toastr@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.3.tgz#45ef155fdbb6134a50794e456f820671c72e4105" - integrity sha512-dmKYS7iw/a+eWCD+J+nZ1htmGEjJSCsV1H8dDwA+ZxYJrE2/ejUh0LZ+b8Hsvobqfe/6bwYBj6oe0R9+vszCfg== +"@abp/toastr@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.4.tgz#1cd04ad6dfcb866bfaad3ec288407b0bf3f47c41" + integrity sha512-B7Q0Gza71nITTbryHcHqiIxtJzFbVmXeoPlcLlc/i4zvMaoibihevN10vXmPnfkdQUvTgViIjwA4/ZnBmyM11Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" toastr "^2.1.4" -"@abp/utils@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.3.tgz#5d6939be5463adaa938357d74d1a35fed21b0115" - integrity sha512-B2E89fhM7vKDz9He6EeNc9P5RVYThiBLpTkKvJTeXG+DJtrP2ZbEICe1fcDA48wLFokXXKgx/SjoJlMvObhilQ== +"@abp/utils@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.4.tgz#0bd79fa4635224fcae7ff61224a8c54266db73bf" + integrity sha512-h8Nt2OPqi8EiXKAuvJIpBlCHhavL7BHr+ntJXY6yM4aCdcQtJdSAgNmh0skzEGnf1hZxrYOugtAz4Pk1WNjv/g== dependencies: just-compare "^1.3.0" diff --git a/modules/blogging/app/Volo.BloggingTestApp/package.json b/modules/blogging/app/Volo.BloggingTestApp/package.json index 9458eb87c6..a2dd91f639 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/package.json +++ b/modules/blogging/app/Volo.BloggingTestApp/package.json @@ -3,7 +3,7 @@ "name": "volo.blogtestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.3", - "@abp/blogging": "^4.4.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.4", + "@abp/blogging": "^4.4.4" } } \ No newline at end of file diff --git a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js index 1fee6e798d..d7b5d2d9c4 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js +++ b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js @@ -1,4 +1,6 @@ /* https://select2.org/troubleshooting/common-problems */ -$.fn.modal.Constructor.prototype._enforceFocus = function () { }; \ No newline at end of file +if ($.fn.modal) { + $.fn.modal.Constructor.prototype._enforceFocus = function () { }; +} diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock index acd183fbe1..dbc7f510c4 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock +++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.3.tgz#26b230021334f7859fbb80f9c379a1192cc3fe97" - integrity sha512-FR1XIiZljhjBuHQKr2kdd0gD82sy8+oVPrJ+BrSKK3N4OsOTpVxZnUhixLeDRv1Lmw3twwmLCEcp8snPix/wPg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.3.tgz#464148bbf641e6988852235f94dc3393131c657e" - integrity sha512-/aXlX5JZ/CYD6KdIBL2V216aNidqxf7ugU9dZPK1FbGSixN805lJVIu766ufEA5xZrMIGPL/O7MZmu+hJyclTA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.4.3" - "@abp/bootstrap" "~4.4.3" - "@abp/bootstrap-datepicker" "~4.4.3" - "@abp/datatables.net-bs4" "~4.4.3" - "@abp/font-awesome" "~4.4.3" - "@abp/jquery-form" "~4.4.3" - "@abp/jquery-validation-unobtrusive" "~4.4.3" - "@abp/lodash" "~4.4.3" - "@abp/luxon" "~4.4.3" - "@abp/malihu-custom-scrollbar-plugin" "~4.4.3" - "@abp/select2" "~4.4.3" - "@abp/sweetalert" "~4.4.3" - "@abp/timeago" "~4.4.3" - "@abp/toastr" "~4.4.3" - -"@abp/aspnetcore.mvc.ui@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.3.tgz#b7c217f23d39793a63baff9a56ff063bb0da3049" - integrity sha512-dVZe5HcKRTg0gfWom7vY70JRZkHm1nFtYWq+ciEPvVqPAClzDEvJucoKiUTzfgmPQO13Yv5/GonTV99MV9sLHg== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.4.tgz#ecaaee9d8af8e14a1c9fa65bf3cb6e56c6a82e99" + integrity sha512-FBctV4JuYnTqCCzA/1EG2wUdTYYcilTNSWvk/4YZkndvu9T5iu48qdac1Gq3Ux8JIFer9D0oAPld0YlweYYOGw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.4.tgz#22191efb159572abbd071e12cce847768721a2ee" + integrity sha512-Fp4OXxaSSsTzDlWlVYksSTKXbXvUdILbJNlk+r03TD7VmJCaNx49BxLyUEhJIyP3SY8oOno1UnsDjygbFHJ0xw== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.4.4" + "@abp/bootstrap" "~4.4.4" + "@abp/bootstrap-datepicker" "~4.4.4" + "@abp/datatables.net-bs4" "~4.4.4" + "@abp/font-awesome" "~4.4.4" + "@abp/jquery-form" "~4.4.4" + "@abp/jquery-validation-unobtrusive" "~4.4.4" + "@abp/lodash" "~4.4.4" + "@abp/luxon" "~4.4.4" + "@abp/malihu-custom-scrollbar-plugin" "~4.4.4" + "@abp/select2" "~4.4.4" + "@abp/sweetalert" "~4.4.4" + "@abp/timeago" "~4.4.4" + "@abp/toastr" "~4.4.4" + +"@abp/aspnetcore.mvc.ui@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.4.tgz#2f8e9488cad566f333d62fa717621477fb7fe658" + integrity sha512-/ngxU+vyUfBfpJ7+4/2Fyo5arUAY+LrjauoH9rkdXxpNjNNKjSUsoVqRAwRc1QMJh3iuUOeJgzx0gtkcE2ihiQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,214 +41,214 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/blogging@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-4.4.3.tgz#d0846918b3f20822a03795f3e159f8e99f7810b8" - integrity sha512-qvg4sqn+UjWtmb/bn5ngPwgKC70KrajIaDTyMo8EaxOj8hC+6SwSfT+I1m75DiekOtTzEWGkcubp/ed78Jh3VQ== +"@abp/blogging@^4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-4.4.4.tgz#392920081f3a71ddb18b80ee48f85db1b6782c57" + integrity sha512-tsAoKjwKdj0wfQIQT4d2XkH6eUn3bfUzP6uwlY62PHY4PsNA859NOeNUwLvn5zNlrsKVJ6ar4W6lJK0cx+ojqw== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.3" - "@abp/owl.carousel" "~4.4.3" - "@abp/prismjs" "~4.4.3" - "@abp/tui-editor" "~4.4.3" + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.4" + "@abp/owl.carousel" "~4.4.4" + "@abp/prismjs" "~4.4.4" + "@abp/tui-editor" "~4.4.4" -"@abp/bootstrap-datepicker@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.3.tgz#08fd1642ede232badb62a1536982ad2bfce6c265" - integrity sha512-pwb+3DbLkhuNnjD74UwqZgK5hnoxAFFu8y7qlJEkSiKsLWrKNlJS+PHF1LLifPqXogU1MKwc18AuXnHOEKjzbQ== +"@abp/bootstrap-datepicker@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.4.tgz#f2bddae93c4d126f926e4c9f0b4d41b5638ec4ba" + integrity sha512-WfP8KqMNcwAIyVim0MpyMo7sg1kVd9LzrqeAOdu5nPrJ9iV5N3y/JIw4JUkSaOh/zQPLgZUMg1NEhDHOkbaOHw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.3.tgz#76968df98fd5c6e5d26abea9cea5c9d76646d24e" - integrity sha512-InA3AI1ydkqd7AYz+f9RAag1h/uhFsFAFGIo34jllIeFhG4C59EbkNwdWDk96lNHmt0qutQYydsO6WKPlgnjYA== +"@abp/bootstrap@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.4.tgz#34ff3d94cea5b95fa78acdd5837d36569e0244db" + integrity sha512-fE8MsiUJD7K/lzKCsQ5FUU6KbZL6GORBMUdenm5OAUGpQWKPdLZ8mF2rjNsb2+kQgVQCuei7eYl+6712idCF9A== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/clipboard@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-4.4.3.tgz#558b69dbb3875bd37cf98e6ed83ff0881bd89924" - integrity sha512-kgtAqoKOAPlplkR80xJGAXSwh6GkOJxcTKmyDmnQObLbUjxnSo5vXpWDEcBDRrGw7g1I+Owj0JUZQbhkFpcksw== +"@abp/clipboard@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-4.4.4.tgz#2fbcdfcd884079737efaacce028333656da918ea" + integrity sha512-hpnhEzmsY8Nu3qsNGurrD3JXsPnv8N/aUyZ7hfFHwNA5Uses/cVFNgzJL4lie1ykoDKE5D/SZnLoe/a3aQuMoA== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" clipboard "^2.0.6" -"@abp/codemirror@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-4.4.3.tgz#501d9f10653f2009b6887385c63f445e8c4a46fb" - integrity sha512-StASyx1h3rG42tvnAA1KzpQE/obltNXtugLvfopZSkx5G1j6hduvQ7hu2h9e8d9n5SOia+Do2dym4pTHZ2BGeQ== +"@abp/codemirror@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-4.4.4.tgz#f02761b66ca839fadbe047a61076f36ee6f89207" + integrity sha512-959JJbQnNNXNImPj8ZFAflRBK+wUgaUzeMsp56QQUjuqjEJA1G8s/nqmnCFKtd4xqMKcuFZ+qZS5d9GOdr3e7Q== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" codemirror "^5.54.0" -"@abp/core@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.3.tgz#fc79a2eebf37a61a6cc05287b722750000f38522" - integrity sha512-gQ2rNyj1MpYCfLTg7Id/20AH4dqs0XIt/n+WqlgeGoYvEpAm4lakHWL7mxZaDQ+iMI/lVVrBhuzwuQv7xKpEIQ== +"@abp/core@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.4.tgz#e157da92b884d7d9a1e3ba50f65be42c60047d78" + integrity sha512-t3Mu7Bvs0o439CVSx9uxBJ+yTFrt2Pyep9/6Vh6Su+b4aoZeQt6ZTKWeJqUVZ7Y/LMt+AbJ/dtbFHvhV8yVuXg== dependencies: - "@abp/utils" "^4.4.3" + "@abp/utils" "~4.4.4" -"@abp/datatables.net-bs4@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.3.tgz#69d3704d057fe39c3b4aff0654f098fac3a27f49" - integrity sha512-Rs8u9BqaVnA7SYhaP849dVNQjaUdO3y5d95b5hv9kLgxquIEf/FIAmGMc0p9BkCK74SkRJ3WJLlR8DXxLi/tEw== +"@abp/datatables.net-bs4@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.4.tgz#37f4c5664ba1a8c4f5b03e675192f6b0ef66cf1b" + integrity sha512-byccQ1dSzhxpLggDwyPoOSOGF+6lBrr9r+WC3OCzWkBUuD6gXpRzDumjAAgIe12hGfXGDRibuD7Ji3qPLzcHzw== dependencies: - "@abp/datatables.net" "~4.4.3" + "@abp/datatables.net" "~4.4.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.3.tgz#1515dcc2bdc7c65c1f24a366c738e1b21ad05723" - integrity sha512-j0cIadlcIOLb/ZQnbqXi4sMEgyLCFA08GMIljvN6GhBObZjMQh4Eazk/B+a4xw+ATk0rbAW3dJyMx80zpi82cg== +"@abp/datatables.net@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.4.tgz#add4b07eef578dd02f84892bbe495642459c4669" + integrity sha512-+9JHEu71xADrTFIKoujXAO0nwUvAuRU9gJpVuJFg4G6juILbEqARo2mUTXEx+UyqnzhwoRJ0K1VFyBJnCY0R0Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" datatables.net "^1.10.21" -"@abp/font-awesome@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.3.tgz#9b0b03da07245e4458305e54490b4e37cbcc2b40" - integrity sha512-R6s0jcAhmpUTdc4b/NJkfHXbXblmcuTNwiNG/CJJ/QNrVhk7OolzyqR5k/moaBpb4Uaqf5u07Aau24rOH35q5w== +"@abp/font-awesome@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.4.tgz#47ff0c880ceb95382e0b1371912230cd7d7602c8" + integrity sha512-lkuyC7drFfzavkNJNLuQ+EJYTBb5ZlPNPnGFAxEpRyjJuJ5j+n84JxVBXwg+oPOfmZ+hOeEQPA7j7TdcC4EZDQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/highlight.js@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-4.4.3.tgz#60b64e27e8c5d573be093fb32c0d43538f970a45" - integrity sha512-wTo+AnbgkWBQCA/u3KJTJAfAPt0ARwvxjxxNH3A4HICfW7mtt4wpaZ3Zy2m7k7alHKWEzUeLG4bS86X0j2oRRQ== +"@abp/highlight.js@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-4.4.4.tgz#0bda9c785800a12b9107b91d395135398e94ca26" + integrity sha512-f32sPArQV3K/oY6G2l441uEZ0AJgnpuVX2W1rH4Z0ItAW+N3GIV9yjmRpd9L4paKpRb3N/xWS5vmGxXuh+ekbw== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" -"@abp/jquery-form@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.3.tgz#3d5760e9ece4984165304fa028a5eb997adc4d9f" - integrity sha512-lk0QYruQVwXhVFYBiIrNx5zqF7fY7PKuGGvPQMHyeNaljvpbuK5FPwkge0y6nToWA4Y7PhSCYBU7xvkBuqEDgA== +"@abp/jquery-form@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.4.tgz#0638484b9318ba98acaf765aac0396f5f523dce5" + integrity sha512-JWN82DzSbSk2vAPQaapv+8PPCN8si4peLoWJAoHTVizAvis3YamdcG+QLYbTCAVKRlh7kiLRgbAAroy3ppbZ7Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.3.tgz#c08e336debe60a119a5abd0cb66032da6ace6b08" - integrity sha512-mfvYChTALH5nmB0docrEkS5/+Yxt6SgbQOjPVuQx5PgqoVscmf2/JvsBnW73/YVdQBkVXs339hoDGPA6K2WR9w== +"@abp/jquery-validation-unobtrusive@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.4.tgz#2ef0ce29eeb9e6aac9a87338a67aab2060b63026" + integrity sha512-XA9s0uzGXjBju1ZS42xd3IWproSxLBdGEZIYoSbVmaxS0YDBa8FqffbNb/fgY9M8dqujZEasDVuQPhXLBRN+jA== dependencies: - "@abp/jquery-validation" "~4.4.3" + "@abp/jquery-validation" "~4.4.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.3.tgz#331f3671e6e37bed4dc737942e8eb2a6d1297722" - integrity sha512-RjKn9xxoYQz0v8yzWcVlbIQYZQTcXgYFX7GMJf04V/QbdU6vsge+5vHKzhcaW5XWL8+GgKHTqqoxbqzdJykaPA== +"@abp/jquery-validation@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.4.tgz#fa71e1729b692b40097175d68caad29ea13d5155" + integrity sha512-vrP/Vpne86GbPnHR8M8PGvm+B9kGd/JJiPzVN/egxEvvBKdw0APGk9R03Tji2Qu8CuZxvPnKzHHBwKRinWX3Ng== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-validation "^1.19.2" -"@abp/jquery@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.3.tgz#9d2dc238596a6e5c878b5be4b1d49e7e8f95aec4" - integrity sha512-BN2KU1mw0hyQD8/61ZOIDM0hyMDkhZix4TOWCQa3s18pWHlBEsjKVnINQlz9J9k4TZEdQP9D3wZmw+XUfZjoIw== +"@abp/jquery@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.4.tgz#cbf5f99562ad5f01c41aa61704b0136c4ad68594" + integrity sha512-0fltJprq9DMHHWeTAN7i8kAcod5czQ48LdjeIY3wuLDWkGgMVcfarECQ9cu7QekMryB0HFdrUjMJHIhxqzxc3Q== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" jquery "~3.6.0" -"@abp/lodash@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.3.tgz#8e936ebc54a9043eee80cb22f3dad5ea8a2306cb" - integrity sha512-QKFjdRd8cEZp7fg9MhuFhD5CP3MBw7CfaJ3yj0W1e5Tx+xtV+rYz4PrOE8/BLb4un7gxqUrEWBgdIzY+lBR7mQ== +"@abp/lodash@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.4.tgz#8abd3986bcf64561ecbc86f23f53677b3c34eda9" + integrity sha512-IyAZHiR1vPYhbla0lTH/iYK38PCR+9wP5zgrWGD0JSP9R642GEEhdeiuzwclv1aNGretg+TSATr+zSWB5V1DYQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" lodash "^4.17.15" -"@abp/luxon@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.3.tgz#bd3328f45714155870bc8a91d41a197a613392b0" - integrity sha512-rPVzSXEy+rJZLIQ10boOq6suQAZQWJyB5P+rvfSx8h9sbRpsQ5fJOX2ShnUUf/+49KHzRRIqy+vrhr1oiE0C8Q== +"@abp/luxon@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.4.tgz#429b28dddbd8fa65c6c58978451d426bb886c5a3" + integrity sha512-pw75sGoQ/d4OaNlmGwt55Eq7AGWXUBuXyrsNQWSJmkPV9AS2s//ZoxZut1Wu/qaKo5DV4VitEW1U21MuKoEZPA== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.3.tgz#194f39ebbabad7853089549a7e19cfd2a7393e98" - integrity sha512-bhME41UsDCPGxnLP+zqH8nsx1uAxRR8tAeBKOJV24Xf8FHEjUQEDBXG0t1PBYGZVn1/0Ugao7Z12G9uZOiZVog== +"@abp/malihu-custom-scrollbar-plugin@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.4.tgz#fea9aa4755993dac45a8ad10938da789ec523518" + integrity sha512-Mgtzpw94SjN91YWPdV/TfvDt5JZNpW6iCHfL2NjfH3sTXCywK/CanmhdQ0FYJCasRWVPTHfQPWydFsnyzHWXRQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/markdown-it@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-4.4.3.tgz#55a7f1af1c77e464797e6470c9d9b1d2db978d49" - integrity sha512-LKTMVraFJHUqQuGPhmQKO0mZeSAg/smYv7+E1mj7EAt6/5PXAs8Xyhbd3TG0vV7y6EjPsX32bJCFiYOQMJ2LqQ== +"@abp/markdown-it@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-4.4.4.tgz#bd036fa30b2f1e1ae363bbd1b226e28c7ddb2711" + integrity sha512-Mhvk8Bp0p890jio6UL8C0B/78d8qm+2B+SRZPo6D6zx2OeLG6dHaILCfxoS+S2k59cM3j+dWCx2MI6e0q5pUIg== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" markdown-it "^11.0.0" -"@abp/owl.carousel@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-4.4.3.tgz#cdb96bb86369f0d1029f7dac432656909ceb68a4" - integrity sha512-f0o4myYzWQqoReqB/ZAhZpGfv5ImqoEO5L2fplP6G8X/o4XfKeg3zSEnGaslbvvBgmMR6YOJiZ/3G8s3a0qjfg== +"@abp/owl.carousel@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-4.4.4.tgz#85a03a456c5422c34739dbdb75892fb845eb8abe" + integrity sha512-SFddtfq1tWGsUIxKkhEigIv6u5VFbVBN4nAkx7et/Bmf5yLRQB6KnPTnTTMnanWGHi/k9GQfEzh27wVdBfWapw== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" owl.carousel "^2.3.4" -"@abp/prismjs@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-4.4.3.tgz#08f3f8c46a070b33a3d869b5548c57fd6b1beb5c" - integrity sha512-YnZrlvlmznZp7x0s+KNUVPcTxsIdGcluht7BQA7u1uoRSabqUm8jNt64IOPGMyDkdMwcjmjeCVpj1F1lcDPo+A== +"@abp/prismjs@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-4.4.4.tgz#d743682fed6c8a97a19690a7107de6c2ff3f0bd1" + integrity sha512-WtzEnVSmFmT2qFfU58h6ZV8TNbf5TcW2acblW6w9cxPOnpUITIp87zHuTA3bT/gP9ybq3hgs3iFMg6n5IqzVzw== dependencies: - "@abp/clipboard" "~4.4.3" - "@abp/core" "~4.4.3" + "@abp/clipboard" "~4.4.4" + "@abp/core" "~4.4.4" prismjs "^1.20.0" -"@abp/select2@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.3.tgz#71015901aae117360f876c744903613494800c83" - integrity sha512-s7ArMLq2LC0m1oFcuCJghf5lEnGbq1D8/WaIKGmmD0ERL0g5xMccFlNbXm+Z79MJoTvQFssSLPTLZICjzWPKJw== +"@abp/select2@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.4.tgz#80d0e0b64cec86a3aa069e9086958946f631d2bf" + integrity sha512-8qx0nj9ZHrdnEPccpLhavHu4YnVp0Z5ZyfpfACVS2GgaxsR31DbltlGdnr2IfRyhK8nJWLNsW8UNhSoXQwGYEw== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" select2 "^4.0.13" -"@abp/sweetalert@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.3.tgz#287b9c89f90885742b074b4e3a427f0ec482952d" - integrity sha512-tAEgHMaTe+E+uS+Mt8XV3dt5yJJHg01Zsbp4ojO3wvdoAS6MKRXWdH05u3ZdwRQrJFbSgQjY85vWn/a/PnYRng== +"@abp/sweetalert@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.4.tgz#1af8934290d4e5adb7c620363ef2a9b746a6eeab" + integrity sha512-TgXm4rhqzTghKzgbxDT5NQcQ/PRFkgwJtnNWZK3XDZiKzw0auT8Wa3GtSsJJD5tl3Dx6VfnTtmf0gpPU5/9fKQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" sweetalert "^2.1.2" -"@abp/timeago@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.3.tgz#7d31b9fcc128e9b8c6bb7870c4284427e9f9f383" - integrity sha512-E8FeAraStlYsHz6D1oBrwM5eHhZeCGrP7aA768Ke5UGIZPoYwyIIYLRfK4MCoCLKgTVlRrUn0Dj7Xkj9tWOfBQ== +"@abp/timeago@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.4.tgz#91ddb61439eaa138a42b9179ec92845efb05af29" + integrity sha512-r53FieaMDar60tGAu+NLr2qCem1+NhPgd7MtYEemJil8HUYci7T0fXvWcYhlrn98zipzEx3eiWo4eBwvIP8MLg== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" timeago "^1.6.7" -"@abp/toastr@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.3.tgz#45ef155fdbb6134a50794e456f820671c72e4105" - integrity sha512-dmKYS7iw/a+eWCD+J+nZ1htmGEjJSCsV1H8dDwA+ZxYJrE2/ejUh0LZ+b8Hsvobqfe/6bwYBj6oe0R9+vszCfg== +"@abp/toastr@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.4.tgz#1cd04ad6dfcb866bfaad3ec288407b0bf3f47c41" + integrity sha512-B7Q0Gza71nITTbryHcHqiIxtJzFbVmXeoPlcLlc/i4zvMaoibihevN10vXmPnfkdQUvTgViIjwA4/ZnBmyM11Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" toastr "^2.1.4" -"@abp/tui-editor@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-4.4.3.tgz#5aeab2d695449ccff2dd0747e9ff6c8045540c43" - integrity sha512-Nikwg4Ywl2AO20rNF3YZAzijP5ihoFWr6WuLGjI4LppnaEKcZ8OBQ42iEj8C/XNzPZ2y7GR5Z9QY25wAieUiCg== +"@abp/tui-editor@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-4.4.4.tgz#bbad5686b8b862b2c619eab6339b551432779c50" + integrity sha512-fromARg9BkdvieyOgQTZ9dO5bHZ5t/g1kys7mIpcZf8C8HiQLlXcv+PRh9xmCSjdhLC9dN9n9IWMOnlc+3fu0g== dependencies: - "@abp/codemirror" "~4.4.3" - "@abp/highlight.js" "~4.4.3" - "@abp/jquery" "~4.4.3" - "@abp/markdown-it" "~4.4.3" + "@abp/codemirror" "~4.4.4" + "@abp/highlight.js" "~4.4.4" + "@abp/jquery" "~4.4.4" + "@abp/markdown-it" "~4.4.4" "@toast-ui/editor" "^2.5.1" -"@abp/utils@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.3.tgz#5d6939be5463adaa938357d74d1a35fed21b0115" - integrity sha512-B2E89fhM7vKDz9He6EeNc9P5RVYThiBLpTkKvJTeXG+DJtrP2ZbEICe1fcDA48wLFokXXKgx/SjoJlMvObhilQ== +"@abp/utils@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.4.tgz#0bd79fa4635224fcae7ff61224a8c54266db73bf" + integrity sha512-h8Nt2OPqi8EiXKAuvJIpBlCHhavL7BHr+ntJXY6yM4aCdcQtJdSAgNmh0skzEGnf1hZxrYOugtAz4Pk1WNjv/g== dependencies: just-compare "^1.3.0" diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json index 5eeadc2b2e..6d3483aac4 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json @@ -3,6 +3,6 @@ "name": "client-simulation-web", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.4" } } \ No newline at end of file diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js index 1fee6e798d..d7b5d2d9c4 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js @@ -1,4 +1,6 @@ /* https://select2.org/troubleshooting/common-problems */ -$.fn.modal.Constructor.prototype._enforceFocus = function () { }; \ No newline at end of file +if ($.fn.modal) { + $.fn.modal.Constructor.prototype._enforceFocus = function () { }; +} diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock index 900716473d..bd9f84c7b8 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.3.tgz#26b230021334f7859fbb80f9c379a1192cc3fe97" - integrity sha512-FR1XIiZljhjBuHQKr2kdd0gD82sy8+oVPrJ+BrSKK3N4OsOTpVxZnUhixLeDRv1Lmw3twwmLCEcp8snPix/wPg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.3.tgz#464148bbf641e6988852235f94dc3393131c657e" - integrity sha512-/aXlX5JZ/CYD6KdIBL2V216aNidqxf7ugU9dZPK1FbGSixN805lJVIu766ufEA5xZrMIGPL/O7MZmu+hJyclTA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.4.3" - "@abp/bootstrap" "~4.4.3" - "@abp/bootstrap-datepicker" "~4.4.3" - "@abp/datatables.net-bs4" "~4.4.3" - "@abp/font-awesome" "~4.4.3" - "@abp/jquery-form" "~4.4.3" - "@abp/jquery-validation-unobtrusive" "~4.4.3" - "@abp/lodash" "~4.4.3" - "@abp/luxon" "~4.4.3" - "@abp/malihu-custom-scrollbar-plugin" "~4.4.3" - "@abp/select2" "~4.4.3" - "@abp/sweetalert" "~4.4.3" - "@abp/timeago" "~4.4.3" - "@abp/toastr" "~4.4.3" - -"@abp/aspnetcore.mvc.ui@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.3.tgz#b7c217f23d39793a63baff9a56ff063bb0da3049" - integrity sha512-dVZe5HcKRTg0gfWom7vY70JRZkHm1nFtYWq+ciEPvVqPAClzDEvJucoKiUTzfgmPQO13Yv5/GonTV99MV9sLHg== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.4.tgz#ecaaee9d8af8e14a1c9fa65bf3cb6e56c6a82e99" + integrity sha512-FBctV4JuYnTqCCzA/1EG2wUdTYYcilTNSWvk/4YZkndvu9T5iu48qdac1Gq3Ux8JIFer9D0oAPld0YlweYYOGw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.4.tgz#22191efb159572abbd071e12cce847768721a2ee" + integrity sha512-Fp4OXxaSSsTzDlWlVYksSTKXbXvUdILbJNlk+r03TD7VmJCaNx49BxLyUEhJIyP3SY8oOno1UnsDjygbFHJ0xw== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.4.4" + "@abp/bootstrap" "~4.4.4" + "@abp/bootstrap-datepicker" "~4.4.4" + "@abp/datatables.net-bs4" "~4.4.4" + "@abp/font-awesome" "~4.4.4" + "@abp/jquery-form" "~4.4.4" + "@abp/jquery-validation-unobtrusive" "~4.4.4" + "@abp/lodash" "~4.4.4" + "@abp/luxon" "~4.4.4" + "@abp/malihu-custom-scrollbar-plugin" "~4.4.4" + "@abp/select2" "~4.4.4" + "@abp/sweetalert" "~4.4.4" + "@abp/timeago" "~4.4.4" + "@abp/toastr" "~4.4.4" + +"@abp/aspnetcore.mvc.ui@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.4.tgz#2f8e9488cad566f333d62fa717621477fb7fe658" + integrity sha512-/ngxU+vyUfBfpJ7+4/2Fyo5arUAY+LrjauoH9rkdXxpNjNNKjSUsoVqRAwRc1QMJh3iuUOeJgzx0gtkcE2ihiQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,145 +41,145 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.3.tgz#08fd1642ede232badb62a1536982ad2bfce6c265" - integrity sha512-pwb+3DbLkhuNnjD74UwqZgK5hnoxAFFu8y7qlJEkSiKsLWrKNlJS+PHF1LLifPqXogU1MKwc18AuXnHOEKjzbQ== +"@abp/bootstrap-datepicker@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.4.tgz#f2bddae93c4d126f926e4c9f0b4d41b5638ec4ba" + integrity sha512-WfP8KqMNcwAIyVim0MpyMo7sg1kVd9LzrqeAOdu5nPrJ9iV5N3y/JIw4JUkSaOh/zQPLgZUMg1NEhDHOkbaOHw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.3.tgz#76968df98fd5c6e5d26abea9cea5c9d76646d24e" - integrity sha512-InA3AI1ydkqd7AYz+f9RAag1h/uhFsFAFGIo34jllIeFhG4C59EbkNwdWDk96lNHmt0qutQYydsO6WKPlgnjYA== +"@abp/bootstrap@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.4.tgz#34ff3d94cea5b95fa78acdd5837d36569e0244db" + integrity sha512-fE8MsiUJD7K/lzKCsQ5FUU6KbZL6GORBMUdenm5OAUGpQWKPdLZ8mF2rjNsb2+kQgVQCuei7eYl+6712idCF9A== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.3.tgz#fc79a2eebf37a61a6cc05287b722750000f38522" - integrity sha512-gQ2rNyj1MpYCfLTg7Id/20AH4dqs0XIt/n+WqlgeGoYvEpAm4lakHWL7mxZaDQ+iMI/lVVrBhuzwuQv7xKpEIQ== +"@abp/core@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.4.tgz#e157da92b884d7d9a1e3ba50f65be42c60047d78" + integrity sha512-t3Mu7Bvs0o439CVSx9uxBJ+yTFrt2Pyep9/6Vh6Su+b4aoZeQt6ZTKWeJqUVZ7Y/LMt+AbJ/dtbFHvhV8yVuXg== dependencies: - "@abp/utils" "^4.4.3" + "@abp/utils" "~4.4.4" -"@abp/datatables.net-bs4@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.3.tgz#69d3704d057fe39c3b4aff0654f098fac3a27f49" - integrity sha512-Rs8u9BqaVnA7SYhaP849dVNQjaUdO3y5d95b5hv9kLgxquIEf/FIAmGMc0p9BkCK74SkRJ3WJLlR8DXxLi/tEw== +"@abp/datatables.net-bs4@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.4.tgz#37f4c5664ba1a8c4f5b03e675192f6b0ef66cf1b" + integrity sha512-byccQ1dSzhxpLggDwyPoOSOGF+6lBrr9r+WC3OCzWkBUuD6gXpRzDumjAAgIe12hGfXGDRibuD7Ji3qPLzcHzw== dependencies: - "@abp/datatables.net" "~4.4.3" + "@abp/datatables.net" "~4.4.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.3.tgz#1515dcc2bdc7c65c1f24a366c738e1b21ad05723" - integrity sha512-j0cIadlcIOLb/ZQnbqXi4sMEgyLCFA08GMIljvN6GhBObZjMQh4Eazk/B+a4xw+ATk0rbAW3dJyMx80zpi82cg== +"@abp/datatables.net@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.4.tgz#add4b07eef578dd02f84892bbe495642459c4669" + integrity sha512-+9JHEu71xADrTFIKoujXAO0nwUvAuRU9gJpVuJFg4G6juILbEqARo2mUTXEx+UyqnzhwoRJ0K1VFyBJnCY0R0Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" datatables.net "^1.10.21" -"@abp/font-awesome@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.3.tgz#9b0b03da07245e4458305e54490b4e37cbcc2b40" - integrity sha512-R6s0jcAhmpUTdc4b/NJkfHXbXblmcuTNwiNG/CJJ/QNrVhk7OolzyqR5k/moaBpb4Uaqf5u07Aau24rOH35q5w== +"@abp/font-awesome@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.4.tgz#47ff0c880ceb95382e0b1371912230cd7d7602c8" + integrity sha512-lkuyC7drFfzavkNJNLuQ+EJYTBb5ZlPNPnGFAxEpRyjJuJ5j+n84JxVBXwg+oPOfmZ+hOeEQPA7j7TdcC4EZDQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.3.tgz#3d5760e9ece4984165304fa028a5eb997adc4d9f" - integrity sha512-lk0QYruQVwXhVFYBiIrNx5zqF7fY7PKuGGvPQMHyeNaljvpbuK5FPwkge0y6nToWA4Y7PhSCYBU7xvkBuqEDgA== +"@abp/jquery-form@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.4.tgz#0638484b9318ba98acaf765aac0396f5f523dce5" + integrity sha512-JWN82DzSbSk2vAPQaapv+8PPCN8si4peLoWJAoHTVizAvis3YamdcG+QLYbTCAVKRlh7kiLRgbAAroy3ppbZ7Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.3.tgz#c08e336debe60a119a5abd0cb66032da6ace6b08" - integrity sha512-mfvYChTALH5nmB0docrEkS5/+Yxt6SgbQOjPVuQx5PgqoVscmf2/JvsBnW73/YVdQBkVXs339hoDGPA6K2WR9w== +"@abp/jquery-validation-unobtrusive@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.4.tgz#2ef0ce29eeb9e6aac9a87338a67aab2060b63026" + integrity sha512-XA9s0uzGXjBju1ZS42xd3IWproSxLBdGEZIYoSbVmaxS0YDBa8FqffbNb/fgY9M8dqujZEasDVuQPhXLBRN+jA== dependencies: - "@abp/jquery-validation" "~4.4.3" + "@abp/jquery-validation" "~4.4.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.3.tgz#331f3671e6e37bed4dc737942e8eb2a6d1297722" - integrity sha512-RjKn9xxoYQz0v8yzWcVlbIQYZQTcXgYFX7GMJf04V/QbdU6vsge+5vHKzhcaW5XWL8+GgKHTqqoxbqzdJykaPA== +"@abp/jquery-validation@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.4.tgz#fa71e1729b692b40097175d68caad29ea13d5155" + integrity sha512-vrP/Vpne86GbPnHR8M8PGvm+B9kGd/JJiPzVN/egxEvvBKdw0APGk9R03Tji2Qu8CuZxvPnKzHHBwKRinWX3Ng== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-validation "^1.19.2" -"@abp/jquery@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.3.tgz#9d2dc238596a6e5c878b5be4b1d49e7e8f95aec4" - integrity sha512-BN2KU1mw0hyQD8/61ZOIDM0hyMDkhZix4TOWCQa3s18pWHlBEsjKVnINQlz9J9k4TZEdQP9D3wZmw+XUfZjoIw== +"@abp/jquery@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.4.tgz#cbf5f99562ad5f01c41aa61704b0136c4ad68594" + integrity sha512-0fltJprq9DMHHWeTAN7i8kAcod5czQ48LdjeIY3wuLDWkGgMVcfarECQ9cu7QekMryB0HFdrUjMJHIhxqzxc3Q== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" jquery "~3.6.0" -"@abp/lodash@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.3.tgz#8e936ebc54a9043eee80cb22f3dad5ea8a2306cb" - integrity sha512-QKFjdRd8cEZp7fg9MhuFhD5CP3MBw7CfaJ3yj0W1e5Tx+xtV+rYz4PrOE8/BLb4un7gxqUrEWBgdIzY+lBR7mQ== +"@abp/lodash@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.4.tgz#8abd3986bcf64561ecbc86f23f53677b3c34eda9" + integrity sha512-IyAZHiR1vPYhbla0lTH/iYK38PCR+9wP5zgrWGD0JSP9R642GEEhdeiuzwclv1aNGretg+TSATr+zSWB5V1DYQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" lodash "^4.17.15" -"@abp/luxon@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.3.tgz#bd3328f45714155870bc8a91d41a197a613392b0" - integrity sha512-rPVzSXEy+rJZLIQ10boOq6suQAZQWJyB5P+rvfSx8h9sbRpsQ5fJOX2ShnUUf/+49KHzRRIqy+vrhr1oiE0C8Q== +"@abp/luxon@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.4.tgz#429b28dddbd8fa65c6c58978451d426bb886c5a3" + integrity sha512-pw75sGoQ/d4OaNlmGwt55Eq7AGWXUBuXyrsNQWSJmkPV9AS2s//ZoxZut1Wu/qaKo5DV4VitEW1U21MuKoEZPA== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.3.tgz#194f39ebbabad7853089549a7e19cfd2a7393e98" - integrity sha512-bhME41UsDCPGxnLP+zqH8nsx1uAxRR8tAeBKOJV24Xf8FHEjUQEDBXG0t1PBYGZVn1/0Ugao7Z12G9uZOiZVog== +"@abp/malihu-custom-scrollbar-plugin@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.4.tgz#fea9aa4755993dac45a8ad10938da789ec523518" + integrity sha512-Mgtzpw94SjN91YWPdV/TfvDt5JZNpW6iCHfL2NjfH3sTXCywK/CanmhdQ0FYJCasRWVPTHfQPWydFsnyzHWXRQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.3.tgz#71015901aae117360f876c744903613494800c83" - integrity sha512-s7ArMLq2LC0m1oFcuCJghf5lEnGbq1D8/WaIKGmmD0ERL0g5xMccFlNbXm+Z79MJoTvQFssSLPTLZICjzWPKJw== +"@abp/select2@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.4.tgz#80d0e0b64cec86a3aa069e9086958946f631d2bf" + integrity sha512-8qx0nj9ZHrdnEPccpLhavHu4YnVp0Z5ZyfpfACVS2GgaxsR31DbltlGdnr2IfRyhK8nJWLNsW8UNhSoXQwGYEw== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" select2 "^4.0.13" -"@abp/sweetalert@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.3.tgz#287b9c89f90885742b074b4e3a427f0ec482952d" - integrity sha512-tAEgHMaTe+E+uS+Mt8XV3dt5yJJHg01Zsbp4ojO3wvdoAS6MKRXWdH05u3ZdwRQrJFbSgQjY85vWn/a/PnYRng== +"@abp/sweetalert@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.4.tgz#1af8934290d4e5adb7c620363ef2a9b746a6eeab" + integrity sha512-TgXm4rhqzTghKzgbxDT5NQcQ/PRFkgwJtnNWZK3XDZiKzw0auT8Wa3GtSsJJD5tl3Dx6VfnTtmf0gpPU5/9fKQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" sweetalert "^2.1.2" -"@abp/timeago@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.3.tgz#7d31b9fcc128e9b8c6bb7870c4284427e9f9f383" - integrity sha512-E8FeAraStlYsHz6D1oBrwM5eHhZeCGrP7aA768Ke5UGIZPoYwyIIYLRfK4MCoCLKgTVlRrUn0Dj7Xkj9tWOfBQ== +"@abp/timeago@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.4.tgz#91ddb61439eaa138a42b9179ec92845efb05af29" + integrity sha512-r53FieaMDar60tGAu+NLr2qCem1+NhPgd7MtYEemJil8HUYci7T0fXvWcYhlrn98zipzEx3eiWo4eBwvIP8MLg== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" timeago "^1.6.7" -"@abp/toastr@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.3.tgz#45ef155fdbb6134a50794e456f820671c72e4105" - integrity sha512-dmKYS7iw/a+eWCD+J+nZ1htmGEjJSCsV1H8dDwA+ZxYJrE2/ejUh0LZ+b8Hsvobqfe/6bwYBj6oe0R9+vszCfg== +"@abp/toastr@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.4.tgz#1cd04ad6dfcb866bfaad3ec288407b0bf3f47c41" + integrity sha512-B7Q0Gza71nITTbryHcHqiIxtJzFbVmXeoPlcLlc/i4zvMaoibihevN10vXmPnfkdQUvTgViIjwA4/ZnBmyM11Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" toastr "^2.1.4" -"@abp/utils@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.3.tgz#5d6939be5463adaa938357d74d1a35fed21b0115" - integrity sha512-B2E89fhM7vKDz9He6EeNc9P5RVYThiBLpTkKvJTeXG+DJtrP2ZbEICe1fcDA48wLFokXXKgx/SjoJlMvObhilQ== +"@abp/utils@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.4.tgz#0bd79fa4635224fcae7ff61224a8c54266db73bf" + integrity sha512-h8Nt2OPqi8EiXKAuvJIpBlCHhavL7BHr+ntJXY6yM4aCdcQtJdSAgNmh0skzEGnf1hZxrYOugtAz4Pk1WNjv/g== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/angular/package.json b/modules/cms-kit/angular/package.json index 9439064c86..5c157bb08d 100644 --- a/modules/cms-kit/angular/package.json +++ b/modules/cms-kit/angular/package.json @@ -15,11 +15,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~4.4.3", - "@abp/ng.identity": "~4.4.3", - "@abp/ng.setting-management": "~4.4.3", - "@abp/ng.tenant-management": "~4.4.3", - "@abp/ng.theme.basic": "~4.4.3", + "@abp/ng.account": "~4.4.4", + "@abp/ng.identity": "~4.4.4", + "@abp/ng.setting-management": "~4.4.4", + "@abp/ng.tenant-management": "~4.4.4", + "@abp/ng.theme.basic": "~4.4.4", "@angular/animations": "~10.0.0", "@angular/common": "~10.0.0", "@angular/compiler": "~10.0.0", diff --git a/modules/cms-kit/angular/projects/cms-kit/package.json b/modules/cms-kit/angular/projects/cms-kit/package.json index cd7d0332c3..e7b4e75d0c 100644 --- a/modules/cms-kit/angular/projects/cms-kit/package.json +++ b/modules/cms-kit/angular/projects/cms-kit/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=4.4.3", - "@abp/ng.theme.shared": ">=4.4.3" + "@abp/ng.core": ">=4.4.4", + "@abp/ng.theme.shared": ">=4.4.4" }, "dependencies": { "tslib": "^2.0.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json index e06c70fb4e..68c6edf47d 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.4" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/jquery/abp.jquery.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/jquery/abp.jquery.js index 6f8f5b20ce..81ebf1e2e1 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/jquery/abp.jquery.js +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/jquery/abp.jquery.js @@ -106,7 +106,7 @@ var abp = abp || {}; $dfd.resolve(data); userOptions.success && userOptions.success(data); }).fail(function (jqXHR) { - if(jqXHR.status === 0 || jqXHR.statusText === 'abort') { + if(jqXHR.statusText === 'abort') { //ajax request is abort, ignore error handle. return; } diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js index 1fee6e798d..d7b5d2d9c4 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js @@ -1,4 +1,6 @@ /* https://select2.org/troubleshooting/common-problems */ -$.fn.modal.Constructor.prototype._enforceFocus = function () { }; \ No newline at end of file +if ($.fn.modal) { + $.fn.modal.Constructor.prototype._enforceFocus = function () { }; +} diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/ar.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/ar.js deleted file mode 100644 index fe036163c7..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/ar.js +++ /dev/null @@ -1,171 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 1); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), -/* 1 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Arabic - * @author Amira Salah - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage('ar', { - Markdown: 'لغة ترميز', - WYSIWYG: 'ما تراه هو ما تحصل عليه', - Write: 'يكتب', - Preview: 'عرض مسبق', - Headings: 'العناوين', - Paragraph: 'فقرة', - Bold: 'خط عريض', - Italic: 'خط مائل', - Strike: 'إضراب', - Code: 'رمز', - Line: 'خط', - Blockquote: 'فقرة مقتبسة', - 'Unordered list': 'قائمة غير مرتبة', - 'Ordered list': 'قائمة مرتبة', - Task: 'مهمة', - Indent: 'المسافة البادئة', - Outdent: 'المسافة الخارجة', - 'Insert link': 'أدخل الرابط', - 'Insert CodeBlock': 'أدخل الكود', - 'Insert table': 'أدخل جدول', - 'Insert image': 'أدخل صورة', - Heading: 'عنوان', - 'Image URL': 'رابط الصورة', - 'Select image file': 'حدد ملف الصورة', - Description: 'وصف', - OK: 'موافقة', - More: 'أكثر', - Cancel: 'إلغاء', - File: 'ملف', - URL: 'رابط', - 'Link text': 'نص الرابط', - 'Add row': 'ضف سطر', - 'Add col': 'ضف عمود', - 'Remove row': 'حذف سطر', - 'Remove col': 'حذف عمود', - 'Align left': 'محاذاة اليسار', - 'Align center': 'محاذاة الوسط', - 'Align right': 'محاذاة اليمين', - 'Remove table': 'حذف الجدول', - 'Would you like to paste as table?': 'هل تريد اللصق كجدول', - 'Text color': 'لون النص', - 'Auto scroll enabled': 'التحريك التلقائي ممكّن', - 'Auto scroll disabled': 'التحريك التلقائي معطّل', - 'Choose language': 'اختر اللغة' -}); - -/***/ }) -/******/ ]); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/cs-cz.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/cs-cz.js deleted file mode 100644 index 03056d947c..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/cs-cz.js +++ /dev/null @@ -1,172 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 2); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), -/* 1 */, -/* 2 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Czech - * @author Dmitrij Tkačenko - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['cs', 'cs-CZ'], { - Markdown: 'Markdown', - WYSIWYG: 'WYSIWYG', - Write: 'Napsat', - Preview: 'Náhled', - Headings: 'Nadpisy', - Paragraph: 'Odstavec', - Bold: 'Tučné', - Italic: 'Kurzíva', - Strike: 'Přeškrtnuté', - Code: 'Kód', - Line: 'Vodorovná čára', - Blockquote: 'Citace', - 'Unordered list': 'Seznam s odrážkami', - 'Ordered list': 'Číslovaný seznam', - Task: 'Úkol', - Indent: 'Zvětšit odsazení', - Outdent: 'Zmenšit odsazení', - 'Insert link': 'Vložit odkaz', - 'Insert CodeBlock': 'Vložit blok kódu', - 'Insert table': 'Vložit tabulku', - 'Insert image': 'Vložit obrázek', - Heading: 'Nadpis', - 'Image URL': 'URL obrázku', - 'Select image file': 'Vybrat obrázek', - Description: 'Popis', - OK: 'OK', - More: 'Více', - Cancel: 'Zrušit', - File: 'Soubor', - URL: 'URL', - 'Link text': 'Text odkazu', - 'Add row': 'Přidat řádek', - 'Add col': 'Přidat sloupec', - 'Remove row': 'Odebrat řádek', - 'Remove col': 'Odebrat sloupec', - 'Align left': 'Zarovnat vlevo', - 'Align center': 'Zarovnat na střed', - 'Align right': 'Zarovnat vpravo', - 'Remove table': 'Odstranit tabulku', - 'Would you like to paste as table?': 'Chcete vložit jako tabulku?', - 'Text color': 'Barva textu', - 'Auto scroll enabled': 'Automatické rolování zapnuto', - 'Auto scroll disabled': 'Automatické rolování vypnuto', - 'Choose language': 'Vybrat jazyk' -}); - -/***/ }) -/******/ ]); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/de-de.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/de-de.js deleted file mode 100644 index 5f325f3af5..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/de-de.js +++ /dev/null @@ -1,173 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 3); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), -/* 1 */, -/* 2 */, -/* 3 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for German - * @author Jann-Niklas Kiepert - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['de', 'de-DE'], { - Markdown: 'Markdown', - WYSIWYG: 'WYSIWYG', - Write: 'Verfassen', - Preview: 'Vorschau', - Headings: 'Überschriften', - Paragraph: 'Text', - Bold: 'Fett', - Italic: 'Kursiv', - Strike: 'Durchgestrichen', - Code: 'Code', - Line: 'Trennlinie', - Blockquote: 'Blocktext', - 'Unordered list': 'Aufzählung', - 'Ordered list': 'Nummerierte Aufzählung', - Task: 'Aufgabe', - Indent: 'Einrücken', - Outdent: 'Ausrücken', - 'Insert link': 'Link einfügen', - 'Insert CodeBlock': 'Codeblock einfügen', - 'Insert table': 'Tabelle einfügen', - 'Insert image': 'Grafik einfügen', - Heading: 'Titel', - 'Image URL': 'Bild URL', - 'Select image file': 'Grafik auswählen', - Description: 'Beschreibung', - OK: 'OK', - More: 'Mehr', - Cancel: 'Abbrechen', - File: 'Datei', - URL: 'URL', - 'Link text': 'Anzuzeigender Text', - 'Add row': 'Zeile hinzufügen', - 'Add col': 'Spalte hinzufügen', - 'Remove row': 'Zeile entfernen', - 'Remove col': 'Spalte entfernen', - 'Align left': 'Links ausrichten', - 'Align center': 'Zentrieren', - 'Align right': 'Rechts ausrichten', - 'Remove table': 'Tabelle entfernen', - 'Would you like to paste as table?': 'Möchten Sie eine Tabelle einfügen?', - 'Text color': 'Textfarbe', - 'Auto scroll enabled': 'Autoscrollen aktiviert', - 'Auto scroll disabled': 'Autoscrollen deaktiviert', - 'Choose language': 'Sprache auswählen' -}); - -/***/ }) -/******/ ]); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/es-es.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/es-es.js deleted file mode 100644 index eb76415e73..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/es-es.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 4); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), -/* 1 */, -/* 2 */, -/* 3 */, -/* 4 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Spanish - * @author Enrico Lamperti - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['es', 'es-ES'], { - Markdown: 'Markdown', - WYSIWYG: 'WYSIWYG', - Write: 'Escribir', - Preview: 'Vista previa', - Headings: 'Encabezados', - Paragraph: 'Párrafo', - Bold: 'Negrita', - Italic: 'Itálica', - Strike: 'Tachado', - Code: 'Código', - Line: 'Línea', - Blockquote: 'Cita', - 'Unordered list': 'Lista desordenada', - 'Ordered list': 'Lista ordenada', - Task: 'Tarea', - Indent: 'Sangría', - Outdent: 'Saliendo', - 'Insert link': 'Insertar enlace', - 'Insert CodeBlock': 'Insertar bloque de código', - 'Insert table': 'Insertar tabla', - 'Insert image': 'Insertar imagen', - Heading: 'Encabezado', - 'Image URL': 'URL de la imagen', - 'Select image file': 'Seleccionar archivo de imagen', - Description: 'Descripción', - OK: 'Aceptar', - More: 'Más', - Cancel: 'Cancelar', - File: 'Archivo', - URL: 'URL', - 'Link text': 'Texto del enlace', - 'Add row': 'Agregar fila', - 'Add col': 'Agregar columna', - 'Remove row': 'Eliminar fila', - 'Remove col': 'Eliminar columna', - 'Align left': 'Alinear a la izquierda', - 'Align center': 'Centrar', - 'Align right': 'Alinear a la derecha', - 'Remove table': 'Eliminar tabla', - 'Would you like to paste as table?': '¿Desea pegar como tabla?', - 'Text color': 'Color del texto', - 'Auto scroll enabled': 'Desplazamiento automático habilitado', - 'Auto scroll disabled': 'Desplazamiento automático deshabilitado', - 'Choose language': 'Elegir idioma' -}); - -/***/ }) -/******/ ]); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/fi-fi.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/fi-fi.js deleted file mode 100644 index 89b02e3d55..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/fi-fi.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 5); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 0: -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), - -/***/ 5: -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Finnish - * @author Tomi Mynttinen - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['fi', 'fi-FI'], { - Markdown: 'Markdown', - WYSIWYG: 'WYSIWYG', - Write: 'Kirjoita', - Preview: 'Esikatselu', - Headings: 'Otsikot', - Paragraph: 'Kappale', - Bold: 'Lihavointi', - Italic: 'Kursivointi', - Strike: 'Yliviivaus', - Code: 'Koodi', - Line: 'Vaakaviiva', - Blockquote: 'Lainaus', - 'Unordered list': 'Luettelo', - 'Ordered list': 'Numeroitu luettelo', - Task: 'Tehtävä', - Indent: 'Suurenna sisennystä', - Outdent: 'Pienennä sisennystä', - 'Insert link': 'Lisää linkki', - 'Insert CodeBlock': 'Lisää koodia', - 'Insert table': 'Lisää taulukko', - 'Insert image': 'Lisää kuva', - Heading: 'Otsikko', - 'Image URL': 'Kuvan URL', - 'Select image file': 'Valitse kuvatiedosto', - Description: 'Kuvaus', - OK: 'OK', - More: 'Lisää', - Cancel: 'Peruuta', - File: 'Tiedosto', - URL: 'URL', - 'Link text': 'Linkkiteksti', - 'Add row': 'Lisää rivi', - 'Add col': 'Lisää sarake', - 'Remove row': 'Poista rivi', - 'Remove col': 'Poista sarake', - 'Align left': 'Tasaus vasemmalle', - 'Align center': 'Keskitä', - 'Align right': 'Tasaus oikealle', - 'Remove table': 'Poista taulukko', - 'Would you like to paste as table?': 'Haluatko liittää taulukkomuodossa?', - 'Text color': 'Tekstin väri', - 'Auto scroll enabled': 'Automaattinen skrollaus käytössä', - 'Auto scroll disabled': 'Automaattinen skrollaus pois käytöstä', - 'Choose language': 'Valitse kieli' -}); - -/***/ }) - -/******/ }); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/fr-fr.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/fr-fr.js deleted file mode 100644 index 59177f18d0..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/fr-fr.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 6); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 0: -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), - -/***/ 6: -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for French - * @author Stanislas Michalak - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['fr', 'fr-FR'], { - Markdown: 'Markdown', - WYSIWYG: 'WYSIWYG', - Write: 'Écrire', - Preview: 'Aperçu', - Headings: 'En-têtes', - Paragraph: 'Paragraphe', - Bold: 'Gras', - Italic: 'Italique', - Strike: 'Barré', - Code: 'Code en ligne', - Line: 'Ligne', - Blockquote: 'Citation', - 'Unordered list': 'Liste non-ordonnée', - 'Ordered list': 'Liste ordonnée', - Task: 'Tâche', - Indent: 'Retrait', - Outdent: 'Sortir', - 'Insert link': 'Insérer un lien', - 'Insert CodeBlock': 'Insérer un bloc de code', - 'Insert table': 'Insérer un tableau', - 'Insert image': 'Insérer une image', - Heading: 'En-tête', - 'Image URL': "URL de l'image", - 'Select image file': 'Sélectionnez un fichier image', - Description: 'Description', - OK: 'OK', - More: 'de plus', - Cancel: 'Annuler', - File: 'Fichier', - URL: 'URL', - 'Link text': 'Texte du lien', - 'Add row': 'Ajouter une ligne', - 'Add col': 'Ajouter une colonne', - 'Remove row': 'Supprimer une ligne', - 'Remove col': 'Supprimer une colonne', - 'Align left': 'Aligner à gauche', - 'Align center': 'Aligner au centre', - 'Align right': 'Aligner à droite', - 'Remove table': 'Supprimer le tableau', - 'Would you like to paste as table?': 'Voulez-vous coller ce contenu en tant que tableau ?', - 'Text color': 'Couleur du texte', - 'Auto scroll enabled': 'Défilement automatique activé', - 'Auto scroll disabled': 'Défilement automatique désactivé', - 'Choose language': 'Choix de la langue' -}); - -/***/ }) - -/******/ }); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/gl-es.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/gl-es.js deleted file mode 100644 index ad0bdc156f..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/gl-es.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 7); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 0: -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), - -/***/ 7: -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Spanish - * @author Aida Vidal - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['gl', 'gl-ES'], { - Markdown: 'Markdown', - WYSIWYG: 'WYSIWYG', - Write: 'Escribir', - Preview: 'Vista previa', - Headings: 'Encabezados', - Paragraph: 'Parágrafo', - Bold: 'Negriña', - Italic: 'Cursiva', - Strike: 'Riscado', - Code: 'Código', - Line: 'Liña', - Blockquote: 'Cita', - 'Unordered list': 'Lista desordenada', - 'Ordered list': 'Lista ordenada', - Task: 'Tarefa', - Indent: 'Sangría', - Outdent: 'Anular sangría', - 'Insert link': 'Inserir enlace', - 'Insert CodeBlock': 'Inserir bloque de código', - 'Insert table': 'Inserir táboa', - 'Insert image': 'Inserir imaxe', - Heading: 'Encabezado', - 'Image URL': 'URL da imaxe', - 'Select image file': 'Seleccionar arquivo da imaxe', - Description: 'Descrición', - OK: 'Aceptar', - More: 'Máis', - Cancel: 'Cancelar', - File: 'Arquivo', - URL: 'URL', - 'Link text': 'Texto do enlace', - 'Add row': 'Agregar fila', - 'Add col': 'Agregar columna', - 'Remove row': 'Eliminar fila', - 'Remove col': 'Eliminar columna', - 'Align left': 'Aliñar á esquerda', - 'Align center': 'Centrar', - 'Align right': 'Aliñar á dereita', - 'Remove table': 'Eliminar táboa', - 'Would you like to paste as table?': 'Desexa pegar como táboa?', - 'Text color': 'Cor do texto', - 'Auto scroll enabled': 'Desprazamento automático habilitado', - 'Auto scroll disabled': 'Desprazamento automático deshabilitado', - 'Choose language': 'Elixir idioma' -}); - -/***/ }) - -/******/ }); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/hr-hr.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/hr-hr.js deleted file mode 100644 index d934dd03cf..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/hr-hr.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 8); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 0: -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), - -/***/ 8: -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Croatian - * @author Hrvoje A. - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['hr', 'hr-HR'], { - Markdown: 'Markdown', - WYSIWYG: 'WYSIWYG', - Write: 'Piši', - Preview: 'Pregled', - Headings: 'Naslovi', - Paragraph: 'Paragraf', - Bold: 'podebljano', - Italic: 'kurziv', - Strike: 'prcrtano', - Code: 'Uklopljeni kôd', - Line: 'Linija', - Blockquote: 'Blok citat', - 'Unordered list': 'Neporedana lista', - 'Ordered list': 'Poredana lista', - Task: 'Task', - Indent: 'Povećaj uvlaku', - Outdent: 'Smanji uvlaku', - 'Insert link': 'Umetni link', - 'Insert CodeBlock': 'Umetni blok kôda', - 'Insert table': 'Umetni tablicu', - 'Insert image': 'Umetni sliku', - Heading: 'Naslov', - 'Image URL': 'URL slike', - 'Select image file': 'Odaberi slikovnu datoteku', - Description: 'Opis', - OK: 'OK', - More: 'Više', - Cancel: 'Odustani', - File: 'Datoteka', - URL: 'URL', - 'Link text': 'Tekst linka', - 'Add row': 'Dodaj redak', - 'Add col': 'Dodaj stupac', - 'Remove row': 'Ukloni redak', - 'Remove col': 'Remove stupac', - 'Align left': 'Poravnaj lijevo', - 'Align center': 'Poravnaj centrirano', - 'Align right': 'Poravnaj desno', - 'Remove table': 'Ukloni tablicu', - 'Would you like to paste as table?': 'Zalite li zalijepiti kao tablicu?', - 'Text color': 'Boja teksta', - 'Auto scroll enabled': 'Omogući auto klizanje', - 'Auto scroll disabled': 'Onemogući auto klizanje', - 'Choose language': 'Odabir jezika' -}); - -/***/ }) - -/******/ }); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/it-it.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/it-it.js deleted file mode 100644 index a73129c92f..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/it-it.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 9); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 0: -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), - -/***/ 9: -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Italian - * @author Massimo Redaelli - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['it', 'it-IT'], { - Markdown: 'Markdown', - WYSIWYG: 'WYSIWYG', - Write: 'Scrivere', - Preview: 'Anteprima', - Headings: 'Intestazioni', - Paragraph: 'Paragrafo', - Bold: 'Grassetto', - Italic: 'Corsivo', - Strike: 'Barrato', - Code: 'Codice', - Line: 'Linea', - Blockquote: 'Blocco citazione', - 'Unordered list': 'Lista puntata', - 'Ordered list': 'Lista numerata', - Task: 'Attività', - Indent: 'Aggiungi indentazione', - Outdent: 'Rimuovi indentazione', - 'Insert link': 'Inserisci link', - 'Insert CodeBlock': 'Inserisci blocco di codice', - 'Insert table': 'Inserisci tabella', - 'Insert image': 'Inserisci immagine', - Heading: 'Intestazione', - 'Image URL': 'URL immagine', - 'Select image file': 'Seleziona file immagine', - Description: 'Descrizione', - OK: 'OK', - More: 'Più', - Cancel: 'Cancella', - File: 'File', - URL: 'URL', - 'Link text': 'Testo del collegamento', - 'Add row': 'Aggiungi riga', - 'Add col': 'Aggiungi colonna', - 'Remove row': 'Rimuovi riga', - 'Remove col': 'Rimuovi colonna', - 'Align left': 'Allinea a sinistra', - 'Align center': 'Allinea al centro', - 'Align right': 'Allinea a destra', - 'Remove table': 'Rimuovi tabella', - 'Would you like to paste as table?': 'Desideri incollare sotto forma di tabella?', - 'Text color': 'Colore del testo', - 'Auto scroll enabled': 'Scrolling automatico abilitato', - 'Auto scroll disabled': 'Scrolling automatico disabilitato', - 'Choose language': 'Scegli la lingua' -}); - -/***/ }) - -/******/ }); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/ja-jp.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/ja-jp.js deleted file mode 100644 index 5408e65ad8..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/ja-jp.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 10); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 0: -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), - -/***/ 10: -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Japanese - * @author NHN FE Development Lab - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['ja', 'ja-JP'], { - Markdown: 'マークダウン', - WYSIWYG: 'WYSIWYG', - Write: '編集する', - Preview: 'プレビュー', - Headings: '見出し', - Paragraph: '本文', - Bold: '太字', - Italic: 'イタリック', - Strike: 'ストライク', - Code: 'インラインコード', - Line: 'ライン', - Blockquote: '引用', - 'Unordered list': '番号なしリスト', - 'Ordered list': '順序付きリスト', - Task: 'タスク', - Indent: 'インデント', - Outdent: 'アウトデント', - 'Insert link': 'リンク挿入', - 'Insert CodeBlock': 'コードブロック挿入', - 'Insert table': 'テーブル挿入', - 'Insert image': '画像挿入', - Heading: '見出し', - 'Image URL': 'イメージURL', - 'Select image file': '画像ファイル選択', - Description: 'ディスクリプション ', - OK: 'はい', - More: 'もっと', - Cancel: 'キャンセル', - File: 'ファイル', - URL: 'URL', - 'Link text': 'リンクテキスト', - 'Add row': '行追加', - 'Add col': '列追加', - 'Remove row': '行削除', - 'Remove col': '列削除', - 'Align left': '左揃え', - 'Align center': '中央揃え', - 'Align right': '右揃え', - 'Remove table': 'テーブル削除', - 'Would you like to paste as table?': 'テーブルを貼り付けますか?', - 'Text color': '文字色相', - 'Auto scroll enabled': '自動スクロールが有効', - 'Auto scroll disabled': '自動スクロールを無効に', - 'Choose language': '言語選択' -}); - -/***/ }) - -/******/ }); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/ko-kr.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/ko-kr.js deleted file mode 100644 index cb43e2ec04..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/ko-kr.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 11); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 0: -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), - -/***/ 11: -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Korean - * @author NHN FE Development Lab - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['ko', 'ko-KR'], { - Markdown: '마크다운', - WYSIWYG: '위지윅', - Write: '편집하기', - Preview: '미리보기', - Headings: '제목크기', - Paragraph: '본문', - Bold: '굵게', - Italic: '기울임꼴', - Strike: '취소선', - Code: '인라인 코드', - Line: '문단나눔', - Blockquote: '인용구', - 'Unordered list': '글머리 기호', - 'Ordered list': '번호 매기기', - Task: '체크박스', - Indent: '들여쓰기', - Outdent: '내어쓰기', - 'Insert link': '링크 삽입', - 'Insert CodeBlock': '코드블럭 삽입', - 'Insert table': '표 삽입', - 'Insert image': '이미지 삽입', - Heading: '제목', - 'Image URL': '이미지 주소', - 'Select image file': '이미지 파일을 선택하세요.', - Description: '설명', - OK: '확인', - More: '더 보기', - Cancel: '취소', - File: '파일', - URL: '주소', - 'Link text': '링크 텍스트', - 'Add row': '행 추가', - 'Add col': '열 추가', - 'Remove row': '행 삭제', - 'Remove col': '열 삭제', - 'Align left': '왼쪽 정렬', - 'Align center': '가운데 정렬', - 'Align right': '오른쪽 정렬', - 'Remove table': '표 삭제', - 'Would you like to paste as table?': '표형태로 붙여 넣겠습니까?', - 'Text color': '글자 색상', - 'Auto scroll enabled': '자동 스크롤 켜짐', - 'Auto scroll disabled': '자동 스크롤 꺼짐', - 'Choose language': '언어 선택' -}); - -/***/ }) - -/******/ }); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/nb-no.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/nb-no.js deleted file mode 100644 index 3be393c544..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/nb-no.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 12); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 0: -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), - -/***/ 12: -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Norwegian - * @author Anton Reytarovskiy - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['nb', 'nb-NO'], { - Markdown: 'Markdown', - WYSIWYG: 'WYSIWYG', - Write: 'Skriv', - Preview: 'Forhåndsvis', - Headings: 'Overskrifter', - Paragraph: 'Avsnitt', - Bold: 'Fet skrift', - Italic: 'Kursiv', - Strike: 'Gjennomstrek', - Code: 'Kode', - Line: 'Linje', - Blockquote: 'Blokksitat', - 'Unordered list': 'Usortert liste', - 'Ordered list': 'Sortert liste', - Task: 'Task', - Indent: 'Indent', - Outdent: 'Outdent', - 'Insert link': 'Sett inn lenke', - 'Insert CodeBlock': 'Sett inn CodeStreng', - 'Insert table': 'Sett inn diagram', - 'Insert image': 'Sett inn bilde', - Heading: 'Overskrift', - 'Image URL': 'BildeURL', - 'Select image file': 'Velg bildefil', - Description: 'Beskrivelse', - OK: 'OK', - More: 'Mer', - Cancel: 'Angre', - File: 'Fil', - URL: 'URL', - 'Link text': 'Lenketekst', - 'Add row': 'Legg til rad', - 'Add col': 'Legg til kolonne', - 'Remove row': 'Fjern rad', - 'Remove col': 'Fjern kolonne', - 'Align left': 'Venstreorienter', - 'Align center': 'Senterorienter', - 'Align right': 'Høyreorienter', - 'Remove table': 'Fjern diagram', - 'Would you like to paste as table?': 'Ønsker du å lime inn som en tabell?', - 'Text color': 'Tekstfarge', - 'Auto scroll enabled': 'Auto-scroll aktivert', - 'Auto scroll disabled': 'Auto-scroll deaktivert', - 'Choose language': 'Velg språk' -}); - -/***/ }) - -/******/ }); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/nl-nl.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/nl-nl.js deleted file mode 100644 index b55d49c628..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/nl-nl.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 13); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 0: -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), - -/***/ 13: -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Dutch - * @author NHN FE Development Lab - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['nl', 'nl-NL'], { - Markdown: 'Markdown', - WYSIWYG: 'WYSIWYG', - Write: 'Opslaan', - Preview: 'Voorbeeld', - Headings: 'Koppen', - Paragraph: 'Alinea', - Bold: 'Vet', - Italic: 'Cursief', - Strike: 'Doorhalen', - Code: 'Inline code', - Line: 'Regel', - Blockquote: 'Citaatblok', - 'Unordered list': 'Opsomming', - 'Ordered list': 'Genummerde opsomming', - Task: 'Taak', - Indent: 'Niveau verhogen', - Outdent: 'Niveau verlagen', - 'Insert link': 'Link invoegen', - 'Insert CodeBlock': 'Codeblok toevoegen', - 'Insert table': 'Tabel invoegen', - 'Insert image': 'Afbeelding invoegen', - Heading: 'Kop', - 'Image URL': 'Afbeelding URL', - 'Select image file': 'Selecteer een afbeelding', - Description: 'Omschrijving', - OK: 'OK', - More: 'Meer', - Cancel: 'Annuleren', - File: 'Bestand', - URL: 'URL', - 'Link text': 'Link tekst', - 'Add row': 'Rij toevoegen', - 'Add col': 'Kolom toevoegen', - 'Remove row': 'Rij verwijderen', - 'Remove col': 'Kolom verwijderen', - 'Align left': 'Links uitlijnen', - 'Align center': 'Centreren', - 'Align right': 'Rechts uitlijnen', - 'Remove table': 'Verwijder tabel', - 'Would you like to paste as table?': 'Wil je dit als tabel plakken?', - 'Text color': 'Tekstkleur', - 'Auto scroll enabled': 'Autoscroll ingeschakeld', - 'Auto scroll disabled': 'Autoscroll uitgeschakeld', - 'Choose language': 'Kies een taal' -}); - -/***/ }) - -/******/ }); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/pl-pl.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/pl-pl.js deleted file mode 100644 index acb8b23ad1..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/pl-pl.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 14); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 0: -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), - -/***/ 14: -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Polish - * @author Marcin Mikołajczak - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['pl', 'pl-PL'], { - Markdown: 'Markdown', - WYSIWYG: 'WYSIWYG', - Write: 'Napisz', - Preview: 'Podgląd', - Headings: 'Nagłówki', - Paragraph: 'Akapit', - Bold: 'Pogrubienie', - Italic: 'Kursywa', - Strike: 'Przekreślenie', - Code: 'Fragment kodu', - Line: 'Linia', - Blockquote: 'Cytat', - 'Unordered list': 'Lista nieuporządkowana', - 'Ordered list': 'Lista uporządkowana', - Task: 'Zadanie', - Indent: 'Utwórz wcięcie', - Outdent: 'Usuń wcięcie', - 'Insert link': 'Umieść odnośnik', - 'Insert CodeBlock': 'Umieść blok kodu', - 'Insert table': 'Umieść tabelę', - 'Insert image': 'Umieść obraz', - Heading: 'Nagłówek', - 'Image URL': 'Adres URL obrazu', - 'Select image file': 'Wybierz plik obrazu', - Description: 'Opis', - OK: 'OK', - More: 'Więcej', - Cancel: 'Anuluj', - File: 'Plik', - URL: 'URL', - 'Link text': 'Tekst odnośnika', - 'Add row': 'Dodaj rząd', - 'Add col': 'Dodaj kolumnę', - 'Remove row': 'Usuń rząd', - 'Remove col': 'Usuń kolumnę', - 'Align left': 'Wyrównaj do lewej', - 'Align center': 'Wyśrodkuj', - 'Align right': 'Wyrównaj do prawej', - 'Remove table': 'Usuń tabelę', - 'Would you like to paste as table?': 'Czy chcesz wkleić tekst jako tabelę?', - 'Text color': 'Kolor tekstu', - 'Auto scroll enabled': 'Włączono automatyczne przewijanie', - 'Auto scroll disabled': 'Wyłączono automatyczne przewijanie', - 'Choose language': 'Wybierz język' -}); - -/***/ }) - -/******/ }); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/pt-br.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/pt-br.js deleted file mode 100644 index c5eb97233b..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/pt-br.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 15); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 0: -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), - -/***/ 15: -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Português - * @author Nícolas Huber - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['pt', 'pt-BR'], { - Markdown: 'Markdown', - WYSIWYG: 'WYSIWYG', - Write: 'Escrever', - Preview: 'Pré-visualizar', - Headings: 'Cabeçalhos', - Paragraph: 'Parágrafo', - Bold: 'Negrito', - Italic: 'Itálico', - Strike: 'Traçado', - Code: 'Código', - Line: 'Linha', - Blockquote: 'Bloco de citação', - 'Unordered list': 'Lista não ordenada', - 'Ordered list': 'Lista ordenada', - Task: 'Tarefa', - Indent: 'Recuo à esquerda', - Outdent: 'Recuo à direita', - 'Insert link': 'Inserir link', - 'Insert CodeBlock': 'Inserir bloco de código', - 'Insert table': 'Inserir tabela', - 'Insert image': 'Inserir imagem', - Heading: 'Título', - 'Image URL': 'URL da imagem', - 'Select image file': 'Selecione um arquivo de imagem', - Description: 'Descrição', - OK: 'OK', - More: 'Mais', - Cancel: 'Cancelar', - File: 'Arquivo', - URL: 'URL', - 'Link text': 'Link de texto', - 'Add row': 'Adicionar linha', - 'Add col': 'Adicionar coluna', - 'Remove row': 'Remover linha', - 'Remove col': 'Remover coluna', - 'Align left': 'Alinhar à esquerda', - 'Align center': 'Alinhar ao centro', - 'Align right': 'Alinhar à direita', - 'Remove table': 'Remover tabela', - 'Would you like to paste as table?': 'Você gostaria de colar como mesa?', - 'Text color': 'Cor do texto', - 'Auto scroll enabled': 'Rolagem automática habilitada', - 'Auto scroll disabled': 'Rolagem automática desabilitada', - 'Choose language': 'Escolher linguagem' -}); - -/***/ }) - -/******/ }); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/ru-ru.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/ru-ru.js deleted file mode 100644 index dd2a5462f5..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/ru-ru.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 16); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 0: -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), - -/***/ 16: -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Russian - * @author Stepan Samko - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['ru', 'ru-RU'], { - Markdown: 'Markdown', - WYSIWYG: 'WYSIWYG', - Write: 'Написать', - Preview: 'Предварительный просмотр', - Headings: 'Заголовки', - Paragraph: 'Абзац', - Bold: 'Жирный', - Italic: 'Курсив', - Strike: 'Зачеркнутый', - Code: 'Встроенный код', - Line: 'Строка', - Blockquote: 'Блок цитирования', - 'Unordered list': 'Неупорядоченный список', - 'Ordered list': 'Упорядоченный список', - Task: 'Задача', - Indent: 'отступ', - Outdent: 'Выступ', - 'Insert link': 'Вставить ссылку', - 'Insert CodeBlock': 'Вставить код', - 'Insert table': 'Вставить таблицу', - 'Insert image': 'Вставить изображение', - Heading: 'Заголовок', - 'Image URL': 'URL изображения', - 'Select image file': 'Выбрать файл изображения', - Description: 'Описание', - OK: 'Хорошо', - More: 'еще', - Cancel: 'Отмена', - File: 'Файл', - URL: 'URL', - 'Link text': 'Текст ссылки', - 'Add row': 'Добавить ряд', - 'Add col': 'Добавить столбец', - 'Remove row': 'Удалить ряд', - 'Remove col': 'Удалить столбец', - 'Align left': 'Выровнять по левому краю', - 'Align center': 'Выровнять по центру', - 'Align right': 'Выровнять по правому краю', - 'Remove table': 'Удалить таблицу', - 'Would you like to paste as table?': 'Вы хотите вставить в виде таблицы?', - 'Text color': 'Цвет текста', - 'Auto scroll enabled': 'Автоматическая прокрутка включена', - 'Auto scroll disabled': 'Автоматическая прокрутка отключена', - 'Choose language': 'Выбрать язык' -}); - -/***/ }) - -/******/ }); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/sv-se.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/sv-se.js deleted file mode 100644 index 8a69357086..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/sv-se.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 17); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 0: -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), - -/***/ 17: -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Swedish - * @author Magnus Aspling - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['sv', 'sv-SE'], { - Markdown: 'Markdown', - WYSIWYG: 'WYSIWYG', - Write: 'Skriv', - Preview: 'Förhandsgranska', - Headings: 'Överskrifter', - Paragraph: 'Paragraf', - Bold: 'Fet', - Italic: 'Kursiv', - Strike: 'Genomstruken', - Code: 'Kodrad', - Line: 'Linje', - Blockquote: 'Citatblock', - 'Unordered list': 'Punktlista', - 'Ordered list': 'Numrerad lista', - Task: 'Att göra', - Indent: 'Öka indrag', - Outdent: 'Minska indrag', - 'Insert link': 'Infoga länk', - 'Insert CodeBlock': 'Infoga kodblock', - 'Insert table': 'Infoga tabell', - 'Insert image': 'Infoga bild', - Heading: 'Överskrift', - 'Image URL': 'Bildadress', - 'Select image file': 'Välj en bildfil', - Description: 'Beskrivning', - OK: 'OK', - More: 'Mer', - Cancel: 'Avbryt', - File: 'Fil', - URL: 'Adress', - 'Link text': 'Länktext', - 'Add row': 'Infoga rad', - 'Add col': 'Infoga kolumn', - 'Remove row': 'Radera rad', - 'Remove col': 'Radera kolumn', - 'Align left': 'Vänsterjustera', - 'Align center': 'Centrera', - 'Align right': 'Högerjustera', - 'Remove table': 'Radera tabell', - 'Would you like to paste as table?': 'Vill du klistra in som en tabell?', - 'Text color': 'Textfärg', - 'Auto scroll enabled': 'Automatisk scroll aktiverad', - 'Auto scroll disabled': 'Automatisk scroll inaktiverad', - 'Choose language': 'Välj språk' -}); - -/***/ }) - -/******/ }); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/tr-tr.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/tr-tr.js deleted file mode 100644 index 5a6e877f6f..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/tr-tr.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 18); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 0: -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), - -/***/ 18: -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Turkish - * @author Mesut Gölcük - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['tr', 'tr-TR'], { - Markdown: 'Markdown', - WYSIWYG: 'WYSIWYG', - Write: 'Düzenle', - Preview: 'Ön izleme', - Headings: 'Başlıklar', - Paragraph: 'Paragraf', - Bold: 'Kalın', - Italic: 'İtalik', - Strike: 'Altı çizgili', - Code: 'Satır içi kod', - Line: 'Çizgi', - Blockquote: 'Alıntı', - 'Unordered list': 'Sıralanmamış liste', - 'Ordered list': 'Sıralı liste', - Task: 'Görev kutusu', - Indent: 'Girintiyi arttır', - Outdent: 'Girintiyi azalt', - 'Insert link': 'Bağlantı ekle', - 'Insert CodeBlock': 'Kod bloku ekle', - 'Insert table': 'Tablo ekle', - 'Insert image': 'İmaj ekle', - Heading: 'Başlık', - 'Image URL': 'İmaj URL', - 'Select image file': 'İmaj dosyası seç', - Description: 'Açıklama', - OK: 'Onay', - More: 'Daha Fazla', - Cancel: 'İptal', - File: 'Dosya', - URL: 'URL', - 'Link text': 'Bağlantı yazısı', - 'Add row': 'Satır ekle', - 'Add col': 'Sütun ekle', - 'Remove row': 'Satır sil', - 'Remove col': 'Sütun sil', - 'Align left': 'Sola hizala', - 'Align center': 'Merkeze hizala', - 'Align right': 'Sağa hizala', - 'Remove table': 'Tabloyu kaldır', - 'Would you like to paste as table?': 'Tablo olarak yapıştırmak ister misiniz?', - 'Text color': 'Metin rengi', - 'Auto scroll enabled': 'Otomatik kaydırma açık', - 'Auto scroll disabled': 'Otomatik kaydırma kapalı', - 'Choose language': 'Dil seçiniz' -}); - -/***/ }) - -/******/ }); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/uk-ua.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/uk-ua.js deleted file mode 100644 index e42497035e..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/uk-ua.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 19); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 0: -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), - -/***/ 19: -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Ukrainian - * @author Nikolya - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage(['uk', 'uk-UA'], { - Markdown: 'Markdown', - WYSIWYG: 'WYSIWYG', - Write: 'Написати', - Preview: 'Попередній перегляд', - Headings: 'Заголовки', - Paragraph: 'Абзац', - Bold: 'Жирний', - Italic: 'Курсив', - Strike: 'Закреслений', - Code: 'Вбудований код', - Line: 'Лінія', - Blockquote: 'Блок цитування', - 'Unordered list': 'Невпорядкований список', - 'Ordered list': 'Упорядкований список', - Task: 'Завдання', - Indent: 'відступ', - Outdent: 'застарілий', - 'Insert link': 'Вставити посилання', - 'Insert CodeBlock': 'Вставити код', - 'Insert table': 'Вставити таблицю', - 'Insert image': 'Вставити зображення', - Heading: 'Заголовок', - 'Image URL': 'URL зображення', - 'Select image file': 'Вибрати файл зображення', - Description: 'Опис', - OK: 'OK', - More: 'ще', - Cancel: 'Скасувати', - File: 'Файл', - URL: 'URL', - 'Link text': 'Текст посилання', - 'Add row': 'Додати ряд', - 'Add col': 'Додати стовпчик', - 'Remove row': 'Видалити ряд', - 'Remove col': 'Видалити стовпчик', - 'Align left': 'Вирівняти по лівому краю', - 'Align center': 'Вирівняти по центру', - 'Align right': 'Вирівняти по правому краю', - 'Remove table': 'Видалити таблицю', - 'Would you like to paste as table?': 'Ви хочете вставити у вигляді таблиці?', - 'Text color': 'Колір тексту', - 'Auto scroll enabled': 'Автоматична прокрутка включена', - 'Auto scroll disabled': 'Автоматична прокрутка відключена', - 'Choose language': 'Вибрати мову' -}); - -/***/ }) - -/******/ }); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/zh-cn.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/zh-cn.js deleted file mode 100644 index 5dd3332e70..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/zh-cn.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 20); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 0: -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), - -/***/ 20: -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Chinese - * @author NHN FE Development Lab - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage('zh-CN', { - Markdown: 'Markdown', - WYSIWYG: '所见即所得', - Write: '编辑', - Preview: '预览', - Headings: '标题', - Paragraph: '文本', - Bold: '加粗', - Italic: '斜体字', - Strike: '删除线', - Code: '内嵌代码', - Line: '水平线', - Blockquote: '引用块', - 'Unordered list': '无序列表', - 'Ordered list': '有序列表', - Task: '任务', - Indent: '缩进', - Outdent: '减少缩进', - 'Insert link': '插入链接', - 'Insert CodeBlock': '插入代码块', - 'Insert table': '插入表格', - 'Insert image': '插入图片', - Heading: '标题', - 'Image URL': '图片网址', - 'Select image file': '选择图片文件', - Description: '说明', - OK: '确认', - More: '更多', - Cancel: '取消', - File: '文件', - URL: 'URL', - 'Link text': '链接文本', - 'Add row': '添加行', - 'Add col': '添加列', - 'Remove row': '删除行', - 'Remove col': '删除列', - 'Align left': '左对齐', - 'Align center': '居中对齐', - 'Align right': '右对齐', - 'Remove table': '删除表格', - 'Would you like to paste as table?': '需要粘贴为表格吗?', - 'Text color': '文字颜色', - 'Auto scroll enabled': '自动滚动已启用', - 'Auto scroll disabled': '自动滚动已禁用', - 'Choose language': '选择语言' -}); - -/***/ }) - -/******/ }); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/zh-tw.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/zh-tw.js deleted file mode 100644 index 684b689d8a..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/i18n/zh-tw.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * TOAST UI Editor : i18n - * @version 2.5.1 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@toast-ui/editor")); - else if(typeof define === 'function' && define.amd) - define(["@toast-ui/editor"], factory); - else { - var a = typeof exports === 'object' ? factory(require("@toast-ui/editor")) : factory(root["toastui"]["Editor"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 21); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 0: -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__0__; - -/***/ }), - -/***/ 21: -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); -/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor__WEBPACK_IMPORTED_MODULE_0__); -/** - * @fileoverview I18N for Traditional Chinese - * @author Tzu-Ray Su - */ - -_editor__WEBPACK_IMPORTED_MODULE_0___default.a.setLanguage('zh-TW', { - Markdown: 'Markdown', - WYSIWYG: '所見即所得', - Write: '編輯', - Preview: '預覽', - Headings: '標題', - Paragraph: '內文', - Bold: '粗體', - Italic: '斜體', - Strike: '刪除線', - Code: '內嵌程式碼', - Line: '分隔線', - Blockquote: '引言', - 'Unordered list': '項目符號清單', - 'Ordered list': '編號清單', - Task: '核取方塊清單', - Indent: '增加縮排', - Outdent: '減少縮排', - 'Insert link': '插入超連結', - 'Insert CodeBlock': '插入程式碼區塊', - 'Insert table': '插入表格', - 'Insert image': '插入圖片', - Heading: '標題', - 'Image URL': '圖片網址', - 'Select image file': '選擇圖片檔案', - Description: '描述', - OK: '確認', - More: '更多', - Cancel: '取消', - File: '檔案', - URL: 'URL', - 'Link text': '超連結文字', - 'Add row': '增加行', - 'Add col': '增加列', - 'Remove row': '刪除行', - 'Remove col': '刪除列', - 'Align left': '靠左對齊', - 'Align center': '置中', - 'Align right': '靠右對齊', - 'Remove table': '刪除表格', - 'Would you like to paste as table?': '您要以表格貼上嗎?', - 'Text color': '文字顏色', - 'Auto scroll enabled': '已啟用自動滾動', - 'Auto scroll disabled': '已停用自動滾動', - 'Choose language': '選擇語言' -}); - -/***/ }) - -/******/ }); -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastr.css b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastr.css new file mode 100644 index 0000000000..76f7f572e6 --- /dev/null +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastr.css @@ -0,0 +1,228 @@ +.toast-title { + font-weight: bold; +} +.toast-message { + -ms-word-wrap: break-word; + word-wrap: break-word; +} +.toast-message a, +.toast-message label { + color: #FFFFFF; +} +.toast-message a:hover { + color: #CCCCCC; + text-decoration: none; +} +.toast-close-button { + position: relative; + right: -0.3em; + top: -0.3em; + float: right; + font-size: 20px; + font-weight: bold; + color: #FFFFFF; + -webkit-text-shadow: 0 1px 0 #ffffff; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); + line-height: 1; +} +.toast-close-button:hover, +.toast-close-button:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); + filter: alpha(opacity=40); +} +.rtl .toast-close-button { + left: -0.3em; + float: left; + right: 0.3em; +} +/*Additional properties for button version + iOS requires the button element instead of an anchor tag. + If you want the anchor version, it requires `href="#"`.*/ +button.toast-close-button { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.toast-top-center { + top: 0; + right: 0; + width: 100%; +} +.toast-bottom-center { + bottom: 0; + right: 0; + width: 100%; +} +.toast-top-full-width { + top: 0; + right: 0; + width: 100%; +} +.toast-bottom-full-width { + bottom: 0; + right: 0; + width: 100%; +} +.toast-top-left { + top: 12px; + left: 12px; +} +.toast-top-right { + top: 12px; + right: 12px; +} +.toast-bottom-right { + right: 12px; + bottom: 12px; +} +.toast-bottom-left { + bottom: 12px; + left: 12px; +} +#toast-container { + position: fixed; + z-index: 999999; + pointer-events: none; + /*overrides*/ +} +#toast-container * { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +#toast-container > div { + position: relative; + pointer-events: auto; + overflow: hidden; + margin: 0 0 6px; + padding: 15px 15px 15px 50px; + width: 300px; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + background-position: 15px center; + background-repeat: no-repeat; + -moz-box-shadow: 0 0 12px #999999; + -webkit-box-shadow: 0 0 12px #999999; + box-shadow: 0 0 12px #999999; + color: #FFFFFF; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); +} +#toast-container > div.rtl { + direction: rtl; + padding: 15px 50px 15px 15px; + background-position: right 15px center; +} +#toast-container > div:hover { + -moz-box-shadow: 0 0 12px #000000; + -webkit-box-shadow: 0 0 12px #000000; + box-shadow: 0 0 12px #000000; + opacity: 1; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + filter: alpha(opacity=100); + cursor: pointer; +} +#toast-container > .toast-info { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; +} +#toast-container > .toast-error { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; +} +#toast-container > .toast-success { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; +} +#toast-container > .toast-warning { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; +} +#toast-container.toast-top-center > div, +#toast-container.toast-bottom-center > div { + width: 300px; + margin-left: auto; + margin-right: auto; +} +#toast-container.toast-top-full-width > div, +#toast-container.toast-bottom-full-width > div { + width: 96%; + margin-left: auto; + margin-right: auto; +} +.toast { + background-color: #030303; +} +.toast-success { + background-color: #51A351; +} +.toast-error { + background-color: #BD362F; +} +.toast-info { + background-color: #2F96B4; +} +.toast-warning { + background-color: #F89406; +} +.toast-progress { + position: absolute; + left: 0; + bottom: 0; + height: 4px; + background-color: #000000; + opacity: 0.4; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); + filter: alpha(opacity=40); +} +/*Responsive Design*/ +@media all and (max-width: 240px) { + #toast-container > div { + padding: 8px 8px 8px 50px; + width: 11em; + } + #toast-container > div.rtl { + padding: 8px 50px 8px 8px; + } + #toast-container .toast-close-button { + right: -0.2em; + top: -0.2em; + } + #toast-container .rtl .toast-close-button { + left: -0.2em; + right: 0.2em; + } +} +@media all and (min-width: 241px) and (max-width: 480px) { + #toast-container > div { + padding: 8px 8px 8px 50px; + width: 18em; + } + #toast-container > div.rtl { + padding: 8px 50px 8px 8px; + } + #toast-container .toast-close-button { + right: -0.2em; + top: -0.2em; + } + #toast-container .rtl .toast-close-button { + left: -0.2em; + right: 0.2em; + } +} +@media all and (min-width: 481px) and (max-width: 768px) { + #toast-container > div { + padding: 15px 15px 15px 50px; + width: 25em; + } + #toast-container > div.rtl { + padding: 15px 50px 15px 15px; + } +} diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastr.js.map b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastr.js.map new file mode 100644 index 0000000000..47a9639aba --- /dev/null +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastr.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["toastr.js"],"names":["define","$","error","message","title","optionsOverride","notify","type","toastType","iconClass","getOptions","iconClasses","getContainer","options","create","$container","containerId","length","createContainer","info","subscribe","callback","listener","success","warning","clear","$toastElement","clearOptions","clearToast","clearContainer","remove","removeToast","children","toastsToClear","i","force","hideMethod","duration","hideDuration","easing","hideEasing","complete","attr","addClass","positionClass","appendTo","target","getDefaults","tapToDismiss","toastClass","debug","showMethod","showDuration","showEasing","onShown","undefined","onHidden","closeMethod","closeDuration","closeEasing","closeOnHover","extendedTimeOut","timeOut","titleClass","messageClass","escapeHtml","closeHtml","closeClass","newestOnTop","preventDuplicates","progressBar","progressClass","rtl","publish","args","map","source","replace","personalizeToast","setIcon","setTitle","setMessage","setCloseButton","setProgressBar","setRTL","setSequence","setAria","ariaValue","handleEvents","hover","stickAround","delayedHideToast","onclick","click","hideToast","closeButton","$closeElement","event","stopPropagation","cancelBubble","onCloseClick","displayToast","hide","intervalId","setTimeout","maxHideTime","parseFloat","hideEta","Date","getTime","setInterval","updateProgress","prepend","append","suffix","$titleElement","$messageElement","$progressElement","shouldExit","previousToast","override","method","clearTimeout","response","state","endTime","stop","percentage","width","extend","toastId","startTime","console","log","toastr","is","version","amd","deps","factory","module","exports","require","window","jQuery"],"mappings":"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","file":"toastr.js","sourcesContent":["/*\n * Toastr\n * Copyright 2012-2015\n * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.\n * All Rights Reserved.\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\n * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php\n *\n * ARIA Support: Greta Krafsig\n *\n * Project: https://github.com/CodeSeven/toastr\n */\n/* global define */\n(function (define) {\n define(['jquery'], function ($) {\n return (function () {\n var $container;\n var listener;\n var toastId = 0;\n var toastType = {\n error: 'error',\n info: 'info',\n success: 'success',\n warning: 'warning'\n };\n\n var toastr = {\n clear: clear,\n remove: remove,\n error: error,\n getContainer: getContainer,\n info: info,\n options: {},\n subscribe: subscribe,\n success: success,\n version: '2.1.4',\n warning: warning\n };\n\n var previousToast;\n\n return toastr;\n\n ////////////////\n\n function error(message, title, optionsOverride) {\n return notify({\n type: toastType.error,\n iconClass: getOptions().iconClasses.error,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function getContainer(options, create) {\n if (!options) { options = getOptions(); }\n $container = $('#' + options.containerId);\n if ($container.length) {\n return $container;\n }\n if (create) {\n $container = createContainer(options);\n }\n return $container;\n }\n\n function info(message, title, optionsOverride) {\n return notify({\n type: toastType.info,\n iconClass: getOptions().iconClasses.info,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function subscribe(callback) {\n listener = callback;\n }\n\n function success(message, title, optionsOverride) {\n return notify({\n type: toastType.success,\n iconClass: getOptions().iconClasses.success,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function warning(message, title, optionsOverride) {\n return notify({\n type: toastType.warning,\n iconClass: getOptions().iconClasses.warning,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function clear($toastElement, clearOptions) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if (!clearToast($toastElement, options, clearOptions)) {\n clearContainer(options);\n }\n }\n\n function remove($toastElement) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if ($toastElement && $(':focus', $toastElement).length === 0) {\n removeToast($toastElement);\n return;\n }\n if ($container.children().length) {\n $container.remove();\n }\n }\n\n // internal functions\n\n function clearContainer (options) {\n var toastsToClear = $container.children();\n for (var i = toastsToClear.length - 1; i >= 0; i--) {\n clearToast($(toastsToClear[i]), options);\n }\n }\n\n function clearToast ($toastElement, options, clearOptions) {\n var force = clearOptions && clearOptions.force ? clearOptions.force : false;\n if ($toastElement && (force || $(':focus', $toastElement).length === 0)) {\n $toastElement[options.hideMethod]({\n duration: options.hideDuration,\n easing: options.hideEasing,\n complete: function () { removeToast($toastElement); }\n });\n return true;\n }\n return false;\n }\n\n function createContainer(options) {\n $container = $('
')\n .attr('id', options.containerId)\n .addClass(options.positionClass);\n\n $container.appendTo($(options.target));\n return $container;\n }\n\n function getDefaults() {\n return {\n tapToDismiss: true,\n toastClass: 'toast',\n containerId: 'toast-container',\n debug: false,\n\n showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery\n showDuration: 300,\n showEasing: 'swing', //swing and linear are built into jQuery\n onShown: undefined,\n hideMethod: 'fadeOut',\n hideDuration: 1000,\n hideEasing: 'swing',\n onHidden: undefined,\n closeMethod: false,\n closeDuration: false,\n closeEasing: false,\n closeOnHover: true,\n\n extendedTimeOut: 1000,\n iconClasses: {\n error: 'toast-error',\n info: 'toast-info',\n success: 'toast-success',\n warning: 'toast-warning'\n },\n iconClass: 'toast-info',\n positionClass: 'toast-top-right',\n timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky\n titleClass: 'toast-title',\n messageClass: 'toast-message',\n escapeHtml: false,\n target: 'body',\n closeHtml: '',\n closeClass: 'toast-close-button',\n newestOnTop: true,\n preventDuplicates: false,\n progressBar: false,\n progressClass: 'toast-progress',\n rtl: false\n };\n }\n\n function publish(args) {\n if (!listener) { return; }\n listener(args);\n }\n\n function notify(map) {\n var options = getOptions();\n var iconClass = map.iconClass || options.iconClass;\n\n if (typeof (map.optionsOverride) !== 'undefined') {\n options = $.extend(options, map.optionsOverride);\n iconClass = map.optionsOverride.iconClass || iconClass;\n }\n\n if (shouldExit(options, map)) { return; }\n\n toastId++;\n\n $container = getContainer(options, true);\n\n var intervalId = null;\n var $toastElement = $('
');\n var $titleElement = $('
');\n var $messageElement = $('
');\n var $progressElement = $('
');\n var $closeElement = $(options.closeHtml);\n var progressBar = {\n intervalId: null,\n hideEta: null,\n maxHideTime: null\n };\n var response = {\n toastId: toastId,\n state: 'visible',\n startTime: new Date(),\n options: options,\n map: map\n };\n\n personalizeToast();\n\n displayToast();\n\n handleEvents();\n\n publish(response);\n\n if (options.debug && console) {\n console.log(response);\n }\n\n return $toastElement;\n\n function escapeHtml(source) {\n if (source == null) {\n source = '';\n }\n\n return source\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(//g, '>');\n }\n\n function personalizeToast() {\n setIcon();\n setTitle();\n setMessage();\n setCloseButton();\n setProgressBar();\n setRTL();\n setSequence();\n setAria();\n }\n\n function setAria() {\n var ariaValue = '';\n switch (map.iconClass) {\n case 'toast-success':\n case 'toast-info':\n ariaValue = 'polite';\n break;\n default:\n ariaValue = 'assertive';\n }\n $toastElement.attr('aria-live', ariaValue);\n }\n\n function handleEvents() {\n if (options.closeOnHover) {\n $toastElement.hover(stickAround, delayedHideToast);\n }\n\n if (!options.onclick && options.tapToDismiss) {\n $toastElement.click(hideToast);\n }\n\n if (options.closeButton && $closeElement) {\n $closeElement.click(function (event) {\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) {\n event.cancelBubble = true;\n }\n\n if (options.onCloseClick) {\n options.onCloseClick(event);\n }\n\n hideToast(true);\n });\n }\n\n if (options.onclick) {\n $toastElement.click(function (event) {\n options.onclick(event);\n hideToast();\n });\n }\n }\n\n function displayToast() {\n $toastElement.hide();\n\n $toastElement[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing, complete: options.onShown}\n );\n\n if (options.timeOut > 0) {\n intervalId = setTimeout(hideToast, options.timeOut);\n progressBar.maxHideTime = parseFloat(options.timeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n if (options.progressBar) {\n progressBar.intervalId = setInterval(updateProgress, 10);\n }\n }\n }\n\n function setIcon() {\n if (map.iconClass) {\n $toastElement.addClass(options.toastClass).addClass(iconClass);\n }\n }\n\n function setSequence() {\n if (options.newestOnTop) {\n $container.prepend($toastElement);\n } else {\n $container.append($toastElement);\n }\n }\n\n function setTitle() {\n if (map.title) {\n var suffix = map.title;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.title);\n }\n $titleElement.append(suffix).addClass(options.titleClass);\n $toastElement.append($titleElement);\n }\n }\n\n function setMessage() {\n if (map.message) {\n var suffix = map.message;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.message);\n }\n $messageElement.append(suffix).addClass(options.messageClass);\n $toastElement.append($messageElement);\n }\n }\n\n function setCloseButton() {\n if (options.closeButton) {\n $closeElement.addClass(options.closeClass).attr('role', 'button');\n $toastElement.prepend($closeElement);\n }\n }\n\n function setProgressBar() {\n if (options.progressBar) {\n $progressElement.addClass(options.progressClass);\n $toastElement.prepend($progressElement);\n }\n }\n\n function setRTL() {\n if (options.rtl) {\n $toastElement.addClass('rtl');\n }\n }\n\n function shouldExit(options, map) {\n if (options.preventDuplicates) {\n if (map.message === previousToast) {\n return true;\n } else {\n previousToast = map.message;\n }\n }\n return false;\n }\n\n function hideToast(override) {\n var method = override && options.closeMethod !== false ? options.closeMethod : options.hideMethod;\n var duration = override && options.closeDuration !== false ?\n options.closeDuration : options.hideDuration;\n var easing = override && options.closeEasing !== false ? options.closeEasing : options.hideEasing;\n if ($(':focus', $toastElement).length && !override) {\n return;\n }\n clearTimeout(progressBar.intervalId);\n return $toastElement[method]({\n duration: duration,\n easing: easing,\n complete: function () {\n removeToast($toastElement);\n clearTimeout(intervalId);\n if (options.onHidden && response.state !== 'hidden') {\n options.onHidden();\n }\n response.state = 'hidden';\n response.endTime = new Date();\n publish(response);\n }\n });\n }\n\n function delayedHideToast() {\n if (options.timeOut > 0 || options.extendedTimeOut > 0) {\n intervalId = setTimeout(hideToast, options.extendedTimeOut);\n progressBar.maxHideTime = parseFloat(options.extendedTimeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n }\n }\n\n function stickAround() {\n clearTimeout(intervalId);\n progressBar.hideEta = 0;\n $toastElement.stop(true, true)[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing}\n );\n }\n\n function updateProgress() {\n var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100;\n $progressElement.width(percentage + '%');\n }\n }\n\n function getOptions() {\n return $.extend({}, getDefaults(), toastr.options);\n }\n\n function removeToast($toastElement) {\n if (!$container) { $container = getContainer(); }\n if ($toastElement.is(':visible')) {\n return;\n }\n $toastElement.remove();\n $toastElement = null;\n if ($container.children().length === 0) {\n $container.remove();\n previousToast = undefined;\n }\n }\n\n })();\n });\n}(typeof define === 'function' && define.amd ? define : function (deps, factory) {\n if (typeof module !== 'undefined' && module.exports) { //Node\n module.exports = factory(require('jquery'));\n } else {\n window.toastr = factory(window.jQuery);\n }\n}));\n"]} \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastr.min.css b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastr.min.css new file mode 100644 index 0000000000..064afd0718 --- /dev/null +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastr.min.css @@ -0,0 +1 @@ +.toast-title{font-weight:700}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#FFF}.toast-message a:hover{color:#CCC;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#FFF;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80);line-height:1}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}.rtl .toast-close-button{left:-.3em;float:left;right:.3em}button.toast-close-button{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999;pointer-events:none}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-position:15px center;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#FFF;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}#toast-container>div.rtl{direction:rtl;padding:15px 50px 15px 15px;background-position:right 15px center}#toast-container>div:hover{-moz-box-shadow:0 0 12px #000;-webkit-box-shadow:0 0 12px #000;box-shadow:0 0 12px #000;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=)!important}#toast-container>.toast-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=)!important}#toast-container>.toast-success{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==)!important}#toast-container>.toast-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=)!important}#toast-container.toast-bottom-center>div,#toast-container.toast-top-center>div{width:300px;margin-left:auto;margin-right:auto}#toast-container.toast-bottom-full-width>div,#toast-container.toast-top-full-width>div{width:96%;margin-left:auto;margin-right:auto}.toast{background-color:#030303}.toast-success{background-color:#51A351}.toast-error{background-color:#BD362F}.toast-info{background-color:#2F96B4}.toast-warning{background-color:#F89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@media all and (max-width:240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{right:-.2em;top:-.2em}#toast-container .rtl .toast-close-button{left:-.2em;right:.2em}}@media all and (min-width:241px) and (max-width:480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{right:-.2em;top:-.2em}#toast-container .rtl .toast-close-button{left:-.2em;right:.2em}}@media all and (min-width:481px) and (max-width:768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}#toast-container>div.rtl{padding:15px 50px 15px 15px}} \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastr.min.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastr.min.js new file mode 100644 index 0000000000..06e4814ff8 --- /dev/null +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastr.min.js @@ -0,0 +1,2 @@ +!function(e){e(["jquery"],function(e){return function(){function t(e,t,n){return g({type:O.error,iconClass:m().iconClasses.error,message:e,optionsOverride:n,title:t})}function n(t,n){return t||(t=m()),v=e("#"+t.containerId),v.length?v:(n&&(v=d(t)),v)}function o(e,t,n){return g({type:O.info,iconClass:m().iconClasses.info,message:e,optionsOverride:n,title:t})}function s(e){C=e}function i(e,t,n){return g({type:O.success,iconClass:m().iconClasses.success,message:e,optionsOverride:n,title:t})}function a(e,t,n){return g({type:O.warning,iconClass:m().iconClasses.warning,message:e,optionsOverride:n,title:t})}function r(e,t){var o=m();v||n(o),u(e,o,t)||l(o)}function c(t){var o=m();return v||n(o),t&&0===e(":focus",t).length?void h(t):void(v.children().length&&v.remove())}function l(t){for(var n=v.children(),o=n.length-1;o>=0;o--)u(e(n[o]),t)}function u(t,n,o){var s=!(!o||!o.force)&&o.force;return!(!t||!s&&0!==e(":focus",t).length)&&(t[n.hideMethod]({duration:n.hideDuration,easing:n.hideEasing,complete:function(){h(t)}}),!0)}function d(t){return v=e("
").attr("id",t.containerId).addClass(t.positionClass),v.appendTo(e(t.target)),v}function p(){return{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:void 0,closeMethod:!1,closeDuration:!1,closeEasing:!1,closeOnHover:!0,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",escapeHtml:!1,target:"body",closeHtml:'',closeClass:"toast-close-button",newestOnTop:!0,preventDuplicates:!1,progressBar:!1,progressClass:"toast-progress",rtl:!1}}function f(e){C&&C(e)}function g(t){function o(e){return null==e&&(e=""),e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function s(){c(),u(),d(),p(),g(),C(),l(),i()}function i(){var e="";switch(t.iconClass){case"toast-success":case"toast-info":e="polite";break;default:e="assertive"}I.attr("aria-live",e)}function a(){E.closeOnHover&&I.hover(H,D),!E.onclick&&E.tapToDismiss&&I.click(b),E.closeButton&&j&&j.click(function(e){e.stopPropagation?e.stopPropagation():void 0!==e.cancelBubble&&e.cancelBubble!==!0&&(e.cancelBubble=!0),E.onCloseClick&&E.onCloseClick(e),b(!0)}),E.onclick&&I.click(function(e){E.onclick(e),b()})}function r(){I.hide(),I[E.showMethod]({duration:E.showDuration,easing:E.showEasing,complete:E.onShown}),E.timeOut>0&&(k=setTimeout(b,E.timeOut),F.maxHideTime=parseFloat(E.timeOut),F.hideEta=(new Date).getTime()+F.maxHideTime,E.progressBar&&(F.intervalId=setInterval(x,10)))}function c(){t.iconClass&&I.addClass(E.toastClass).addClass(y)}function l(){E.newestOnTop?v.prepend(I):v.append(I)}function u(){if(t.title){var e=t.title;E.escapeHtml&&(e=o(t.title)),M.append(e).addClass(E.titleClass),I.append(M)}}function d(){if(t.message){var e=t.message;E.escapeHtml&&(e=o(t.message)),B.append(e).addClass(E.messageClass),I.append(B)}}function p(){E.closeButton&&(j.addClass(E.closeClass).attr("role","button"),I.prepend(j))}function g(){E.progressBar&&(q.addClass(E.progressClass),I.prepend(q))}function C(){E.rtl&&I.addClass("rtl")}function O(e,t){if(e.preventDuplicates){if(t.message===w)return!0;w=t.message}return!1}function b(t){var n=t&&E.closeMethod!==!1?E.closeMethod:E.hideMethod,o=t&&E.closeDuration!==!1?E.closeDuration:E.hideDuration,s=t&&E.closeEasing!==!1?E.closeEasing:E.hideEasing;if(!e(":focus",I).length||t)return clearTimeout(F.intervalId),I[n]({duration:o,easing:s,complete:function(){h(I),clearTimeout(k),E.onHidden&&"hidden"!==P.state&&E.onHidden(),P.state="hidden",P.endTime=new Date,f(P)}})}function D(){(E.timeOut>0||E.extendedTimeOut>0)&&(k=setTimeout(b,E.extendedTimeOut),F.maxHideTime=parseFloat(E.extendedTimeOut),F.hideEta=(new Date).getTime()+F.maxHideTime)}function H(){clearTimeout(k),F.hideEta=0,I.stop(!0,!0)[E.showMethod]({duration:E.showDuration,easing:E.showEasing})}function x(){var e=(F.hideEta-(new Date).getTime())/F.maxHideTime*100;q.width(e+"%")}var E=m(),y=t.iconClass||E.iconClass;if("undefined"!=typeof t.optionsOverride&&(E=e.extend(E,t.optionsOverride),y=t.optionsOverride.iconClass||y),!O(E,t)){T++,v=n(E,!0);var k=null,I=e("
"),M=e("
"),B=e("
"),q=e("
"),j=e(E.closeHtml),F={intervalId:null,hideEta:null,maxHideTime:null},P={toastId:T,state:"visible",startTime:new Date,options:E,map:t};return s(),r(),a(),f(P),E.debug&&console&&console.log(P),I}}function m(){return e.extend({},p(),b.options)}function h(e){v||(v=n()),e.is(":visible")||(e.remove(),e=null,0===v.children().length&&(v.remove(),w=void 0))}var v,C,w,T=0,O={error:"error",info:"info",success:"success",warning:"warning"},b={clear:r,remove:c,error:t,getContainer:n,info:o,options:{},subscribe:s,success:i,version:"2.1.4",warning:a};return b}()})}("function"==typeof define&&define.amd?define:function(e,t){"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):window.toastr=t(window.jQuery)}); +//# sourceMappingURL=toastr.js.map diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor-old.css b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor-old.css deleted file mode 100644 index 6499cff350..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor-old.css +++ /dev/null @@ -1,1649 +0,0 @@ -/*! - * @toast-ui/editor - * @version 2.5.1 | Tue Nov 24 2020 - * @author NHN FE Development Lab - * @license MIT - */ -/* height */ -.auto-height, -.auto-height .tui-editor-defaultUI { - height: auto; -} - -.auto-height .tui-editor { - position: relative; -} - -:not(.auto-height) > .tui-editor-defaultUI, -:not(.auto-height) > .tui-editor-defaultUI > .te-editor-section { - display: -ms-flexbox; - display: flex; - -ms-flex-direction: column; - flex-direction: column; -} - -:not(.auto-height) > .tui-editor-defaultUI > .te-editor-section { - -ms-flex: 1; - flex: 1; -} - -/* tui editor */ -.tui-editor:after, -.tui-editor-defaultUI-toolbar:after { - content: ''; - display: block; - height: 0; - clear: both; -} - -.tui-editor { - position: absolute; - line-height: 1; - color: #181818; - width: 100%; - height: inherit; -} - -.te-editor-section { - min-height: 0px; - position: relative; - height: inherit; -} - -.te-md-container { - display: none; - overflow: hidden; - height: 100%; -} - -.te-md-container .te-editor { - line-height: 1.5; -} - -.te-md-container .te-editor, -.te-md-container .te-preview { - box-sizing: border-box; - padding: 0; - height: inherit; -} - -.te-md-container .CodeMirror { - font-size: 13px; - height: inherit; -} - -.te-md-container .te-preview { - overflow: auto; - padding: 0 25px; - height: 100%; -} - -.te-md-container .te-preview > p:first-child { - margin-top: 0 !important; -} - -.te-md-container .te-preview .tui-editor-contents { - padding-top: 8px; -} - -.tui-editor .te-preview-style-tab > .te-editor, -.tui-editor .te-preview-style-tab > .te-preview { - float: left; - width: 100%; - display: none; -} - -.tui-editor .te-preview-style-tab > .te-tab-active { - display: block; -} - -.tui-editor .te-preview-style-vertical > .te-tab-section { - display: none; -} - -.tui-editor .te-preview-style-tab > .te-tab-section { - display: block; -} - -.tui-editor .te-preview-style-vertical .te-editor { - float: left; - width: 50%; -} - -.tui-editor .te-preview-style-vertical .te-preview { - float: left; - width: 50%; -} - -.tui-editor .te-md-splitter { - display: none; - position: absolute; - left: 50%; - top: 0; - height: 100%; - width: 1px; - border-left: 1px solid #e5e5e5; -} - -.tui-editor .te-preview-style-vertical .te-md-splitter { - display: block; -} - -.te-ww-container { - display: none; - overflow: hidden; - z-index: 10; - height: inherit; - background-color: #fff; -} - -.te-ww-container > .te-editor { - overflow: auto; - height: inherit; -} - -.te-ww-container .tui-editor-contents:focus { - outline: none; -} - -.te-ww-container .tui-editor-contents { - padding: 0 25px; -} - -.te-ww-container .tui-editor-contents:first-child { - box-sizing: border-box; - margin: 0px; - padding: 16px 25px 0px 25px; - height: inherit; -} - -.te-ww-container .tui-editor-contents:last-child { - margin-bottom: 16px; -} - -.te-md-mode .te-md-container { - display: block; - z-index: 100; -} - -.te-ww-mode .te-ww-container { - display: block; - z-index: 100; -} - -.tui-editor.te-hide, -.tui-editor-defaultUI.te-hide { - display: none; -} - -.tui-editor-defaultUI .CodeMirror-lines { - padding-top: 18px; - padding-bottom: 18px; -} - -.tui-editor-defaultUI pre.CodeMirror-line { - padding-left: 25px; - padding-right: 25px; -} - -.tui-editor-defaultUI .CodeMirror pre.CodeMirror-placeholder { - margin: 0; - padding-left: 25px; - color: grey; -} - -.tui-editor-defaultUI .CodeMirror-scroll { - cursor: text; -} - -/* Essential element style */ -.tui-editor-contents td.te-cell-selected { - background-color: #d8dfec; -} -.tui-editor-contents td.te-cell-selected::selection { - background-color: #d8dfec; -} -.tui-editor-contents th.te-cell-selected { - background-color: #908f8f; -} -.tui-editor-contents th.te-cell-selected::selection { - background-color: #908f8f; -} - -/* default UI Styles */ -.tui-editor-defaultUI { - position: relative; - border: 1px solid #e5e5e5; - height: 100%; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; -} - -.tui-editor-defaultUI button { - color: #fff; - padding: 0px 14px 0px 15px; - height: 28px; - font-size: 12px; - border: none; - cursor: pointer; - outline: none; -} -.tui-editor-defaultUI button.te-ok-button { - background-color: #4b96e6; -} -.tui-editor-defaultUI button.te-close-button { - background-color: #777; -} - -.tui-editor-defaultUI-toolbar { - padding: 0 25px; - height: 31px; - background-color: #fff; - border: 0; - overflow: hidden; -} - -.tui-toolbar-divider { - float: left; - display: inline-block; - width: 1px; - height: 14px; - background-color: #ddd; - margin: 9px 6px; -} - -.tui-toolbar-button-group { - height: 28px; - border-right: 1px solid #d9d9d9; - float: left; -} - -.te-toolbar-section { - height: 32px; - box-sizing: border-box; - border-bottom: 1px solid #e5e5e5; -} - -.tui-editor-defaultUI-toolbar button { - float: left; - box-sizing: border-box; - outline: none; - cursor: pointer; - background-color: #fff; - width: 22px; - height: 22px; - padding: 3px; - border-radius: 0; - margin: 5px 3px; - border: 1px solid #fff; -} - -.tui-editor-defaultUI-toolbar button:hover, -.tui-editor-defaultUI-toolbar button:active, -.tui-editor-defaultUI-toolbar button.active { - border: 1px solid #aaa; - background-color: #fff; -} - -.tui-editor-defaultUI-toolbar button:first-child { - margin-left: 0; -} - -.tui-editor-defaultUI-toolbar button:last-child { - margin-right: 0; -} - -.tui-editor-defaultUI-toolbar button.tui-scrollsync { - width: auto; - color: #777777; - border: 0; -} - -.tui-editor-defaultUI button.tui-scrollsync:after { - content: 'Scroll off'; -} - -.tui-editor-defaultUI button.tui-scrollsync.active { - color: #125de6; - font-weight: bold; -} - -.tui-editor-defaultUI button.tui-scrollsync.active:after { - content: 'Scroll on'; -} - -.tui-editor-defaultUI .te-mode-switch-section { - background-color: #f9f9f9; - border-top: 1px solid #e5e5e5; - height: 20px; - font-size: 12px; -} - -.tui-editor-defaultUI .te-mode-switch { - float: right; - height: 100%; -} - -.tui-editor-defaultUI .te-switch-button { - width: 92px; - height: inherit; - background: #e5e5e5; - outline: 0; - color: #a0aabf; - cursor: pointer; - border: 0; - border-left: 1px solid #ddd; - border-right: 1px solid #ddd; -} - -.tui-editor-defaultUI .te-switch-button.active { - background-color: #fff; - color: #000; -} - -.tui-editor-defaultUI .te-markdown-tab-section { - float: left; - height: 31px; - background: #fff; -} - -.te-markdown-tab-section .te-tab { - margin: 0 -7px 0 24px; - background: #fff; -} - -.tui-editor-defaultUI .te-tab button { - box-sizing: border-box; - line-height: 100%; - position: relative; - cursor: pointer; - z-index: 1; - font-size: 13px; - background-color: #f9f9f9; - border: solid 1px #e5e5e5; - border-top: 0; - padding: 0 9px; - color: #777; - border-radius: 0; - outline: 0; -} - -.te-markdown-tab-section .te-tab button:last-child { - margin-left: -1px; -} - -.te-markdown-tab-section .te-tab button.te-tab-active, -.te-markdown-tab-section .te-tab button:hover.te-tab-active { - background-color: #fff; - color: #333; - border-bottom: 1px solid #fff; - z-index: 2; -} - -.te-markdown-tab-section .te-tab button:hover { - background-color: #fff; - color: #333; -} - -.tui-popup-modal-background { - background-color: rgba(202, 202, 202, 0.6); - position: fixed; - margin: 0px; - left: 0px; - top: 0px; - width: 100%; - height: 100%; - z-index: 9999; -} - -.tui-popup-wrapper.fit-window, -.tui-popup-modal-background.fit-window .tui-popup-wrapper { - width: 100%; - height: 100%; -} - -.tui-popup-wrapper { - width: 500px; - margin-right: auto; - border: 1px solid #cacaca; - background: white; - z-index: 9999; -} - -.tui-popup-modal-background .tui-popup-wrapper { - position: absolute; - margin: auto; - top: 0px; - right: 0px; - bottom: 0px; - left: 0px; -} - -.tui-popup-header { - padding: 10px; - height: auto; - line-height: normal; - position: relative; - border-bottom: 1px solid #cacaca; -} - -.tui-popup-header .tui-popup-header-buttons { - float: right; -} - -.tui-popup-header .tui-popup-header-buttons button { - padding: 0px; - background-color: transparent; - background-size: cover; - float: left; -} - -.tui-popup-header .tui-popup-close-button { - margin: 3px; - width: 13px; - height: 13px; - background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMHB4IiBoZWlnaHQ9IjEwcHgiIHZpZXdCb3g9IjAgMCAxMCAxMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5GMjc2Qzc4MC0zM0JBLTQ3MTItQTM3OC04RkQwQUNDOTFDRTk8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImxuYi1mb2xkZXItZGVsIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGZpbGw9IiM3Nzc3NzciPiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDMuNTg1Nzg2NDQgTDEuNzA3MTA2NzgsMC4yOTI4OTMyMTkgTDAuMjkyODkzMjE5LDEuNzA3MTA2NzggTDMuNTg1Nzg2NDQsNSBMMC4yOTI4OTMyMTksOC4yOTI4OTMyMiBMMS43MDcxMDY3OCw5LjcwNzEwNjc4IEw1LDYuNDE0MjEzNTYgTDguMjkyODkzMjIsOS43MDcxMDY3OCBMOS43MDcxMDY3OCw4LjI5Mjg5MzIyIEw2LjQxNDIxMzU2LDUgTDkuNzA3MTA2NzgsMS43MDcxMDY3OCBMOC4yOTI4OTMyMiwwLjI5Mjg5MzIxOSBMNSwzLjU4NTc4NjQ0IFoiIGlkPSJDb21iaW5lZC1TaGFwZSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+); -} - -.tui-popup-header .tui-popup-title { - font-size: 13px; - font-weight: bold; - color: #333; - vertical-align: bottom; -} - -.tui-popup-body { - padding: 15px; - font-size: 12px; -} - -.tui-editor-popup { - position: absolute; - top: 30px; - left: 50%; - margin-left: -250px; -} - -.tui-editor-popup.tui-popup-modal-background { - position: fixed; - top: 0px; - left: 0px; - margin: 0px; -} - -.tui-editor-popup .tui-popup-body label { - font-weight: bold; - color: #666; - display: block; - margin: 10px 0 5px; -} - -.tui-editor-popup .tui-popup-body .te-button-section { - margin-top: 15px; -} - -.tui-editor-popup .tui-popup-body input[type='text'], -.tui-editor-popup .tui-popup-body input[type='file'] { - padding: 4px 10px; - border: 1px solid #bfbfbf; - box-sizing: border-box; - width: 100%; -} - -.tui-editor-popup .tui-popup-body input[type='text'].disabled { - border-color: #e5e5e5; - background-color: #eee; - color: #e5e5e5; -} - -.tui-editor-popup .tui-popup-body input.wrong { - border-color: #ff0000; -} - -.te-popup-add-link .tui-popup-wrapper { - height: 219px; -} - -.te-popup-add-image .tui-popup-wrapper { - height: 243px; -} - -.te-popup-add-image .te-tab { - display: block; - background: none; - border-bottom: 1px solid #ebebeb; - margin-bottom: 8px; -} - -.te-popup-add-image .te-url-type { - display: none; -} - -.te-popup-add-image .te-file-type { - display: none; -} - -.te-popup-add-image div.te-tab-active, -.te-popup-add-image form.te-tab-active { - display: block; -} - -.te-popup-add-image .te-tab button { - border: 1px solid #ccc; - background: #eee; - min-width: 100px; - margin-left: -1px; - border-bottom: 0px; - border-radius: 3px 3px 0px 0px; -} - -.te-popup-add-image .te-tab button.te-tab-active { - background: #fff; -} - -.te-popup-add-table .te-table-selection { - position: relative; -} - -.te-popup-add-table .te-table-body { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZmspKREMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgAMSwQgckFvTgAAAABJRU5ErkJggg=='); -} - -.te-popup-add-table .te-table-header { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZksLCxMMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgDxKwPzTeWPdAAAAABJRU5ErkJggg=='); -} - -.te-popup-add-table .te-selection-area { - position: absolute; - top: 0; - left: 0; - background: #80d2ff; - opacity: 0.3; - z-index: 999; -} - -.te-popup-add-table .te-description { - margin: 10px 0 0 0; - text-align: center; -} - -.te-popup-table-utils { - width: 120px; -} - -.te-popup-table-utils .tui-popup-body { - padding: 0px; -} - -.te-popup-table-utils button { - width: 100%; - background-color: #fff; - border: none; - outline: 0; - padding: 0px 10px 0px 10px; - font-size: 12px; - line-height: 28px; - text-align: left; - color: #777; -} - -.te-popup-table-utils button:hover { - background-color: #f4f4f4; -} - -.te-popup-table-utils hr { - background-color: #cacaca; - border-style: none; - height: 1px; -} - -.te-popup-table-utils .te-context-menu-disabled { - color: #ccc; -} - -.te-popup-table-utils .te-context-menu-disabled:hover { - background-color: #fff; -} - -.te-heading-add { - width: auto; -} - -.te-heading-add .tui-popup-body { - padding: 0; -} - -.te-heading-add h1, -.te-heading-add h2, -.te-heading-add h3, -.te-heading-add h4, -.te-heading-add h5, -.te-heading-add h6, -.te-heading-add ul, -.te-heading-add p { - padding: 0; - margin: 0; -} - -.te-heading-add ul { - list-style: none; -} - -.te-heading-add ul li { - padding: 2px 10px; - cursor: pointer; -} - -.te-heading-add ul li:hover { - background-color: #eee; -} - -.te-heading-add h1 { - font-size: 24px; -} - -.te-heading-add h2 { - font-size: 22px; -} - -.te-heading-add h3 { - font-size: 20px; -} - -.te-heading-add h4 { - font-size: 18px; -} - -.te-heading-add h5 { - font-size: 16px; -} - -.te-heading-add h6 { - font-size: 14px; -} - -.te-dropdown-toolbar { - position: absolute; - width: auto; -} - -.te-dropdown-toolbar .tui-popup-body { - padding: 0px; -} - -.tui-popup-color { - padding: 0; -} - -.tui-popup-color .tui-colorpicker-container, -.tui-popup-color .tui-colorpicker-palette-container { - width: 144px; -} - -.tui-popup-color .tui-colorpicker-container ul { - width: 144px; - margin-bottom: 8px; -} - -.tui-popup-color .tui-colorpicker-container li { - padding: 0 1px 1px 0; -} - -.tui-popup-color .tui-colorpicker-container li .tui-colorpicker-palette-button { - border: 0; - width: 17px; - height: 17px; -} - -.tui-popup-color .tui-popup-body { - padding: 10px; -} - -.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-toggle-slider { - display: none; -} - -.tui-popup-color .te-apply-button, -.tui-popup-color .tui-colorpicker-palette-hex { - float: right; -} - -.tui-popup-color .te-apply-button { - height: 21px; - width: 35px; - background: #fff; - border: 1px solid #efefef; - position: absolute; - bottom: 135px; - right: 10px; - color: black; -} - -.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-hex { - border: 1px solid #e1e1e1; - padding: 3px 14px; - margin-left: -1px; -} - -.tui-popup-color .tui-colorpicker-container div.tui-colorpicker-clearfix { - display: inline-block; -} - -.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-preview { - width: 19px; - height: 19px; -} - -.tui-popup-color .tui-colorpicker-slider-container .tui-colorpicker-slider-right { - width: 22px; -} - -.tui-popup-color .tui-colorpicker-slider-container .tui-colorpicker-huebar-handle { - display: none; -} - -.tui-tooltip { - position: absolute; - background-color: #222; - z-index: 999; - opacity: 0.8; - color: #fff; - padding: 2px 5px; - font-size: 10px; -} - -.tui-tooltip .arrow { - content: ''; - display: inline-block; - width: 10px; - height: 10px; - background-color: #222; - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); - position: absolute; - top: -3px; - left: 6px; - z-index: -1; -} - -.tui-toolbar-icons { - background: url(data:image/png;base64,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); - background-size: 218px 188px; - display: inline-block; -} - -@media only screen and (-webkit-min-device-pixel-ratio: 2), - only screen and (min--moz-device-pixel-ratio: 2), - only screen and (-o-min-device-pixel-ratio: 2/1), - only screen and (min-device-pixel-ratio: 2), - only screen and (min-resolution: 192dpi), - only screen and (min-resolution: 2dppx) { - .tui-toolbar-icons { - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbQAAAF4CAYAAAA8HgyJAAAAAXNSR0IArs4c6QAAQABJREFUeAHtvQmYHUd5733ObJrRPtJotSxZsrVZxnjBmO2C7GsINtzk8oE0Wix5LBz5i0GExSwmD/FAIJgAJrFiEQYvY0mWNBLgwH0SQpzYgssSf8TgTdZiW7IWa0brjKSRZ5/z/d+jrlZ1T3ef7tPLOTP69/P0VHUtb7396z719ltV3ZNKcSMBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEhjcBNJRq79o0aJMQJn70+n0TyZNmnTP2rVruwLWDVwc+l0bsFJ3aWlp27x5896or6/vD1g3cHE7v23btlmukT0/aAN2eUHr2/lB3rO6DHu+nucnbpfnp45XmbC8vGRLXtQ8c7UXNJ88gxLzLh81T+/WUincvxUosxbt3pmrbCHy0SeW7Nmz5+JNmzbtL0T79jZL7AkFOJ6RyWQ+09LS8h8CpwDt52qyoq+vb+KOHTtmQ0+LcclVkfkkQAIkkC+BW2+9dQrqbse+Ol8ZcdZbvXp1+e7du+f09PTUxNlOENnFZEDe8/LLL388iPIJlx25ePHiorlwCZ87myMBEkiQADyzd3Z1dcnoxzsTbNZ3U9Bv5JkzZ+b39vaO8F0pgYLFZNBS8ICWJXDOYZoYF6Yy65IACZBALgIwFuKRbccuHlp2K6bRIeg3oaSkZA6MWXmx6Rf5EBpO1nEOTeYaxKpjPmoBhvC+BRDvUzC08BjKTdSOI49CB8c5NLT7LPJKK7F1dnZOQ8Mj7Y3jIvY2NTU9b0/nMQlcKATsv2/5XYc59xjkWX7f8rsOqV+k8rx0AYsK5K/F7jbE2IX1Bs3Ifxn7L9GX/mzz5s27EE9kU/NlbkOM6B8z/f39PeXl5Z0oc2bEiBFtjY2NnYkoZzSSqIeGm6t9y5Ytz1RUVNzqdJK4WMOd0pNKg359GzZsOIv29jm1Cf0S5eWkA9NIgASGHgGf82XD4Kldgv0W7N+Ch7QT0yBPLlmy5G1xE/EzXwZjJg83FTBmoxFedPbs2QW1tbVzVqxYkdiwZFncIALKfzVg+USLw7OMfRVmoifExkggIgLouG5Gh9Yg4vCkvhojGT+PSHQkYuD9jCkrK5shwmAI9uPh9VQkgiMQAt1kvuzHEGUOMfoVC8N2E/qlG2DY/mbr1q1f9VsvSDnoJ/Nls/QhRr/1cU+MwojXPBjdZjgzh/3Wy7dcoh6HgMGJXd/d3b3RReENLumJJEO/UuNpYqZTg/hBnHBKZxoJXOgEDGMmQ/XTlGErJiZizKRDll0ZtmLQD32ODC9uxx7YmGn6l8Kw1cOofUNLiyQK/QbMl+UjGEZ3CmRdlE/dIHUS89BwMtm5NZyYo34YztuIi/L3jpkJJEK/7Fg5nibcWjuJdy2OYszaLT+SdMVJCcOTpGWOwp6vyvkN7fL81lPlFCd1DHmWOQp7virnN7TL81vPrVyhebnppdKLjZfSK8oQHW095O2DB/FYlHKjkoWH7KmYBulav379oH5gRf/5ZbD+DTj/a1RsIpYzGfd7O37jsXnHiXpoOeBcDqO2ChfF0oHnqJNYNoZRKnGz1BSrfomBYEMk4EBAhhmRfEh2I54tJcYMv5l7sa9DZ3a5Q9VEkmSYEZ5Zj+wSV42KMRPvAaNG06FflUpPKkTnLsO0C7HLYo8otu9h8UZkjgr0OwaPe49wi0I53BsXx9mHFo1Bw0leg70BP4CtUV6QKC6CyMBFlQUr0/EDmBXnBYlKX8ohgSQJyJwZOr+LZVfzZ8qYGXrI72cbFhcUZOEX9DqF0ZUXZJe46KSMmcRh1ErQac8qxMcdoM/vhg0bJiNEvxNdwmzom+bgfd4PhJFhrwv92keNGrUTfGTBXKgN/egw3BeyaCSWrWgMmnZ2H9u5c2eddlxUUVyQscuWLRtfVEpRGRIoMgI2Y6a0u7y1tfVBdVDIUDdmSg94bpW7du2aro6TDDdu3Cge2kLs2YU1Dm23IW0XRrH+gHA3wtMOZVRSrYpEFTY0NPTMnTt3D5bkH3eR2QeD1wkP7E3sXXilwOszgbG9zxuZa+pykmYyxnVLcBEycOtzvYsm3tCfo+JDZuUEItDvD4Z+nu+iiSrQbwICtwsbSls8DXkOuebKD9W4j8po3zJnZq+SK99ePu7jQvPKdX7FxiuXvn7yXYyZqlqHPuCXOO9GlZB06GTMlA7w1MYvXbq0HZ5cLL9v1Y5TCCbdSL8TfOQ3Ju+jVahyyKtWcRWi3BjEb8T+KewLsWc3eGnvUfEoQ3ivYqT2o10xWhejHzT7Kuj3nL0tlCuFARyNZfzybrH+Xq8et1cLdZyYhybGQjTFiXu+iyZlUHa2hElumn6e76KJTriQw5LUjW2RwGAhkMOYqdN4EJ1dQebTvIyZUg4G4WLol/h8mmoffaSveTWUO4X9Cew3wMCIUcv2sQhnLl++fLSSF3WI9nzNq6FcHxbStSLcje9VHNT0qBBjpx1HFk3MoNk1xpOQad3tebihzE+q2POK4RjutKvuxaAfdSCBQhDwacxEtYLMp/kxZqJcIefTpH3ZYAQCzath3lI8unqpiy2N4dNYl8hDv0DzavhgxVH0m/rCF9P7PKdyNH8TNWgwVGl5csBLmO+Al7PR4xT2eeTFliX6yZMDdnGJZ7o1hBueL1i7wWH6BUkggDFTfC5va2tbpw7iDv0aM6VHIefTlA4+5tVUURV+AyNNO+UA/Wvs8/w+5tWUXtkQw7jNMs9mJMbioSU2hwYjkcFNbzlBtwNclJ+65cWVDv2u9asfdIjtPQrhpJ8jnoQs3qA9Xy/rJ26X56eOXkY46ceQZ5lTs+frZf3E7fL81PEqE5aXl2zJi5pnrvaC5kfN096+4ouHQXtWzmPUuS1noZAF1P2Ih9DAklAndqOQSylcv+y8Wq5yko+yfTjfv0L0J/CGEunb1byaH/1kWgcL6g6j7CysmrT0a37q+ymTqIfmRyGU2YclrPf5LFuIYnKDtRSiYbZJAiRAAl4EYNSegOF4Cca416tcofJkTk28NHxKK/gTkA+li82gncCTxa3GB4J9qJ94EXnM2ydPQom3zAZJgARIwB+BRiwSkWX+xbrJCtJY+tCiMGh4opAVMI3Yr8AHLH+LsKg2PFH0wNCeqK6u3gFj1l5UylEZEiABEtAIoL96Av3VG1pSUUVramraFixYEMmXR4rqxKgMCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACQwhAukhdC5D4lQWLVqU0U9k27ZtRXWNoN+1Nv2e1Y8ZJwESIIFCESgpVMNslwRIgARIgARI4AIgIJ6a3VsrptMWT83urRWTftSFBEjgwiNAD+3Cu+Y8YxIgARIYkgTKkjirxYsX35TJZO5AW/Oxz8Z+Jp1O70LaTxF/GPNEpxAWbFu+fPlo6FLT09NTWVJSUglF+vr7+zvLysraent7j0O/voIp59JwWO8t7rm5sN4b9Itkbi4sJxf8ZnJYjmE5mYq4RKLi6CKeyQUigPvmB2h6Da5vd4FU8Gx22bJlM+bMmXOwvr6+37NgxJmxemirVq0aBWP2LzAWT0LvWuxXYq/CPhFp70X4Xeyv4eKsQJj4hnZLAX52d3f3bBizaihQBUOWxi6GfiSM2TSEb1m5cuX4xJVjgyRAAiTgTmA1srbfeuutU9yLFC4H/WnN7t2756xevbo8SS1i9dDOnDnzGE7mFu2E/oj469hHY3879lHYxVish+Hbu3Xr1t8gntgGb+wSgBdd1NaBtC4clMKDHNHX1ycGv7Sjo+MSGL8uPA21q4JxhWjHsspRHYf1BKLSF/pYVjmqY3oCUREubjm1tbVX4IFPRlvej3069pFOGtvvV3UfO5SV39QB7E/it/dQU1PTSw5lfCehnarS0tIa/H5l1KXC+A0PqG+/X9V9bC8IWf2Q1Q1ZpyFLRms67GUKePzOrq6uZ6H7R6HX7wqoh2PTcAhGwAbMh357oV/sfacoEZtBw0l8DPI/Io3ghjiNm/XmLVu2/FaOZUN+BdI/hxvlXhw+lrQxg2dWDWM2VnSRmxY36ys6dLjKJa+++uoklJmC/BObNm1K5IKIPtxIoNgIGL/X7+H3+v9CtyhHdsQgXi47ZK/Bg+0/IfwMfouBhtLk97pjxw4ZUZmA3zKCaDbDIMo0hOwTweHYggULDiU9lOZxNuKhbYdeMvzY4FGuIFkwauXo++dAv4PQ71jcSsT2jhNuzIdxY66SE4Dh+iYM1pedTkaG/EaOHPl6Q0NDj1N+XGlLliy5BDerGkpsAew3nNqqq6urfPTRR7twDhbPyaks00hgKBIQY4bz+jn2G/2eH35Plr4FMoL8fp5COzdDhi+jJsZs586dl8FzlBEfXxtkW+ZooZ9l5MFLCDroM/Pnz381CaMGvcah7/nf0Oed6E/fgnAujsX7dHqoEIOW6LwaGJRhaHEsdBoBnapgwMTwl2IfsJWXlx+Pe14tNg8NZ6MPRbh6N/B8Xhlw5gkk4KYsUU9yw4YNc524bGxs7MSegEZsggSKkwA6q/vRWfk2ZhGcxY3SJuR80o8swzPzbcz8yPQqI4bTaPOAV7kweTI3hrn9vwb3VdjlgcLccGzGbRGZV3sL6n5048aNzba8SA9lbqy9vX0qHiTGg4fl4cWtIWNerQp1X4vLgfGliJuCXunw0L4C8F8zyrxaVVX1jvXr15/wqpNkntwwGH+eKm3CtnXhiWsXnjZ6k9TBqS37kyx+2F+Fd1vvVLYQafYnWQzHNmMo+XAhdGGb8ROQOTP8jp/HrnsEh/Cb+TyeuH8ZtuOU3yE6uvehU/w2zkaGDLMb7nuZu3prrjk13I+yyEyGLM0Nq5N74Ckcqq6uPhO245SOu7W1dRRkTpPhM7ORc5GX4elFPqcG5jeD93rsNbb2/B6KMYttXg3Mx+D6X4JrlpdDZFyfWObV9JvULyxf5dDR/QQ3pBpGvAwLK54HiI/LEJ4vATEXgjFrw0XJPurgwgyD23z50qVLa2T4IuamA4nHTX0vHg7qA1VKsDC83CkYvs0+GCTYLJtKiAB+G3fYjRmaFkOzJawxk1MQGSJLZGI/JGmySZvS9rkj97/oZyydvnSWc+fOFUNzMqwxk1ZFhsgSmSJb18Tetp6Xbxy/9T/Bef9zCGMmTat5NfHYIt0MY3YpdMzLmIky8mCAvlfm1SZEqhyExeahiaJQ+EsIvilxtcHIHUf8hzih7+PJ/qBKL0QI/Saj3Yv0tqFXLy6W6HgMN7KvMXy9fpRxMWRi0EQmdLFcK+juOu7gRwe7PD917GXEkIlBk3TIy3tOwi7XSZ5TmXzSioGbl97Qz/dcjpMc+3VwKhMkDfrsQHnTA8LvdxlGDDbbZQTl6nT/4X5fivt9kyZbDNMC7XhAFA+hC9BB6g/J+1DnpL1gUK5OHCFjHOTOVLJh4Do3b94sfCLZ5IEa5yJTMNnFaiGFSt8V6UIRmS/DUOsVkOs4RxZEX3Em0M9GvlAkVm8EN8V9+AF8HCdqvjgtTx7Y70FHuA838Aa415cGARFlWejXgptyP2Say6KMJw8xdG/BDTxzzZo1w6Js068s3Zj5rZNkOd2YJdku20qcgCzNN7eKiort5kHEEQfZlradmkNfUqGnyzCjfhxl3C7b3nbYttAnfh0yojBmMuS4EP1bQ1id9Pp79uyRh//Qxkw8XfSze6Bf5Kse83Yb1YnmejLDRVdF7WEp8m6VHTLseeYxTtrimZgZPiOQ7fnEiyciL0njWlpaxuXQz+KZeAnzm2czZr/E0Ea937pJlLMZs/ZRo0YdTqJdtkECQ5WAfIQCiyxui+D8fodFbpEvCkEfWAqDOz6sfjBmZ9FfxLYoJLRBC3uCrG8lYDNmMpS30FqisEc2Yyb67S6sRmw9ZgIHIN8ccsTKu4U4HjDkGIUOhmxdlLTtuWEESIbWzCFHWcCB4wFDjp5CfGYass3SRtvmcZgIjNmf4eHePA+bLDlHGUmSOTzxkGTo02n+STyyNZiXlPKRbljUNxbrIBydCxk+RGPdxjCilCk1RrosOiSxbN9RQYsWMR1gqHERLuAPsMsnp2R7Ep3jB85FC//XePF6BjTJuti4WGcweb0nbs3wJOTo0ob1VKPS283jhX6Re6pR6Uw5+RPAA5a8TP1pTcIhxN+K6x2p0cB9JZ3089j1lY5/j/m6z2htD4jiAetieA4TVYYMZ8kCjqhXLMv8kSwckwUNqi2MnByNah0AOMsL5Xcq2TCWMurRgHAjVmDvQ/uWV4ts/YQYsEjny5QeKkR/OEOW3atj4Qx9j0+YMOHEAw880A09Lf2W3k/ENV+mdNHDgnloMA7bcBHlIv3IUEg+hVU0G96Pa8VFTOEizhKl8MQxvGiUoyIkkBABdNoPwWB8Cp2Xmm8Xg/M8frtfkDmvsCsdjfetFkL+30Gubsz6pe1cpwndZAGXadDE4IjhQYca6bJ9yJymGzPRy2g7l4q+8nH+V6mCMA7bhg8fvlLegVVpHqHMl8W2RF+1C/3k9YjsBk+rFS9Iv66M7Nq1a1XWgFAMH7jFskR/QGNIKJiHJsoYXpD+pDcKT36uL2E7nUCcafJUhlU9spxYbc9BP3MBiUpkSAJDmQCM1z+iQ/tEkHPE78TSt9g8ipyi0Kk/CO/skzkLogBky+IRpyE41+rQzzKioHsUrpWsGccgI+eQqLWK+5EYYOTKootf4tNaN6Hv6XUvnT1n8YhimS9zahcrMK80DHo7rsseu0dmryM8454vs7cpx+qpyykvVJqcEH4IG/BioqtnA+9nntZIG26QxIzZihUrRkDHmbhxXBnAmOlj2n3Qj8ZMu2CMXhgEYMw+izN9KsGzfcpo01eT8m1FmRLwVTiCQtKWtBmBKFMEDIQsuOiF9/PnuYyZUUnmyxaG9ZBNBXJE1JzYiBEj9ucyZiJK5ssw9LsnincBc6hmyY5lyBH/X2wajNXPcFNOxUTqu2A4voxWn4BBkLHe7IY5tDmA9EN1jHCrFo81Cn0q8LQhrwuUw2iNxPEbuEHbcCOZ49TyAjhevp6BclldxM2OVSlDOHSxjEXj5nH8Uoi9XFDdcC0sT9B+66Pda/WyGBZy/FKIvZxex08c+lmeoP3UcSoTlpOTTD0tX45KRlhOSo5bGAVHyOiGnjfjXrwf7fwFfteuD4FuevhJh3z5/X1fjJm06aeOlJHfLfZX8VuWIctAnprfNrRyxzCnFfnHiXHO5Tj/H/r9FCD4mPNtmm6xRdFXp8VI+RwGTeE89semjIfgWAwaVitdjDaHGe3OQrgFexs8tj/iwrUhfjHCaxCqH8arGI//PI6T2sSgqbYr0OhM/Bj6YGTfRFy8sIqzZ8+aniWeyLpgoCN9IvN7ouAkXwpJwc2v91snyXKYR5AvhaT4+askqSfflmFgPonfiCxeuAMavB+7DPWNDKmNjMocwP4kOvS8/32M8TB6AIb3GB6ycv77GL86Q9aAfx8DFn6rBynXBYPxjSAVkiwrHNAHynxdUW+xGDRc8N9hfuztAPAAzv5DBoGx+CHcoGggrqLPwGDc/vjjj59WCXGH0K8dL0zvxDtmYnjHGO3JUlNZ8mvZZBwYxm8/6iQy3Ih2TM8Jhiz7pRAxalCq3qJYgQ6gn+k5qSX8YtSgjqzK4jbECWAx10s4RX3Vo68z1u9rXxXyLIR25NuKB4NW1+/roHWjKA9jvg19YEEemn3q3wpGvr1mnzIjLxaLQRMt4XLuRfBhdHrXw1DIEv3/ieOLceEqEX8F8d2I/1S+44bQtG5IT2TDypwuNPSqzKVBv2p4laNxXIEnkTQ6aHla6oRBbpPVjoXQTxmzRGDk0YgyZnlUZRUSIAEbAfQxD9qSiuoQ/WHkX/WI4wRNbyAO4ZSZPwG7QUvqCdevxnaDVugnXL96sxwJkMDQJaDmkYbuGQ7SM5M5Mzy1fbVY1Zc5M3izRT+mXqz8qBcJkED0BGIbcoxe1QtDor4qT80zFpNh01flYWg2e1Fo2C6Me5NnSQLFToAeWpFfITFmxbrCUdCJMeMKxyK/iageCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACQQgkA5QNlTRRYsWZbwEbNu2LTFdnPSAftc6pas06PesihdTmIurXdekOefi6qBfpJyD8rHrk+s4LM+gfHLpY8+P+r6Ngmc6nf7q1q1b6+26RnEcBc/S0tLmLVu2HI5Cn6Ay7Hxz3V9BywfVx17ezjfX/RW0vL29oMclQSuwPAmQAAnkS0A3ZrW1tR9Gh1ebr6w46unGrK6ubiz0GxdHO5QZD4HEDJo8aeBmmWk7jf2SnuspxFYnlkN50pg8efJLNuHdki67LZ2HJEACAQnYjVl/f/+PIeLxYjFqdmPW0dExC/rNpFELeKELWDwxgybn2NfXt1A/V9zg2/XjQsePHz8+StcBN/gZ/ZhxEiCB/Ai4GLMKSCvFXnCj5mTMYHDVNAiNWn6XPfFaZUm2iJt6YSZzfioN8e1Jtp+rLegzUi8Dfdv14yTiixcvbhw7duxdDQ0Nb/ppL2nvdsmSJZfMmzfvQH19fb9P/Qrq3SbNxw8Tvcxg9/6D8pVhRsMzE2OmthJslodJlRE2DMpXhhnFM9OMWVaFsrKyRB/+w573hVo/0YsEg7FQB42nou36caHj8CAtP6qamprEPTQwuq21tfX3GOa4vNA8nNoHo/G7d++eD/2qnPKZRgJuBFyMWQbGbHVTU9NDbvWSSvcwZvs3b958PCk92E7+BBIzaPJkDzVnaKrux0qi17XjgkbXrFkzDAroT43da9eu7SqQUmLMxKjVFah9z2Z7e3sr8TAyb+nSpTWeBZl5wRGQewKjDP/bfuLFYswwslAmhsuuH42ZncjgPE7MoHH+LPANMhw1HpUhyNWrV0u8qDZczxIYthnyoIJOIrH7qKggUBkLATFmuCf+E4k/xsPYCpVZTMZsx44dc86ePXvpypUrxyv9aMwUicEfJjaHxvmz/G4WYwjyOnQQizAf8LJdCpLPT0raMx2Og855OIiwJBlDkCOgx17I7rBk4gDpnu/32csHnfOw1w96HJSfXX7UPO3yg/Kz10+Kp2bMrsQ9m8LvvRG6pzCc2OowZ5b4MKN4ZmLMwCc7VI55sktg1ES/Ppc5s6IYZgx7f9rvh6iPw96fUeuT2JM1589CXToOQYbCx8pxE8CDzbUwYvNVO/i9l4hRKwZjJjrBmI2A8apU+kkoRq2YjZmuK+P+CCRi0Dh/5u9i5CqFDiKQN5ZLXtT55eXlRa1f1OdLeecJ4Msfv4ARq8U92qNSxaghrs9LO3pmGFavV3XiCuGpnsK87z4YNcs96rCacYBnhv5ralx6UW60BBIxaJw/C33RZKjxOnQaj4WWFIMALGnuxDXetX79+hMxiKfIQUIARuMJu1HTVHc1Zqhzr1YutuimTZtanYyaahD3saMxw709RZVhWNwEEplDw1Mb3z/L8z4Au8e83kuLew4nl9roIE7MnTvX9b20pOZwcunpll9ofm56qfRi56f0VCH0fQLzKrIg5HHs8tJ0doNn9En70nzxzJIyZkoPMWrQT16Ytny1qLKy8uCGDRssS/PFMyu0Mct1fxZ6ji3X/Zn0HFsiBg037UJ1Q0mITnC7flzoOG7agr9/5sDgTRizu4rVK8M17K+oqDhAr8zhyl3gSejkmtCRCYWsUYMx+wSM2TodSyGMmWof+p009MsaNcOYHVX5EhaDMdP1YdwfgdiHHDl/5u9C2EpxiNEGhIeDi4AYNWi83MmYyZkk7ZnZ6YlRQ9o+J2MmZQvtmdn15bE/ArF7aLgxFuqqwOvYrh8XOl5s32/MNcRYaF65hhgLrR/bLx4ChlErHoVsmhhGzZbKw8FMIHaDhg6a82cB7hAMMdYFKC7veVlWbeWqix+xzB/kvQX9ukvQMXTo92zeyjlUDMrHQYRnUlieQfl4KuOQGTVPexNx87W3F/Q4br5B9WH5eAnEPuTI+bN4LyClkwAJkAAJnCMQm4fm9uSGIch9yEuFfbINewHdntxaWlquMPSL1FMIqy/rkwAJkAAJeBOI3UPzbp65JEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJFC8BNJRq7Zo0aKMLnPbtm2ebQQtr8vOJ472rtXrQb9n9WN7PGh5e/24j+38crWX63rkqh80384vV/1c1yNXfXt+UD72+rmOw/IMyieXPvb8qHkq+dB7TDqdvgPHtZlMZrak4/gVBE04fgjtnpI0tfm4Ds2ov728vPwLjz/++CFVL98Q7ZWWlZXV9Pf3j8M+TOSUlJR0YT/Z29t7HPr16bJzXQfI6oF+7T09PYdQt1uvG1fc0Om/bfLf5nRNX5xytaXftdVJvaX5j579sL28n+MVK1aM6OzsnKeXrays3LVhw4azeprEd065xtLv2vPnN//Bsx+2l3c7LnHLYDoJkAAJOBFYvHjxDUh/CYbrO9ivQ3ys7BKXNMkzyiDqe5uCuku7u7ufX758+TTftRwKrlq1ahQM0AIYrmkwZsNRpFR2iUua5EkZh6quSahXDmNWjQKXw9BUuBaMMAMG9E67OKc0e5mkjvv6+mrsbTml2cvEeUyDFiddyiaBIUYAnfn7YXh+jtPyMjrTpMySJUv+Zx6nPw6G4+/yqJetAmM4+uzZs7PFALnJkDwpI2Xdynikl8KL9Dp3j6r+s8B5pBh4ew1Jkzx7etLH0EEeEMbZ25U0ybOnJ3VMg5YUabZDAoOcwK233joFHkITTiM7hOd1Oij3Mzytv+BVxiPvfR55rlmrV68uh4c3C51qzuG10tLSthEjRnS4CvPIgFFJwqAsgwrZdsDy97IbKkma5BV6G4frm7UfGMZ9U3ZRyEgbYOiSUrYsqYbYTjgC+LEOb2trW7d169Y6XRLG03P+ePXyccXr6+tLdu3aNX3Lli2v6204jffr+XHHi4WP23kWmo+bXk7pMBb3ozOXYTd9a0Rn9nUM4x1D/v9Ax3sP9n9oamrapheyx+3XBU/15hwQ2phq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Q4EADMZCdR5O82cqr1BhrvmzQunFdqMhEGr8368KGKb7NDyb7xnl/xHDjWu86sKIrUX+J6UMjMZnMPz3917lw+bJC9dYij/NkHMM+h3wkgn9piM/a2j5TpoXKeaRAAmQQHIEEvHQ9OFGPLW5Djeq09bL6HVVftSh/l4ZPlLsOtyo2tXL6HVVPkMSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESGKwE0oNV8aGq92uvvZaJ89wuvfTSUNd8//7918ap34wZM56NUz5lkwAJDF0CJUP31HhmJEACJEACFxIBGrQL6WrzXEmABEhgCBOgQRvCF5enRgIkQAIXEoGyOE520aJFEyD389jfg33Otm3barzaCVreS5afvNWrV5efPXt2Un9//8je3t5K6PecV72g5b1kRZF3+PDh1AMPPGAR9alPfSo1depUS1qhDg4cOOCo3/Tp0wulEtslARK4AAhEbtBqa2v/DIZiI9iN9MMvaHk/Mr3K1NXVjT19+vTMvr4+X95p0PJebUeV9+yzA9dNSFqxGLQ//OEPA05V0mjQBmBhAgmQQIQEIjVoixcvfi+M2VboVyE6ptPpdRUVFV930zdoeTc5ftNXrVo1Cp7ZLOioVvodq66ubnarH7S8m5wo02GIU889N9ChlLRbbrklVVpaGmVzgWX19PSkXnzxxQH1JO1DH/pQqry8fEAeE0iABLwJjFtx2HP188kNU1Wf5i0oZG4uPQaKT+8vSaV/MnbspHteXZvuGpgfbUpkBg3DhtKTPog9a8wQ/rapqemTMGqOFyJo+bCnnclk0suWLZuujFlZWdnZTZs2HXTTL2j5sPr5rb9r164UjHK2uPLIZAhS0iRvwYIFfkXFUk50OHXqVFa28shkCFLSJO8tb3lLLO1GJbS+vn6iyEJ4NCqZUcr5wQ9+kH0iuPPOO3uilEtZJBAPgcyM/lTmMydPNV9XX595X319uj+eds5J9TXs5keBkpKSm2EErtDKPuJmLKRM0PKa3Lyit99++xiZL9MqH/fSL2h5TW6sUX248W1ve1tKdrXpeSot6VAfbrzmmmtSsqtNz1NpxRSKMevo6HhKdmXYikk/MWZ79+6dI7sybMWk3xe/+MW/uOeee2T+3HOTMlLWs1AMmdKuzIfnEi1l/JxHLjlR5osHVlGanmmVmd4v6Ul5Z9a2Ax5lUu/5x9eOfDxgrcDFIzNo8Hw+amt94LiYViBoea1qXtHOzs6xekV4aB36sT0etLy9fhzH7e3tqd27d2dFQ//U1Vdfnd0lLpvkSZlCbcoLk/ZlaFEZNDXMqHtvhdLRrV1lzJAvLu4CMWrF1KkpY4aHsErZxaj56ZzdzjfqdMNArcPv+mkvbpInZdD+uiSNmrSLB+7pmGLw5CZMpYyU9TqPqPn5kQeXfKFeLp1ObdePiz2eSWWWxa1jZAYNP7LrdWUxd/aKfmyPBy1vrx/0GO2N0OvAYHXqx/Z40PL2+nEcyzyZzKHJJkOLVVVV2V0NM7rNr8Whi5NMmSeTOTTZZGhx+PDh2V0NM7rNrznJSjJNOi4xYGhTjNkOY1+Qq3NOSkfpZMWA4Z6sREfbKbvEc3XOSekn7WDE5UfQ6SVEXblpxmyBlJU6Sel44sSJtlzclDFTnKVOUvr5aqffatBSJcVj0MRLLB1VNipdVvIO8Pul4/mks78vx6yoEiMzaFDI4g5v3LjxTA4lg5bPIc47G53TML3E1q1bPcdyg5bXZccV14cUr7vuOrMZPa6XMQskFHnmmWfMlvShRj2ulzELFzCid7JQYwceEm6UXeLYXTvnpFS2d7KzZs3aI3uuzjkp/VQ73/zmN4+hI3PlpnMWYyZlpY6qH3fY0NDQ09ra6srNzlnKSp249QoiP5OxGjSMnW4PUj/ussfWTWw/8ejkZzIVFbc6tpVJDXdMjzAxHZUsLPJwXPyh5ONdL0tbQcsrOfmGaM/zG4TQz7IWPmj5fPWy13P7lqPTu2f2uurY6520uL7l6PTumdLHHop+asGIPS/JbznqnSz02AGP4QbVyXrl2XWO69irk/XKi0sfP3KduEk9Y5gx6wHrnP3IjLKMEzeRL94ujGzWAy5GYza5rvmS7r7MvvMsZP5syiXnj5OJua1y1Ofxxt1xYlqqq+ugg0bPo9xVDumRJUXpoUWmFAUNJBDE8wpSdmBL+aUEWfARpGx+2uSu5dTxKmMmtSUuHS+iBfHUnDpe3WPI5XHkJhBPCSduypiJZ1ZIYyZn7MSt2I2Z6D0Y5s8m3HV05PjbW65Pd3dvFJ3tG5bvb7CnRX0c2bL9qBWjvPME7HNjX/rSl1Jjx1rWuKTa2tpS9913X7ZS0u+k2efGRL+aGuvHYY4fP27qVwzvpGHIbhFgeXoM0jnD8N2gOmSjzrrzVya+2OjRo6tzeQzSOcPw7VEdstSBRgV/3cDOzaC0I+lhRrerY+cm5WQItxg9M/Mcinj+THQUz63vTGe0+sUAAB9XSURBVK+prj2STpdsvOHDk/5+W8wmjR6anXwRHsvqQPXu2WWXXTbAmInKYuAkTzb1Tlr2IIE/+urFefPmDTBmooIYOMmTTV8NmU0owB8Y/3XoYD+Ry2OQzlnm1KSs1ElK1e985ztH8ZrJwVydrHTOMqcmZaVOUvrlasfmqVmGc3PVTSJf99SK3pgBSLHPn+W8Zpn+y5/+P0dWgbVl6ilnvYAF6KEFBFaI4voQor4AxK6L5L366qvZZKmjVj/ay0V9rA8h6gtA7O1Inhg/2aSOWv1oL5fUsV8DhSX9YigSM2bq/P0aKOMl66IxZkp/MWpgd2NXV1dG4iq9WEIxangdYo/8ViReLHrZ9TDmz2acT0/vb2mc8vr54+KPYYHFNZlUf0PNbS0fWFifWbq9Pu3uzoU4HRq0EPCSqKq/eybL9L2MlFrKjyXo5jtpI0f6+qRm3qeie1uyTN/LSKml/G+++WbWsEndMWPG5N02KxY/AeNhoGgVHQxfXBkM82d+LzA8tI+9tPfIL1D+Ib91gpTjkGMQWgUoq797dtVVV6XUS9ROqkielJHNPu/mVD6KNP3dM/HA1EvUTrLVy9aSZ593cyrPNBIgARAo8vkzuUYn1k8p8fUuGsriBes/lzpxbDRocVCNUKbf4UbVpD4kqddV+VGH+ntlXsONql29jF5X5TMkARKwEhgM82eYY86+tpXzXTScGry02dYzjO4o1gm66NS8cCS5vYcWFYG43kOLSr8k30OLSmfKIYG4CBTL+2fq/Py8hyZlp95+4uLO3q4Dqp4eplPp9hMbpozS06KKcw4tKpKUQwIkQAIRExhM82eygnH8p06OSp3pubyzr/tbbiiwzlF7QdytVH7pNGj5cWMtEiABEoifwCCYPxMI4rmNX+n6ryUtnNKZ9E8tCREecA4tQpgURQIkQAJREhgM82fBzje9r2xS6twXIIJV9FWac2i+MLEQCZAACSRHwG2uSmmgfztRpSUR5tLLU4d06kRZaemfHn100m89y4XIpIcWAh6rkgAJkAAJ5CCQTh3EQpDG0pKyK+I0Zjm0YDYJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJFCkB/j+0Ir0wVIsESODCI7Bo0aJMkLPetm1bQfpw6HltQD2fDVI+37L8f2j5kmM9EiABEiCBoiJQEOteVASoDAmQAAkkTCCoJxZUvag8t6CeWB56Ruq50UMLegVYngRIgARIoCgJlBWlVlSKBEhg0BPA031FOp3+WiaTWSkng/h6xP8a3kN3IU+uvr6+5JVXXpna398/TvQoKSk5OXv27MNI7y+kXmw7PAF6aOEZUgIJXLAEamtr74LhmuAEwDBmX0TeFNlhzL4oaU5lRYbIcsrLJ23FihUTV69eXe5UV4xZd3f3pN7e3nLZJS5pTmVFhshyymNa8RGI3EMbt+KwZZXOyQ1TPefpgpaPA+H4lUduyqT674Ds+elMZjaeJc9k0qldJanMT0dXVj68t2HcqTja9ZI5a/XJMac7uu4AzNpMWnSCVpn0K4DZNLpq2EN2newc7bLTqXQz5GxPVQz7wsmHxh+y5+d7jI7Icr3zleNWL6q5ADf5QdNxvoFWdwWVj/ONdE4haPtByosBgpfzIOqIUbsBuh/T6yvPzCHtS3qaGDMcPw1ZCyAz1dTUtE7PDxoXA9TZ2XkxjNUEGKQ9DQ0NPboM5Zk5pFl+F2LMzpw5MwdyKiEztWHDhqN6nSjj6j4P+nvKt16+uqv7M+jvIN96QfW8oD20mlXHRo1b2fwvmUzfk6lMphb7leidqzKpzETE39ufSX23rbPztfErDq8ICjZM+ZqVzTec6uh8qT+V+Q50uS6VSY2VXeKSJnlSJkgbqDsFMpamurueH3fHiWlB6rIsCTgRgGHYhvQd2Bdgf9owTE5FXdOUMTNk7DBkupb3k1FVVdVaVlbWKYZIDJIYJj/19DK6MRNZIlPPZ7w4CUTuoRXnaTprlenteQyd/C0qN51O/RHx1+ELjUb4djxhjkL+eBi59RNvO7L36GOTfqPKxhWOqzvy/kx/3/9Bm8Pc2kAeDFLm5+Nva/nQiccm/6dbOcf0TGocjNrfIW+ZYz4TScAnATx1H4NBkgerp7Ero2Z6asacmQw5mpukqQO7MUO6WVeVyScUjwwGaY/yrgyjZnpqMmcGuZN02UZaNsluzEaNGmXW1evEEVceVxyyo5SpPK4oZUYh64L10OCZfSyTSX1EIGI47nRZWem7T6yfeg32/+fE+ik3TZ41uSZdUvJlGLkuFGlIwpjVrD42JdXX1wS9XI2ZuuiZTPpn5SWZF9RxkBDn+74g5VmWBNwIiFFDnhi1AZ6aLACBAfsW8ppll7ikIZ6Ky5iJbNnEqIkhcvLUZAFIRUXFEeT1yC5xSZN6hTRm0j63cAQuWA8Nc1E3w9MxtsyDRx+d9Ft1JOGO+rSsxPrmhLqjP5peMeF1eaSLe+vv6L0fbVTr7cD4NJaWlHy9d3TZsZLT3f+jP5O5J5VJ/8PJDVNkuMd1s89d6nNs6FQcJ8BdhXlkDJYnSo9TCJRVrE+mgU4i4sJi1Dw8NZkvc5wzQ7p4dWIII/HMIMeyuXlqWM0oc2oyX+Y6ZyaGMEnPzKI4D/ImcMF6aDBmI01q6ZJ2M26LHGuc+MqzDWnLpLKtSCSHUz5+eAYELbIIK0l/98SGKbfDO3zt5Nrxp48/NuVfTq6f+p5cxswiY4gfoCP9C+Np39eZSlmp46twERYS/cWL8KualJU6fsvnW87LU9NlGro8jbRYjZlq08tTU2UkpGem0xi88QvWoOGSvWRetkzm9otWnh5vHhcg0t2TXoJ5sVKz6XTqwMxhk+8xjyOMYOgnO7wSociCiDIM0zqcz1N+Om2tM11n1C2I3vk2aug/3e9CB9VJo73pfvjkq5eql8uoafwTMWZKr1xGTXGSRST0zBS1wRlesEOOFenUT7pT6a9gNWM5VgBe1plqf37cbS33jk5Pevz1xnRn0pcT82YLrW2W3B+fZ4jl+0Nj+xGM2V0YQr0CpyOr7FyHrvTOFHVeQp0fDTYE1dXVbTBmE7XVe3uks3Y6D4dOus2pXL5p4On20rTj8KPRzgDPzEOODPkH3jxemnZcKCINqMUjujHzkMOXrwNfleQqRG/Q0ulTMBJj8joFqZvQ1vLYlB3jV7b8NYzZN6VJGJSLUpn+h06nmu/DMv0fDisb9v3Dj44/mJA68pLZ5VhRaW7p0tR/mQd5RPQ5M0v1dOpEKlXxBUtaiAN0SJrWwQXhqR7TmfltxtzNjeKheRk1B2N2o+FNBG4YskK9h4Z2837PTIwXDJXr6j11Mg7GzNXwqTpBQzCXL4CYKxgljjQR8yXjushCEWXAfmXIn4fQMmfmJceoEyhQL01rleSlaTk85MRPMpw8My85UodbcRKIY8hxv36qE+46en6uSs9A3CHPUtdWPPLDE+sn35dKl3wc3+TRDWkNeuh7Onu798HgbcBy/Usjb9hBILqCGj25qqQq+yvU08LE5cVqLOfcjBerrzqxvuaNMLKKqa50nuhMb4RO0lHKUJblfagojVkxnLd0ym6r90S/JIyZtAPm2c9ZSVxteprxwCBGbRd2MWSyS9ziRet1kJfdnNJUXq7Q46XpbFU7PydjJgVzycmlB/MLQyByDy2dSe2HQbhSnU6mPS0r6vaoYz008swkqWseRBRx9VSU/IzbCEKmFD+sW3szqVshQ5UeENpXEw4owITYCTh4BNnhR6Nh5SXswPXM2zOL/SQCNODkaYjnJiKchs8CiGZREhjUBKL30NKZFy1EMn3vsxzrB/Y8e1297BCP4yHguH6KHf0ds/XjsPGh/qUQzSMwPTUwyxozDGvJAiCLZxCWZ6Hr2z0NMWRJGjMwXW9noKdpnrHyzJSnZvGg9TpKnlOayssV6i9Iq7J6mt2DlXkzbU7SXD2q13GSo9IYFheByD20kpKyxr6+Poytn1uxh47005Pubtl05DuTz+qnjrQRvUcynz6flu4rKS999PxxNLF8PahxK5oX4Rx+AC2y74VhSPDJExumfiAarRykZNIvo73pKifTl3oH4s+o46Ch/bxNTzXiL4XAkABNcWwOnpooFqlnhjbyngOLmpLdUxP5+sKGqNvT5cHblZemzaFHMUKSJmU0Y2auZjTqZh8wEDcX8HjJMeoECuQFaZkzU0OGYpi8XpoW4epBQELxdIWrl5xACrFwogRi6YzwncGv4QXgr2hn8nxpOn1PqqRUPi2FAeq+q/sy2cUYb1VlStLpvzm+fkr2B6HSCh2Ou+3wR1P9qXOr4TDPdnL9lLFx6TR+ZfMX8eO+z5Qvy/Yrp1zmd6WjabAMAa4GDfnofA7jaygXmW0NsYjWocqZDSnPzOlSKa9D8gr9MrDG3jRmhvfsaOhUntN5RZmmGDnNmXnlRamDLgucMChzfgOHUH1x1PKUZpBrWQQV9oEuanlKTxVGP+QIyccem3wvDNRX0XX2Gg29FQbsX/v6epuzO+JIN4xZulfKSh2lVLGEI4cPf8rUBSs3HRaxmNlhIxXlmS3g1WfKyaSm7+tqya7ANNMiisBwyrzmkN2kk6ysrJSFIkPemMlFVMOPxWzMRE/DeN2AqDksjA5uguTFueUyWIqf2/BjnLpRdrQEYjFo8AAy8LbqK0pTs9Opkq9D5f8rq+wwQtGZ3bMr7tK/kjwpI2WlTrSn5i2t5rbD18oqxqmrM8PdSnae7ZLx/3NbOtV2bN1E1y+KqGL5hs0PT92Putss9fsznxu/ovlRWWk5bs2J0RNWNN8ybuXhX58bDrWU5IGNgPyrD6MDteUMzUPplGUv1NkZhkkNKYrBcnyYSNqo5TJmiheNmiIxuMPI59B0HC2NU17HsT70qGcXLC7/PiXT3f2zTKZ/amdHy7smrGz58sRZk54wvt+Y1atm5bE5vaneH5pKZlJbzXhMkZKqss/2d/T8CcSb33PEHGRdb39fXaqtL5V137JmP/NuGLVtFWWpT7Q8OuWYkzr2IUi9jAw56sdh4ujIYn0QQQcYaigmzLk51bUPmTiVCZOG8y2aOTq/5+FmzJAe6OXrqB9A3IyZx0vTvt7z88uF5ZInEIuHlvxpBGuxrLv3YhiKYedqZWb1Zfq3NO9tPoJ5rKfGrzz8E4S/70/17sSMt8wDyNf4X02NHfb5YK0EL328YUJzqrS0Fl6sfOHfc4ND+6c9/Wnz9QjPwgMyh8yXQgacGROSJeBmzEQLPDipl6+n4NDyH6vj9tTcjJnopV6axnzagP9YTU9NCA3eLTIPzcsjyAePfVFDPjLc6hxdP+l3k1YdeXtPb/8DMFofypY79w80ZXwf23mnA8YMKw0zt8vHgc/lxfv3ZOOkJ7Go5ma0uR5aOP4jTrgsh6DXyuOPTX46sDYRfykkcPusMGQIeBkzOUnM1a60n6yR9iVJF6MGGfKbk/tYHh7N1Y+I5715GTMRqlZA6g0YaYckTYwaZOT8IoteP2wcHM53OmGFxVgfeloWicTYVF6iL0gPTUgdeWTSXqxa/HC6rOQdKXzVHm7Yc9hPwFCcPRdPN2HJ77Lj6ye/E8v1d+ZFN89KmFN8ekxV5RUlqfTd0Of30KdNdomXlKQ/L3lSJoh41B2SXwoJwoBloyWA38ciSBRD5DpnlqtFu6dmyMxVzTO/o6Oj2mk1o2clW6bdUxOZtiI8LEICRTU/UYR8qBIJkIAHgdra2rvg3cAuZf/Rp6Xk4sWL74NHZn7vUTIxDPmtrVu3Zj00vfCKFSsmdnd3f6ypqWmdnp5vXORVVVW1imGyy1i+fPk0tDVJT5d/8vn4449nPTQ9Xbw9MWayyEhPDxuP2yPD9Yikb4/bI4Oekc4ZRzbkGPYCsz4JkMDgI+BlgGDMXF++tp+pYTAiMWYi28sABXlp2jCIkRoz+7nzmARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQKQSCSLzIXQnG2SQIkQAJDkQC+cD8d5yX/p/FP8N8JLsFHnichHI/jU4jLh5L3Yv8P7P+Gr9XvRliQDXpWoOExxl6Bf/1Tjngp9j7E8R98ervKysrODBs27FRjY2Mn0mPfaNBiR8wGSIAESCA3ARiI96DU32BfmLu0WWI7Yn8Dw/aUmRJzBHqORBMXYZfQ79aOf9HTjH/RE+s/SqZB83s5WI4ESIAEYiAAAzEBYh/B/uEQ4p8YMWLEKnhCbSFkeFaV/w3X2to6A4XEK8trg+fWNn/+/P319fW9eQnIUYkGLQcgZpMACZBAXARgzN4O2T/GPs3WRgbHz2Go8dcIWxCewHDjSGP48XqE1yN9mK3OfhzfAm/tZVt66EP8w9QRGEK8FLsMK9q3DiS0Y2ixp6urqxfDjLBbJeX4J6ojEI7AP4C125lulH8Vekq9SDd7Q5EKpzASIAESIAFnAkuWLLm+r6/vaeRWaSXOIP4AjMODGzdubNbSLVH81+3RPT09H0fi3TBuU7XMNxB/F4zFAS0tVFSMGYzTXN0wlZaW9kP3o9XV1Ued/iu4ahAGuxQGrgbHk3RjiLQeHO+CnmLcItto0CJDSUEkQAIk4I8AjNklMAjPoPRErcbP0dGv3Lx583EtzTNaV1c39uzZs/+EQrVawRcWLFhwbRTDemvWrBl29OjReTBmZUp+eXn56Tlz5uwLIh9ly/bs2TMdRrhayUHYsXXr1p3wPsUbjWSjQYsEI4WQAAmQgH8Cixcv/jU8q3erGujUv9fU1PQ5p84d5ZDs3ulLfm1t7cMIb1fyEH4O3s/92nFe0aVLl86DJzVCVYZndhQG95CTPn70hLwZMOSyYjO7wYAfgrwj6jhsSIMWliDrkwAJkEAAAjA+i+DxbNWqNMFTWaobCRi8G2Ag1qCMrHysQV4bjn8Dg/LdLVu2bMdQ3npJFxnI+zbyfoXwWYRvNdJOY9hy6oYNG87KcT7bsmXLquFRzVJ14Zm1YpXiPl3PVatWjYKHKF7mSMOL60O8fdSoUUceeeSRM9BzJuplvbvKysqWhx9+uB3nNh9lssOsxtDlCzC+Ui/0VhJaAgWQAAmQAAn4JoCO/2+1wkfR+f+5MhIwAOPQ4T8CwyTL8D+CXVZApnEsQ3UfhnfzFMp8FvFbsd9s7CkxCCjzlzjOboiPxrzX/1LH+YRoS5bmZzcs7uiFcduv9JQhRBk2PXPmzBycz1jDmElZeQ9tjKTDG5uE+DjUk/m+0ZIp9XG+ByUuG9oQG5T3qsmsEO0PDZoGg1ESIAESiJMAjMDbIP8y1QYMxVfFk5FjWRaPDv/fYIz0oUNVVIUyqvZd7OboGobt9ksmjNovEchL19kNcj6m4kFDWQgCI2WuopR3yJQXBbnpnTt3ztaHDp3kY6jSsnITrxVkF4AY52suBgEDfV7NSZTvNBo036hYkARIgATCEYCREK9Lbd3o5DeoA7zj9TUYi+vUsRG+irAJ+39jH7B4Agawf+TIkabHgzK/wJ7dIGueigcNOzs7x6o6MDgZHJ9Qx/Agp+I8hqtjCVGmS4YkEb6pp+vxBx54wDRiSD+l8lCnUsXDhubKlbCCWJ8ESIAESCAnAZkTU9tTyjuTxRfweL4AI6TyZHjubiwUuV+G6SQRQ40fRLAFuzlEh/LN+rJ5lD2oyTCHDKV+wM38Cgjmuc5Aj+wcF1ZVVmLObLIuSxZ2bNq06aimp+g3E7sMP2Y3lOlR+ZJgvLOWzdOX82cTQvyhhxYCHquSAAmQQBACMDZTVHl08DtUHMbsY8gz+2PkPYqFIt/VjQCG/P4N3szdqo4RZocbtTT9m4nZhRdanu8o2jFfoIYO5gvQMD6W4UEYuxOyStGm5ykxcrbGdO9M5s76VT7aMs9bpeUbRiYoXwVYjwRIgAQuIAKmQcM5my9Ow5jN1xng+DH9WMUx1Pc44r3qGIbEbtCmqzyErVo8UBRyTYOGNntUZXwJxDI8OHz4cHMoUpWRcO7cuSf1Y8izGDScn3zYWG2RrHAUYTRoCilDEiABEkiWQFo1hw7fMieFdItBUOXgtXWirDlPBcNgMWg4nqfKIrTkaemBovDKTD3t3hRWM5rGVRd67733ZmRJvkrDKscuFZcQckzDiLglTy8XNE6DFpQYy5MACZBA/gRatKr6XJR8ssrcYLTeax5oEcy1XQWjlV0CL8koZxotzLGJvJu04v+lxQNF0YbplWGFo7nWQvfWRCDeLRvlJPjOO++swrCibl9MD01Wc6pl/FIXbeX9rpy9bb1Bex6PSYAESIAEIiQAA3RYiUNHfpkW/3cVN8J6GCh9+FCW9Q+HkXhQLwcZR9QxZH8GcdP4wEP6Z5UXNNQNF95nM70prMq0/PsX5E2BnvrwYQrvqJXAc7PojhWQpieHRSXyfpq5Ydgysv8QYLqSpnRGSIAESIAEYiGAzv/rEPxXhvA38XHfCVil+KZ4LW1tbX+AgbpCa7gNRurb2P8bBuZSpP8l9rlavnhoH8Qw5C/w9ZElKLMJeapP34FFJLosvVrOOPSUFZJZD1KGDufNm/c8DFU/9EvjCyKXYxjSNHIo14dVi0eQdxYGbhiGECdBF/MdNqMx+br+Kcgdh+OZRloKi0c6sajEXByj0vMN6aHlS471SIAESCA4gZ9pVYafOnUq+16aLL2HQVgGA6WvUhyLtG/AOPwCddZhtxgzQ87fwkj8u82YyTL/Txj5eQUYSjS9Jhk63Lt3b3Z1I/TLwJjthdE6/34BludjschUGLPZaGy6gzGTObOpMLpzkG8aM1GsqqrqgIRRbTRoUZGkHBIgARLIQQDe1O9RZK8qhs7/GzBI2eX18GBehMG4C7s5f6XK2UJz+A4G7xrkvR+78syk6N2Q9UuJ5LutX79eFp6Y814dHR1TZShR5EF2BwzUAZtR82wK5zkcu2W+TZb2q/fwPCsHyKRBCwCLRUmABEggDAHxcFD/K5qMGUj7tjrGC8yPwlBcj7SXVJoKkdaP/XvIvxKhORen8hEeQ95SGJz7tbS8opAveuoLVSp27NgxTQnDMOHxMWPG7JIhQ5WmhximPIrjl5E/wDhDRzHI+6L8yr5qW7fqKo0hCZAACZBATATgVaXx+ag/QPxVWhP3whB9TR3Da6tAx38zvJp3I03iexD+BwyehPLVEFl08Uns02F85MXm38HA/Ezm4yQ/is3QU96Py3qQIhOGqhlf+zeNqXhtr7/+unx8eCSGJtNY/NGFMqcbGxuzhk7OA9tEyKrAufSgzFn8r7Y2mY+LQke7DBo0OxEekwAJkEDMBLCwYjbmop5BR69/eeNHMAir8RmpwC9Ew3B8ECr/GkaxPUrVjU9dzYNM8zNWMK5t8+fP3w+jZA59+m0TespnsdqhZ2QvU+ttm0rqiYyTAAmQAAnER+DFF188CU/lWXhWS9GK6ocvhxdzB9JHX3nllbteeuml7Ff43bQQD2r37t0LYVxkwUg9ZHVgWPBXbuXzSX/uued6r7766jfR1jhpT2QgrDx27NgE6FmKvevll1/2NE5S7+DBg6Og5wyc3xSsiOx/4YUXIjW86tzooSkSDEmABEggYQIYenwvOvxtaHaiQ9MvI+3XMFSHUOY4PCMZpqtCXIzLfKRfj/BirV4b3hObieE+c4Wilhcqavwjz1kwSOZ7bkqgzKNBl3bo143VjlmvDWkl0K0UexXSR8AbLVflEfbBEL6Uj4enyXCM0qA5YmEiCZAACSRDAP8j7WIYCvmnnjeFbHEf5q8+ijmuP4aU41hd5sNgnC6BrpbVio6FvRO78f7da1HO96nmaNAUCYYkQAIkUEAC8NZugFGThSHvCaIGvKPnUe8HMBIPyftsQermU1a8NXwJZCrqmv9ixqcc+Wr/Mby6cBw66++x+ayeuxgNWm5GLEECJEACiRFYvnz5NAzRfRBG6gPYZ6JhGY6cYChwCsbgOOIvYn8WHtm/RfmlDaMNX4F4bBhaHA19RmP14jAZjoQHp4YW+xDvRV4HzuEszuc0FoKY/4bGVwMsRAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKDgMD/D2WyCk5hENCOAAAAAElFTkSuQmCC); - background-size: 218px 188px; - display: inline-block; - } -} - -.tui-toolbar-icons.tui-heading { - background-position: -172px -48px; -} - -.tui-toolbar-icons.tui-heading:disabled { - background-position: -193px -48px; -} - -.tui-toolbar-icons.tui-bold { - background-position: -4px -4px; -} - -.tui-toolbar-icons.tui-bold:disabled { - background-position: -25px -4px; -} - -.tui-toolbar-icons.tui-italic { - background-position: -4px -48px; -} - -.tui-toolbar-icons.tui-italic:disabled { - background-position: -25px -48px; -} - -.tui-toolbar-icons.tui-color { - background-position: -172px -70px; -} - -.tui-toolbar-icons.tui-color:disabled { - background-position: -193px -70px; -} - -.tui-toolbar-icons.tui-strike { - background-position: -4px -26px; -} - -.tui-toolbar-icons.tui-strike:disabled { - background-position: -25px -26px; -} - -.tui-toolbar-icons.tui-hrline { - background-position: -46px -92px; -} - -.tui-toolbar-icons.tui-hrline:disabled { - background-position: -67px -92px; -} - -.tui-toolbar-icons.tui-quote { - background-position: -4px -114px; -} - -.tui-toolbar-icons.tui-quote:disabled { - background-position: -25px -114px; -} - -.tui-toolbar-icons.tui-ul { - background-position: -46px -4px; -} - -.tui-toolbar-icons.tui-ul:disabled { - background-position: -67px -4px; -} - -.tui-toolbar-icons.tui-ol { - background-position: -46px -26px; -} - -.tui-toolbar-icons.tui-ol:disabled { - background-position: -67px -26px; -} - -.tui-toolbar-icons.tui-task { - background-position: -130px -48px; -} - -.tui-toolbar-icons.tui-task:disabled { - background-position: -151px -48px; -} - -.tui-toolbar-icons.tui-indent { - background-position: -46px -48px; -} - -.tui-toolbar-icons.tui-indent:disabled { - background-position: -67px -48px; -} - -.tui-toolbar-icons.tui-outdent { - background-position: -46px -70px; -} - -.tui-toolbar-icons.tui-outdent:disabled { - background-position: -67px -70px; -} - -.tui-toolbar-icons.tui-table { - background-position: -88px -92px; -} - -.tui-toolbar-icons.tui-table:disabled { - background-position: -109px -92px; -} - -.tui-toolbar-icons.tui-image { - background-position: -130px -4px; -} - -.tui-toolbar-icons.tui-image:disabled { - background-position: -151px -4px; -} - -.tui-toolbar-icons.tui-link { - background-position: -130px -26px; -} - -.tui-toolbar-icons.tui-link:disabled { - background-position: -151px -26px; -} - -.tui-toolbar-icons.tui-code { - background-position: -130px -92px; -} - -.tui-toolbar-icons.tui-code:disabled { - background-position: -151px -92px; -} - -.tui-toolbar-icons.tui-codeblock { - background-position: -130px -70px; -} - -.tui-toolbar-icons.tui-codeblock:disabled { - background-position: -151px -70px; -} - -.tui-toolbar-icons.tui-more { - background-position: -172px -92px; -} - -.tui-toolbar-icons.tui-more:disabled { - background-position: -193px -92px; -} -.tui-colorpicker-svg-slider { - border: 1px solid #ebebeb; -} -.tui-colorpicker-vml-slider { - border: 1px solid #ebebeb; -} -.tui-colorpicker-svg-huebar { - border: 1px solid #ebebeb; -} - -.tui-editor-pseudo-clipboard { - position: fixed; - left: -1000px; - top: -1000px; - width: 100px; - height: 100px; -} - -.te-ww-block-overlay.code-block-header { - text-align: right; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; -} - -.te-ww-block-overlay.code-block-header span { - font-size: 10px; - font-weight: 600; - padding: 0px 10px; - color: #333333; - cursor: default; -} - -.te-ww-block-overlay.code-block-header button { - margin: 8px; - font-size: 10px; - color: #333333; - background-color: #f9f9f9; - border: 1px solid #dddddd; - padding: 4px; - height: auto; -} - -.te-popup-code-block-languages { - position: fixed; - box-sizing: border-box; - width: 130px; -} - -.te-popup-code-block-languages .tui-popup-body { - max-height: 169px; - overflow: auto; - padding: 0px; -} - -.te-popup-code-block-languages button { - width: 100%; - background-color: #fff; - border: none; - outline: 0; - padding: 0px 10px 0px 10px; - font-size: 12px; - line-height: 24px; - text-align: left; - color: #777; -} - -.te-popup-code-block-languages button.active { - background-color: #f4f4f4; -} - -.tui-popup-code-block-editor .tui-popup-wrapper { - width: 70%; - height: 70%; - margin: auto; - display: -ms-flexbox; - display: flex; - -ms-flex-direction: column; - flex-direction: column; -} - -.te-input-language { - position: relative; - margin-left: 15px; - cursor: pointer; -} - -.te-input-language input { - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 10px; - padding: 3px 5px; - border: 1px solid #dddddd; - background-color: #f9f9f9; - box-sizing: border-box; - width: 130px; - outline: none; -} - -.te-input-language input::-ms-clear { - display: none; -} - -.te-input-language::after { - content: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT42Q0NBRDk2QS0yMjYxLTRFNDAtOTk1RC1DRUUyQUREQUQ3NkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLWQtc2lkZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlJlY3RhbmdsZS03IiBwb2ludHM9IjIgNSAxMCA1IDYgMTAiPjwvcG9seWdvbj4gICAgICAgIDwvZz4gICAgPC9nPjwvc3ZnPg==); - position: absolute; - top: 1px; - right: 3px; -} - -.te-input-language.active::after { - content: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5BNEZDRkIzMy0zNjdBLTREMjAtOEEyNC1DQ0I2ODFBMDZDODg8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLXVwLXNpZGUiIGZpbGw9IiM1NTU1NTUiPiAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJSZWN0YW5nbGUtNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi4wMDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgxLCAtMSkgdHJhbnNsYXRlKC02LjAwMDAwMCwgLTYuNTAwMDAwKSAiIHBvaW50cz0iMiA0IDEwIDQgNiA5Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=); -} - -.tui-popup-code-block-editor button { - margin: -1px 3px; -} - -.tui-popup-code-block-editor .tui-popup-header-buttons { - height: 20px; -} - -.tui-popup-code-block-editor .popup-editor-toggle-preview::after { - content: 'Preview off'; - color: #777; - margin-right: 22px; -} - -.tui-popup-code-block-editor .popup-editor-toggle-preview.active::after { - content: 'Preview on'; - color: #4b96e6; -} - -.tui-popup-code-block-editor .popup-editor-toggle-scroll::after { - content: 'Scroll off'; - color: #777; - margin-right: 16px; -} - -.tui-popup-code-block-editor .popup-editor-toggle-scroll.active::after { - content: 'Scroll on'; - color: #4b96e6; -} - -.tui-popup-code-block-editor .popup-editor-toggle-fit { - width: 18px; - height: 18px; - margin-top: 4px; - margin-right: 14px; - background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT40OUQ4RTYyMy1GRTAyLTQ1RUUtQkQ5Ri0xMjUyQjEzRTU1MkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLWV4cGFuZCIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBhdGggZD0iTTMsMyBMOSwzIEw5LDUgTDUsNSBMNSw5IEwzLDkgTDMsMyBaIE0xNSwxNSBMOSwxNSBMOSwxMyBMMTMsMTMgTDEzLDkgTDE1LDkgTDE1LDE1IFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4wMDAwMDAsIDkuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC05LjAwMDAwMCwgLTkuMDAwMDAwKSAiPjwvcGF0aD4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZSIgZmlsbC1ydWxlPSJub256ZXJvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMS41MDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC0xMS41MDAwMDAsIC02LjUwMDAwMCkgIiBwb2ludHM9IjkuMDg1Nzg2NDQgNS41IDEyLjUgOC45MTQyMTM1NiAxMy45MTQyMTM2IDcuNSAxMC41IDQuMDg1Nzg2NDQiPjwvcG9seWdvbj4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZS1Db3B5IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYuNTAwMDAwLCAxMS41MDAwMDApIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTYuNTAwMDAwLCAtMTEuNTAwMDAwKSAiIHBvaW50cz0iNC4wODU3ODY0NCAxMC41IDcuNSAxMy45MTQyMTM2IDguOTE0MjEzNTYgMTIuNSA1LjUgOS4wODU3ODY0NCI+PC9wb2x5Z29uPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+); -} - -.tui-popup-code-block-editor .popup-editor-toggle-fit.active { - background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT4wN0Q1MjlCRi1GNTIzLTREN0EtQTlGNi05NTUzNTU5RDNEMUE8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLXJlZHVjZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzIiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS41MDAwMDAsIDEyLjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtNS41MDAwMDAsIC0xMi41MDAwMDApICIgcG9pbnRzPSIzLjA4NTc4NjQ0IDExLjUgNi41IDE0LjkxNDIxMzYgNy45MTQyMTM1NiAxMy41IDQuNSAxMC4wODU3ODY0Ij48L3BvbHlnb24+ICAgICAgICAgICAgPHBhdGggZD0iTTksOSBMMTUsOSBMMTUsMTEgTDExLDExIEwxMSwxNSBMOSwxNSBMOSw5IFogTTksOSBMMyw5IEwzLDcgTDcsNyBMNywzIEw5LDMgTDksOSBaIiBpZD0iQ29tYmluZWQtU2hhcGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMDAwMDAwLCA5LjAwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtOS4wMDAwMDAsIC05LjAwMDAwMCkgIj48L3BhdGg+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzMiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIuNTAwMDAwLCA1LjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtMTIuNTAwMDAwLCAtNS41MDAwMDApICIgcG9pbnRzPSIxNC45MTQyMTM2IDYuNSAxMS41IDMuMDg1Nzg2NDQgMTAuMDg1Nzg2NCA0LjUgMTMuNSA3LjkxNDIxMzU2Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=); -} - -.tui-popup-code-block-editor .tui-popup-close-button { - margin-top: 6px; -} - -.tui-popup-code-block-editor .tui-popup-body { - z-index: -1; - padding: 0px; - display: -ms-flexbox; - display: flex; - -ms-flex-direction: column; - flex-direction: column; - -ms-flex: 1; - flex: 1; -} - -.tui-popup-code-block-editor .popup-editor-body { - position: relative; - -ms-flex: 1; - flex: 1; - border-bottom: 1px solid #cacaca; -} - -.tui-popup-code-block-editor .te-button-section { - padding: 15px; -} - -.tui-popup-code-block-editor .te-button-section button { - float: left; -} - -.tui-popup-code-block-editor .tui-editor-contents pre { - margin: 0px; - background-color: transparent; -} - -.tui-popup-code-block-editor .CodeMirror { - height: auto; -} - -.tui-popup-code-block-editor .CodeMirror-line { - font-family: Consolas, Courier, 'Apple SD 산돌고딕 Neo', -apple-system, 'Lucida Grande', - 'Apple SD Gothic Neo', '맑은 고딕', 'Malgun Gothic', 'Segoe UI', '돋움', dotum, sans-serif; - font-size: 13px; - line-height: 160%; - letter-spacing: -0.3px; -} - -.tui-popup-code-block-editor .popup-editor-editor-wrapper { - min-height: 100%; -} - -.tui-split-scroll-wrapper { - position: relative; -} - -.tui-split-scroll { - position: absolute; -} - -.tui-split-scroll, -.tui-split-scroll-wrapper { - width: 100%; - height: 100%; -} - -.tui-split-scroll .tui-split-content-left, -.tui-split-scroll .tui-split-content-right { - position: absolute; - top: 0px; - width: 50%; - box-sizing: border-box; -} - -.tui-split-scroll .tui-split-content-left { - left: 0px; -} - -.tui-split-scroll .tui-split-content-right { - left: 50%; -} - -.tui-split-scroll .tui-splitter { - position: absolute; - left: 50%; - top: 0; - height: 100%; - width: 1px; - border-left: 1px solid #cacaca; -} - -.tui-split-scroll .tui-split-scroll-content { - width: 100%; - height: 100%; - overflow: hidden; - position: relative; -} - -.tui-split-scroll .tui-split-content-left, -.tui-split-scroll .tui-split-content-right { - height: 100%; - overflow-x: hidden; - overflow-y: auto; -} - -.tui-split-scroll button.tui-scrollsync { - top: 10px; - opacity: 0.2; -} - -.tui-split-scroll button.tui-scrollsync::after { - content: 'scroll off'; -} - -.tui-split-scroll.scroll-sync button.tui-scrollsync { - opacity: 0.5; -} - -.tui-split-scroll.scroll-sync .tui-split-content-left, -.tui-split-scroll.scroll-sync .tui-split-content-right { - height: auto; - overflow: initial; -} - -.tui-split-scroll.scroll-sync button.tui-scrollsync::after { - content: 'scroll on'; -} - -.tui-split-scroll.scroll-sync .tui-split-scroll-content { - overflow-y: auto; -} - -.tui-split-scroll.single-content .tui-splitter { - display: none; -} - -.tui-split-scroll.single-content .tui-split-content-left { - width: 100%; -} - -.tui-split-scroll.single-content .tui-split-content-right { - display: none; -} - -.tui-split-scroll.single-content button.tui-scrollsync { - display: none; -} - -@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { - /* IE10+ */ - .tui-split-scroll-wrapper .tui-splitter { - left: calc(50% - 9px); - } -} - -@supports (-ms-accelerator: true) { - /* IE Edge 12+ CSS styles go here */ - .tui-split-scroll-wrapper .tui-splitter { - left: calc(50% - 9px); - } -} - -@media screen and (max-width: 480px) { - .tui-popup-wrapper { - max-width: 300px; - } - - .tui-editor-popup { - margin-left: -150px; - } - - .te-dropdown-toolbar { - max-width: none; - } -} - -@charset "utf-8"; -.CodeMirror { - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; -} - -.tui-editor-contents *:not(table) { - line-height: 160%; - box-sizing: content-box; -} - -.tui-editor-contents i, -.tui-editor-contents cite, -.tui-editor-contents em, -.tui-editor-contents var, -.tui-editor-contents address, -.tui-editor-contents dfn { - font-style: italic; -} - -.tui-editor-contents strong { - font-weight: bold; -} - -.tui-editor-contents p { - margin: 10px 0; - color: #555; -} - -.tui-editor-contents > h1:first-of-type, -.tui-editor-contents > div > div:first-of-type h1 { - margin-top: 14px; -} - -.tui-editor-contents h1, -.tui-editor-contents h2, -.tui-editor-contents h3, -.tui-editor-contents h5 { - font-weight: bold; -} - -.tui-editor-contents h1 { - font-size: 1.6rem; - line-height: 28px; - border-bottom: 3px double #999; - margin: 52px 0 15px 0; - padding-bottom: 7px; - color: #000; -} - -.tui-editor-contents h2 { - font-size: 1.3rem; - line-height: 23px; - border-bottom: 1px solid #dbdbdb; - margin: 30px 0 13px 0; - padding-bottom: 7px; - color: #333; -} - -.tui-editor-contents h3, -.tui-editor-contents h4 { - font-size: 1.2rem; - line-height: 18px; - margin: 20px 0 2px; - color: #333; -} - -.tui-editor-contents h5, -.tui-editor-contents h6 { - font-size: 1rem; - line-height: 17px; - margin: 10px 0 -4px; - color: #333; -} - -.tui-editor-contents blockquote { - margin: 15px 0; -} - -.tui-editor-contents blockquote { - border-left: 4px solid #dddddd; - padding: 0 15px; - color: #777777; -} - -.tui-editor-contents blockquote > :first-child { - margin-top: 0; -} - -.tui-editor-contents blockquote > :last-child { - margin-bottom: 0; -} - -.tui-editor-contents pre, -.tui-editor-contents code { - font-family: Consolas, Courier, 'Lucida Grande', '나눔바른고딕', 'Nanum Barun Gothic', '맑은고딕', - 'Malgun Gothic', sans-serif; - border: 0; - border-radius: 0; -} - -.tui-editor-contents pre { - margin: 2px 0 8px; - padding: 18px; - background-color: #f5f7f8; -} - -.tui-editor-contents code { - color: #c1788b; - padding: 4px 4px 2px 0; - letter-spacing: -0.3px; -} - -.tui-editor-contents pre code { - padding: 0; - color: inherit; - white-space: pre-wrap; - background-color: transparent; -} - -.tui-editor-contents pre.addon { - border: 1px solid #e8ebed; - background-color: #fff; -} - -.tui-editor-contents img { - margin: 4px 0 10px; - box-sizing: border-box; - vertical-align: top; - max-width: 100%; -} - -.tui-editor-contents table { - margin: 2px 0 14px; - color: #555; - width: auto; - border-collapse: collapse; - box-sizing: border-box; -} - -.tui-editor-contents table th, -.tui-editor-contents table td { - height: 32px; - padding: 5px 14px 5px 12px; -} - -.tui-editor-contents table td { - border: 1px solid #eaeaea; -} - -.tui-editor-contents table th { - border: 1px solid #72777b; - border-top: 0; - background-color: #7b8184; - font-weight: 300; - color: #fff; - padding-top: 6px; -} - -.tui-editor-contents ul, -.tui-editor-contents menu, -.tui-editor-contents ol, -.tui-editor-contents dir { - display: block; - list-style-type: disc; - padding-left: 17px; - margin: 6px 0 10px; - color: #555; -} - -.tui-editor-contents ol { - list-style-type: decimal; -} - -.tui-editor-contents ul ul, -.tui-editor-contents ul ol, -.tui-editor-contents ol ol, -.tui-editor-contents ol ul { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -.tui-editor-contents ul li, -.tui-editor-contents ol li { - position: relative; -} - -.tui-editor-contents ul p, -ol p { - margin: 0; -} - -.tui-editor-contents ul li.task-list-item:before, -.tui-editor-contents ol li.task-list-item:before, -.tui-editor-contents pre ul li:before { - content: ''; -} - -.tui-editor-contents hr { - border-top: 1px solid #eee; - margin: 16px 0; -} - -.tui-editor-contents a { - text-decoration: underline; - color: #5286bc; -} - -.tui-editor-contents a:hover { - color: #007cff; -} - -.tui-editor-contents a.image-link { - position: relative; -} - -.tui-editor-contents a.image-link::before { - content: ''; - position: absolute; - margin: 0; - width: 20px; - height: 20px; - top: 2px; - right: 2px; - background-repeat: no-repeat; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAFKADAAQAAAABAAAAFAAAAACy3fD9AAAA/0lEQVQ4Ee2UIY6FQAyG/91wAQQJDg8SSwI3QIFAcQHuwFHQoOAEEFAELB6H4wIku+9vQgIP9zLyVbTTTufLtJ3MzzRNf1AoGlmu6ypBzvOMXyWkC+QLvDTjw6VM+Xr2OA6UZYmu67Dvu2zleX6zuq7D933EcQxNuyPu3usYYXVdw/M8mKYpIMMwxEZRJHbbNsmhkySJxE71APJmhGVZhnVdURQFlmU585GmKSzLEp+570Dlz+ZxQ/aGJVNYsm3bCIJA/LZtMY4jmqbBMAwIw1DiV/UAstEUltP3vawdxxFbVZVYDoWwM1eCp+LnoErIUt7DL/Ac1edWng1/WlXyD380myY5A34sAAAAAElFTkSuQmCC'); - cursor: pointer; -} - -.tui-editor-contents { - font-size: 13px; - margin: 0; - padding: 0; -} - -.tui-editor-contents .task-list-item { - border: 0; - list-style: none; - padding-left: 22px; - margin-left: -22px; - min-height: 20px; -} - -.tui-editor-contents .task-list-item:before { - background-repeat: no-repeat; - background-size: 16px 16px; - background-position: center; - content: ''; - height: 18px; - width: 18px; - position: absolute; - left: 0; - top: 1px; - cursor: pointer; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAADdJREFUKBVjvHv37n8GMgALSI+SkhJJWu/du8fARJIOJMWjGpECA505GjjoIYLEB6dVUNojFQAA/1MJUFWet/4AAAAASUVORK5CYII='); -} - -.tui-editor-contents .task-list-item.checked:before { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAMpJREFUKBVjjJ/64D8DGYCJDD1gLbTVyM3OxJDiJMzAxcYIdyALnIWDAdJU7i/OICfCxsDMxMgwc88bwk5F1vTs/W+GFUffwY2H+1FBlI2hLliCQYCbGSyJrqlzwwuGj9//YWoMtRBgUBJnZ6gMEGeQFWaFOw9kE7omkG5GWDyCPF7mJ86gIMbO8P//fwZGRkYGXJpAGuFO/fbrP0PXppcMD179JKgJRSOIA9N8/NZXrM4DqYEBjOgAaYYFOUwRNhruVGyS+MTI1ggAx8NTGcUtFVQAAAAASUVORK5CYII='); -} - -.tui-editor-contents .task-list-item input[type='checkbox'], -.tui-editor-contents .task-list-item .task-list-item-checkbox { - margin-left: -17px; - margin-right: 3.8px; - margin-top: 3px; -} - -.tui-editor-contents-placeholder:before { - content: attr(data-placeholder); - color: grey; - line-height: 160%; - position: absolute; -} - -.tui-editor-contents .te-preview-highlight { - position: relative; - z-index: 0; -} - -.tui-editor-contents .te-preview-highlight::after { - content: ''; - background-color: rgba(255, 245, 131, 0.5); - border-radius: 4px; - z-index: -1; - position: absolute; - top: -4px; - right: -4px; - left: -4px; - bottom: -4px; -} - -.tui-editor-contents h1.te-preview-highlight::after, -.tui-editor-contents h2.te-preview-highlight::after { - bottom: 0; -} - -.tui-editor-contents td.te-preview-highlight::after, -.tui-editor-contents th.te-preview-highlight::after { - display: none; -} - -.tui-editor-contents th.te-preview-highlight, -.tui-editor-contents td.te-preview-highlight { - background-color: rgba(255, 245, 131, 0.5); -} - -.tui-editor-contents th.te-preview-highlight { - color: #222; -} - -.te-md-container .CodeMirror { - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; - color: #000; -} - -.tui-md-heading1 { - font-size: 24px; -} - -.tui-md-heading2 { - font-size: 22px; -} - -.tui-md-heading3 { - font-size: 20px; -} - -.tui-md-heading4 { - font-size: 18px; -} - -.tui-md-heading5 { - font-size: 16px; -} - -.tui-md-heading6 { - font-size: 14px; -} - -.tui-md-strong, -.tui-md-heading { - font-weight: bold; -} - -.tui-md-emph { - font-style: italic; -} - -.tui-md-strike { - text-decoration: line-through; -} - -.tui-md-thematic-break { - color: #ccc; -} - -.tui-md-link.tui-md-link-desc { - color: #00c; -} - -.tui-md-link.tui-md-link-url { - color: #a11; -} - -.tui-md-block-quote { - color: #090; -} - -.tui-md-code, -.tui-md-code-block { - color: #a50; -} - -.tui-md-list-item.first { - color: #000; -} - -.tui-md-list-item.second { - color: #085; -} - -.tui-md-list-item.third { - color: #708; -} - -.tui-md-list-item.tui-md-delimiter { - color: #555; -} - diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor-only.css b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor-only.css deleted file mode 100644 index 4d62f7c2c9..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor-only.css +++ /dev/null @@ -1,1433 +0,0 @@ -/*! - * @toast-ui/editor - * @version 2.5.1 | Tue Nov 24 2020 - * @author NHN FE Development Lab - * @license MIT - */ -@charset "utf-8"; -/* height */ -.auto-height, -.auto-height .tui-editor-defaultUI { - height: auto; -} - -.auto-height .tui-editor { - position: relative; -} - -:not(.auto-height) > .tui-editor-defaultUI, -:not(.auto-height) > .tui-editor-defaultUI > .te-editor-section { - display: -ms-flexbox; - display: flex; - -ms-flex-direction: column; - flex-direction: column; -} - -:not(.auto-height) > .tui-editor-defaultUI > .te-editor-section { - -ms-flex: 1; - flex: 1; -} - -/* tui editor */ -.tui-editor:after, -.tui-editor-defaultUI-toolbar:after { - content: ''; - display: block; - height: 0; - clear: both; -} - -.tui-editor { - position: absolute; - line-height: 1; - color: #222; - width: 100%; - height: inherit; -} - -.te-editor-section { - min-height: 0px; - position: relative; - height: inherit; -} - -.te-md-container { - display: none; - overflow: hidden; - height: 100%; -} - -.te-md-container .te-editor { - line-height: 1.5; -} - -.te-md-container .te-editor, -.te-md-container .te-preview { - box-sizing: border-box; - padding: 0; - height: inherit; -} - -.te-md-container .CodeMirror { - font-size: 13px; - height: inherit; -} - -.te-md-container .te-preview { - overflow: auto; - padding: 0 25px; - height: 100%; -} - -.te-md-container .te-preview > p:first-child { - margin-top: 0 !important; -} - -.te-md-container .te-preview .tui-editor-contents { - padding-top: 8px; -} - -.tui-editor .te-preview-style-tab > .te-editor, -.tui-editor .te-preview-style-tab > .te-preview { - float: left; - width: 100%; - display: none; -} - -.tui-editor .te-preview-style-tab > .te-tab-active { - display: block; -} - -.tui-editor .te-preview-style-vertical > .te-tab-section { - display: none; -} - -.tui-editor .te-preview-style-tab > .te-tab-section { - display: block; -} - -.tui-editor .te-preview-style-vertical .te-editor { - float: left; - width: 50%; -} - -.tui-editor .te-preview-style-vertical .te-preview { - float: left; - width: 50%; -} - -.tui-editor .te-md-splitter { - display: none; - position: absolute; - left: 50%; - top: 0; - height: 100%; - width: 1px; - border-left: 1px solid #e5e5e5; -} - -.tui-editor .te-preview-style-vertical .te-md-splitter { - display: block; -} - -.te-ww-container { - display: none; - overflow: hidden; - z-index: 10; - height: inherit; - background-color: #fff; -} - -.te-ww-container > .te-editor { - overflow: auto; - height: inherit; -} - -.te-ww-container .tui-editor-contents:focus { - outline: none; -} - -.te-ww-container .tui-editor-contents { - padding: 0 25px; -} - -.te-ww-container .tui-editor-contents:first-child { - box-sizing: border-box; - margin: 0px; - padding: 16px 25px 0px 25px; - height: inherit; -} - -.te-ww-container .tui-editor-contents:last-child { - margin-bottom: 16px; -} - -.te-md-mode .te-md-container { - display: block; - z-index: 100; -} - -.te-ww-mode .te-ww-container { - display: block; - z-index: 100; -} - -.tui-editor.te-hide, -.tui-editor-defaultUI.te-hide { - display: none; -} - -.tui-editor-defaultUI .CodeMirror-lines { - padding-top: 18px; - padding-bottom: 18px; -} - -.tui-editor-defaultUI pre.CodeMirror-line { - padding-left: 25px; - padding-right: 25px; -} - -.tui-editor-defaultUI .CodeMirror pre.CodeMirror-placeholder { - margin: 0; - padding-left: 25px; - color: grey; -} - -.tui-editor-defaultUI .CodeMirror-scroll { - cursor: text; -} - -/* Essential element style */ -.tui-editor-contents td.te-cell-selected { - background-color: #d8dfec; -} -.tui-editor-contents td.te-cell-selected::selection { - background-color: #d8dfec; -} -.tui-editor-contents th.te-cell-selected { - background-color: #908f8f; -} -.tui-editor-contents th.te-cell-selected::selection { - background-color: #908f8f; -} - -/* default UI Styles */ -.tui-editor-defaultUI { - position: relative; - border: 1px solid #e5e5e5; - height: 100%; - font-family: 'Open Sans', 'Helvetica Neue', 'Helvetica', 'Arial', '나눔바른고딕', - 'Nanum Barun Gothic', '맑은고딕', 'Malgun Gothic', sans-serif; -} - -.tui-editor-defaultUI button { - color: #fff; - padding: 0px 14px 0px 15px; - height: 28px; - font-size: 12px; - border: none; - cursor: pointer; - outline: none; -} -.tui-editor-defaultUI button.te-ok-button { - background-color: #4b96e6; -} -.tui-editor-defaultUI button.te-close-button { - background-color: #777; -} - -.tui-editor-defaultUI-toolbar { - padding: 0 25px; - height: 31px; - background-color: #fff; - border: 0; - overflow: hidden; -} - -.tui-toolbar-divider { - float: left; - display: inline-block; - width: 1px; - height: 14px; - background-color: #ddd; - margin: 9px 6px; -} - -.tui-toolbar-button-group { - height: 28px; - border-right: 1px solid #d9d9d9; - float: left; -} - -.te-toolbar-section { - height: 32px; - box-sizing: border-box; - border-bottom: 1px solid #e5e5e5; -} - -.tui-editor-defaultUI-toolbar button { - float: left; - box-sizing: border-box; - outline: none; - cursor: pointer; - background-color: #fff; - width: 22px; - height: 22px; - padding: 3px; - border-radius: 0; - margin: 5px 3px; - border: 1px solid #fff; -} - -.tui-editor-defaultUI-toolbar button:hover, -.tui-editor-defaultUI-toolbar button:active, -.tui-editor-defaultUI-toolbar button.active { - border: 1px solid #aaa; - background-color: #fff; -} - -.tui-editor-defaultUI-toolbar button:first-child { - margin-left: 0; -} - -.tui-editor-defaultUI-toolbar button:last-child { - margin-right: 0; -} - -.tui-editor-defaultUI-toolbar button.tui-scrollsync { - width: auto; - color: #777777; - border: 0; -} - -.tui-editor-defaultUI button.tui-scrollsync:after { - content: 'Scroll off'; -} - -.tui-editor-defaultUI button.tui-scrollsync.active { - color: #4b96e6; - font-weight: bold; -} - -.tui-editor-defaultUI button.tui-scrollsync.active:after { - content: 'Scroll on'; -} - -.tui-editor-defaultUI .te-mode-switch-section { - background-color: #f9f9f9; - border-top: 1px solid #e5e5e5; - height: 20px; - font-size: 12px; -} - -.tui-editor-defaultUI .te-mode-switch { - float: right; - height: 100%; -} - -.tui-editor-defaultUI .te-switch-button { - width: 92px; - height: inherit; - background: #e5e5e5; - outline: 0; - color: #a0aabf; - cursor: pointer; - border: 0; - border-left: 1px solid #ddd; - border-right: 1px solid #ddd; -} - -.tui-editor-defaultUI .te-switch-button.active { - background-color: #fff; - color: #000; -} - -.tui-editor-defaultUI .te-markdown-tab-section { - float: left; - height: 31px; - background: #fff; -} - -.te-markdown-tab-section .te-tab { - margin: 0 -7px 0 24px; - background: #fff; -} - -.tui-editor-defaultUI .te-tab button { - box-sizing: border-box; - line-height: 100%; - position: relative; - cursor: pointer; - z-index: 1; - font-size: 13px; - background-color: #f9f9f9; - border: solid 1px #e5e5e5; - border-top: 0; - padding: 0 9px; - color: #777; - border-radius: 0; - outline: 0; -} - -.te-markdown-tab-section .te-tab button:last-child { - margin-left: -1px; -} - -.te-markdown-tab-section .te-tab button.te-tab-active, -.te-markdown-tab-section .te-tab button:hover.te-tab-active { - background-color: #fff; - color: #333; - border-bottom: 1px solid #fff; - z-index: 2; -} - -.te-markdown-tab-section .te-tab button:hover { - background-color: #fff; - color: #333; -} - -.tui-popup-modal-background { - background-color: rgba(202, 202, 202, 0.6); - position: fixed; - margin: 0px; - left: 0px; - top: 0px; - width: 100%; - height: 100%; - z-index: 9999; -} - -.tui-popup-wrapper.fit-window, -.tui-popup-modal-background.fit-window .tui-popup-wrapper { - width: 100%; - height: 100%; -} - -.tui-popup-wrapper { - width: 500px; - margin-right: auto; - border: 1px solid #cacaca; - background: white; - z-index: 9999; -} - -.tui-popup-modal-background .tui-popup-wrapper { - position: absolute; - margin: auto; - top: 0px; - right: 0px; - bottom: 0px; - left: 0px; -} - -.tui-popup-header { - padding: 10px; - height: auto; - line-height: normal; - position: relative; - border-bottom: 1px solid #cacaca; -} - -.tui-popup-header .tui-popup-header-buttons { - float: right; -} - -.tui-popup-header .tui-popup-header-buttons button { - padding: 0px; - background-color: transparent; - background-size: cover; - float: left; -} - -.tui-popup-header .tui-popup-close-button { - margin: 3px; - width: 13px; - height: 13px; - background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMHB4IiBoZWlnaHQ9IjEwcHgiIHZpZXdCb3g9IjAgMCAxMCAxMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5GMjc2Qzc4MC0zM0JBLTQ3MTItQTM3OC04RkQwQUNDOTFDRTk8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImxuYi1mb2xkZXItZGVsIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGZpbGw9IiM3Nzc3NzciPiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDMuNTg1Nzg2NDQgTDEuNzA3MTA2NzgsMC4yOTI4OTMyMTkgTDAuMjkyODkzMjE5LDEuNzA3MTA2NzggTDMuNTg1Nzg2NDQsNSBMMC4yOTI4OTMyMTksOC4yOTI4OTMyMiBMMS43MDcxMDY3OCw5LjcwNzEwNjc4IEw1LDYuNDE0MjEzNTYgTDguMjkyODkzMjIsOS43MDcxMDY3OCBMOS43MDcxMDY3OCw4LjI5Mjg5MzIyIEw2LjQxNDIxMzU2LDUgTDkuNzA3MTA2NzgsMS43MDcxMDY3OCBMOC4yOTI4OTMyMiwwLjI5Mjg5MzIxOSBMNSwzLjU4NTc4NjQ0IFoiIGlkPSJDb21iaW5lZC1TaGFwZSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+); -} - -.tui-popup-header .tui-popup-title { - font-size: 13px; - font-weight: bold; - color: #333; - vertical-align: bottom; -} - -.tui-popup-body { - padding: 15px; - font-size: 12px; -} - -.tui-editor-popup { - position: absolute; - top: 30px; - left: 50%; - margin-left: -250px; -} - -.tui-editor-popup.tui-popup-modal-background { - position: fixed; - top: 0px; - left: 0px; - margin: 0px; -} - -.tui-editor-popup .tui-popup-body label { - font-weight: bold; - color: #666; - display: block; - margin: 10px 0 5px; -} - -.tui-editor-popup .tui-popup-body .te-button-section { - margin-top: 15px; -} - -.tui-editor-popup .tui-popup-body input[type='text'], -.tui-editor-popup .tui-popup-body input[type='file'] { - padding: 4px 10px; - border: 1px solid #bfbfbf; - box-sizing: border-box; - width: 100%; -} - -.tui-editor-popup .tui-popup-body input[type='text'].disabled { - border-color: #e5e5e5; - background-color: #eee; - color: #e5e5e5; -} - -.tui-editor-popup .tui-popup-body input.wrong { - border-color: #ff0000; -} - -.te-popup-add-link .tui-popup-wrapper { - height: 219px; -} - -.te-popup-add-image .tui-popup-wrapper { - height: 243px; -} - -.te-popup-add-image .te-tab { - display: block; - background: none; - border-bottom: 1px solid #ebebeb; - margin-bottom: 8px; -} - -.te-popup-add-image .te-url-type { - display: none; -} - -.te-popup-add-image .te-file-type { - display: none; -} - -.te-popup-add-image div.te-tab-active, -.te-popup-add-image form.te-tab-active { - display: block; -} - -.te-popup-add-image .te-tab button { - border: 1px solid #ccc; - background: #eee; - min-width: 100px; - margin-left: -1px; - border-bottom: 0px; - border-radius: 3px 3px 0px 0px; -} - -.te-popup-add-image .te-tab button.te-tab-active { - background: #fff; -} - -.te-popup-add-table .te-table-selection { - position: relative; -} - -.te-popup-add-table .te-table-body { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZmspKREMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgAMSwQgckFvTgAAAABJRU5ErkJggg=='); -} - -.te-popup-add-table .te-table-header { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZksLCxMMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgDxKwPzTeWPdAAAAABJRU5ErkJggg=='); -} - -.te-popup-add-table .te-selection-area { - position: absolute; - top: 0; - left: 0; - background: #80d2ff; - opacity: 0.3; - z-index: 999; -} - -.te-popup-add-table .te-description { - margin: 10px 0 0 0; - text-align: center; -} - -.te-popup-table-utils { - width: auto; - min-width: 120px; -} - -.te-popup-table-utils .tui-popup-body { - padding: 0px; -} - -.te-popup-table-utils button { - display: block; - width: 100%; - background-color: #fff; - border: none; - outline: 0; - padding: 0px 10px 0px 10px; - font-size: 12px; - line-height: 28px; - text-align: left; - color: #777; -} - -.te-popup-table-utils button:hover { - background-color: #f4f4f4; -} - -.te-popup-table-utils hr { - margin: 0; - background-color: #cacaca; - border-style: none; - height: 1px; -} - -.te-popup-table-utils .te-context-menu-disabled { - color: #ccc; -} - -.te-popup-table-utils .te-context-menu-disabled:hover { - background-color: #fff; -} - -.te-heading-add { - width: auto; -} - -.te-heading-add .tui-popup-body { - padding: 0; -} - -.te-heading-add h1, -.te-heading-add h2, -.te-heading-add h3, -.te-heading-add h4, -.te-heading-add h5, -.te-heading-add h6, -.te-heading-add ul, -.te-heading-add p { - padding: 0; - margin: 0; -} - -.te-heading-add ul { - list-style: none; -} - -.te-heading-add ul li { - padding: 2px 10px; - cursor: pointer; -} - -.te-heading-add ul li:hover { - background-color: #eee; -} - -.te-heading-add h1 { - font-size: 24px; -} - -.te-heading-add h2 { - font-size: 22px; -} - -.te-heading-add h3 { - font-size: 20px; -} - -.te-heading-add h4 { - font-size: 18px; -} - -.te-heading-add h5 { - font-size: 16px; -} - -.te-heading-add h6 { - font-size: 14px; -} - -.te-dropdown-toolbar { - position: absolute; - width: auto; -} - -.te-dropdown-toolbar .tui-popup-body { - padding: 0px; -} - -.tui-popup-color { - padding: 0; -} - -.tui-popup-color .tui-colorpicker-container, -.tui-popup-color .tui-colorpicker-palette-container { - width: 144px; -} - -.tui-popup-color .tui-colorpicker-container ul { - width: 144px; - margin-bottom: 8px; -} - -.tui-popup-color .tui-colorpicker-container li { - padding: 0 1px 1px 0; -} - -.tui-popup-color .tui-colorpicker-container li .tui-colorpicker-palette-button { - border: 0; - width: 17px; - height: 17px; -} - -.tui-popup-color .tui-popup-body { - padding: 10px; -} - -.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-toggle-slider { - display: none; -} - -.tui-popup-color .te-apply-button, -.tui-popup-color .tui-colorpicker-palette-hex { - float: right; -} - -.tui-popup-color .te-apply-button { - height: 21px; - width: 35px; - background: #fff; - border: 1px solid #efefef; - position: absolute; - bottom: 135px; - right: 10px; - color: black; -} - -.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-hex { - border: 1px solid #e1e1e1; - padding: 3px 14px; - margin-left: -1px; -} - -.tui-popup-color .tui-colorpicker-container div.tui-colorpicker-clearfix { - display: inline-block; -} - -.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-preview { - width: 19px; - height: 19px; -} - -.tui-popup-color .tui-colorpicker-slider-container .tui-colorpicker-slider-right { - width: 22px; -} - -.tui-popup-color .tui-colorpicker-slider-container .tui-colorpicker-huebar-handle { - display: none; -} - -.tui-tooltip { - position: absolute; - background-color: #222; - z-index: 999; - opacity: 0.8; - color: #fff; - padding: 2px 5px; - font-size: 10px; -} - -.tui-tooltip .arrow { - content: ''; - display: inline-block; - width: 10px; - height: 10px; - background-color: #222; - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); - position: absolute; - top: -3px; - left: 6px; - z-index: -1; -} - -.tui-toolbar-icons { - background: url(data:image/png;base64,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); - background-size: 218px 188px; - display: inline-block; -} - -@media only screen and (-webkit-min-device-pixel-ratio: 2), - only screen and (min--moz-device-pixel-ratio: 2), - only screen and (-o-min-device-pixel-ratio: 2/1), - only screen and (min-device-pixel-ratio: 2), - only screen and (min-resolution: 192dpi), - only screen and (min-resolution: 2dppx) { - .tui-toolbar-icons { - background: url(data:image/png;base64,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Xqz8qBcJkED0BGIbcoxe1QtDor4qT80zFpNh01flYWg2e1Fo2C6Me5NnSQLFToAeWpFfITFmxbrCUdCJMeMKxyK/iageCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACQQgkA5QNlTRRYsWZbwEbNu2LTFdnPSAftc6pas06PesihdTmIurXdekOefi6qBfpJyD8rHrk+s4LM+gfHLpY8+P+r6Ngmc6nf7q1q1b6+26RnEcBc/S0tLmLVu2HI5Cn6Ay7Hxz3V9BywfVx17ezjfX/RW0vL29oMclQSuwPAmQAAnkS0A3ZrW1tR9Gh1ebr6w46unGrK6ubiz0GxdHO5QZD4HEDJo8aeBmmWk7jf2SnuspxFYnlkN50pg8efJLNuHdki67LZ2HJEACAQnYjVl/f/+PIeLxYjFqdmPW0dExC/rNpFELeKELWDwxgybn2NfXt1A/V9zg2/XjQsePHz8+StcBN/gZ/ZhxEiCB/Ai4GLMKSCvFXnCj5mTMYHDVNAiNWn6XPfFaZUm2iJt6YSZzfioN8e1Jtp+rLegzUi8Dfdv14yTiixcvbhw7duxdDQ0Nb/ppL2nvdsmSJZfMmzfvQH19fb9P/Qrq3SbNxw8Tvcxg9/6D8pVhRsMzE2OmthJslodJlRE2DMpXhhnFM9OMWVaFsrKyRB/+w573hVo/0YsEg7FQB42nou36caHj8CAtP6qamprEPTQwuq21tfX3GOa4vNA8nNoHo/G7d++eD/2qnPKZRgJuBFyMWQbGbHVTU9NDbvWSSvcwZvs3b958PCk92E7+BBIzaPJkDzVnaKrux0qi17XjgkbXrFkzDAroT43da9eu7SqQUmLMxKjVFah9z2Z7e3sr8TAyb+nSpTWeBZl5wRGQewKjDP/bfuLFYswwslAmhsuuH42ZncjgPE7MoHH+LPANMhw1HpUhyNWrV0u8qDZczxIYthnyoIJOIrH7qKggUBkLATFmuCf+E4k/xsPYCpVZTMZsx44dc86ePXvpypUrxyv9aMwUicEfJjaHxvmz/G4WYwjyOnQQizAf8LJdCpLPT0raMx2Og855OIiwJBlDkCOgx17I7rBk4gDpnu/32csHnfOw1w96HJSfXX7UPO3yg/Kz10+Kp2bMrsQ9m8LvvRG6pzCc2OowZ5b4MKN4ZmLMwCc7VI55sktg1ES/Ppc5s6IYZgx7f9rvh6iPw96fUeuT2JM1589CXToOQYbCx8pxE8CDzbUwYvNVO/i9l4hRKwZjJjrBmI2A8apU+kkoRq2YjZmuK+P+CCRi0Dh/5u9i5CqFDiKQN5ZLXtT55eXlRa1f1OdLeecJ4Msfv4ARq8U92qNSxaghrs9LO3pmGFavV3XiCuGpnsK87z4YNcs96rCacYBnhv5ralx6UW60BBIxaJw/C33RZKjxOnQaj4WWFIMALGnuxDXetX79+hMxiKfIQUIARuMJu1HTVHc1Zqhzr1YutuimTZtanYyaahD3saMxw709RZVhWNwEEplDw1Mb3z/L8z4Au8e83kuLew4nl9roIE7MnTvX9b20pOZwcunpll9ofm56qfRi56f0VCH0fQLzKrIg5HHs8tJ0doNn9En70nzxzJIyZkoPMWrQT16Ytny1qLKy8uCGDRssS/PFMyu0Mct1fxZ6ji3X/Zn0HFsiBg037UJ1Q0mITnC7flzoOG7agr9/5sDgTRizu4rVK8M17K+oqDhAr8zhyl3gSejkmtCRCYWsUYMx+wSM2TodSyGMmWof+p009MsaNcOYHVX5EhaDMdP1YdwfgdiHHDl/5u9C2EpxiNEGhIeDi4AYNWi83MmYyZkk7ZnZ6YlRQ9o+J2MmZQvtmdn15bE/ArF7aLgxFuqqwOvYrh8XOl5s32/MNcRYaF65hhgLrR/bLx4ChlErHoVsmhhGzZbKw8FMIHaDhg6a82cB7hAMMdYFKC7veVlWbeWqix+xzB/kvQX9ukvQMXTo92zeyjlUDMrHQYRnUlieQfl4KuOQGTVPexNx87W3F/Q4br5B9WH5eAnEPuTI+bN4LyClkwAJkAAJnCMQm4fm9uSGIch9yEuFfbINewHdntxaWlquMPSL1FMIqy/rkwAJkAAJeBOI3UPzbp65JEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJFC8BNJRq7Zo0aKMLnPbtm2ebQQtr8vOJ472rtXrQb9n9WN7PGh5e/24j+38crWX63rkqh80384vV/1c1yNXfXt+UD72+rmOw/IMyieXPvb8qHkq+dB7TDqdvgPHtZlMZrak4/gVBE04fgjtnpI0tfm4Ds2ov728vPwLjz/++CFVL98Q7ZWWlZXV9Pf3j8M+TOSUlJR0YT/Z29t7HPr16bJzXQfI6oF+7T09PYdQt1uvG1fc0Om/bfLf5nRNX5xytaXftdVJvaX5j579sL28n+MVK1aM6OzsnKeXrays3LVhw4azeprEd065xtLv2vPnN//Bsx+2l3c7LnHLYDoJkAAJOBFYvHjxDUh/CYbrO9ivQ3ys7BKXNMkzyiDqe5uCuku7u7ufX758+TTftRwKrlq1ahQM0AIYrmkwZsNRpFR2iUua5EkZh6quSahXDmNWjQKXw9BUuBaMMAMG9E67OKc0e5mkjvv6+mrsbTml2cvEeUyDFiddyiaBIUYAnfn7YXh+jtPyMjrTpMySJUv+Zx6nPw6G4+/yqJetAmM4+uzZs7PFALnJkDwpI2Xdynikl8KL9Dp3j6r+s8B5pBh4ew1Jkzx7etLH0EEeEMbZ25U0ybOnJ3VMg5YUabZDAoOcwK233joFHkITTiM7hOd1Oij3Mzytv+BVxiPvfR55rlmrV68uh4c3C51qzuG10tLSthEjRnS4CvPIgFFJwqAsgwrZdsDy97IbKkma5BV6G4frm7UfGMZ9U3ZRyEgbYOiSUrYsqYbYTjgC+LEOb2trW7d169Y6XRLG03P+ePXyccXr6+tLdu3aNX3Lli2v6204jffr+XHHi4WP23kWmo+bXk7pMBb3ozOXYTd9a0Rn9nUM4x1D/v9Ax3sP9n9oamrapheyx+3XBU/15hwQ2phq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Q4EADMZCdR5O82cqr1BhrvmzQunFdqMhEGr8368KGKb7NDyb7xnl/xHDjWu86sKIrUX+J6UMjMZnMPz3917lw+bJC9dYij/NkHMM+h3wkgn9piM/a2j5TpoXKeaRAAmQQHIEEvHQ9OFGPLW5Djeq09bL6HVVftSh/l4ZPlLsOtyo2tXL6HVVPkMSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESGKwE0oNV8aGq92uvvZaJ89wuvfTSUNd8//7918ap34wZM56NUz5lkwAJDF0CJUP31HhmJEACJEACFxIBGrQL6WrzXEmABEhgCBOgQRvCF5enRgIkQAIXEoGyOE520aJFEyD389jfg33Otm3barzaCVreS5afvNWrV5efPXt2Un9//8je3t5K6PecV72g5b1kRZF3+PDh1AMPPGAR9alPfSo1depUS1qhDg4cOOCo3/Tp0wulEtslARK4AAhEbtBqa2v/DIZiI9iN9MMvaHk/Mr3K1NXVjT19+vTMvr4+X95p0PJebUeV9+yzA9dNSFqxGLQ//OEPA05V0mjQBmBhAgmQQIQEIjVoixcvfi+M2VboVyE6ptPpdRUVFV930zdoeTc5ftNXrVo1Cp7ZLOioVvodq66ubnarH7S8m5wo02GIU889N9ChlLRbbrklVVpaGmVzgWX19PSkXnzxxQH1JO1DH/pQqry8fEAeE0iABLwJjFtx2HP188kNU1Wf5i0oZG4uPQaKT+8vSaV/MnbspHteXZvuGpgfbUpkBg3DhtKTPog9a8wQ/rapqemTMGqOFyJo+bCnnclk0suWLZuujFlZWdnZTZs2HXTTL2j5sPr5rb9r164UjHK2uPLIZAhS0iRvwYIFfkXFUk50OHXqVFa28shkCFLSJO8tb3lLLO1GJbS+vn6iyEJ4NCqZUcr5wQ9+kH0iuPPOO3uilEtZJBAPgcyM/lTmMydPNV9XX595X319uj+eds5J9TXs5keBkpKSm2EErtDKPuJmLKRM0PKa3Lyit99++xiZL9MqH/fSL2h5TW6sUX248W1ve1tKdrXpeSot6VAfbrzmmmtSsqtNz1NpxRSKMevo6HhKdmXYikk/MWZ79+6dI7sybMWk3xe/+MW/uOeee2T+3HOTMlLWs1AMmdKuzIfnEi1l/JxHLjlR5osHVlGanmmVmd4v6Ul5Z9a2Ax5lUu/5x9eOfDxgrcDFIzNo8Hw+amt94LiYViBoea1qXtHOzs6xekV4aB36sT0etLy9fhzH7e3tqd27d2dFQ//U1Vdfnd0lLpvkSZlCbcoLk/ZlaFEZNDXMqHtvhdLRrV1lzJAvLu4CMWrF1KkpY4aHsErZxaj56ZzdzjfqdMNArcPv+mkvbpInZdD+uiSNmrSLB+7pmGLw5CZMpYyU9TqPqPn5kQeXfKFeLp1ObdePiz2eSWWWxa1jZAYNP7LrdWUxd/aKfmyPBy1vrx/0GO2N0OvAYHXqx/Z40PL2+nEcyzyZzKHJJkOLVVVV2V0NM7rNr8Whi5NMmSeTOTTZZGhx+PDh2V0NM7rNrznJSjJNOi4xYGhTjNkOY1+Qq3NOSkfpZMWA4Z6sREfbKbvEc3XOSekn7WDE5UfQ6SVEXblpxmyBlJU6Sel44sSJtlzclDFTnKVOUvr5aqffatBSJcVj0MRLLB1VNipdVvIO8Pul4/mks78vx6yoEiMzaFDI4g5v3LjxTA4lg5bPIc47G53TML3E1q1bPcdyg5bXZccV14cUr7vuOrMZPa6XMQskFHnmmWfMlvShRj2ulzELFzCid7JQYwceEm6UXeLYXTvnpFS2d7KzZs3aI3uuzjkp/VQ73/zmN4+hI3PlpnMWYyZlpY6qH3fY0NDQ09ra6srNzlnKSp249QoiP5OxGjSMnW4PUj/ussfWTWw/8ejkZzIVFbc6tpVJDXdMjzAxHZUsLPJwXPyh5ONdL0tbQcsrOfmGaM/zG4TQz7IWPmj5fPWy13P7lqPTu2f2uurY6520uL7l6PTumdLHHop+asGIPS/JbznqnSz02AGP4QbVyXrl2XWO69irk/XKi0sfP3KduEk9Y5gx6wHrnP3IjLKMEzeRL94ujGzWAy5GYza5rvmS7r7MvvMsZP5syiXnj5OJua1y1Ofxxt1xYlqqq+ugg0bPo9xVDumRJUXpoUWmFAUNJBDE8wpSdmBL+aUEWfARpGx+2uSu5dTxKmMmtSUuHS+iBfHUnDpe3WPI5XHkJhBPCSduypiJZ1ZIYyZn7MSt2I2Z6D0Y5s8m3HV05PjbW65Pd3dvFJ3tG5bvb7CnRX0c2bL9qBWjvPME7HNjX/rSl1Jjx1rWuKTa2tpS9913X7ZS0u+k2efGRL+aGuvHYY4fP27qVwzvpGHIbhFgeXoM0jnD8N2gOmSjzrrzVya+2OjRo6tzeQzSOcPw7VEdstSBRgV/3cDOzaC0I+lhRrerY+cm5WQItxg9M/Mcinj+THQUz63vTGe0+sUAAB9XSURBVK+prj2STpdsvOHDk/5+W8wmjR6anXwRHsvqQPXu2WWXXTbAmInKYuAkTzb1Tlr2IIE/+urFefPmDTBmooIYOMmTTV8NmU0owB8Y/3XoYD+Ry2OQzlnm1KSs1ElK1e985ztH8ZrJwVydrHTOMqcmZaVOUvrlasfmqVmGc3PVTSJf99SK3pgBSLHPn+W8Zpn+y5/+P0dWgbVl6ilnvYAF6KEFBFaI4voQor4AxK6L5L366qvZZKmjVj/ay0V9rA8h6gtA7O1Inhg/2aSOWv1oL5fUsV8DhSX9YigSM2bq/P0aKOMl66IxZkp/MWpgd2NXV1dG4iq9WEIxangdYo/8ViReLHrZ9TDmz2acT0/vb2mc8vr54+KPYYHFNZlUf0PNbS0fWFifWbq9Pu3uzoU4HRq0EPCSqKq/eybL9L2MlFrKjyXo5jtpI0f6+qRm3qeie1uyTN/LSKml/G+++WbWsEndMWPG5N02KxY/AeNhoGgVHQxfXBkM82d+LzA8tI+9tPfIL1D+Ib91gpTjkGMQWgUoq797dtVVV6XUS9ROqkielJHNPu/mVD6KNP3dM/HA1EvUTrLVy9aSZ593cyrPNBIgARAo8vkzuUYn1k8p8fUuGsriBes/lzpxbDRocVCNUKbf4UbVpD4kqddV+VGH+ntlXsONql29jF5X5TMkARKwEhgM82eYY86+tpXzXTScGry02dYzjO4o1gm66NS8cCS5vYcWFYG43kOLSr8k30OLSmfKIYG4CBTL+2fq/Py8hyZlp95+4uLO3q4Dqp4eplPp9hMbpozS06KKcw4tKpKUQwIkQAIRExhM82eygnH8p06OSp3pubyzr/tbbiiwzlF7QdytVH7pNGj5cWMtEiABEoifwCCYPxMI4rmNX+n6ryUtnNKZ9E8tCREecA4tQpgURQIkQAJREhgM82fBzje9r2xS6twXIIJV9FWac2i+MLEQCZAACSRHwG2uSmmgfztRpSUR5tLLU4d06kRZaemfHn100m89y4XIpIcWAh6rkgAJkAAJ5CCQTh3EQpDG0pKyK+I0Zjm0YDYJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJFCkB/j+0Ir0wVIsESODCI7Bo0aJMkLPetm1bQfpw6HltQD2fDVI+37L8f2j5kmM9EiABEiCBoiJQEOteVASoDAmQAAkkTCCoJxZUvag8t6CeWB56Ruq50UMLegVYngRIgARIoCgJlBWlVlSKBEhg0BPA031FOp3+WiaTWSkng/h6xP8a3kN3IU+uvr6+5JVXXpna398/TvQoKSk5OXv27MNI7y+kXmw7PAF6aOEZUgIJXLAEamtr74LhmuAEwDBmX0TeFNlhzL4oaU5lRYbIcsrLJ23FihUTV69eXe5UV4xZd3f3pN7e3nLZJS5pTmVFhshyymNa8RGI3EMbt+KwZZXOyQ1TPefpgpaPA+H4lUduyqT674Ds+elMZjaeJc9k0qldJanMT0dXVj68t2HcqTja9ZI5a/XJMac7uu4AzNpMWnSCVpn0K4DZNLpq2EN2newc7bLTqXQz5GxPVQz7wsmHxh+y5+d7jI7Icr3zleNWL6q5ADf5QdNxvoFWdwWVj/ONdE4haPtByosBgpfzIOqIUbsBuh/T6yvPzCHtS3qaGDMcPw1ZCyAz1dTUtE7PDxoXA9TZ2XkxjNUEGKQ9DQ0NPboM5Zk5pFl+F2LMzpw5MwdyKiEztWHDhqN6nSjj6j4P+nvKt16+uqv7M+jvIN96QfW8oD20mlXHRo1b2fwvmUzfk6lMphb7leidqzKpzETE39ufSX23rbPztfErDq8ICjZM+ZqVzTec6uh8qT+V+Q50uS6VSY2VXeKSJnlSJkgbqDsFMpamurueH3fHiWlB6rIsCTgRgGHYhvQd2Bdgf9owTE5FXdOUMTNk7DBkupb3k1FVVdVaVlbWKYZIDJIYJj/19DK6MRNZIlPPZ7w4CUTuoRXnaTprlenteQyd/C0qN51O/RHx1+ELjUb4djxhjkL+eBi59RNvO7L36GOTfqPKxhWOqzvy/kx/3/9Bm8Pc2kAeDFLm5+Nva/nQiccm/6dbOcf0TGocjNrfIW+ZYz4TScAnATx1H4NBkgerp7Ero2Z6asacmQw5mpukqQO7MUO6WVeVyScUjwwGaY/yrgyjZnpqMmcGuZN02UZaNsluzEaNGmXW1evEEVceVxyyo5SpPK4oZUYh64L10OCZfSyTSX1EIGI47nRZWem7T6yfeg32/+fE+ik3TZ41uSZdUvJlGLkuFGlIwpjVrD42JdXX1wS9XI2ZuuiZTPpn5SWZF9RxkBDn+74g5VmWBNwIiFFDnhi1AZ6aLACBAfsW8ppll7ikIZ6Ky5iJbNnEqIkhcvLUZAFIRUXFEeT1yC5xSZN6hTRm0j63cAQuWA8Nc1E3w9MxtsyDRx+d9Ft1JOGO+rSsxPrmhLqjP5peMeF1eaSLe+vv6L0fbVTr7cD4NJaWlHy9d3TZsZLT3f+jP5O5J5VJ/8PJDVNkuMd1s89d6nNs6FQcJ8BdhXlkDJYnSo9TCJRVrE+mgU4i4sJi1Dw8NZkvc5wzQ7p4dWIII/HMIMeyuXlqWM0oc2oyX+Y6ZyaGMEnPzKI4D/ImcMF6aDBmI01q6ZJ2M26LHGuc+MqzDWnLpLKtSCSHUz5+eAYELbIIK0l/98SGKbfDO3zt5Nrxp48/NuVfTq6f+p5cxswiY4gfoCP9C+Np39eZSlmp46twERYS/cWL8KualJU6fsvnW87LU9NlGro8jbRYjZlq08tTU2UkpGem0xi88QvWoOGSvWRetkzm9otWnh5vHhcg0t2TXoJ5sVKz6XTqwMxhk+8xjyOMYOgnO7wSociCiDIM0zqcz1N+Om2tM11n1C2I3vk2aug/3e9CB9VJo73pfvjkq5eql8uoafwTMWZKr1xGTXGSRST0zBS1wRlesEOOFenUT7pT6a9gNWM5VgBe1plqf37cbS33jk5Pevz1xnRn0pcT82YLrW2W3B+fZ4jl+0Nj+xGM2V0YQr0CpyOr7FyHrvTOFHVeQp0fDTYE1dXVbTBmE7XVe3uks3Y6D4dOus2pXL5p4On20rTj8KPRzgDPzEOODPkH3jxemnZcKCINqMUjujHzkMOXrwNfleQqRG/Q0ulTMBJj8joFqZvQ1vLYlB3jV7b8NYzZN6VJGJSLUpn+h06nmu/DMv0fDisb9v3Dj44/mJA68pLZ5VhRaW7p0tR/mQd5RPQ5M0v1dOpEKlXxBUtaiAN0SJrWwQXhqR7TmfltxtzNjeKheRk1B2N2o+FNBG4YskK9h4Z2837PTIwXDJXr6j11Mg7GzNXwqTpBQzCXL4CYKxgljjQR8yXjushCEWXAfmXIn4fQMmfmJceoEyhQL01rleSlaTk85MRPMpw8My85UodbcRKIY8hxv36qE+46en6uSs9A3CHPUtdWPPLDE+sn35dKl3wc3+TRDWkNeuh7Onu798HgbcBy/Usjb9hBILqCGj25qqQq+yvU08LE5cVqLOfcjBerrzqxvuaNMLKKqa50nuhMb4RO0lHKUJblfagojVkxnLd0ym6r90S/JIyZtAPm2c9ZSVxteprxwCBGbRd2MWSyS9ziRet1kJfdnNJUXq7Q46XpbFU7PydjJgVzycmlB/MLQyByDy2dSe2HQbhSnU6mPS0r6vaoYz008swkqWseRBRx9VSU/IzbCEKmFD+sW3szqVshQ5UeENpXEw4owITYCTh4BNnhR6Nh5SXswPXM2zOL/SQCNODkaYjnJiKchs8CiGZREhjUBKL30NKZFy1EMn3vsxzrB/Y8e1297BCP4yHguH6KHf0ds/XjsPGh/qUQzSMwPTUwyxozDGvJAiCLZxCWZ6Hr2z0NMWRJGjMwXW9noKdpnrHyzJSnZvGg9TpKnlOayssV6i9Iq7J6mt2DlXkzbU7SXD2q13GSo9IYFheByD20kpKyxr6+Poytn1uxh47005Pubtl05DuTz+qnjrQRvUcynz6flu4rKS999PxxNLF8PahxK5oX4Rx+AC2y74VhSPDJExumfiAarRykZNIvo73pKifTl3oH4s+o46Ch/bxNTzXiL4XAkABNcWwOnpooFqlnhjbyngOLmpLdUxP5+sKGqNvT5cHblZemzaFHMUKSJmU0Y2auZjTqZh8wEDcX8HjJMeoECuQFaZkzU0OGYpi8XpoW4epBQELxdIWrl5xACrFwogRi6YzwncGv4QXgr2hn8nxpOn1PqqRUPi2FAeq+q/sy2cUYb1VlStLpvzm+fkr2B6HSCh2Ou+3wR1P9qXOr4TDPdnL9lLFx6TR+ZfMX8eO+z5Qvy/Yrp1zmd6WjabAMAa4GDfnofA7jaygXmW0NsYjWocqZDSnPzOlSKa9D8gr9MrDG3jRmhvfsaOhUntN5RZmmGDnNmXnlRamDLgucMChzfgOHUH1x1PKUZpBrWQQV9oEuanlKTxVGP+QIyccem3wvDNRX0XX2Gg29FQbsX/v6epuzO+JIN4xZulfKSh2lVLGEI4cPf8rUBSs3HRaxmNlhIxXlmS3g1WfKyaSm7+tqya7ANNMiisBwyrzmkN2kk6ysrJSFIkPemMlFVMOPxWzMRE/DeN2AqDksjA5uguTFueUyWIqf2/BjnLpRdrQEYjFo8AAy8LbqK0pTs9Opkq9D5f8rq+wwQtGZ3bMr7tK/kjwpI2WlTrSn5i2t5rbD18oqxqmrM8PdSnae7ZLx/3NbOtV2bN1E1y+KqGL5hs0PT92Putss9fsznxu/ovlRWWk5bs2J0RNWNN8ybuXhX58bDrWU5IGNgPyrD6MDteUMzUPplGUv1NkZhkkNKYrBcnyYSNqo5TJmiheNmiIxuMPI59B0HC2NU17HsT70qGcXLC7/PiXT3f2zTKZ/amdHy7smrGz58sRZk54wvt+Y1atm5bE5vaneH5pKZlJbzXhMkZKqss/2d/T8CcSb33PEHGRdb39fXaqtL5V137JmP/NuGLVtFWWpT7Q8OuWYkzr2IUi9jAw56sdh4ujIYn0QQQcYaigmzLk51bUPmTiVCZOG8y2aOTq/5+FmzJAe6OXrqB9A3IyZx0vTvt7z88uF5ZInEIuHlvxpBGuxrLv3YhiKYedqZWb1Zfq3NO9tPoJ5rKfGrzz8E4S/70/17sSMt8wDyNf4X02NHfb5YK0EL328YUJzqrS0Fl6sfOHfc4ND+6c9/Wnz9QjPwgMyh8yXQgacGROSJeBmzEQLPDipl6+n4NDyH6vj9tTcjJnopV6axnzagP9YTU9NCA3eLTIPzcsjyAePfVFDPjLc6hxdP+l3k1YdeXtPb/8DMFofypY79w80ZXwf23mnA8YMKw0zt8vHgc/lxfv3ZOOkJ7Go5ma0uR5aOP4jTrgsh6DXyuOPTX46sDYRfykkcPusMGQIeBkzOUnM1a60n6yR9iVJF6MGGfKbk/tYHh7N1Y+I5715GTMRqlZA6g0YaYckTYwaZOT8IoteP2wcHM53OmGFxVgfeloWicTYVF6iL0gPTUgdeWTSXqxa/HC6rOQdKXzVHm7Yc9hPwFCcPRdPN2HJ77Lj6ye/E8v1d+ZFN89KmFN8ekxV5RUlqfTd0Of30KdNdomXlKQ/L3lSJoh41B2SXwoJwoBloyWA38ciSBRD5DpnlqtFu6dmyMxVzTO/o6Oj2mk1o2clW6bdUxOZtiI8LEICRTU/UYR8qBIJkIAHgdra2rvg3cAuZf/Rp6Xk4sWL74NHZn7vUTIxDPmtrVu3Zj00vfCKFSsmdnd3f6ypqWmdnp5vXORVVVW1imGyy1i+fPk0tDVJT5d/8vn4449nPTQ9Xbw9MWayyEhPDxuP2yPD9Yikb4/bI4Oekc4ZRzbkGPYCsz4JkMDgI+BlgGDMXF++tp+pYTAiMWYi28sABXlp2jCIkRoz+7nzmARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQKQSCSLzIXQnG2SQIkQAJDkQC+cD8d5yX/p/FP8N8JLsFHnichHI/jU4jLh5L3Yv8P7P+Gr9XvRliQDXpWoOExxl6Bf/1Tjngp9j7E8R98ervKysrODBs27FRjY2Mn0mPfaNBiR8wGSIAESCA3ARiI96DU32BfmLu0WWI7Yn8Dw/aUmRJzBHqORBMXYZfQ79aOf9HTjH/RE+s/SqZB83s5WI4ESIAEYiAAAzEBYh/B/uEQ4p8YMWLEKnhCbSFkeFaV/w3X2to6A4XEK8trg+fWNn/+/P319fW9eQnIUYkGLQcgZpMACZBAXARgzN4O2T/GPs3WRgbHz2Go8dcIWxCewHDjSGP48XqE1yN9mK3OfhzfAm/tZVt66EP8w9QRGEK8FLsMK9q3DiS0Y2ixp6urqxfDjLBbJeX4J6ojEI7AP4C125lulH8Vekq9SDd7Q5EKpzASIAESIAFnAkuWLLm+r6/vaeRWaSXOIP4AjMODGzdubNbSLVH81+3RPT09H0fi3TBuU7XMNxB/F4zFAS0tVFSMGYzTXN0wlZaW9kP3o9XV1Ued/iu4ahAGuxQGrgbHk3RjiLQeHO+CnmLcItto0CJDSUEkQAIk4I8AjNklMAjPoPRErcbP0dGv3Lx583EtzTNaV1c39uzZs/+EQrVawRcWLFhwbRTDemvWrBl29OjReTBmZUp+eXn56Tlz5uwLIh9ly/bs2TMdRrhayUHYsXXr1p3wPsUbjWSjQYsEI4WQAAmQgH8Cixcv/jU8q3erGujUv9fU1PQ5p84d5ZDs3ulLfm1t7cMIb1fyEH4O3s/92nFe0aVLl86DJzVCVYZndhQG95CTPn70hLwZMOSyYjO7wYAfgrwj6jhsSIMWliDrkwAJkEAAAjA+i+DxbNWqNMFTWaobCRi8G2Ag1qCMrHysQV4bjn8Dg/LdLVu2bMdQ3npJFxnI+zbyfoXwWYRvNdJOY9hy6oYNG87KcT7bsmXLquFRzVJ14Zm1YpXiPl3PVatWjYKHKF7mSMOL60O8fdSoUUceeeSRM9BzJuplvbvKysqWhx9+uB3nNh9lssOsxtDlCzC+Ui/0VhJaAgWQAAmQAAn4JoCO/2+1wkfR+f+5MhIwAOPQ4T8CwyTL8D+CXVZApnEsQ3UfhnfzFMp8FvFbsd9s7CkxCCjzlzjOboiPxrzX/1LH+YRoS5bmZzcs7uiFcduv9JQhRBk2PXPmzBycz1jDmElZeQ9tjKTDG5uE+DjUk/m+0ZIp9XG+ByUuG9oQG5T3qsmsEO0PDZoGg1ESIAESiJMAjMDbIP8y1QYMxVfFk5FjWRaPDv/fYIz0oUNVVIUyqvZd7OboGobt9ksmjNovEchL19kNcj6m4kFDWQgCI2WuopR3yJQXBbnpnTt3ztaHDp3kY6jSsnITrxVkF4AY52suBgEDfV7NSZTvNBo036hYkARIgATCEYCREK9Lbd3o5DeoA7zj9TUYi+vUsRG+irAJ+39jH7B4Agawf+TIkabHgzK/wJ7dIGueigcNOzs7x6o6MDgZHJ9Qx/Agp+I8hqtjCVGmS4YkEb6pp+vxBx54wDRiSD+l8lCnUsXDhubKlbCCWJ8ESIAESCAnAZkTU9tTyjuTxRfweL4AI6TyZHjubiwUuV+G6SQRQ40fRLAFuzlEh/LN+rJ5lD2oyTCHDKV+wM38Cgjmuc5Aj+wcF1ZVVmLObLIuSxZ2bNq06aimp+g3E7sMP2Y3lOlR+ZJgvLOWzdOX82cTQvyhhxYCHquSAAmQQBACMDZTVHl08DtUHMbsY8gz+2PkPYqFIt/VjQCG/P4N3szdqo4RZocbtTT9m4nZhRdanu8o2jFfoIYO5gvQMD6W4UEYuxOyStGm5ykxcrbGdO9M5s76VT7aMs9bpeUbRiYoXwVYjwRIgAQuIAKmQcM5my9Ow5jN1xng+DH9WMUx1Pc44r3qGIbEbtCmqzyErVo8UBRyTYOGNntUZXwJxDI8OHz4cHMoUpWRcO7cuSf1Y8izGDScn3zYWG2RrHAUYTRoCilDEiABEkiWQFo1hw7fMieFdItBUOXgtXWirDlPBcNgMWg4nqfKIrTkaemBovDKTD3t3hRWM5rGVRd67733ZmRJvkrDKscuFZcQckzDiLglTy8XNE6DFpQYy5MACZBA/gRatKr6XJR8ssrcYLTeax5oEcy1XQWjlV0CL8koZxotzLGJvJu04v+lxQNF0YbplWGFo7nWQvfWRCDeLRvlJPjOO++swrCibl9MD01Wc6pl/FIXbeX9rpy9bb1Bex6PSYAESIAEIiQAA3RYiUNHfpkW/3cVN8J6GCh9+FCW9Q+HkXhQLwcZR9QxZH8GcdP4wEP6Z5UXNNQNF95nM70prMq0/PsX5E2BnvrwYQrvqJXAc7PojhWQpieHRSXyfpq5Ydgysv8QYLqSpnRGSIAESIAEYiGAzv/rEPxXhvA38XHfCVil+KZ4LW1tbX+AgbpCa7gNRurb2P8bBuZSpP8l9rlavnhoH8Qw5C/w9ZElKLMJeapP34FFJLosvVrOOPSUFZJZD1KGDufNm/c8DFU/9EvjCyKXYxjSNHIo14dVi0eQdxYGbhiGECdBF/MdNqMx+br+Kcgdh+OZRloKi0c6sajEXByj0vMN6aHlS471SIAESCA4gZ9pVYafOnUq+16aLL2HQVgGA6WvUhyLtG/AOPwCddZhtxgzQ87fwkj8u82YyTL/Txj5eQUYSjS9Jhk63Lt3b3Z1I/TLwJjthdE6/34BludjschUGLPZaGy6gzGTObOpMLpzkG8aM1GsqqrqgIRRbTRoUZGkHBIgARLIQQDe1O9RZK8qhs7/GzBI2eX18GBehMG4C7s5f6XK2UJz+A4G7xrkvR+78syk6N2Q9UuJ5LutX79eFp6Y814dHR1TZShR5EF2BwzUAZtR82wK5zkcu2W+TZb2q/fwPCsHyKRBCwCLRUmABEggDAHxcFD/K5qMGUj7tjrGC8yPwlBcj7SXVJoKkdaP/XvIvxKhORen8hEeQ95SGJz7tbS8opAveuoLVSp27NgxTQnDMOHxMWPG7JIhQ5WmhximPIrjl5E/wDhDRzHI+6L8yr5qW7fqKo0hCZAACZBATATgVaXx+ag/QPxVWhP3whB9TR3Da6tAx38zvJp3I03iexD+BwyehPLVEFl08Uns02F85MXm38HA/Ezm4yQ/is3QU96Py3qQIhOGqhlf+zeNqXhtr7/+unx8eCSGJtNY/NGFMqcbGxuzhk7OA9tEyKrAufSgzFn8r7Y2mY+LQke7DBo0OxEekwAJkEDMBLCwYjbmop5BR69/eeNHMAir8RmpwC9Ew3B8ECr/GkaxPUrVjU9dzYNM8zNWMK5t8+fP3w+jZA59+m0TespnsdqhZ2QvU+ttm0rqiYyTAAmQAAnER+DFF188CU/lWXhWS9GK6ocvhxdzB9JHX3nllbteeuml7Ff43bQQD2r37t0LYVxkwUg9ZHVgWPBXbuXzSX/uued6r7766jfR1jhpT2QgrDx27NgE6FmKvevll1/2NE5S7+DBg6Og5wyc3xSsiOx/4YUXIjW86tzooSkSDEmABEggYQIYenwvOvxtaHaiQ9MvI+3XMFSHUOY4PCMZpqtCXIzLfKRfj/BirV4b3hObieE+c4Wilhcqavwjz1kwSOZ7bkqgzKNBl3bo143VjlmvDWkl0K0UexXSR8AbLVflEfbBEL6Uj4enyXCM0qA5YmEiCZAACSRDAP8j7WIYCvmnnjeFbHEf5q8+ijmuP4aU41hd5sNgnC6BrpbVio6FvRO78f7da1HO96nmaNAUCYYkQAIkUEAC8NZugFGThSHvCaIGvKPnUe8HMBIPyftsQermU1a8NXwJZCrqmv9ixqcc+Wr/Mby6cBw66++x+ayeuxgNWm5GLEECJEACiRFYvnz5NAzRfRBG6gPYZ6JhGY6cYChwCsbgOOIvYn8WHtm/RfmlDaMNX4F4bBhaHA19RmP14jAZjoQHp4YW+xDvRV4HzuEszuc0FoKY/4bGVwMsRAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKDgMD/D2WyCk5hENCOAAAAAElFTkSuQmCC); - background-size: 218px 188px; - display: inline-block; - } -} - -.tui-toolbar-icons.tui-heading { - background-position: -172px -48px; -} - -.tui-toolbar-icons.tui-heading:disabled { - background-position: -193px -48px; -} - -.tui-toolbar-icons.tui-bold { - background-position: -4px -4px; -} - -.tui-toolbar-icons.tui-bold:disabled { - background-position: -25px -4px; -} - -.tui-toolbar-icons.tui-italic { - background-position: -4px -48px; -} - -.tui-toolbar-icons.tui-italic:disabled { - background-position: -25px -48px; -} - -.tui-toolbar-icons.tui-color { - background-position: -172px -70px; -} - -.tui-toolbar-icons.tui-color:disabled { - background-position: -193px -70px; -} - -.tui-toolbar-icons.tui-strike { - background-position: -4px -26px; -} - -.tui-toolbar-icons.tui-strike:disabled { - background-position: -25px -26px; -} - -.tui-toolbar-icons.tui-hrline { - background-position: -46px -92px; -} - -.tui-toolbar-icons.tui-hrline:disabled { - background-position: -67px -92px; -} - -.tui-toolbar-icons.tui-quote { - background-position: -4px -114px; -} - -.tui-toolbar-icons.tui-quote:disabled { - background-position: -25px -114px; -} - -.tui-toolbar-icons.tui-ul { - background-position: -46px -4px; -} - -.tui-toolbar-icons.tui-ul:disabled { - background-position: -67px -4px; -} - -.tui-toolbar-icons.tui-ol { - background-position: -46px -26px; -} - -.tui-toolbar-icons.tui-ol:disabled { - background-position: -67px -26px; -} - -.tui-toolbar-icons.tui-task { - background-position: -130px -48px; -} - -.tui-toolbar-icons.tui-task:disabled { - background-position: -151px -48px; -} - -.tui-toolbar-icons.tui-indent { - background-position: -46px -48px; -} - -.tui-toolbar-icons.tui-indent:disabled { - background-position: -67px -48px; -} - -.tui-toolbar-icons.tui-outdent { - background-position: -46px -70px; -} - -.tui-toolbar-icons.tui-outdent:disabled { - background-position: -67px -70px; -} - -.tui-toolbar-icons.tui-table { - background-position: -88px -92px; -} - -.tui-toolbar-icons.tui-table:disabled { - background-position: -109px -92px; -} - -.tui-toolbar-icons.tui-image { - background-position: -130px -4px; -} - -.tui-toolbar-icons.tui-image:disabled { - background-position: -151px -4px; -} - -.tui-toolbar-icons.tui-link { - background-position: -130px -26px; -} - -.tui-toolbar-icons.tui-link:disabled { - background-position: -151px -26px; -} - -.tui-toolbar-icons.tui-code { - background-position: -130px -92px; -} - -.tui-toolbar-icons.tui-code:disabled { - background-position: -151px -92px; -} - -.tui-toolbar-icons.tui-codeblock { - background-position: -130px -70px; -} - -.tui-toolbar-icons.tui-codeblock:disabled { - background-position: -151px -70px; -} - -.tui-toolbar-icons.tui-more { - background-position: -172px -92px; -} - -.tui-toolbar-icons.tui-more:disabled { - background-position: -193px -92px; -} -.tui-colorpicker-svg-slider { - border: 1px solid #ebebeb; -} -.tui-colorpicker-vml-slider { - border: 1px solid #ebebeb; -} -.tui-colorpicker-svg-huebar { - border: 1px solid #ebebeb; -} - -.tui-editor-pseudo-clipboard { - position: fixed; - left: -1000px; - top: -1000px; - width: 100px; - height: 100px; -} - -.te-ww-block-overlay.code-block-header { - text-align: right; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; -} - -.te-ww-block-overlay.code-block-header span { - font-size: 10px; - font-weight: 600; - padding: 0px 10px; - color: #333333; - cursor: default; -} - -.te-ww-block-overlay.code-block-header button { - margin: 8px; - font-size: 10px; - color: #333333; - background-color: #f9f9f9; - border: 1px solid #dddddd; - padding: 4px; - height: auto; -} - -.te-popup-code-block-languages { - position: fixed; - box-sizing: border-box; - width: 130px; -} - -.te-popup-code-block-languages .tui-popup-body { - max-height: 169px; - overflow: auto; - padding: 0px; -} - -.te-popup-code-block-languages button { - width: 100%; - background-color: #fff; - border: none; - outline: 0; - padding: 0px 10px 0px 10px; - font-size: 12px; - line-height: 24px; - text-align: left; - color: #777; -} - -.te-popup-code-block-languages button.active { - background-color: #f4f4f4; -} - -.tui-popup-code-block-editor .tui-popup-wrapper { - width: 70%; - height: 70%; - margin: auto; - display: -ms-flexbox; - display: flex; - -ms-flex-direction: column; - flex-direction: column; -} - -.te-input-language { - position: relative; - margin-left: 15px; - cursor: pointer; -} - -.te-input-language input { - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 10px; - padding: 3px 5px; - border: 1px solid #dddddd; - background-color: #f9f9f9; - box-sizing: border-box; - width: 130px; - outline: none; -} - -.te-input-language input::-ms-clear { - display: none; -} - -.te-input-language::after { - content: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT42Q0NBRDk2QS0yMjYxLTRFNDAtOTk1RC1DRUUyQUREQUQ3NkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLWQtc2lkZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlJlY3RhbmdsZS03IiBwb2ludHM9IjIgNSAxMCA1IDYgMTAiPjwvcG9seWdvbj4gICAgICAgIDwvZz4gICAgPC9nPjwvc3ZnPg==); - position: absolute; - top: 1px; - right: 3px; -} - -.te-input-language.active::after { - content: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5BNEZDRkIzMy0zNjdBLTREMjAtOEEyNC1DQ0I2ODFBMDZDODg8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLXVwLXNpZGUiIGZpbGw9IiM1NTU1NTUiPiAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJSZWN0YW5nbGUtNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi4wMDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgxLCAtMSkgdHJhbnNsYXRlKC02LjAwMDAwMCwgLTYuNTAwMDAwKSAiIHBvaW50cz0iMiA0IDEwIDQgNiA5Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=); -} - -.tui-popup-code-block-editor button { - margin: -1px 3px; -} - -.tui-popup-code-block-editor .tui-popup-header-buttons { - height: 20px; -} - -.tui-popup-code-block-editor .popup-editor-toggle-preview::after { - content: 'Preview off'; - color: #777; - margin-right: 22px; -} - -.tui-popup-code-block-editor .popup-editor-toggle-preview.active::after { - content: 'Preview on'; - color: #4b96e6; -} - -.tui-popup-code-block-editor .popup-editor-toggle-scroll::after { - content: 'Scroll off'; - color: #777; - margin-right: 16px; -} - -.tui-popup-code-block-editor .popup-editor-toggle-scroll.active::after { - content: 'Scroll on'; - color: #4b96e6; -} - -.tui-popup-code-block-editor .popup-editor-toggle-fit { - width: 18px; - height: 18px; - margin-top: 4px; - margin-right: 14px; - background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT40OUQ4RTYyMy1GRTAyLTQ1RUUtQkQ5Ri0xMjUyQjEzRTU1MkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLWV4cGFuZCIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBhdGggZD0iTTMsMyBMOSwzIEw5LDUgTDUsNSBMNSw5IEwzLDkgTDMsMyBaIE0xNSwxNSBMOSwxNSBMOSwxMyBMMTMsMTMgTDEzLDkgTDE1LDkgTDE1LDE1IFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4wMDAwMDAsIDkuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC05LjAwMDAwMCwgLTkuMDAwMDAwKSAiPjwvcGF0aD4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZSIgZmlsbC1ydWxlPSJub256ZXJvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMS41MDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC0xMS41MDAwMDAsIC02LjUwMDAwMCkgIiBwb2ludHM9IjkuMDg1Nzg2NDQgNS41IDEyLjUgOC45MTQyMTM1NiAxMy45MTQyMTM2IDcuNSAxMC41IDQuMDg1Nzg2NDQiPjwvcG9seWdvbj4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZS1Db3B5IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYuNTAwMDAwLCAxMS41MDAwMDApIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTYuNTAwMDAwLCAtMTEuNTAwMDAwKSAiIHBvaW50cz0iNC4wODU3ODY0NCAxMC41IDcuNSAxMy45MTQyMTM2IDguOTE0MjEzNTYgMTIuNSA1LjUgOS4wODU3ODY0NCI+PC9wb2x5Z29uPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+); -} - -.tui-popup-code-block-editor .popup-editor-toggle-fit.active { - background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT4wN0Q1MjlCRi1GNTIzLTREN0EtQTlGNi05NTUzNTU5RDNEMUE8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLXJlZHVjZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzIiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS41MDAwMDAsIDEyLjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtNS41MDAwMDAsIC0xMi41MDAwMDApICIgcG9pbnRzPSIzLjA4NTc4NjQ0IDExLjUgNi41IDE0LjkxNDIxMzYgNy45MTQyMTM1NiAxMy41IDQuNSAxMC4wODU3ODY0Ij48L3BvbHlnb24+ICAgICAgICAgICAgPHBhdGggZD0iTTksOSBMMTUsOSBMMTUsMTEgTDExLDExIEwxMSwxNSBMOSwxNSBMOSw5IFogTTksOSBMMyw5IEwzLDcgTDcsNyBMNywzIEw5LDMgTDksOSBaIiBpZD0iQ29tYmluZWQtU2hhcGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMDAwMDAwLCA5LjAwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtOS4wMDAwMDAsIC05LjAwMDAwMCkgIj48L3BhdGg+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzMiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIuNTAwMDAwLCA1LjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtMTIuNTAwMDAwLCAtNS41MDAwMDApICIgcG9pbnRzPSIxNC45MTQyMTM2IDYuNSAxMS41IDMuMDg1Nzg2NDQgMTAuMDg1Nzg2NCA0LjUgMTMuNSA3LjkxNDIxMzU2Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=); -} - -.tui-popup-code-block-editor .tui-popup-close-button { - margin-top: 6px; -} - -.tui-popup-code-block-editor .tui-popup-body { - z-index: -1; - padding: 0px; - display: -ms-flexbox; - display: flex; - -ms-flex-direction: column; - flex-direction: column; - -ms-flex: 1; - flex: 1; -} - -.tui-popup-code-block-editor .popup-editor-body { - position: relative; - -ms-flex: 1; - flex: 1; - border-bottom: 1px solid #cacaca; -} - -.tui-popup-code-block-editor .te-button-section { - padding: 15px; -} - -.tui-popup-code-block-editor .te-button-section button { - float: left; -} - -.tui-popup-code-block-editor .tui-editor-contents pre { - margin: 0px; - background-color: transparent; -} - -.tui-popup-code-block-editor .CodeMirror { - height: auto; -} - -.tui-popup-code-block-editor .CodeMirror-line { - font-family: Consolas, Courier, 'Lucida Grande', '나눔바른고딕', 'Nanum Barun Gothic', '맑은고딕', - 'Malgun Gothic', sans-serif; - font-size: 13px; - line-height: 160%; - letter-spacing: -0.3px; -} - -.tui-popup-code-block-editor .popup-editor-editor-wrapper { - min-height: 100%; -} - -.tui-split-scroll-wrapper { - position: relative; -} - -.tui-split-scroll { - position: absolute; -} - -.tui-split-scroll, -.tui-split-scroll-wrapper { - width: 100%; - height: 100%; -} - -.tui-split-scroll .tui-split-content-left, -.tui-split-scroll .tui-split-content-right { - position: absolute; - top: 0px; - width: 50%; - box-sizing: border-box; -} - -.tui-split-scroll .tui-split-content-left { - left: 0px; -} - -.tui-split-scroll .tui-split-content-right { - left: 50%; -} - -.tui-split-scroll .tui-splitter { - position: absolute; - left: 50%; - top: 0; - height: 100%; - width: 1px; - border-left: 1px solid #cacaca; -} - -.tui-split-scroll .tui-split-scroll-content { - width: 100%; - height: 100%; - overflow: hidden; - position: relative; -} - -.tui-split-scroll .tui-split-content-left, -.tui-split-scroll .tui-split-content-right { - height: 100%; - overflow-x: hidden; - overflow-y: auto; -} - -.tui-split-scroll button.tui-scrollsync { - top: 10px; - opacity: 0.2; -} - -.tui-split-scroll button.tui-scrollsync::after { - content: 'scroll off'; -} - -.tui-split-scroll.scroll-sync button.tui-scrollsync { - opacity: 0.5; -} - -.tui-split-scroll.scroll-sync .tui-split-content-left, -.tui-split-scroll.scroll-sync .tui-split-content-right { - height: auto; - overflow: initial; -} - -.tui-split-scroll.scroll-sync button.tui-scrollsync::after { - content: 'scroll on'; -} - -.tui-split-scroll.scroll-sync .tui-split-scroll-content { - overflow-y: auto; -} - -.tui-split-scroll.single-content .tui-splitter { - display: none; -} - -.tui-split-scroll.single-content .tui-split-content-left { - width: 100%; -} - -.tui-split-scroll.single-content .tui-split-content-right { - display: none; -} - -.tui-split-scroll.single-content button.tui-scrollsync { - display: none; -} - -@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { - /* IE10+ */ - .tui-split-scroll-wrapper .tui-splitter { - left: calc(50% - 9px); - } -} - -@supports (-ms-accelerator: true) { - /* IE Edge 12+ CSS styles go here */ - .tui-split-scroll-wrapper .tui-splitter { - left: calc(50% - 9px); - } -} - -@media screen and (max-width: 480px) { - .tui-popup-wrapper { - max-width: 300px; - } - - .tui-editor-popup { - margin-left: -150px; - } - - .te-dropdown-toolbar { - max-width: none; - } -} - -.tui-editor-contents .te-preview-highlight { - position: relative; - z-index: 0; -} - -.tui-editor-contents .te-preview-highlight::after { - content: ''; - background-color: rgba(255, 245, 131, 0.5); - border-radius: 4px; - z-index: -1; - position: absolute; - top: -4px; - right: -4px; - left: -4px; - bottom: -4px; -} - -.tui-editor-contents h1.te-preview-highlight::after, -.tui-editor-contents h2.te-preview-highlight::after { - bottom: 0; -} - -.tui-editor-contents td.te-preview-highlight::after, -.tui-editor-contents th.te-preview-highlight::after { - display: none; -} - -.tui-editor-contents th.te-preview-highlight, -.tui-editor-contents td.te-preview-highlight { - background-color: rgba(255, 245, 131, 0.5); -} - -.tui-editor-contents th.te-preview-highlight { - color: #222; -} - -.te-md-container .CodeMirror { - font-family: 'Open Sans', 'Helvetica Neue', 'Helvetica', 'Arial', '나눔바른고딕', - 'Nanum Barun Gothic', '맑은고딕', 'Malgun Gothic', sans-serif; - color: #222; -} - -.tui-md-heading1 { - font-size: 24px; -} - -.tui-md-heading2 { - font-size: 22px; -} - -.tui-md-heading3 { - font-size: 20px; -} - -.tui-md-heading4 { - font-size: 18px; -} - -.tui-md-heading5 { - font-size: 16px; -} - -.tui-md-heading6 { - font-size: 14px; -} - -.tui-md-heading.tui-md-delimiter.setext { - line-height: 15px; -} - -.tui-md-strong, -.tui-md-heading, -.tui-md-list-item.tui-md-list-item-bullet, -.tui-md-list-item.tui-md-meta { - font-weight: bold; -} - -.tui-md-emph { - font-style: italic; -} - -.tui-md-strike { - text-decoration: line-through; -} - -.tui-md-strike.tui-md-delimiter { - text-decoration: none; -} - -.tui-md-delimiter, -.tui-md-thematic-break, -.tui-md-link, -.tui-md-table, -.tui-md-block-quote { - color: #ccc; -} - -.tui-md-code-block.tui-md-meta, -.tui-md-code.tui-md-delimiter { - color: #aaa; -} - -.tui-md-meta, -.tui-md-html, -.tui-md-link.tui-md-link-url.tui-md-marked-text { - color: #999; -} - -.tui-md-block-quote.tui-md-marked-text, -.tui-md-list-item.tui-md-meta { - color: #555; -} - -.tui-md-table.tui-md-marked-text { - color: #222; -} - -.tui-md-link.tui-md-link-desc.tui-md-marked-text, -.tui-md-list-item-odd.tui-md-list-item-bullet { - color: #4b96e6; -} - -.tui-md-list-item-even.tui-md-list-item-bullet { - color: #cb4848; -} - -.tui-md-code.tui-md-marked-text { - color: #c1798b; -} - -.tui-md-code { - background-color: rgba(243, 229, 233, 0.5); - padding: 2px 0; - letter-spacing: -0.3px; -} - -.tui-md-code.tui-md-delimiter.start { - padding-left: 2px; - border-top-left-radius: 2px; - border-bottom-left-radius: 2px; -} - -.tui-md-code.tui-md-delimiter.end { - padding-right: 2px; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; -} - -.tui-md-code-block.CodeMirror-linebackground { - left: 20px; - right: 20px; - background-color: #f5f7f8; -} - -.tui-md-code-block.CodeMirror-linebackground.start { - top: 2px; -} - -.tui-md-code-block.CodeMirror-linebackground.end { - bottom: 2px; -} - -.tui-md-code, -.tui-md-code-block { - font-family: Consolas, Courier, 'Lucida Grande', '나눔바른고딕', 'Nanum Barun Gothic', '맑은고딕', - 'Malgun Gothic', sans-serif; -} - diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor-viewer-old.css b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor-viewer-old.css deleted file mode 100644 index ed8facad3c..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor-viewer-old.css +++ /dev/null @@ -1,280 +0,0 @@ -/*! - * @toast-ui/editor - * @version 2.5.1 | Tue Nov 24 2020 - * @author NHN FE Development Lab - * @license MIT - */ -@charset "utf-8"; -.CodeMirror { - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; -} - -.tui-editor-contents *:not(table) { - line-height: 160%; - box-sizing: content-box; -} - -.tui-editor-contents i, -.tui-editor-contents cite, -.tui-editor-contents em, -.tui-editor-contents var, -.tui-editor-contents address, -.tui-editor-contents dfn { - font-style: italic; -} - -.tui-editor-contents strong { - font-weight: bold; -} - -.tui-editor-contents p { - margin: 10px 0; - color: #555; -} - -.tui-editor-contents > h1:first-of-type, -.tui-editor-contents > div > div:first-of-type h1 { - margin-top: 14px; -} - -.tui-editor-contents h1, -.tui-editor-contents h2, -.tui-editor-contents h3, -.tui-editor-contents h5 { - font-weight: bold; -} - -.tui-editor-contents h1 { - font-size: 1.6rem; - line-height: 28px; - border-bottom: 3px double #999; - margin: 52px 0 15px 0; - padding-bottom: 7px; - color: #000; -} - -.tui-editor-contents h2 { - font-size: 1.3rem; - line-height: 23px; - border-bottom: 1px solid #dbdbdb; - margin: 30px 0 13px 0; - padding-bottom: 7px; - color: #333; -} - -.tui-editor-contents h3, -.tui-editor-contents h4 { - font-size: 1.2rem; - line-height: 18px; - margin: 20px 0 2px; - color: #333; -} - -.tui-editor-contents h5, -.tui-editor-contents h6 { - font-size: 1rem; - line-height: 17px; - margin: 10px 0 -4px; - color: #333; -} - -.tui-editor-contents blockquote { - margin: 15px 0; -} - -.tui-editor-contents blockquote { - border-left: 4px solid #dddddd; - padding: 0 15px; - color: #777777; -} - -.tui-editor-contents blockquote > :first-child { - margin-top: 0; -} - -.tui-editor-contents blockquote > :last-child { - margin-bottom: 0; -} - -.tui-editor-contents pre, -.tui-editor-contents code { - font-family: Consolas, Courier, 'Lucida Grande', '나눔바른고딕', 'Nanum Barun Gothic', '맑은고딕', - 'Malgun Gothic', sans-serif; - border: 0; - border-radius: 0; -} - -.tui-editor-contents pre { - margin: 2px 0 8px; - padding: 18px; - background-color: #f5f7f8; -} - -.tui-editor-contents code { - color: #c1788b; - padding: 4px 4px 2px 0; - letter-spacing: -0.3px; -} - -.tui-editor-contents pre code { - padding: 0; - color: inherit; - white-space: pre-wrap; - background-color: transparent; -} - -.tui-editor-contents pre.addon { - border: 1px solid #e8ebed; - background-color: #fff; -} - -.tui-editor-contents img { - margin: 4px 0 10px; - box-sizing: border-box; - vertical-align: top; - max-width: 100%; -} - -.tui-editor-contents table { - margin: 2px 0 14px; - color: #555; - width: auto; - border-collapse: collapse; - box-sizing: border-box; -} - -.tui-editor-contents table th, -.tui-editor-contents table td { - height: 32px; - padding: 5px 14px 5px 12px; -} - -.tui-editor-contents table td { - border: 1px solid #eaeaea; -} - -.tui-editor-contents table th { - border: 1px solid #72777b; - border-top: 0; - background-color: #7b8184; - font-weight: 300; - color: #fff; - padding-top: 6px; -} - -.tui-editor-contents ul, -.tui-editor-contents menu, -.tui-editor-contents ol, -.tui-editor-contents dir { - display: block; - list-style-type: disc; - padding-left: 17px; - margin: 6px 0 10px; - color: #555; -} - -.tui-editor-contents ol { - list-style-type: decimal; -} - -.tui-editor-contents ul ul, -.tui-editor-contents ul ol, -.tui-editor-contents ol ol, -.tui-editor-contents ol ul { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -.tui-editor-contents ul li, -.tui-editor-contents ol li { - position: relative; -} - -.tui-editor-contents ul p, -ol p { - margin: 0; -} - -.tui-editor-contents ul li.task-list-item:before, -.tui-editor-contents ol li.task-list-item:before, -.tui-editor-contents pre ul li:before { - content: ''; -} - -.tui-editor-contents hr { - border-top: 1px solid #eee; - margin: 16px 0; -} - -.tui-editor-contents a { - text-decoration: underline; - color: #5286bc; -} - -.tui-editor-contents a:hover { - color: #007cff; -} - -.tui-editor-contents a.image-link { - position: relative; -} - -.tui-editor-contents a.image-link::before { - content: ''; - position: absolute; - margin: 0; - width: 20px; - height: 20px; - top: 2px; - right: 2px; - background-repeat: no-repeat; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAFKADAAQAAAABAAAAFAAAAACy3fD9AAAA/0lEQVQ4Ee2UIY6FQAyG/91wAQQJDg8SSwI3QIFAcQHuwFHQoOAEEFAELB6H4wIku+9vQgIP9zLyVbTTTufLtJ3MzzRNf1AoGlmu6ypBzvOMXyWkC+QLvDTjw6VM+Xr2OA6UZYmu67Dvu2zleX6zuq7D933EcQxNuyPu3usYYXVdw/M8mKYpIMMwxEZRJHbbNsmhkySJxE71APJmhGVZhnVdURQFlmU585GmKSzLEp+570Dlz+ZxQ/aGJVNYsm3bCIJA/LZtMY4jmqbBMAwIw1DiV/UAstEUltP3vawdxxFbVZVYDoWwM1eCp+LnoErIUt7DL/Ac1edWng1/WlXyD380myY5A34sAAAAAElFTkSuQmCC'); - cursor: pointer; -} - -.tui-editor-contents { - font-size: 13px; - margin: 0; - padding: 0; -} - -.tui-editor-contents .task-list-item { - border: 0; - list-style: none; - padding-left: 22px; - margin-left: -22px; - min-height: 20px; -} - -.tui-editor-contents .task-list-item:before { - background-repeat: no-repeat; - background-size: 16px 16px; - background-position: center; - content: ''; - height: 18px; - width: 18px; - position: absolute; - left: 0; - top: 1px; - cursor: pointer; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAADdJREFUKBVjvHv37n8GMgALSI+SkhJJWu/du8fARJIOJMWjGpECA505GjjoIYLEB6dVUNojFQAA/1MJUFWet/4AAAAASUVORK5CYII='); -} - -.tui-editor-contents .task-list-item.checked:before { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAMpJREFUKBVjjJ/64D8DGYCJDD1gLbTVyM3OxJDiJMzAxcYIdyALnIWDAdJU7i/OICfCxsDMxMgwc88bwk5F1vTs/W+GFUffwY2H+1FBlI2hLliCQYCbGSyJrqlzwwuGj9//YWoMtRBgUBJnZ6gMEGeQFWaFOw9kE7omkG5GWDyCPF7mJ86gIMbO8P//fwZGRkYGXJpAGuFO/fbrP0PXppcMD179JKgJRSOIA9N8/NZXrM4DqYEBjOgAaYYFOUwRNhruVGyS+MTI1ggAx8NTGcUtFVQAAAAASUVORK5CYII='); -} - -.tui-editor-contents .task-list-item input[type='checkbox'], -.tui-editor-contents .task-list-item .task-list-item-checkbox { - margin-left: -17px; - margin-right: 3.8px; - margin-top: 3px; -} - -.tui-editor-contents-placeholder:before { - content: attr(data-placeholder); - color: grey; - line-height: 160%; - position: absolute; -} - diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor-viewer.css b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor-viewer.css deleted file mode 100644 index 2766d2969d..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor-viewer.css +++ /dev/null @@ -1,377 +0,0 @@ -/*! - * @toast-ui/editor - * @version 2.5.1 | Tue Nov 24 2020 - * @author NHN FE Development Lab - * @license MIT - */ -@charset "utf-8"; -.tui-editor-contents { - margin: 0; - padding: 0; - font-size: 13px; - font-family: 'Open Sans', 'Helvetica Neue', 'Helvetica', 'Arial', '나눔바른고딕', - 'Nanum Barun Gothic', '맑은고딕', 'Malgun Gothic', sans-serif; -} - -.tui-editor-contents *:not(table) { - line-height: 160%; - box-sizing: content-box; -} - -.tui-editor-contents i, -.tui-editor-contents cite, -.tui-editor-contents em, -.tui-editor-contents var, -.tui-editor-contents address, -.tui-editor-contents dfn { - font-style: italic; -} - -.tui-editor-contents strong { - font-weight: bold; -} - -.tui-editor-contents p { - margin: 10px 0; - color: #222; -} - -.tui-editor-contents > h1:first-of-type, -.tui-editor-contents > div > div:first-of-type h1 { - margin-top: 14px; -} - -.tui-editor-contents h1, -.tui-editor-contents h2, -.tui-editor-contents h3, -.tui-editor-contents h4, -.tui-editor-contents h5, -.tui-editor-contents h6 { - font-weight: bold; - color: #222; -} - -.tui-editor-contents h1 { - font-size: 24px; - line-height: 28px; - border-bottom: 3px double #999; - margin: 52px 0 15px 0; - padding-bottom: 7px; -} - -.tui-editor-contents h2 { - font-size: 22px; - line-height: 23px; - border-bottom: 1px solid #dbdbdb; - margin: 20px 0 13px 0; - padding-bottom: 7px; -} - -.tui-editor-contents h3 { - font-size: 20px; - margin: 18px 0 2px; -} - -.tui-editor-contents h4 { - font-size: 18px; - margin: 10px 0 2px; -} - -.tui-editor-contents h3, -.tui-editor-contents h4 { - line-height: 18px; -} - -.tui-editor-contents h5 { - font-size: 16px; -} - -.tui-editor-contents h6 { - font-size: 14px; -} - -.tui-editor-contents h5, -.tui-editor-contents h6 { - line-height: 17px; - margin: 9px 0 -4px; -} - -.tui-editor-contents del { - color: #999; -} - -.tui-editor-contents blockquote { - margin: 14px 0; - border-left: 4px solid #e5e5e5; - padding: 0 16px; - color: #999; -} - -.tui-editor-contents blockquote p, -.tui-editor-contents blockquote ul, -.tui-editor-contents blockquote ol { - color: #999; -} - -.tui-editor-contents blockquote > :first-child { - margin-top: 0; -} - -.tui-editor-contents blockquote > :last-child { - margin-bottom: 0; -} - -.tui-editor-contents pre, -.tui-editor-contents code { - font-family: Consolas, Courier, 'Apple SD 산돌고딕 Neo', -apple-system, 'Lucida Grande', - 'Apple SD Gothic Neo', '맑은 고딕', 'Malgun Gothic', 'Segoe UI', '돋움', dotum, sans-serif; - border: 0; - border-radius: 0; -} - -.tui-editor-contents pre { - margin: 2px 0 8px; - padding: 18px; - background-color: #f5f7f8; -} - -.tui-editor-contents code { - color: #c1798b; - background-color: #f9f2f4; - padding: 2px 3px; - letter-spacing: -0.3px; - border-radius: 2px; -} - -.tui-editor-contents pre code { - padding: 0; - color: inherit; - white-space: pre-wrap; - background-color: transparent; -} - -.tui-editor-contents pre.addon { - border: 1px solid #e8ebed; - background-color: #fff; -} - -.tui-editor-contents img { - margin: 4px 0 10px; - box-sizing: border-box; - vertical-align: top; - max-width: 100%; -} - -.tui-editor-contents table { - border: 1px solid rgba(0, 0, 0, 0.1); - margin: 12px 0 14px; - color: #222; - width: auto; - border-collapse: collapse; - box-sizing: border-box; -} - -.tui-editor-contents table th, -.tui-editor-contents table td { - border: 1px solid rgba(0, 0, 0, 0.1); - padding: 5px 14px 5px 12px; - height: 32px; -} - -.tui-editor-contents table th { - background-color: #555; - font-weight: 300; - color: #fff; - padding-top: 6px; -} - -.tui-editor-contents ul, -.tui-editor-contents menu, -.tui-editor-contents ol, -.tui-editor-contents dir { - display: block; - list-style-type: none; - padding-left: 24px; - margin: 6px 0 10px; - color: #222; -} - -.tui-editor-contents ol { - list-style-type: none; - counter-reset: li; -} - -.tui-editor-contents ol > li { - counter-increment: li; -} - -.tui-editor-contents ul > li::before, -.tui-editor-contents ol > li::before { - display: inline-block; - position: absolute; -} - -.tui-editor-contents ul > li::before { - content: ''; - margin-top: 6px; - margin-left: -17px; - width: 5px; - height: 5px; - border-radius: 50%; - background-color: #ccc; -} - -.tui-editor-contents ol > li::before { - content: '.' counter(li); - margin-left: -28px; - width: 24px; - text-align: right; - direction: rtl; - color: #aaa; -} - -.tui-editor-contents ul ul, -.tui-editor-contents ul ol, -.tui-editor-contents ol ol, -.tui-editor-contents ol ul { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -.tui-editor-contents ul li, -.tui-editor-contents ol li { - position: relative; -} - -.tui-editor-contents ul p, -.tui-editor-contents ol p { - margin: 0; -} - -.tui-editor-contents ul li.task-list-item::before, -.tui-editor-contents ol li.task-list-item::before, -.tui-editor-contents pre ul li::before { - content: ''; -} - -.tui-editor-contents th ol, -.tui-editor-contents th ul { - color: #fff; -} - -.tui-editor-contents hr { - border-top: 1px solid #eee; - margin: 16px 0; -} - -.tui-editor-contents a { - text-decoration: underline; - color: #4b96e6; -} - -.tui-editor-contents a:hover { - color: #1f70de; -} - -.tui-editor-contents a.image-link { - position: relative; -} - -.tui-editor-contents a.image-link::before { - content: ''; - position: absolute; - margin: 0; - width: 20px; - height: 20px; - top: 2px; - right: 2px; - background-repeat: no-repeat; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAFKADAAQAAAABAAAAFAAAAACy3fD9AAAA/0lEQVQ4Ee2UIY6FQAyG/91wAQQJDg8SSwI3QIFAcQHuwFHQoOAEEFAELB6H4wIku+9vQgIP9zLyVbTTTufLtJ3MzzRNf1AoGlmu6ypBzvOMXyWkC+QLvDTjw6VM+Xr2OA6UZYmu67Dvu2zleX6zuq7D933EcQxNuyPu3usYYXVdw/M8mKYpIMMwxEZRJHbbNsmhkySJxE71APJmhGVZhnVdURQFlmU585GmKSzLEp+570Dlz+ZxQ/aGJVNYsm3bCIJA/LZtMY4jmqbBMAwIw1DiV/UAstEUltP3vawdxxFbVZVYDoWwM1eCp+LnoErIUt7DL/Ac1edWng1/WlXyD380myY5A34sAAAAAElFTkSuQmCC'); - cursor: pointer; -} - -.tui-editor-contents .task-list-item { - border: 0; - list-style: none; - padding-left: 24px; - margin-left: -24px; -} - -.tui-editor-contents .task-list-item::before { - background-repeat: no-repeat; - background-size: 18px 18px; - background-position: center; - content: ''; - margin-left: 0; - margin-top: 0; - border-radius: 0; - height: 18px; - width: 18px; - position: absolute; - left: 0; - top: 1px; - cursor: pointer; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEqADAAQAAAABAAAAEgAAAACaqbJVAAAAQklEQVQ4EWM8c+bMfwYqABaQGcbGxhQZdfbsWQYmikxA0jxqEFJg4GCOhhGOgEESHg0jpMDAwRx8YQQuj0DlCaUAAEdBCPJ7TaEPAAAAAElFTkSuQmCC'); -} - -.tui-editor-contents .task-list-item.checked::before { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEqADAAQAAAABAAAAEgAAAACaqbJVAAAA1ElEQVQ4EWP0nvbsPwMVABMVzAAbMWoQIiT5OJgYvLS5EAJQFguGCB4BkCHt/kIM8kKsYFXbrn6DqyY6sJENefjuN8ORuz/ghoAYWA0COR2kEQbQDanc+I7h049/MGkwjVANFQYZkmXHD/YCyABiDAFpxQgjkJO9dbjA4QAKDxAAhQnIO9hcAlYAJDBcBHIySANII8gAYgwBGYZhEEgQZFjVJohhhFwCUg8CjPgyLT8nE8N/YJZGD1iIVlQSI4yQpT9+R40ZZDl0NlavoSsihj/4DAIAR+hZHUj727YAAAAASUVORK5CYII='); -} - -.tui-editor-contents .task-list-item input[type='checkbox'], -.tui-editor-contents .task-list-item .task-list-item-checkbox { - margin-left: -17px; - margin-right: 3.8px; - margin-top: 3px; -} - -.tui-editor-contents-placeholder::before { - content: attr(data-placeholder); - color: grey; - line-height: 160%; - position: absolute; -} - -.te-preview .tui-editor-contents h1 { - min-height: 28px; -} - -.te-preview .tui-editor-contents h2 { - min-height: 23px; -} - -.te-preview .tui-editor-contents blockquote { - min-height: 20px; -} - -.te-preview .tui-editor-contents li { - min-height: 22px; -} - -@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { - /* IE10+11 */ - .te-ww-container .tui-editor-contents li { - vertical-align: middle; - } - - .te-ww-container .tui-editor-contents ul > li::before, - .te-ww-container .tui-editor-contents ol > li::before, - .te-ww-container .tui-editor-contents .task-list-item:before { - position: static; - vertical-align: middle; - } - - .te-ww-container .tui-editor-contents ul > li::before { - margin-top: -3px; - margin-right: 12px; - } - - .te-ww-container .tui-editor-contents ol > li::before { - margin-right: 6px; - } - - .te-ww-container .tui-editor-contents .task-list-item { - padding-left: 2px; - } -} - diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor-viewer.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor-viewer.js deleted file mode 100644 index 7a89d894fa..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor-viewer.js +++ /dev/null @@ -1,6878 +0,0 @@ -/*! - * @toast-ui/editor - * @version 2.5.1 | Tue Nov 24 2020 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["Editor"] = factory(); - else - root["toastui"] = root["toastui"] || {}, root["toastui"]["Editor"] = factory(); -})(window, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 60); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3); -/* harmony import */ var tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8); -/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9); -/* harmony import */ var tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var tui_code_snippet_domUtil_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4); -/* harmony import */ var tui_code_snippet_domUtil_css__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_css__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5); -/* harmony import */ var tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6); -/* harmony import */ var tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var tui_code_snippet_domUtil_hasClass__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(16); -/* harmony import */ var tui_code_snippet_domUtil_hasClass__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_hasClass__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(13); -/* harmony import */ var tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7__); -/** - * @fileoverview DOM Utils - * @author NHN FE Development Lab - */ - - - - - - - - -var FIND_ZWB = /\u200B/g; -var _window = window, - getComputedStyle = _window.getComputedStyle; -/** - * Check if node is text node - * @param {Node} node node to check - * @returns {boolean} result - * @ignore - */ - -var isTextNode = function isTextNode(node) { - return node && node.nodeType === Node.TEXT_NODE; -}; -/** - * Check if node is element node - * @param {Node} node node to check - * @returns {boolean} result - * @ignore - */ - - -var isElemNode = function isElemNode(node) { - return node && node.nodeType === Node.ELEMENT_NODE; -}; -/** - * Check that the node is block node - * @param {Node} node node - * @returns {boolean} - * @ignore - */ - - -var isBlockNode = function isBlockNode(node) { - return /^(ADDRESS|ARTICLE|ASIDE|BLOCKQUOTE|DETAILS|DIALOG|DD|DIV|DL|DT|FIELDSET|FIGCAPTION|FIGURE|FOOTER|FORM|H[\d]|HEADER|HGROUP|HR|LI|MAIN|NAV|OL|P|PRE|SECTION|UL)$/gi.test(this.getNodeName(node)); -}; -/** - * Get node name of node - * @param {Node} node node - * @returns {string} node name - * @ignore - */ - - -var getNodeName = function getNodeName(node) { - if (isElemNode(node)) { - return node.tagName; - } - - return 'TEXT'; -}; -/** - * Get node offset length of node(for Range API) - * @param {Node} node node - * @returns {number} length - * @ignore - */ - - -var getTextLength = function getTextLength(node) { - var len; - - if (isElemNode(node)) { - len = node.textContent.replace(FIND_ZWB, '').length; - } else if (isTextNode(node)) { - len = node.nodeValue.replace(FIND_ZWB, '').length; - } - - return len; -}; -/** - * Get node offset length of node(for Range API) - * @param {Node} node node - * @returns {number} length - * @ignore - */ - - -var getOffsetLength = function getOffsetLength(node) { - var len; - - if (isElemNode(node)) { - len = node.childNodes.length; - } else if (isTextNode(node)) { - len = node.nodeValue.replace(FIND_ZWB, '').length; - } - - return len; -}; -/** - * get node offset between parent's childnodes - * @param {Node} node node - * @returns {number} offset(index) - * @ignore - */ - - -var getNodeOffsetOfParent = function getNodeOffsetOfParent(node) { - var childNodesOfParent = node.parentNode.childNodes; - var i, t, found; - - for (i = 0, t = childNodesOfParent.length; i < t; i += 1) { - if (childNodesOfParent[i] === node) { - found = i; - break; - } - } - - return found; -}; -/** - * get child node by offset - * @param {Node} node node - * @param {number} index offset index - * @returns {Node} foudned node - * @ignore - */ - - -var getChildNodeByOffset = function getChildNodeByOffset(node, index) { - var currentNode; - - if (isTextNode(node)) { - currentNode = node; - } else if (node.childNodes.length && index >= 0) { - currentNode = node.childNodes[index]; - } - - return currentNode; -}; -/** - * find next node from passed node - * @param {strong} direction previous or next - * @param {Node} node node - * @param {string} untilNodeName parent node name to limit - * @returns {Node} founded node - * @ignore - */ - - -var getNodeWithDirectionUntil = function getNodeWithDirectionUntil(direction, node, untilNodeName) { - var directionKey = direction + "Sibling"; - var nodeName, foundedNode; - - while (node && !node[directionKey]) { - nodeName = getNodeName(node.parentNode); - - if (nodeName === untilNodeName || nodeName === 'BODY') { - break; - } - - node = node.parentNode; - } - - if (node[directionKey]) { - foundedNode = node[directionKey]; - } - - return foundedNode; -}; -/** - * get prev node of childnode pointed with index - * @param {Node} node node - * @param {number} index offset index - * @param {string} untilNodeName parent node name to limit - * @returns {Node} founded node - * @ignore - */ - - -var getPrevOffsetNodeUntil = function getPrevOffsetNodeUntil(node, index, untilNodeName) { - var prevNode; - - if (index > 0) { - prevNode = getChildNodeByOffset(node, index - 1); - } else { - prevNode = getNodeWithDirectionUntil('previous', node, untilNodeName); - } - - return prevNode; -}; - -var getParentUntilBy = function getParentUntilBy(node, matchCondition, stopCondition) { - while (node.parentNode && !matchCondition(node.parentNode)) { - node = node.parentNode; - - if (stopCondition && stopCondition(node)) { - break; - } - } - - if (matchCondition(node.parentNode)) { - return node; - } - - return null; -}; -/** - * get parent node until paseed node name - * @param {Node} node node - * @param {string|HTMLNode} untilNode node name or node to limit - * @returns {Node} founded node - * @ignore - */ - - -var getParentUntil = function getParentUntil(node, untilNode) { - var foundedNode; - - if (tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default()(untilNode)) { - foundedNode = getParentUntilBy(node, function (targetNode) { - return untilNode === getNodeName(targetNode); - }); - } else { - foundedNode = getParentUntilBy(node, function (targetNode) { - return untilNode === targetNode; - }); - } - - return foundedNode; -}; -/** - * get node on the given direction under given parent - * @param {strong} direction previous or next - * @param {Node} node node - * @param {string|Node} underNode parent node name to limit - * @returns {Node} founded node - * @ignore - */ - - -var getNodeWithDirectionUnderParent = function getNodeWithDirectionUnderParent(direction, node, underNode) { - var directionKey = direction + "Sibling"; - var foundedNode; - node = getParentUntil(node, underNode); - - if (node && node[directionKey]) { - foundedNode = node[directionKey]; - } - - return foundedNode; -}; -/** - * get top previous top level node under given node - * @param {Node} node node - * @param {Node} underNode underNode - * @returns {Node} founded node - * @ignore - */ - - -var getTopPrevNodeUnder = function getTopPrevNodeUnder(node, underNode) { - return getNodeWithDirectionUnderParent('previous', node, underNode); -}; -/** - * get next top level block node - * @param {Node} node node - * @param {Node} underNode underNode - * @returns {Node} founded node - * @ignore - */ - - -var getTopNextNodeUnder = function getTopNextNodeUnder(node, underNode) { - return getNodeWithDirectionUnderParent('next', node, underNode); -}; -/** - * Get parent element the body element - * @param {Node} node Node for start searching - * @returns {Node} - * @ignore - */ - - -var getTopBlockNode = function getTopBlockNode(node) { - return getParentUntil(node, 'BODY'); -}; -/** - * Get previous text node - * @param {Node} node Node for start searching - * @returns {Node} - * @ignore - */ - - -var getPrevTextNode = function getPrevTextNode(node) { - node = node.previousSibling || node.parentNode; - - while (!isTextNode(node) && getNodeName(node) !== 'BODY') { - if (node.previousSibling) { - node = node.previousSibling; - - while (node.lastChild) { - node = node.lastChild; - } - } else { - node = node.parentNode; - } - } - - if (getNodeName(node) === 'BODY') { - node = null; - } - - return node; -}; -/** - * test whether root contains the given node - * @param {HTMLNode|string} root - root node - * @param {HTMLNode} found - node to test - * @returns {Boolean} true if root contains node - * @ignore - */ - - -var containsNode = function containsNode(root, node) { - var walker = document.createTreeWalker(root, 4, null, false); - var found = root === node; - - while (!found && walker.nextNode()) { - found = walker.currentNode === node; - } - - return found; -}; -/** - * find node by offset - * @param {HTMLElement} root Root element - * @param {Array.} offsetList offset list - * @param {function} textNodeFilter Text node filter - * @returns {Array} - * @ignore - */ - - -var findOffsetNode = function findOffsetNode(root, offsetList, textNodeFilter) { - var result = []; - var text = ''; - var walkerOffset = 0; - var newWalkerOffset; - - if (!offsetList.length) { - return result; - } - - var offset = offsetList.shift(); - var walker = document.createTreeWalker(root, 4, null, false); - - while (walker.nextNode()) { - text = walker.currentNode.nodeValue || ''; - - if (textNodeFilter) { - text = textNodeFilter(text); - } - - newWalkerOffset = walkerOffset + text.length; - - while (newWalkerOffset >= offset) { - result.push({ - container: walker.currentNode, - offsetInContainer: offset - walkerOffset, - offset: offset - }); - - if (!offsetList.length) { - return result; - } - - offset = offsetList.shift(); - } - - walkerOffset = newWalkerOffset; - } // there should be offset left - - - do { - result.push({ - container: walker.currentNode, - offsetInContainer: text.length, - offset: offset - }); - offset = offsetList.shift(); - } while (!tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(offset)); - - return result; -}; - -var getNodeInfo = function getNodeInfo(node) { - var path = {}; - path.tagName = node.nodeName; - - if (node.id) { - path.id = node.id; - } - - var className = node.className.trim(); - - if (className) { - path.className = className; - } - - return path; -}; - -var getPath = function getPath(node, root) { - var paths = []; - - while (node && node !== root) { - if (isElemNode(node)) { - paths.unshift(getNodeInfo(node)); - } - - node = node.parentNode; - } - - return paths; -}; -/** - * Find next, previous TD or TH element by given TE element - * @param {HTMLElement} node TD element - * @param {string} direction 'next' or 'previous' - * @returns {HTMLElement|null} - * @ignore - */ - - -var getTableCellByDirection = function getTableCellByDirection(node, direction) { - var targetElement = null; - - if (!tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(direction) && (direction === 'next' || direction === 'previous')) { - if (direction === 'next') { - targetElement = node.nextElementSibling; - } else { - targetElement = node.previousElementSibling; - } - } - - return targetElement; -}; -/** - * Find sibling TR's TD element by given TD and direction - * @param {HTMLElement} node TD element - * @param {string} direction Boolean value for find first TD in next line - * @param {boolean} [needEdgeCell=false] Boolean value for find first TD in next line - * @returns {HTMLElement|null} - * @ignore - */ - - -var getSiblingRowCellByDirection = function getSiblingRowCellByDirection(node, direction, needEdgeCell) { - var tableCellElement = null; - var index, targetRowElement, currentContainer, siblingContainer, isSiblingContainerExists; - - if (!tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(direction) && (direction === 'next' || direction === 'previous')) { - if (node) { - if (direction === 'next') { - targetRowElement = node.parentNode && node.parentNode.nextSibling; - currentContainer = parents(node, 'thead'); - siblingContainer = currentContainer[0] && currentContainer[0].nextSibling; - isSiblingContainerExists = siblingContainer && getNodeName(siblingContainer) === 'TBODY'; - index = 0; - } else { - targetRowElement = node.parentNode && node.parentNode.previousSibling; - currentContainer = parents(node, 'tbody'); - siblingContainer = currentContainer[0] && currentContainer[0].previousSibling; - isSiblingContainerExists = siblingContainer && getNodeName(siblingContainer) === 'THEAD'; - index = node.parentNode.childNodes.length - 1; - } - - if (tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(needEdgeCell) || !needEdgeCell) { - index = getNodeOffsetOfParent(node); - } - - if (targetRowElement) { - tableCellElement = children(targetRowElement, 'td,th')[index]; - } else if (currentContainer[0] && isSiblingContainerExists) { - tableCellElement = findAll(siblingContainer, 'td,th')[index]; - } - } - } - - return tableCellElement; -}; -/** - * Check that the inline node is supported by markdown - * @param {Node} node TD element - * @returns {boolean} - * @ignore - */ - - -var isMDSupportInlineNode = function isMDSupportInlineNode(node) { - return /^(A|B|BR|CODE|DEL|EM|I|IMG|S|SPAN|STRONG)$/gi.test(node.nodeName); -}; -/** - * Check that node is styled node. - * Styled node is a node that has text and decorates text. - * @param {Node} node TD element - * @returns {boolean} - * @ignore - */ - - -var isStyledNode = function isStyledNode(node) { - return /^(A|ABBR|ACRONYM|B|BDI|BDO|BIG|CITE|CODE|DEL|DFN|EM|I|INS|KBD|MARK|Q|S|SAMP|SMALL|SPAN|STRONG|SUB|SUP|U|VAR)$/gi.test(node.nodeName); -}; -/** - * remove node from 'start' node to 'end-1' node inside parent - * if 'end' node is null, remove all child nodes after 'start' node. - * @param {Node} parentNode - parent node - * @param {Node} start - start node to remove - * @param {Node} end - end node to remove - * @ignore - */ - - -var removeChildFromStartToEndNode = function removeChildFromStartToEndNode(parentNode, start, end) { - var child = start; - - if (!child || parentNode !== child.parentNode) { - return; - } - - while (child !== end) { - var nextNode = child.nextSibling; - parentNode.removeChild(child); - child = nextNode; - } -}; -/** - * remove nodes along the direction from the node to reach targetParent node - * @param {Node} targetParent - stop removing when reach target parent node - * @param {Node} node - start node - * @param {boolean} isForward - direction - * @ignore - */ - - -var removeNodesByDirection = function removeNodesByDirection(targetParent, node, isForward) { - var parentNode = node; - - while (parentNode !== targetParent) { - var nextParent = parentNode.parentNode; - var _parentNode = parentNode, - nextSibling = _parentNode.nextSibling, - previousSibling = _parentNode.previousSibling; - - if (!isForward && nextSibling) { - removeChildFromStartToEndNode(nextParent, nextSibling, null); - } else if (isForward && previousSibling) { - removeChildFromStartToEndNode(nextParent, nextParent.childNodes[0], parentNode); - } - - parentNode = nextParent; - } -}; - -var getLeafNode = function getLeafNode(node) { - var result = node; - - while (result.childNodes && result.childNodes.length) { - var _result = result, - nextLeaf = _result.firstChild; // When inline tag have empty text node with other childnodes, ignore empty text node. - - if (isTextNode(nextLeaf) && !getTextLength(nextLeaf)) { - result = nextLeaf.nextSibling || nextLeaf; - } else { - result = nextLeaf; - } - } - - return result; -}; -/** - * check if a coordinates is inside a button box - * @param {object} style - computed style of task box - * @param {number} offsetX - event x offset - * @param {number} offsetY - event y offset - * @returns {boolean} - * @ignore - */ - - -var isInsideButtonBox = function isInsideButtonBox(style, offsetX, offsetY) { - var rect = { - left: parseInt(style.left, 10), - top: parseInt(style.top, 10), - width: parseInt(style.width, 10), - height: parseInt(style.height, 10) - }; - return offsetX >= rect.left && offsetX <= rect.left + rect.width && offsetY >= rect.top && offsetY <= rect.top + rect.height; -}; -/** - * Check whether node is OL or UL - * @param {node} node - node - * @returns {boolean} - whether node is OL or UL - * @ignore - */ - - -var isListNode = function isListNode(node) { - if (!node) { - return false; - } - - return node.nodeName === 'UL' || node.nodeName === 'OL'; -}; -/** - * Check whether node is first list item - * @param {node} node - node - * @returns {boolean} whether node is first list item - * @ignore - */ - - -var isFirstListItem = function isFirstListItem(node) { - var nodeName = node.nodeName, - parentNode = node.parentNode; - return nodeName === 'LI' && node === parentNode.firstChild; -}; -/** - * Check whether node is first level list item - * @param {node} node - node - * @returns {boolean} whether node is first level list item - * @ignore - */ - - -var isFirstLevelListItem = function isFirstLevelListItem(node) { - var nodeName = node.nodeName, - listNode = node.parentNode; - var listParentNode = listNode.parentNode; - return nodeName === 'LI' && !isListNode(listParentNode); -}; -/** - * Merge node to target node and detach node - * @param {node} node - node - * @param {node} targetNode - target node - * @ignore - */ - - -var mergeNode = function mergeNode(node, targetNode) { - if (node.hasChildNodes()) { - tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(node.childNodes).forEach(function () { - targetNode.appendChild(node.firstChild); - }); - targetNode.normalize(); - } - - if (node.parentNode) { - node.parentNode.removeChild(node); - } -}; -/** - * Create hr that is not contenteditable - * @returns {node} hr is wraped div - * @ignore - */ - - -var createHorizontalRule = function createHorizontalRule() { - var div = document.createElement('div'); - var hr = document.createElement('hr'); - div.setAttribute('contenteditable', false); - hr.setAttribute('contenteditable', false); - div.appendChild(hr); - return div; -}; -/** - * Create Empty Line - * @returns {node}

- * @private - */ - - -var createEmptyLine = function createEmptyLine() { - var div = document.createElement('div'); - div.appendChild(document.createElement('br')); - return div; -}; -/** - * Find same tagName child node and change wrapping order. - * For example, if below node need to optimize 'B' tag. - * test - * should be changed tag's order. - * test - * @param {node} node - * @param {string} tagName - * @returns {node} - * @private - */ - - -var changeTagOrder = function changeTagOrder(node, tagName) { - if (node.nodeName !== 'SPAN') { - var parentNode = node.parentNode; - var tempNode = node; - - while (tempNode.childNodes && tempNode.childNodes.length === 1 && !isTextNode(tempNode.firstChild)) { - tempNode = tempNode.firstChild; - - if (tempNode.nodeName === 'SPAN') { - break; - } - - if (tempNode.nodeName === tagName) { - var wrapper = document.createElement(tagName); - mergeNode(tempNode, tempNode.parentNode); - parentNode.replaceChild(wrapper, node); - wrapper.appendChild(node); - return wrapper; - } - } - } - - return node; -}; -/** - * Find same tagName nodes and merge from startNode to endNode. - * @param {node} startNode - * @param {node} endNode - * @param {string} tagName - * @returns {node} - * @private - */ - - -var mergeSameNodes = function mergeSameNodes(startNode, endNode, tagName) { - var startBlockNode = changeTagOrder(startNode, tagName); - - if (startBlockNode.nodeName === tagName) { - var endBlockNode = changeTagOrder(endNode, tagName); - var mergeTargetNode = startBlockNode; - var nextNode = startBlockNode.nextSibling; - - while (nextNode) { - var tempNext = nextNode.nextSibling; - nextNode = changeTagOrder(nextNode, tagName); - - if (nextNode.nodeName === tagName) { - // eslint-disable-next-line max-depth - if (mergeTargetNode) { - mergeNode(nextNode, mergeTargetNode); - } else { - mergeTargetNode = nextNode; - } - } else { - mergeTargetNode = null; - } - - if (nextNode === endBlockNode) { - break; - } - - nextNode = tempNext; - } - } -}; -/** - * Find same tagName nodes in range and merge nodes. - * For example range is like this - * AAABBB - * nodes is changed below - * AAABBB - * @param {range} range - * @param {string} tagName - * @private - */ - - -var optimizeRange = function optimizeRange(range, tagName) { - var collapsed = range.collapsed, - commonAncestorContainer = range.commonAncestorContainer, - startContainer = range.startContainer, - endContainer = range.endContainer; - - if (!collapsed) { - var optimizedNode = null; - - if (startContainer !== endContainer) { - var startNode = getParentUntil(startContainer, commonAncestorContainer); - var endNode = getParentUntil(endContainer, commonAncestorContainer); - - if (startNode && endNode) { - mergeSameNodes(startNode, endNode, tagName); - } - - optimizedNode = commonAncestorContainer; - } else if (isTextNode(startContainer)) { - optimizedNode = startContainer.parentNode; - } - - if (optimizedNode && optimizedNode.nodeName === tagName) { - var _optimizedNode = optimizedNode, - previousSibling = _optimizedNode.previousSibling; - var tempNode; - - if (previousSibling) { - tempNode = changeTagOrder(previousSibling); - - if (tempNode.nodeName === tagName) { - mergeNode(optimizedNode, tempNode); - } - } - - var _optimizedNode2 = optimizedNode, - nextSibling = _optimizedNode2.nextSibling; - - if (nextSibling) { - tempNode = changeTagOrder(nextSibling); - - if (tempNode.nodeName === tagName) { - mergeNode(tempNode, optimizedNode); - } - } - } - } -}; -/** - * Gets all text node from root element. - * @param {HTMLElement} root Root element - * @returns {Array} list of text nodes - * @ignore - */ - - -var getAllTextNode = function getAllTextNode(root) { - var walker = document.createTreeWalker(root, 4, null, false); - var result = []; - - while (walker.nextNode()) { - var node = walker.currentNode; - - if (isTextNode(node)) { - result.push(node); - } - } - - return result; -}; -/** - * Check whether the node is 'TD' or 'TH' - * @param {HTMLElement} node - the target node - * @returns {boolean} - whether the node is 'TD' or 'TH' - * @ignore - */ - - -var isCellNode = function isCellNode(node) { - if (!node) { - return false; - } - - return node.nodeName === 'TD' || node.nodeName === 'TH'; -}; -/** - * Get the last node on the target node by the condition - * @param {HTMLElement} node - the target node - * @returns {function} - the condition to find the node - * @ignore - */ - - -var getLastNodeBy = function getLastNodeBy(node, condition) { - var lastNode = node && node.lastChild; - - while (lastNode && condition(lastNode)) { - lastNode = lastNode.lastChild; - } - - return lastNode; -}; -/** - * Get the parent node on the target node by the condition - * @param {HTMLElement} node - the target node - * @returns {function} - the condition to find the node - * @ignore - */ - - -var getParentNodeBy = function getParentNodeBy(node, condition) { - while (node && condition(node.parentNode, node)) { - node = node.parentNode; - } - - return node; -}; -/** - * Get the sibling node on the target node by the condition - * @param {HTMLElement} node - the target node - * @param {string} direction - the direction to find node ('previous', 'next') - * @returns {function} - the condition to find the node - * @ignore - */ - - -var getSiblingNodeBy = function getSiblingNodeBy(node, direction, condition) { - var directionKey = direction + "Sibling"; - - while (node && condition(node[directionKey], node)) { - node = node[directionKey]; - } - - return node; -}; -/** - * Create element with contents - * @param {string|Node} contents - contents to appended - * @param {HTMLElement} [target] - container element to append contents - * @returns {Node} created node - * @ignore - */ - - -function createElementWith(contents, target) { - var container = document.createElement('div'); - - if (tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default()(contents)) { - container.innerHTML = contents; - } else { - container.appendChild(contents); - } - - var firstChild = container.firstChild; - - if (target) { - target.appendChild(firstChild); - } - - return firstChild; -} -/** - * Find nodes matching by selector - * @param {HTMLElement} element - target element - * @param {string} selector - selector to find nodes - * @returns {Array.} found nodes - * @ignore - */ - - -function findAll(element, selector) { - var nodeList = tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(element.querySelectorAll(selector)); - - if (nodeList.length) { - return nodeList; - } - - return []; -} -/** - * Checks whether specific node is included in target node - * @param {HTMLElement} element - target to find - * @param {Node} containedNode - node to find - * @returns {boolean} whether node is contained or not - * @ignore - */ - - -function isContain(element, contained) { - return element !== contained && element.contains(contained); -} -/** - * Gets closest node matching by selector - * @param {Node} node - target node - * @param {string|Node} found - selector or element to find node - * @param {Node} [root] - root node - * @returns {?Node} - found node - * @ignore - */ - - -function closest(node, found, root) { - var condition; - root = root || document; - - if (tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default()(found)) { - condition = function condition(target) { - return tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default()(target, found); - }; - } else { - condition = function condition(target) { - return target === found; - }; - } - - while (node && node !== root) { - if (isElemNode(node) && condition(node)) { - return node; - } - - node = node.parentNode; - } - - return null; -} -/** - * Gets parent node matching by selector from target node - * @param {Node} node - target node - * @param {string} [selector] - selector to find - * @returns {Node} found node - * @ignore - */ - - -function parent(node, selector) { - var parentNode = node.parentNode; - - if (selector) { - return parentNode && tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default()(parentNode, selector) ? parentNode : null; - } - - return parentNode; -} -/** - * Gets ancestor nodes matching by selector from target node - * @param {Node} node - target node - * @param {string|Node} found - selector or node to find - * @returns {Array.} found nodes - * @ignore - */ - - -function parents(node, found) { - var result = []; - - while (node && node !== document) { - node = closest(node.parentNode, found); - - if (node) { - result.push(node); - } - } - - return result; -} -/** - * Gets ancestor nodes until matching by selector from target node - * @param {Node} node - target node - * @param {string} selector - selector to find - * @param {Array.} found nodes - * @ignore - */ - - -function parentsUntil(node, selector) { - var result = []; - - while (node.parentNode && !tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default()(node.parentNode, selector)) { - node = node.parentNode; - - if (node) { - result.push(node); - } - } - - return result; -} -/** - * Gets child nodes matching by selector from target node - * @param {Node} node - target node - * @param {string} selector - selector to find - * @returns {Array.} found nodes - * @ignore - */ - - -function children(node, selector) { - var foundChildren; - - if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { - foundChildren = node.childNodes; - } else { - foundChildren = node.children; - } - - return tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(foundChildren).filter(function (child) { - return tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default()(child, selector); - }); -} -/** - * Appends node(s) on target node - * @param {Node} node - target node - * @param {string|Node} appended - html string or node to append - * @ignore - */ - - -function append(node, appended) { - if (tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default()(appended)) { - node.insertAdjacentHTML('beforeEnd', appended); - } else { - appended = appended.length ? tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(appended) : [appended]; - - for (var i = 0, len = appended.length; i < len; i += 1) { - node.appendChild(appended[i]); - } - } -} -/** - * Prepends node(s) on target node - * @param {Node} node - target node - * @param {string|Node} appended - html string or node to append - * @ignore - */ - - -function prepend(node, appended) { - if (tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default()(appended)) { - node.insertAdjacentHTML('afterBegin', appended); - } else { - appended = appended.length ? tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(appended) : [appended]; - - for (var i = appended.length - 1, len = 0; i >= len; i -= 1) { - node.insertBefore(appended[i], node.firstChild); - } - } -} -/** - * Inserts new node in front of target node - * @param {Node} insertedNode - node to insert - * @param {Node} node - target node - * @ignore - */ - - -function insertBefore(insertedNode, node) { - var parentNode = node.parentNode; - - if (parentNode) { - parentNode.insertBefore(insertedNode, node); - } -} -/** - * Inserts new node after target node - * @param {Node} insertedNode - node to insert - * @param {Node} node - target node - * @ignore - */ - - -function insertAfter(insertedNode, node) { - var parentNode = node.parentNode; - - if (parentNode) { - parentNode.insertBefore(insertedNode, node.nextSibling); - } -} -/** - * Replaces target node(s) with html - * @param {Node} nodeList - target node(s) to replace - * @param {string} html - replaced html - * @ignore - */ - - -function replaceWith(nodeList, html) { - nodeList = nodeList.length ? tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(nodeList) : [nodeList]; - nodeList.forEach(function (node) { - node.insertAdjacentHTML('afterEnd', html); - node.parentNode.removeChild(node); - }); -} -/** - * Adds parent element to target node(s) - * @param {Node|Array.} nodeList - target node(s) - * @param {string} nodeName - node name to change parent element - * @ignore - */ - - -function wrap(nodeList, nodeName) { - nodeList = nodeList.length ? tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(nodeList) : [nodeList]; - nodeList.forEach(function (node) { - var wrapper = document.createElement(nodeName); - node.parentNode.insertBefore(wrapper, node); - wrapper.appendChild(node); - }); -} -/** - * Adds child element to target node(s) - * @param {Node|Array.} nodeList - target node(s) - * @param {string} nodeName - node name to change child element - * @ignore - */ - - -function wrapInner(nodeList, nodeName) { - nodeList = nodeList.length ? tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(nodeList) : [nodeList]; - nodeList.forEach(function (node) { - var wrapper = document.createElement(nodeName); - node.appendChild(wrapper); - - while (node.firstChild !== wrapper) { - wrapper.appendChild(node.firstChild); - } - }); -} -/** - * Removes target element and insert children at the same position - * @param {Node} node - parent node - * @returns {Array.} unwrapped nodes - * @ignore - */ - - -function unwrap(node) { - var result = []; - - while (node.firstChild) { - result.push(node.firstChild); - node.parentNode.insertBefore(node.firstChild, node); - } - - remove(node); - return result; -} -/** - * Removes target node from parent node - * @param {Node} node - target node - * @ignore - */ - - -function remove(node) { - if (node.parentNode) { - node.parentNode.removeChild(node); - } -} -/** - * Removes all children of target node - * @param {Node} node - target node - * @ignore - */ - - -function empty(node) { - while (node.firstChild) { - node.removeChild(node.firstChild); - } -} -/** - * Sets offset value of target element - * @param {HTMLElement} element - target element - * @returns {Object.} offset values - * @ignore - */ - - -function setOffset(element, offset) { - var _element$parentNode$g = element.parentNode.getBoundingClientRect(), - top = _element$parentNode$g.top, - left = _element$parentNode$g.left; - - tui_code_snippet_domUtil_css__WEBPACK_IMPORTED_MODULE_3___default()(element, { - top: offset.top - top - document.body.scrollTop + "px" - }); - tui_code_snippet_domUtil_css__WEBPACK_IMPORTED_MODULE_3___default()(element, { - left: offset.left - left - document.body.scrollLeft + "px" - }); -} -/** - * Gets offset value of target element - * @param {HTMLElement} element - target element - * @param {string} [selector] - selector to stop finding node - * @returns {Object.} offset values - * @ignore - */ - - -function getOffset(element, selector) { - if (selector === void 0) { - selector = 'document'; - } - - var top = 0; - var left = 0; - - do { - top += element.offsetTop || 0; - left += element.offsetLeft || 0; - element = element.offsetParent; - } while (element && !tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default()(element, selector)); - - return { - top: top, - left: left - }; -} -/** - * Gets outer width value of target element - * @param {HTMLElement} element - target element - * @param {boolean} includedMargin - whether to include margir or not - * @returns {number} outer width value - * @ignore - */ - - -function getOuterWidth(element, includedMargin) { - var widthValue = element.offsetWidth; - - if (includedMargin) { - var _getComputedStyle = getComputedStyle(element), - marginLeft = _getComputedStyle.marginLeft, - marginRight = _getComputedStyle.marginRight; - - widthValue += parseInt(marginLeft, 10) + parseInt(marginRight, 10); - } - - return widthValue; -} -/** - * Gets outer height value of target element - * @param {HTMLElement} element - target element - * @param {boolean} includedMargin - whether to include margir or not - * @returns {number} outer height value - * @ignore - */ - - -function getOuterHeight(element, includedMargin) { - var heightValue = element.offsetHeight; - - if (includedMargin) { - var _getComputedStyle2 = getComputedStyle(element), - marginTop = _getComputedStyle2.marginTop, - marginBottom = _getComputedStyle2.marginBottom; - - heightValue += parseInt(marginTop, 10) + parseInt(marginBottom, 10); - } - - return heightValue; -} -/** - * Toggles class name of target element - * @param {HTMLElement} element - target element - * @param {string} className - class name to toggle - * @param {boolean} [state] - whether to toggle or not by condition - * @ignore - */ - - -var toggleClass = function toggleClass(element, className, state) { - if (tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(state)) { - state = !tui_code_snippet_domUtil_hasClass__WEBPACK_IMPORTED_MODULE_6___default()(element, className); - } - - var toggleFn = state ? tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_4___default.a : tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_5___default.a; - toggleFn(element, className); -}; -/** - * Finalize html result - * @param {HTMLElement} html root element - * @param {boolean} needHtmlText pass true if need html text - * @returns {string|DocumentFragment} result - * @ignore - */ - - -function finalizeHtml(html, needHtmlText) { - var result; - - if (needHtmlText) { - result = html.innerHTML; - } else { - var frag = document.createDocumentFragment(); - var childNodes = tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(html.childNodes); - var length = childNodes.length; - - for (var i = 0; i < length; i += 1) { - frag.appendChild(childNodes[i]); - } - - result = frag; - } - - return result; -} -/** - * Get fragment replaced by newline to br tag - * @param {string} text original text - * @returns {DocumentFragment} fragment - * @ignore - */ - - -function getFragmentReplacedByNewlineToBr(text) { - var fragment = document.createDocumentFragment(); - var texts = text.split('\n'); - texts.forEach(function (plainText, index) { - var textNode = document.createTextNode(plainText); - fragment.appendChild(textNode); - - if (index < texts.length - 1) { - fragment.appendChild(document.createElement('br')); - } - }); - return fragment; -} - -/* harmony default export */ __webpack_exports__["a"] = ({ - getNodeName: getNodeName, - isTextNode: isTextNode, - isElemNode: isElemNode, - isBlockNode: isBlockNode, - getTextLength: getTextLength, - getOffsetLength: getOffsetLength, - getPrevOffsetNodeUntil: getPrevOffsetNodeUntil, - getNodeOffsetOfParent: getNodeOffsetOfParent, - getChildNodeByOffset: getChildNodeByOffset, - getNodeWithDirectionUntil: getNodeWithDirectionUntil, - containsNode: containsNode, - getTopPrevNodeUnder: getTopPrevNodeUnder, - getTopNextNodeUnder: getTopNextNodeUnder, - getParentUntilBy: getParentUntilBy, - getParentUntil: getParentUntil, - getTopBlockNode: getTopBlockNode, - getPrevTextNode: getPrevTextNode, - findOffsetNode: findOffsetNode, - getPath: getPath, - getNodeInfo: getNodeInfo, - getTableCellByDirection: getTableCellByDirection, - getSiblingRowCellByDirection: getSiblingRowCellByDirection, - isMDSupportInlineNode: isMDSupportInlineNode, - isStyledNode: isStyledNode, - removeChildFromStartToEndNode: removeChildFromStartToEndNode, - removeNodesByDirection: removeNodesByDirection, - getLeafNode: getLeafNode, - isInsideButtonBox: isInsideButtonBox, - isListNode: isListNode, - isFirstListItem: isFirstListItem, - isFirstLevelListItem: isFirstLevelListItem, - mergeNode: mergeNode, - createHorizontalRule: createHorizontalRule, - createEmptyLine: createEmptyLine, - changeTagOrder: changeTagOrder, - mergeSameNodes: mergeSameNodes, - optimizeRange: optimizeRange, - getAllTextNode: getAllTextNode, - isCellNode: isCellNode, - getLastNodeBy: getLastNodeBy, - getParentNodeBy: getParentNodeBy, - getSiblingNodeBy: getSiblingNodeBy, - createElementWith: createElementWith, - findAll: findAll, - isContain: isContain, - closest: closest, - parent: parent, - parents: parents, - parentsUntil: parentsUntil, - children: children, - append: append, - prepend: prepend, - insertBefore: insertBefore, - insertAfter: insertAfter, - replaceWith: replaceWith, - wrap: wrap, - wrapInner: wrapInner, - unwrap: unwrap, - remove: remove, - empty: empty, - setOffset: setOffset, - getOffset: getOffset, - getOuterWidth: getOuterWidth, - getOuterHeight: getOuterHeight, - toggleClass: toggleClass, - finalizeHtml: finalizeHtml, - getFragmentReplacedByNewlineToBr: getFragmentReplacedByNewlineToBr -}); - -/***/ }), -/* 1 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/object/extend.js -var extend = __webpack_require__(7); -var extend_default = /*#__PURE__*/__webpack_require__.n(extend); - -// CONCATENATED MODULE: ./src/js/command.js -/** - * @fileoverview Implements Command - * @author NHN FE Development Lab - */ - -/** - * Class Command - * @param {string} name Command name - * @param {number} type Command type (Command.TYPE) - * @param {Array.} [keyMap] keyMap - * @ignore - */ - -var Command = /*#__PURE__*/function () { - function Command(name, type, keyMap) { - this.name = name; - this.type = type; - - if (keyMap) { - this.setKeyMap(keyMap); - } - } - /** - * returns Name of command - * @returns {string} Command Name - */ - - - var _proto = Command.prototype; - - _proto.getName = function getName() { - return this.name; - } - /** - * returns Type of command - * @returns {number} Command Command type number - */ - ; - - _proto.getType = function getType() { - return this.type; - } - /** - * returns whether Command Type is Markdown or not - * @returns {boolean} result - */ - ; - - _proto.isMDType = function isMDType() { - return this.type === Command.TYPE.MD; - } - /** - * returns whether Command Type is Wysiwyg or not - * @returns {boolean} result - */ - ; - - _proto.isWWType = function isWWType() { - return this.type === Command.TYPE.WW; - } - /** - * returns whether Command Type is Global or not - * @returns {boolean} result - */ - ; - - _proto.isGlobalType = function isGlobalType() { - return this.type === Command.TYPE.GB; - } - /** - * Set keymap value for each os - * @param {string} win Windows Key(and etc) - * @param {string} mac Mac osx key - */ - ; - - _proto.setKeyMap = function setKeyMap(win, mac) { - this.keyMap = [win, mac]; - }; - - return Command; -}(); -/** - * Command factory method - * @param {string} typeStr Editor type name - * @param {object} props Property - * @param {string} props.name Command name - * @param {number} props.type Command type number - * @returns {Command} - * @static - */ - - -Command.factory = function (typeStr, props) { - var type; - - if (typeStr === 'markdown') { - type = Command.TYPE.MD; - } else if (typeStr === 'wysiwyg') { - type = Command.TYPE.WW; - } else if (typeStr === 'global') { - type = Command.TYPE.GB; - } - - var command = new Command(props.name, type); - extend_default()(command, props); - return command; -}; -/** - * Command Type Constant - * markdown : 0 - * wysiwyg : 1 - * global : 2 - * @type {object} - * @private - */ - - -Command.TYPE = { - MD: 0, - WW: 1, - GB: 2 -}; -/* harmony default export */ var js_command = (Command); -// EXTERNAL MODULE: ./src/js/utils/common.js -var common = __webpack_require__(12); - -// EXTERNAL MODULE: ./src/js/utils/map.js -var map = __webpack_require__(23); - -// CONCATENATED MODULE: ./src/js/commandManager.js -/** - * @fileoverview Implements CommandManager - * @author NHN FE Development Lab - */ - - - - -var KEYMAP_OS_INDEX = common["b" /* isMac */] ? 1 : 0; -/** - * Class CommandManager - * @param {ToastUIEditor} base nedInstance - * @param {object} [options={}] - option object - * @param {boolean} [options.useCommandShortcut=true] - execute command with keyMap - * @ignore - */ - -var commandManager_CommandManager = /*#__PURE__*/function () { - function CommandManager(base, options) { - if (options === void 0) { - options = {}; - } - - this._command = new map["a" /* default */](); - this._mdCommand = new map["a" /* default */](); - this._wwCommand = new map["a" /* default */](); - this._options = extend_default()({ - useCommandShortcut: true - }, options); - this.base = base; - this.keyMapCommand = {}; - - this._initEvent(); - } - /** - * You can change command before command addition by addCommandBefore event. - * @param {object} command - command - * @returns {object} - * @private - */ - - - var _proto = CommandManager.prototype; - - _proto._addCommandBefore = function _addCommandBefore(command) { - var commandWrapper = { - command: command - }; - this.base.eventManager.emit('addCommandBefore', commandWrapper); - return commandWrapper.command || command; - } - /** - * Add command - * @param {Command} command Command instance - * @returns {Command} Command - */ - ; - - _proto.addCommand = function addCommand(command) { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - if (args.length) { - command = CommandManager.command.apply(CommandManager, [command].concat(args)); - } - - command = this._addCommandBefore(command); - var name = command.getName(); - var commandBase; - - if (command.isMDType()) { - commandBase = this._mdCommand; - } else if (command.isWWType()) { - commandBase = this._wwCommand; - } else if (command.isGlobalType()) { - commandBase = this._command; - } - - commandBase.set(name, command); - - if (command.keyMap) { - this.keyMapCommand[command.keyMap[KEYMAP_OS_INDEX]] = name; - } - - return command; - } - /** - * _initEvent - * Bind event handler to eventManager - * @private - */ - ; - - _proto._initEvent = function _initEvent() { - var _this = this; - - this.base.eventManager.listen('command', function () { - _this.exec.apply(_this, arguments); - }); - this.base.eventManager.listen('keyMap', function (ev) { - if (!_this._options.useCommandShortcut) { - return; - } - - var command = _this.keyMapCommand[ev.keyMap]; - - if (command) { - ev.data.preventDefault(); - - _this.exec(command); - } - }); - } - /** - * Execute command - * @param {String} name Command name - * @param {*} ...args Command argument - * @returns {*} - */ - ; - - _proto.exec = function exec(name) { - var commandToRun, result; - var context = this.base; - commandToRun = this._command.get(name); - - if (!commandToRun) { - if (this.base.isMarkdownMode()) { - commandToRun = this._mdCommand.get(name); - context = this.base.mdEditor; - } else { - commandToRun = this._wwCommand.get(name); - context = this.base.wwEditor; - } - } - - if (commandToRun) { - var _commandToRun; - - for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - args[_key2 - 1] = arguments[_key2]; - } - - args.unshift(context); - result = (_commandToRun = commandToRun).exec.apply(_commandToRun, args); - } - - return result; - }; - - return CommandManager; -}(); -/** - * Create command by given editor type and property object - * @param {string} type Command type - * @param {{name: string, keyMap: Array}} props Property - * @returns {*} - * @static - */ - - -commandManager_CommandManager.command = function (type, props) { - var command = js_command.factory(type, props.name, props.keyMap); - extend_default()(command, props); - return command; -}; - -/* harmony default export */ var commandManager = __webpack_exports__["a"] = (commandManager_CommandManager); - -/***/ }), -/* 2 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* unused harmony export hasImageOrCodeBlockNode */ -/* unused harmony export hasSameLineParent */ -/* unused harmony export hasSpecificTypeAncestor */ -/* unused harmony export isEmptyLineNode */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return getMdStartLine; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return getMdEndLine; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return getMdStartCh; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getMdEndCh; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return isMultiLineNode; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return isHtmlNode; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return isStyledTextNode; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return isListItemNode; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return isTableCellNode; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return isInlineNode; }); -/* unused harmony export getLastLeafNode */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return findClosestNode; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return traverseParentNodes; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return addChPos; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return setChPos; }); -/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); - -function hasImageOrCodeBlockNode(mdNode) { - while (mdNode) { - if (Object(_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ "a"])(['image', 'codeBlock'], mdNode.type)) { - return true; - } - - mdNode = mdNode.firstChild; - } - - return false; -} -function hasSameLineParent(mdNode) { - return mdNode.parent && mdNode.parent.type !== 'document' && mdNode.parent.sourcepos[0][0] === mdNode.sourcepos[0][0]; -} -function hasSpecificTypeAncestor(mdNode) { - for (var _len = arguments.length, types = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - types[_key - 1] = arguments[_key]; - } - - while (mdNode.parent && mdNode.parent.type !== 'document') { - if (Object(_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ "a"])(types, mdNode.parent.type)) { - return true; - } - - mdNode = mdNode.parent; - } - - return false; -} -function isEmptyLineNode(text, mdNode) { - return !text.trim() && !hasImageOrCodeBlockNode(mdNode); -} -function getMdStartLine(mdNode) { - return mdNode.sourcepos[0][0]; -} -function getMdEndLine(mdNode) { - return mdNode.sourcepos[1][0]; -} -function getMdStartCh(mdNode) { - return mdNode.sourcepos[0][1]; -} -function getMdEndCh(mdNode) { - return mdNode.sourcepos[1][1]; -} -function isMultiLineNode(mdNode) { - var type = mdNode.type; - return type === 'codeBlock' || type === 'paragraph'; -} -function isHtmlNode(mdNode) { - var type = mdNode.type; - return type === 'htmlBlock' || type === 'htmlInline'; -} -function isStyledTextNode(mdNode) { - var type = mdNode.type; - return type === 'strike' || type === 'strong' || type === 'emph'; -} -function isListItemNode(mdNode) { - return mdNode.type === 'item'; -} -function isTableCellNode(mdNode) { - var type = mdNode.type; - return type === 'tableCell' || type === 'tableDelimCell'; -} -function isInlineNode(mdNode) { - switch (mdNode.type) { - case 'code': - case 'text': - case 'emph': - case 'strong': - case 'strike': - case 'link': - case 'image': - case 'htmlInline': - case 'linebreak': - case 'softbreak': - return true; - - default: - return false; - } -} -function getLastLeafNode(mdNode) { - while (mdNode.lastChild) { - mdNode = mdNode.lastChild; - } - - return mdNode; -} -function findClosestNode(mdNode, condition, includeSelf) { - if (includeSelf === void 0) { - includeSelf = true; - } - - mdNode = includeSelf ? mdNode : mdNode.parent; - - while (mdNode && mdNode.type !== 'document') { - if (condition(mdNode)) { - return mdNode; - } - - mdNode = mdNode.parent; - } - - return null; -} -function traverseParentNodes(mdNode, iteratee, includeSelf) { - if (includeSelf === void 0) { - includeSelf = true; - } - - mdNode = includeSelf ? mdNode : mdNode.parent; - - while (mdNode && mdNode.type !== 'document') { - iteratee(mdNode); - mdNode = mdNode.parent; - } -} -function addChPos(originPos, addedCh) { - return { - line: originPos.line, - ch: originPos.ch + addedCh - }; -} -function setChPos(originPos, newCh) { - return { - line: originPos.line, - ch: newCh - }; -} - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Transform the Array-like object to Array. - * @author NHN FE Development Lab - */ - - - -var forEachArray = __webpack_require__(21); - -/** - * Transform the Array-like object to Array. - * In low IE (below 8), Array.prototype.slice.call is not perfect. So, try-catch statement is used. - * @param {*} arrayLike Array-like object - * @returns {Array} Array - * @memberof module:collection - * @example - * var toArray = require('tui-code-snippet/collection/toArray'); // node, commonjs - * - * var arrayLike = { - * 0: 'one', - * 1: 'two', - * 2: 'three', - * 3: 'four', - * length: 4 - * }; - * var result = toArray(arrayLike); - * - * alert(result instanceof Array); // true - * alert(result); // one,two,three,four - */ -function toArray(arrayLike) { - var arr; - try { - arr = Array.prototype.slice.call(arrayLike); - } catch (e) { - arr = []; - forEachArray(arrayLike, function(value) { - arr.push(value); - }); - } - - return arr; -} - -module.exports = toArray; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Setting element style - * @author NHN FE Development Lab - */ - - - -var isString = __webpack_require__(9); -var forEach = __webpack_require__(26); - -/** - * Setting element style - * @param {(HTMLElement|SVGElement)} element - element to setting style - * @param {(string|object)} key - style prop name or {prop: value} pair object - * @param {string} [value] - style value - * @memberof module:domUtil - */ -function css(element, key, value) { - var style = element.style; - - if (isString(key)) { - style[key] = value; - - return; - } - - forEach(key, function(v, k) { - style[k] = v; - }); -} - -module.exports = css; - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Add css class to element - * @author NHN FE Development Lab - */ - - - -var forEach = __webpack_require__(26); -var inArray = __webpack_require__(14); -var getClass = __webpack_require__(33); -var setClassName = __webpack_require__(39); - -/** - * domUtil module - * @module domUtil - */ - -/** - * Add css class to element - * @param {(HTMLElement|SVGElement)} element - target element - * @param {...string} cssClass - css classes to add - * @memberof module:domUtil - */ -function addClass(element) { - var cssClass = Array.prototype.slice.call(arguments, 1); - var classList = element.classList; - var newClass = []; - var origin; - - if (classList) { - forEach(cssClass, function(name) { - element.classList.add(name); - }); - - return; - } - - origin = getClass(element); - - if (origin) { - cssClass = [].concat(origin.split(/\s+/), cssClass); - } - - forEach(cssClass, function(cls) { - if (inArray(cls, newClass) < 0) { - newClass.push(cls); - } - }); - - setClassName(element, newClass); -} - -module.exports = addClass; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Remove css class from element - * @author NHN FE Development Lab - */ - - - -var forEachArray = __webpack_require__(21); -var inArray = __webpack_require__(14); -var getClass = __webpack_require__(33); -var setClassName = __webpack_require__(39); - -/** - * Remove css class from element - * @param {(HTMLElement|SVGElement)} element - target element - * @param {...string} cssClass - css classes to remove - * @memberof module:domUtil - */ -function removeClass(element) { - var cssClass = Array.prototype.slice.call(arguments, 1); - var classList = element.classList; - var origin, newClass; - - if (classList) { - forEachArray(cssClass, function(name) { - classList.remove(name); - }); - - return; - } - - origin = getClass(element).split(/\s+/); - newClass = []; - forEachArray(origin, function(name) { - if (inArray(name, cssClass) < 0) { - newClass.push(name); - } - }); - - setClassName(element, newClass); -} - -module.exports = removeClass; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Extend the target object from other objects. - * @author NHN FE Development Lab - */ - - - -/** - * @module object - */ - -/** - * Extend the target object from other objects. - * @param {object} target - Object that will be extended - * @param {...object} objects - Objects as sources - * @returns {object} Extended object - * @memberof module:object - */ -function extend(target, objects) { // eslint-disable-line no-unused-vars - var hasOwnProp = Object.prototype.hasOwnProperty; - var source, prop, i, len; - - for (i = 1, len = arguments.length; i < len; i += 1) { - source = arguments[i]; - for (prop in source) { - if (hasOwnProp.call(source, prop)) { - target[prop] = source[prop]; - } - } - } - - return target; -} - -module.exports = extend; - - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is undefined or not. - * @author NHN FE Development Lab - */ - - - -/** - * Check whether the given variable is undefined or not. - * If the given variable is undefined, returns true. - * @param {*} obj - Target for checking - * @returns {boolean} Is undefined? - * @memberof module:type - */ -function isUndefined(obj) { - return obj === undefined; // eslint-disable-line no-undefined -} - -module.exports = isUndefined; - - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is a string or not. - * @author NHN FE Development Lab - */ - - - -/** - * Check whether the given variable is a string or not. - * If the given variable is a string, return true. - * @param {*} obj - Target for checking - * @returns {boolean} Is string? - * @memberof module:type - */ -function isString(obj) { - return typeof obj === 'string' || obj instanceof String; -} - -module.exports = isString; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Execute the provided callback once for each property of object which actually exist. - * @author NHN FE Development Lab - */ - - - -/** - * Execute the provided callback once for each property of object which actually exist. - * If the callback function returns false, the loop will be stopped. - * Callback function(iteratee) is invoked with three arguments: - * 1) The value of the property - * 2) The name of the property - * 3) The object being traversed - * @param {Object} obj The object that will be traversed - * @param {function} iteratee Callback function - * @param {Object} [context] Context(this) of callback function - * @memberof module:collection - * @example - * var forEachOwnProperties = require('tui-code-snippet/collection/forEachOwnProperties'); // node, commonjs - * - * var sum = 0; - * - * forEachOwnProperties({a:1,b:2,c:3}, function(value){ - * sum += value; - * }); - * alert(sum); // 6 - */ -function forEachOwnProperties(obj, iteratee, context) { - var key; - - context = context || null; - - for (key in obj) { - if (obj.hasOwnProperty(key)) { - if (iteratee.call(context, obj[key], key, obj) === false) { - break; - } - } - } -} - -module.exports = forEachOwnProperties; - - -/***/ }), -/* 11 */, -/* 12 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return isMac; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return sendHostName; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return includes; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return sanitizeLinkAttribute; }); -/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var tui_code_snippet_request_sendHostname__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(43); -/* harmony import */ var tui_code_snippet_request_sendHostname__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_request_sendHostname__WEBPACK_IMPORTED_MODULE_1__); - - -var isMac = /Mac/.test(navigator.platform); -function sendHostName() { - tui_code_snippet_request_sendHostname__WEBPACK_IMPORTED_MODULE_1___default()('editor', 'UA-129966929-1'); -} -function includes(arr, targetItem) { - return arr.indexOf(targetItem) !== -1; -} -var availableLinkAttributes = ['rel', 'target', 'contenteditable', 'hreflang', 'type']; -/** - * sanitize attribute for link - * @param {object} attribute - attribute for link - * @returns {object} sanitized attribute - */ - -function sanitizeLinkAttribute(attribute) { - if (!attribute) { - return null; - } - - var linkAttribute = {}; - availableLinkAttributes.forEach(function (key) { - if (!tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_0___default()(attribute[key])) { - linkAttribute[key] = attribute[key]; - } - }); - return linkAttribute; -} - -/***/ }), -/* 13 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check element match selector - * @author NHN FE Development Lab - */ - - - -var inArray = __webpack_require__(14); -var toArray = __webpack_require__(3); - -var elProto = Element.prototype; -var matchSelector = elProto.matches || - elProto.webkitMatchesSelector || - elProto.mozMatchesSelector || - elProto.msMatchesSelector || - function(selector) { - var doc = this.document || this.ownerDocument; - - return inArray(this, toArray(doc.querySelectorAll(selector))) > -1; - }; - -/** - * Check element match selector - * @param {HTMLElement} element - element to check - * @param {string} selector - selector to check - * @returns {boolean} is selector matched to element? - * @memberof module:domUtil - */ -function matches(element, selector) { - return matchSelector.call(element, selector); -} - -module.exports = matches; - - -/***/ }), -/* 14 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* eslint-disable complexity */ -/** - * @fileoverview Returns the first index at which a given element can be found in the array. - * @author NHN FE Development Lab - */ - - - -var isArray = __webpack_require__(17); - -/** - * @module array - */ - -/** - * Returns the first index at which a given element can be found in the array - * from start index(default 0), or -1 if it is not present. - * It compares searchElement to elements of the Array using strict equality - * (the same method used by the ===, or triple-equals, operator). - * @param {*} searchElement Element to locate in the array - * @param {Array} array Array that will be traversed. - * @param {number} startIndex Start index in array for searching (default 0) - * @returns {number} the First index at which a given element, or -1 if it is not present - * @memberof module:array - * @example - * var inArray = require('tui-code-snippet/array/inArray'); // node, commonjs - * - * var arr = ['one', 'two', 'three', 'four']; - * var idx1 = inArray('one', arr, 3); // -1 - * var idx2 = inArray('one', arr); // 0 - */ -function inArray(searchElement, array, startIndex) { - var i; - var length; - startIndex = startIndex || 0; - - if (!isArray(array)) { - return -1; - } - - if (Array.prototype.indexOf) { - return Array.prototype.indexOf.call(array, searchElement, startIndex); - } - - length = array.length; - for (i = startIndex; startIndex >= 0 && i < length; i += 1) { - if (array[i] === searchElement) { - return i; - } - } - - return -1; -} - -module.exports = inArray; - - -/***/ }), -/* 15 */, -/* 16 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check element has specific css class - * @author NHN FE Development Lab - */ - - - -var inArray = __webpack_require__(14); -var getClass = __webpack_require__(33); - -/** - * Check element has specific css class - * @param {(HTMLElement|SVGElement)} element - target element - * @param {string} cssClass - css class - * @returns {boolean} - * @memberof module:domUtil - */ -function hasClass(element, cssClass) { - var origin; - - if (element.classList) { - return element.classList.contains(cssClass); - } - - origin = getClass(element).split(/\s+/); - - return inArray(cssClass, origin) > -1; -} - -module.exports = hasClass; - - -/***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is an instance of Array or not. - * @author NHN FE Development Lab - */ - - - -/** - * Check whether the given variable is an instance of Array or not. - * If the given variable is an instance of Array, return true. - * @param {*} obj - Target for checking - * @returns {boolean} Is array instance? - * @memberof module:type - */ -function isArray(obj) { - return obj instanceof Array; -} - -module.exports = isArray; - - -/***/ }), -/* 18 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return isNodeToBeCalculated; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getAdditionalTopPos; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return getParentNodeObj; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getCmRangeHeight; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return getNextEmptyLineHeight; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return getTotalOffsetTop; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return findAdjacentElementToScrollTop; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return getFallbackScrollTop; }); -/* harmony import */ var _utils_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _utils_markdown__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2); - - -var nestableTypes = ['list', 'blockQuote']; -var nestableTagNames = ['UL', 'OL', 'BLOCKQUOTE']; -var tableElementTagNames = ['TR', 'TH', 'TBODY', 'TD']; -function isNodeToBeCalculated(mdNode) { - return !Object(_utils_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ "a"])(nestableTypes, mdNode.type); -} -function getAdditionalTopPos(scrollTop, offsetTop, currentNodeHeight, targetNodeHeight) { - var diff = (scrollTop - offsetTop) / currentNodeHeight; - return diff < 1 ? diff * targetNodeHeight : targetNodeHeight; -} -function getParentNodeObj(mdNode) { - var node = document.querySelector("[data-nodeid=\"" + mdNode.id + "\"]"); - - while (!node || Object(_utils_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ "a"])(tableElementTagNames, mdNode.type) || Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_1__[/* isStyledTextNode */ "k"])(mdNode)) { - mdNode = mdNode.parent; - node = document.querySelector("[data-nodeid=\"" + mdNode.id + "\"]"); - } - - return getNonNestableNodeObj(getParentListItemObj(mdNode)); -} - -function getParentListItemObj(orgMdNode) { - var mdNode = orgMdNode; - - while (orgMdNode && orgMdNode !== 'document') { - if (orgMdNode.type === 'item') { - mdNode = orgMdNode; - break; - } - - orgMdNode = orgMdNode.parent; - } - - return { - mdNode: mdNode, - node: document.querySelector("[data-nodeid=\"" + mdNode.id + "\"]") - }; -} - -function getNonNestableNodeObj(_ref) { - var mdNode = _ref.mdNode, - node = _ref.node; - - while (Object(_utils_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ "a"])(nestableTypes, mdNode.type) && mdNode.firstChild) { - mdNode = mdNode.firstChild; - node = node.firstElementChild; - } - - return { - mdNode: mdNode, - node: node - }; -} - -function getCmRangeHeight(mdNode, cm) { - var start = Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_1__[/* getMdStartLine */ "f"])(mdNode); - var end = Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_1__[/* getMdEndLine */ "d"])(mdNode); - var cmNodeHeight = cm.lineInfo(start - 1).handle.height; - var height = cm.heightAtLine(end, 'local') - cm.heightAtLine(start - 1, 'local'); - return height <= 0 ? cmNodeHeight : height + getNextEmptyLineHeight(cm, Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_1__[/* getMdEndLine */ "d"])(mdNode)); -} -function getNextEmptyLineHeight(cm, start, end) { - if (end === void 0) { - end = Number.MAX_VALUE; - } - - var lineInfo = cm.lineInfo(start); - - if (!lineInfo) { - return 0; - } - - var detailLineInfo = lineInfo.handle; - var height = 0; - - while (start <= end && !detailLineInfo.text.trim()) { - height += detailLineInfo.height; - start += 1; - detailLineInfo = cm.lineInfo(start).handle; - } - - return height; -} -function getTotalOffsetTop(el, root) { - var offsetTop = 0; - - while (el && el !== root) { - if (!Object(_utils_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ "a"])(nestableTagNames, el.tagName)) { - offsetTop += el.offsetTop; - } - - if (el.offsetParent === root.offsetParent) { - break; - } - - el = el.parentElement; - } - - return offsetTop; -} -function findAdjacentElementToScrollTop(scrollTop, root) { - var el = root; - var prev = null; - - while (el) { - var _el = el, - firstElementChild = _el.firstElementChild; - - if (!firstElementChild) { - break; - } - - var lastSibling = findLastSiblingElementToScrollTop(firstElementChild, scrollTop, getTotalOffsetTop(el, root)); - prev = el; - el = lastSibling; - } - - var adjacentEl = el || prev; - return adjacentEl === root ? null : adjacentEl; -} - -function findLastSiblingElementToScrollTop(el, scrollTop, offsetTop) { - if (el && scrollTop > offsetTop + el.offsetTop) { - return findLastSiblingElementToScrollTop(el.nextElementSibling, scrollTop, offsetTop) || el; - } - - return null; -} - -function getFallbackScrollTop(scrollInfo) { - var latestScrollTop = scrollInfo.latestScrollTop, - scrollTop = scrollInfo.scrollTop, - targetScrollTop = scrollInfo.targetScrollTop, - sourceScrollTop = scrollInfo.sourceScrollTop; - - if (latestScrollTop === null) { - return targetScrollTop; - } - - return latestScrollTop < scrollTop ? Math.max(targetScrollTop, sourceScrollTop) : Math.min(targetScrollTop, sourceScrollTop); -} - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Bind DOM events - * @author NHN FE Development Lab - */ - - - -var isString = __webpack_require__(9); -var forEach = __webpack_require__(26); - -var safeEvent = __webpack_require__(40); - -/** - * Bind DOM events. - * @param {HTMLElement} element - element to bind events - * @param {(string|object)} types - Space splitted events names or eventName:handler object - * @param {(function|object)} handler - handler function or context for handler method - * @param {object} [context] context - context for handler method. - * @memberof module:domEvent - * @example - * var div = document.querySelector('div'); - * - * // Bind one event to an element. - * on(div, 'click', toggle); - * - * // Bind multiple events with a same handler to multiple elements at once. - * // Use event names splitted by a space. - * on(div, 'mouseenter mouseleave', changeColor); - * - * // Bind multiple events with different handlers to an element at once. - * // Use an object which of key is an event name and value is a handler function. - * on(div, { - * keydown: highlight, - * keyup: dehighlight - * }); - * - * // Set a context for handler method. - * var name = 'global'; - * var repository = {name: 'CodeSnippet'}; - * on(div, 'drag', function() { - * console.log(this.name); - * }, repository); - * // Result when you drag a div: "CodeSnippet" - */ -function on(element, types, handler, context) { - if (isString(types)) { - forEach(types.split(/\s+/g), function(type) { - bindEvent(element, type, handler, context); - }); - - return; - } - - forEach(types, function(func, type) { - bindEvent(element, type, func, handler); - }); -} - -/** - * Bind DOM events - * @param {HTMLElement} element - element to bind events - * @param {string} type - events name - * @param {function} handler - handler function or context for handler method - * @param {object} [context] context - context for handler method. - * @private - */ -function bindEvent(element, type, handler, context) { - /** - * Event handler - * @param {Event} e - event object - */ - function eventHandler(e) { - handler.call(context || element, e || window.event); - } - - if ('addEventListener' in element) { - element.addEventListener(type, eventHandler); - } else if ('attachEvent' in element) { - element.attachEvent('on' + type, eventHandler); - } - memorizeHandler(element, type, handler, eventHandler); -} - -/** - * Memorize DOM event handler for unbinding. - * @param {HTMLElement} element - element to bind events - * @param {string} type - events name - * @param {function} handler - handler function that user passed at on() use - * @param {function} wrappedHandler - handler function that wrapped by domevent for implementing some features - * @private - */ -function memorizeHandler(element, type, handler, wrappedHandler) { - var events = safeEvent(element, type); - var existInEvents = false; - - forEach(events, function(obj) { - if (obj.handler === handler) { - existInEvents = true; - - return false; - } - - return true; - }); - - if (!existInEvents) { - events.push({ - handler: handler, - wrappedHandler: wrappedHandler - }); - } -} - -module.exports = on; - - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Unbind DOM events - * @author NHN FE Development Lab - */ - - - -var isString = __webpack_require__(9); -var forEach = __webpack_require__(26); - -var safeEvent = __webpack_require__(40); - -/** - * Unbind DOM events - * If a handler function is not passed, remove all events of that type. - * @param {HTMLElement} element - element to unbind events - * @param {(string|object)} types - Space splitted events names or eventName:handler object - * @param {function} [handler] - handler function - * @memberof module:domEvent - * @example - * // Following the example of domEvent#on - * - * // Unbind one event from an element. - * off(div, 'click', toggle); - * - * // Unbind multiple events with a same handler from multiple elements at once. - * // Use event names splitted by a space. - * off(element, 'mouseenter mouseleave', changeColor); - * - * // Unbind multiple events with different handlers from an element at once. - * // Use an object which of key is an event name and value is a handler function. - * off(div, { - * keydown: highlight, - * keyup: dehighlight - * }); - * - * // Unbind events without handlers. - * off(div, 'drag'); - */ -function off(element, types, handler) { - if (isString(types)) { - forEach(types.split(/\s+/g), function(type) { - unbindEvent(element, type, handler); - }); - - return; - } - - forEach(types, function(func, type) { - unbindEvent(element, type, func); - }); -} - -/** - * Unbind DOM events - * If a handler function is not passed, remove all events of that type. - * @param {HTMLElement} element - element to unbind events - * @param {string} type - events name - * @param {function} [handler] - handler function - * @private - */ -function unbindEvent(element, type, handler) { - var events = safeEvent(element, type); - var index; - - if (!handler) { - forEach(events, function(item) { - removeHandler(element, type, item.wrappedHandler); - }); - events.splice(0, events.length); - } else { - forEach(events, function(item, idx) { - if (handler === item.handler) { - removeHandler(element, type, item.wrappedHandler); - index = idx; - - return false; - } - - return true; - }); - events.splice(index, 1); - } -} - -/** - * Remove an event handler - * @param {HTMLElement} element - An element to remove an event - * @param {string} type - event type - * @param {function} handler - event handler - * @private - */ -function removeHandler(element, type, handler) { - if ('removeEventListener' in element) { - element.removeEventListener(type, handler); - } else if ('detachEvent' in element) { - element.detachEvent('on' + type, handler); - } -} - -module.exports = off; - - -/***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Execute the provided callback once for each element present in the array(or Array-like object) in ascending order. - * @author NHN FE Development Lab - */ - - - -/** - * Execute the provided callback once for each element present - * in the array(or Array-like object) in ascending order. - * If the callback function returns false, the loop will be stopped. - * Callback function(iteratee) is invoked with three arguments: - * 1) The value of the element - * 2) The index of the element - * 3) The array(or Array-like object) being traversed - * @param {Array|Arguments|NodeList} arr The array(or Array-like object) that will be traversed - * @param {function} iteratee Callback function - * @param {Object} [context] Context(this) of callback function - * @memberof module:collection - * @example - * var forEachArray = require('tui-code-snippet/collection/forEachArray'); // node, commonjs - * - * var sum = 0; - * - * forEachArray([1,2,3], function(value){ - * sum += value; - * }); - * alert(sum); // 6 - */ -function forEachArray(arr, iteratee, context) { - var index = 0; - var len = arr.length; - - context = context || null; - - for (; index < len; index += 1) { - if (iteratee.call(context, arr[index], index, arr) === false) { - break; - } - } -} - -module.exports = forEachArray; - - -/***/ }), -/* 22 */ -/***/ (function(module, exports) { - -!function(e,t){for(var r in t)e[r]=t[r]}(exports,function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/dist",r(r.s=11)}([function(e,t,r){"use strict";r.r(t),r.d(t,"__extends",(function(){return i})),r.d(t,"__assign",(function(){return o})),r.d(t,"__rest",(function(){return a})),r.d(t,"__decorate",(function(){return s})),r.d(t,"__param",(function(){return l})),r.d(t,"__metadata",(function(){return u})),r.d(t,"__awaiter",(function(){return c})),r.d(t,"__generator",(function(){return p})),r.d(t,"__createBinding",(function(){return f})),r.d(t,"__exportStar",(function(){return d})),r.d(t,"__values",(function(){return h})),r.d(t,"__read",(function(){return g})),r.d(t,"__spread",(function(){return m})),r.d(t,"__spreadArrays",(function(){return v})),r.d(t,"__await",(function(){return b})),r.d(t,"__asyncGenerator",(function(){return y})),r.d(t,"__asyncDelegator",(function(){return C})),r.d(t,"__asyncValues",(function(){return x})),r.d(t,"__makeTemplateObject",(function(){return k})),r.d(t,"__importStar",(function(){return N})),r.d(t,"__importDefault",(function(){return w})),r.d(t,"__classPrivateFieldGet",(function(){return D})),r.d(t,"__classPrivateFieldSet",(function(){return L})); -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ -var n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function i(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var o=function(){return(o=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=0;s--)(i=e[s])&&(a=(o<3?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a}function l(e,t){return function(r,n){t(r,n,e)}}function u(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function c(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{l(n.next(e))}catch(e){o(e)}}function s(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}l((n=n.apply(e,t||[])).next())}))}function p(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function g(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a}function m(){for(var e=[],t=0;t1||s(e,t)}))})}function s(e,t){try{(r=i[e](t)).value instanceof b?Promise.resolve(r.value.v).then(l,u):c(o[0][2],r)}catch(e){c(o[0][3],e)}var r}function l(e){s("next",e)}function u(e){s("throw",e)}function c(e,t){e(t),o.shift(),o.length&&s(o[0][0],o[0][1])}}function C(e){var t,r;return t={},n("next"),n("throw",(function(e){throw e})),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,i){t[n]=e[n]?function(t){return(r=!r)?{value:b(e[n](t)),done:"return"===n}:i?i(t):t}:i}}function x(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=h(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,i){(function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)})(n,i,(t=e[r](t)).done,t.value)}))}}}function k(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function N(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function w(e){return e&&e.__esModule?e:{default:e}}function D(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)}function L(e,t,r){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,r),r}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.text=t.isRefDef=t.isTable=t.isList=t.isHeading=t.isHtmlBlock=t.isCodeBlock=t.createNode=t.RefDefNode=t.TableCellNode=t.TableNode=t.CodeNode=t.HtmlBlockNode=t.CodeBlockNode=t.LinkNode=t.HeadingNode=t.ListNode=t.BlockNode=t.Node=t.removeAllNode=t.removeNodeById=t.getNodeById=t.isContainer=void 0;var n=r(0),i=n.__importDefault(r(18));function o(e){switch(e.type){case"document":case"blockQuote":case"list":case"item":case"paragraph":case"heading":case"emph":case"strong":case"strike":case"link":case"image":case"table":case"tableHead":case"tableBody":case"tableRow":case"tableCell":case"tableDelimRow":return!0;default:return!1}}t.isContainer=o;var a=1,s={};t.getNodeById=function(e){return s[e]},t.removeNodeById=function(e){delete s[e]},t.removeAllNode=function(){s={}};var l=function(){function e(e,t){this.parent=null,this.prev=null,this.next=null,this.firstChild=null,this.lastChild=null,this.literal=null,this.id="document"===e?-1:a++,this.type=e,this.sourcepos=t,s[this.id]=this}return e.prototype.isContainer=function(){return o(this)},e.prototype.unlink=function(){this.prev?this.prev.next=this.next:this.parent&&(this.parent.firstChild=this.next),this.next?this.next.prev=this.prev:this.parent&&(this.parent.lastChild=this.prev),this.parent=null,this.next=null,this.prev=null},e.prototype.replaceWith=function(e){this.insertBefore(e),this.unlink()},e.prototype.insertAfter=function(e){e.unlink(),e.next=this.next,e.next&&(e.next.prev=e),e.prev=this,this.next=e,this.parent&&(e.parent=this.parent,e.next||(e.parent.lastChild=e))},e.prototype.insertBefore=function(e){e.unlink(),e.prev=this.prev,e.prev&&(e.prev.next=e),e.next=this,this.prev=e,e.parent=this.parent,e.prev||(e.parent.firstChild=e)},e.prototype.appendChild=function(e){e.unlink(),e.parent=this,this.lastChild?(this.lastChild.next=e,e.prev=this.lastChild,this.lastChild=e):(this.firstChild=e,this.lastChild=e)},e.prototype.prependChild=function(e){e.unlink(),e.parent=this,this.firstChild?(this.firstChild.prev=e,e.next=this.firstChild,this.firstChild=e):(this.firstChild=e,this.lastChild=e)},e.prototype.walker=function(){return new i.default(this)},e}();t.Node=l;var u=function(e){function t(t,r){var n=e.call(this,t,r)||this;return n.open=!0,n.lineOffsets=null,n.stringContent=null,n.lastLineBlank=!1,n.lastLineChecked=!1,n.customType=null,n.type=t,n}return n.__extends(t,e),t}(l);t.BlockNode=u;var c=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.listData=null,t}return n.__extends(t,e),t}(u);t.ListNode=c;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.level=0,t.headingType="atx",t}return n.__extends(t,e),t}(u);t.HeadingNode=p;var f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.destination=null,t.title=null,t.extendedAutolink=!1,t}return n.__extends(t,e),t}(l);t.LinkNode=f;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.isFenced=!1,t.fenceChar=null,t.fenceLength=0,t.fenceOffset=-1,t.info=null,t.infoPadding=0,t}return n.__extends(t,e),t}(u);t.CodeBlockNode=d;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.htmlBlockType=-1,t}return n.__extends(t,e),t}(u);t.HtmlBlockNode=h;var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.tickCount=0,t}return n.__extends(t,e),t}(l);t.CodeNode=g;var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.columns=[],t}return n.__extends(t,e),t}(u);t.TableNode=m;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.startIdx=0,t.endIdx=0,t.paddingLeft=0,t.paddingRight=0,t.ignored=!1,t}return n.__extends(t,e),t}(u);t.TableCellNode=v;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.title="",t.dest="",t.label="",t}return n.__extends(t,e),t}(u);function y(e,t){switch(e){case"heading":return new p(e,t);case"list":case"item":return new c(e,t);case"link":case"image":return new f(e,t);case"codeBlock":return new d(e,t);case"htmlBlock":return new h(e,t);case"table":return new m(e,t);case"tableCell":return new v(e,t);case"document":case"paragraph":case"blockQuote":case"thematicBreak":case"tableRow":case"tableBody":case"tableHead":return new u(e,t);case"code":return new g(e,t);case"refDef":return new b(e,t);default:return new l(e,t)}}t.RefDefNode=b,t.createNode=y,t.isCodeBlock=function(e){return"codeBlock"===e.type},t.isHtmlBlock=function(e){return"htmlBlock"===e.type},t.isHeading=function(e){return"heading"===e.type},t.isList=function(e){return"list"===e.type},t.isTable=function(e){return"table"===e.type},t.isRefDef=function(e){return"refDef"===e.type},t.text=function(e,t){var r=y("text",t);return r.literal=e,r}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isEmpty=t.last=t.repeat=t.escapeXml=t.normalizeURI=t.unescapeString=t.ESCAPABLE=t.ENTITY=void 0;var n=r(0).__importDefault(r(12)),i=r(8);t.ENTITY="&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});";var o=/[\\&]/;t.ESCAPABLE="[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]";var a=new RegExp("\\\\"+t.ESCAPABLE+"|"+t.ENTITY,"gi"),s=new RegExp('[&<>"]',"g"),l=function(e){return 92===e.charCodeAt(0)?e.charAt(1):i.decodeHTML(e)};function u(e){switch(e){case"&":return"&";case"<":return"<";case">":return">";case'"':return""";default:return e}}t.unescapeString=function(e){return o.test(e)?e.replace(a,l):e},t.normalizeURI=function(e){try{return n.default(e)}catch(t){return e}},t.escapeXml=function(e){return s.test(e)?e.replace(s,u):e},t.repeat=function(e,t){for(var r=[],n=0;nt&&(t+=1),this.root.sourcepos[1]=[t+1,e[t].length]},e.prototype.replaceRangeNodes=function(e,t,r){e?(a.insertNodesBefore(e,r),a.removeNextUntil(e,t),[e.id,t.id].forEach((function(e){return o.removeNodeById(e)})),e.unlink()):t?(a.insertNodesBefore(t,r),o.removeNodeById(t.id),t.unlink()):a.prependChildNodes(this.root,r)},e.prototype.getNodeRange=function(e,t){var r=a.findChildNodeAtLine(this.root,e[0]),n=a.findChildNodeAtLine(this.root,t[0]);return n&&n.next&&t[0]+1===n.next.sourcepos[0][0]&&(n=n.next),a.getRangeForCustomType(r,n)},e.prototype.trigger=function(e,t){this.eventHandlerMap[e].forEach((function(e){e(t)}))},e.prototype.extendEndLine=function(e){for(;""===this.lineTexts[e];)e+=1;return e},e.prototype.parseRange=function(e,t,r,n){var i;e&&e.prev&&(o.isList(e.prev)&&function(e){var t=e.match(/^[ \t]+/);if(t&&(t[0].length>=2||/\t/.test(t[0])))return!0;var r=t?e.slice(t.length):e;return s.reBulletListMarker.test(r)||s.reOrderedListMarker.test(r)}(this.lineTexts[r-1])||o.isTable(e.prev)&&(i=this.lineTexts[r-1],!u.isBlank(i)&&-1!==i.indexOf("|")))&&(r=(e=e.prev).sourcepos[0][0]);for(var l=this.lineTexts.slice(r-1,n),c=this.parser.partialParseStart(r,l),p=t?t.next:this.root.firstChild,f=c.lastChild,d=f&&o.isCodeBlock(f),h=f&&o.isList(f);d&&p||h&&p&&("list"===p.type||p.sourcepos[0][1]>=2);){var g=this.extendEndLine(p.sourcepos[1][0]);this.parser.partialParseExtends(this.lineTexts.slice(n,g)),e||(e=t),t=p,n=g,p=p.next}return this.parser.partialParseFinish(),{newNodes:a.getChildNodes(c),extStartNode:e,extEndNode:t}},e.prototype.getRemovedNodeRange=function(e,t){return!e||e&&o.isRefDef(e)||t&&o.isRefDef(t)?null:{id:[e.id,t.id],line:[e.sourcepos[0][0]-1,t.sourcepos[1][0]-1]}},e.prototype.markDeletedRefMap=function(e,t){var r=this;if(!l.isEmptyObj(this.refMap)){var n=function(e){if(o.isRefDef(e)){var t=r.refMap[e.label];t&&e.id===t.id&&(t.unlinked=!0)}};e&&a.invokeNextUntil(n,e.parent,t),t&&a.invokeNextUntil(n,t)}},e.prototype.replaceWithNewRefDefState=function(e){var t=this;if(!l.isEmptyObj(this.refMap)){var r=function(e){if(o.isRefDef(e)){var r=e.label,n=t.refMap[r];n&&!n.unlinked||(t.refMap[r]=p(e))}};e.forEach((function(e){a.invokeNextUntil(r,e)}))}},e.prototype.replaceWithRefDefCandidate=function(){var e=this;l.isEmptyObj(this.refDefCandidateMap)||l.iterateObject(this.refDefCandidateMap,(function(t,r){var n=r.label,i=r.sourcepos,o=e.refMap[n];(!o||o.unlinked||o.sourcepos[0][0]>i[0][0])&&(e.refMap[n]=p(r))}))},e.prototype.getRangeWithRefDef=function(e,t,r,n,i){if(this.referenceDefinition&&!l.isEmptyObj(this.refMap)){var s=a.findChildNodeAtLine(this.root,e-1),u=a.findChildNodeAtLine(this.root,t+1);s&&o.isRefDef(s)&&s!==r&&s!==n&&(e=(r=s).sourcepos[0][0]),u&&o.isRefDef(u)&&u!==r&&u!==n&&(n=u,t=this.extendEndLine(n.sourcepos[1][0]+i))}return[r,n,e,t]},e.prototype.parseWithFrontMatter=function(e,t,r){void 0===r&&(r=0);var i=n.__spreadArrays(this.lineTexts),o=c.getFrontMatterPos(this.lineTexts),a=o[0],s=o[1];a>-1&&s>-1&&(this.lineTexts[a]=c.frontMatterOpen,this.lineTexts[s]=c.frontMatterClose,a>=t[0]-1&&(t[0]=s+1),a<=e[0]-1&&s>=t[0]-1&&(e[0]=a+1,t[0]=s+1));var l=this.parse(e,t,r);return this.lineTexts=i,l},e.prototype.parse=function(e,t,r){void 0===r&&(r=0);var n=this.getNodeRange(e,t),i=n[0],o=n[1],a=i?Math.min(i.sourcepos[0][0],e[0]):e[0],s=this.extendEndLine((o?Math.max(o.sourcepos[1][0],t[0]):t[0])+r),l=this.parseRange.apply(this,this.getRangeWithRefDef(a,s,i,o,r)),u=l.newNodes,c=l.extStartNode,p=l.extEndNode,f=this.getRemovedNodeRange(c,p),d=p?p.next:this.root.firstChild;return this.referenceDefinition?(this.markDeletedRefMap(c,p),this.replaceRangeNodes(c,p,u),this.replaceWithNewRefDefState(u)):this.replaceRangeNodes(c,p,u),{nodes:u,removedNodeRange:f,nextNode:d}},e.prototype.parseRefLink=function(){var e=this,t=[];return l.isEmptyObj(this.refMap)||l.iterateObject(this.refMap,(function(r,n){n.unlinked&&delete e.refMap[r],l.iterateObject(e.refLinkCandidateMap,(function(n,i){var o=i.node;i.refLabel===r&&t.push(e.parse(o.sourcepos[0],o.sourcepos[1]))}))})),t},e.prototype.removeUnlinkedCandidate=function(){l.isEmptyObj(this.refDefCandidateMap)||[this.refLinkCandidateMap,this.refDefCandidateMap].forEach((function(e){l.iterateObject(e,(function(t){a.isUnlinked(t)&&delete e[t]}))}))},e.prototype.editMarkdown=function(e,t,r){var n=this.updateLineTexts(e,t,r),i=this.frontMatter?this.parseWithFrontMatter(e,t,n):this.parse(e,t,n),o=l.omit(i,"nextNode");a.updateNextLineNumbers(i.nextNode,n),this.updateRootNodeState();var s=[o];return this.referenceDefinition&&(this.removeUnlinkedCandidate(),this.replaceWithRefDefCandidate(),s=s.concat(this.parseRefLink())),this.trigger("change",s),s},e.prototype.getLineTexts=function(){return this.lineTexts},e.prototype.getRootNode=function(){return this.root},e.prototype.findNodeAtPosition=function(e){var t=a.findNodeAtPosition(this.root,e);return t&&t!==this.root?t:null},e.prototype.findFirstNodeAtLine=function(e){return a.findFirstNodeAtLine(this.root,e)},e.prototype.on=function(e,t){this.eventHandlerMap[e].push(t)},e.prototype.off=function(e,t){var r=this.eventHandlerMap[e],n=r.indexOf(t);r.splice(n,1)},e.prototype.findNodeById=function(e){return a.findNodeById(e)},e.prototype.removeAllNode=function(){o.removeAllNode()},e}();t.ToastMark=f},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getFrontMatterPos=t.replaceFrontMatter=t.frontMatterClose=t.frontMatterOpen=void 0,t.frontMatterOpen="{:f",t.frontMatterClose="f:}";var n=/^---$/,i=/^---$([\s\S]*)^---$/m;t.replaceFrontMatter=function(e){var r=e.trim();return/^---/.test(r)&&function(e){return i.test(e)}(r)?e.replace(i,t.frontMatterOpen+"$1"+t.frontMatterClose):e},t.getFrontMatterPos=function(e){for(var t=-1,r=-1,i=0;i0)break;n.test(o)&&(t<0?t=i:r=i)}return[t,r]}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Parser=void 0;var n=r(0),i=r(2),o=r(1),a=r(19),s=r(22),l=r(4),u=r(10),c=r(3),p=r(6),f=r(26),d=[/./,/<\/(?:script|pre|style)>/i,/-->/,/\?>/,/>/,/\]\]>/],h=/^[#`~*+_=<>0-9-]/,g=/\r\n|\n|\r/;function m(){return o.createNode("document",[[1,1],[0,0]])}var v={smart:!1,tagFilter:!1,extendedAutolinks:!1,disallowedHtmlBlockTags:[],referenceDefinition:!1,disallowDeepHeading:!1,customParser:null,frontMatter:!1},b=function(){function e(e){this.options=n.__assign(n.__assign({},v),e),this.doc=m(),this.tip=this.doc,this.oldtip=this.doc,this.lineNumber=0,this.offset=0,this.column=0,this.nextNonspace=0,this.nextNonspaceColumn=0,this.indent=0,this.currentLine="",this.indented=!1,this.blank=!1,this.partiallyConsumedTab=!1,this.allClosed=!0,this.lastMatchedContainer=this.doc,this.refMap={},this.refLinkCandidateMap={},this.refDefCandidateMap={},this.lastLineLength=0,this.options.frontMatter&&(this.options.customParser=n.__assign(n.__assign({},f.frontMatterParser),this.options.customParser)),this.inlineParser=new a.InlineParser(this.options)}return e.prototype.advanceOffset=function(e,t){void 0===t&&(t=!1);for(var r,n,i,o=this.currentLine;e>0&&(i=o[this.offset]);)"\t"===i?(r=4-this.column%4,t?(this.partiallyConsumedTab=r>e,n=r>e?e:r,this.column+=n,this.offset+=this.partiallyConsumedTab?0:1,e-=n):(this.partiallyConsumedTab=!1,this.column+=r,this.offset+=1,e-=1)):(this.partiallyConsumedTab=!1,this.offset+=1,this.column+=1,e-=1)},e.prototype.advanceNextNonspace=function(){this.offset=this.nextNonspace,this.column=this.nextNonspaceColumn,this.partiallyConsumedTab=!1},e.prototype.findNextNonspace=function(){for(var e,t=this.currentLine,r=this.offset,n=this.column;""!==(e=t.charAt(r));)if(" "===e)r++,n++;else{if("\t"!==e)break;r++,n+=4-n%4}this.blank="\n"===e||"\r"===e||""===e,this.nextNonspace=r,this.nextNonspaceColumn=n,this.indent=this.nextNonspaceColumn-this.column,this.indented=this.indent>=l.CODE_INDENT},e.prototype.addLine=function(){if(this.partiallyConsumedTab){this.offset+=1;var e=4-this.column%4;this.tip.stringContent+=i.repeat(" ",e)}this.tip.lineOffsets?this.tip.lineOffsets.push(this.offset):this.tip.lineOffsets=[this.offset],this.tip.stringContent+=this.currentLine.slice(this.offset)+"\n"},e.prototype.addChild=function(e,t){for(;!s.blockHandlers[this.tip.type].canContain(e);)this.finalize(this.tip,this.lineNumber-1);var r=t+1,n=o.createNode(e,[[this.lineNumber,r],[0,0]]);return n.stringContent="",this.tip.appendChild(n),this.tip=n,n},e.prototype.closeUnmatchedBlocks=function(){if(!this.allClosed){for(;this.oldtip!==this.lastMatchedContainer;){var e=this.oldtip.parent;this.finalize(this.oldtip,this.lineNumber-1),this.oldtip=e}this.allClosed=!0}},e.prototype.finalize=function(e,t){var r=e.parent;e.open=!1,e.sourcepos[1]=[t,this.lastLineLength],s.blockHandlers[e.type].finalize(this,e),this.tip=r},e.prototype.processInlines=function(e){var t,r=this.options.customParser,n=e.walker();for(this.inlineParser.refMap=this.refMap,this.inlineParser.refLinkCandidateMap=this.refLinkCandidateMap,this.inlineParser.refDefCandidateMap=this.refDefCandidateMap,this.inlineParser.options=this.options;t=n.next();){var i=t.node,o=t.entering,a=i.type;r&&r[a]&&r[a](i,{entering:o,options:this.options}),o||"paragraph"!==a&&"heading"!==a&&("tableCell"!==a||i.ignored)||this.inlineParser.parse(i)}},e.prototype.incorporateLine=function(e){var t=this.doc;this.oldtip=this.tip,this.offset=0,this.column=0,this.blank=!1,this.partiallyConsumedTab=!1,this.lineNumber+=1,-1!==e.indexOf("\0")&&(e=e.replace(/\0/g,"�")),this.currentLine=e;for(var r,n=!0;(r=t.lastChild)&&r.open;){switch(t=r,this.findNextNonspace(),s.blockHandlers[t.type].continue(this,t)){case 0:break;case 1:n=!1;break;case 2:return void(this.lastLineLength=e.length);default:throw new Error("continue returned illegal value, must be 0, 1, or 2")}if(!n){t=t.parent;break}}this.allClosed=t===this.oldtip,this.lastMatchedContainer=t;for(var i="paragraph"!==t.type&&s.blockHandlers[t.type].acceptsLines,a=u.blockStarts.length;!i;){if(this.findNextNonspace(),"table"!==t.type&&"tableBody"!==t.type&&"paragraph"!==t.type&&!this.indented&&!h.test(e.slice(this.nextNonspace))){this.advanceNextNonspace();break}for(var l=0;l=1&&t.htmlBlockType<=5&&d[t.htmlBlockType].test(this.currentLine.slice(this.offset))&&(this.lastLineLength=e.length,this.finalize(t,this.lineNumber))):this.offset`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*/?>",t.CLOSETAG="]";var n="(?:"+t.OPENTAG+"|"+t.CLOSETAG+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|[<][?].*?[?][>]|]*>|)";t.reHtmlTag=new RegExp("^"+n,"i")},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.blockStarts=t.reOrderedListMarker=t.reBulletListMarker=void 0;var n=r(1),i=r(9),o=r(4),a=r(25),s=/^`{3,}(?!.*`)|^~{3,}/,l=[/./,/^<(?:script|pre|style)(?:\s|>|$)/i,/^/g, ''); - root.innerHTML = html; - } else { - root.appendChild(html); - } - - removeUnnecessaryTags(root); - leaveOnlyWhitelistAttribute(root); - return _utils_dom__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].finalizeHtml(root, needHtmlText); -} -/** - * Removes unnecessary tags. - * @param {HTMLElement} html - root element - * @private - */ - - -function removeUnnecessaryTags(html) { - var removedTags = _utils_dom__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].findAll(html, 'script, iframe, textarea, form, button, select, input, meta, style, link, title, embed, object, details, summary'); - removedTags.forEach(function (node) { - _utils_dom__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].remove(node); - }); -} -/** - * Checks whether the attribute and value that causing XSS or not. - * @param {string} attrName - name of attribute - * @param {string} attrValue - value of attirbute - * @param {boolean} state - * @private - */ - - -function isXSSAttribute(attrName, attrValue) { - return attrName.match(XSS_ATTR_RX) && attrValue.match(XSS_VALUE_RX); -} -/** - * Removes attributes of blacklist from node. - * @param {HTMLElement} node - node to remove attributes - * @param {NamedNodeMap} blacklistAttrs - attributes of blacklist - * @private - */ - - -function removeBlacklistAttributes(node, blacklistAttrs) { - tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(blacklistAttrs).forEach(function (_ref) { - var name = _ref.name; - - if (ON_EVENT_RX.test(name)) { - node[name] = null; - } - - if (node.getAttribute(name)) { - node.removeAttribute(name); - } - }); -} -/** - * Leaves only white list attributes. - * @param {HTMLElement} html - root element - * @private - */ - - -function leaveOnlyWhitelistAttribute(html) { - _utils_dom__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].findAll(html, '*').forEach(function (node) { - var attributes = node.attributes; - var blacklist = tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(attributes).filter(function (attr) { - var name = attr.name, - value = attr.value; - var htmlAttr = name.match(HTML_ATTR_LIST_RX); - var svgAttr = name.match(SVG_ATTR_LIST_RX); - var xssAttr = htmlAttr && isXSSAttribute(name, value); - return !htmlAttr && !svgAttr || xssAttr; - }); - removeBlacklistAttributes(node, blacklist); - }); -} - -/* harmony default export */ __webpack_exports__["a"] = (htmlSanitizer); - -/***/ }), -/* 26 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Execute the provided callback once for each property of object(or element of array) which actually exist. - * @author NHN FE Development Lab - */ - - - -var isArray = __webpack_require__(17); -var forEachArray = __webpack_require__(21); -var forEachOwnProperties = __webpack_require__(10); - -/** - * @module collection - */ - -/** - * Execute the provided callback once for each property of object(or element of array) which actually exist. - * If the object is Array-like object(ex-arguments object), It needs to transform to Array.(see 'ex2' of example). - * If the callback function returns false, the loop will be stopped. - * Callback function(iteratee) is invoked with three arguments: - * 1) The value of the property(or The value of the element) - * 2) The name of the property(or The index of the element) - * 3) The object being traversed - * @param {Object} obj The object that will be traversed - * @param {function} iteratee Callback function - * @param {Object} [context] Context(this) of callback function - * @memberof module:collection - * @example - * var forEach = require('tui-code-snippet/collection/forEach'); // node, commonjs - * - * var sum = 0; - * - * forEach([1,2,3], function(value){ - * sum += value; - * }); - * alert(sum); // 6 - * - * // In case of Array-like object - * var array = Array.prototype.slice.call(arrayLike); // change to array - * forEach(array, function(value){ - * sum += value; - * }); - */ -function forEach(obj, iteratee, context) { - if (isArray(obj)) { - forEachArray(obj, iteratee, context); - } else { - forEachOwnProperties(obj, iteratee, context); - } -} - -module.exports = forEach; - - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is a function or not. - * @author NHN FE Development Lab - */ - - - -/** - * Check whether the given variable is a function or not. - * If the given variable is a function, return true. - * @param {*} obj - Target for checking - * @returns {boolean} Is function? - * @memberof module:type - */ -function isFunction(obj) { - return obj instanceof Function; -} - -module.exports = isFunction; - - -/***/ }), -/* 28 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is existing or not. - * @author NHN FE Development Lab - */ - - - -var isUndefined = __webpack_require__(8); -var isNull = __webpack_require__(48); - -/** - * Check whether the given variable is existing or not. - * If the given variable is not null and not undefined, returns true. - * @param {*} param - Target for checking - * @returns {boolean} Is existy? - * @memberof module:type - * @example - * var isExisty = require('tui-code-snippet/type/isExisty'); // node, commonjs - * - * isExisty(''); //true - * isExisty(0); //true - * isExisty([]); //true - * isExisty({}); //true - * isExisty(null); //false - * isExisty(undefined); //false -*/ -function isExisty(param) { - return !isUndefined(param) && !isNull(param); -} - -module.exports = isExisty; - - -/***/ }), -/* 29 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getHTMLRenderConvertors; }); -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -var baseConvertors = { - paragraph: function paragraph(node, _ref) { - var entering = _ref.entering, - origin = _ref.origin, - options = _ref.options; - var nodeId = options.nodeId, - _options$customProp = options.customProp, - customProp = _options$customProp === void 0 ? {} : _options$customProp; - var showFrontMatter = customProp.showFrontMatter && node.customType; // prevent paragraph from being removed when it's child of tight list item - // to show highlight style in live-preview mode - - if (nodeId && !node.customType || showFrontMatter) { - return { - type: entering ? 'openTag' : 'closeTag', - outerNewLine: true, - tagName: 'p' - }; - } - - return origin(); - }, - softbreak: function softbreak(node) { - var isPrevNodeHTML = node.prev && node.prev.type === 'htmlInline'; - var isPrevBR = isPrevNodeHTML && /
/.test(node.prev.literal); - var content = isPrevBR ? '\n' : '
\n'; - return { - type: 'html', - content: content - }; - }, - item: function item(node, _ref2) { - var entering = _ref2.entering; - - if (entering) { - var attributes = {}; - var classNames = []; - - if (node.listData.task) { - attributes['data-te-task'] = ''; - classNames.push('task-list-item'); - - if (node.listData.checked) { - classNames.push('checked'); - } - } - - return { - type: 'openTag', - tagName: 'li', - classNames: classNames, - attributes: attributes, - outerNewLine: true - }; - } - - return { - type: 'closeTag', - tagName: 'li', - outerNewLine: true - }; - }, - code: function code(node) { - var attributes = { - 'data-backticks': node.tickCount - }; - return [{ - type: 'openTag', - tagName: 'code', - attributes: attributes - }, { - type: 'text', - content: node.literal - }, { - type: 'closeTag', - tagName: 'code' - }]; - }, - codeBlock: function codeBlock(node) { - var infoWords = node.info ? node.info.split(/\s+/) : []; - var preClasses = []; - var codeAttrs = {}; - - if (node.fenceLength > 3) { - codeAttrs['data-backticks'] = node.fenceLength; - } - - if (infoWords.length > 0 && infoWords[0].length > 0) { - var lang = infoWords[0]; - preClasses.push("lang-" + lang); - codeAttrs['data-language'] = lang; - } - - return [{ - type: 'openTag', - tagName: 'pre', - classNames: preClasses - }, { - type: 'openTag', - tagName: 'code', - attributes: codeAttrs - }, { - type: 'text', - content: node.literal - }, { - type: 'closeTag', - tagName: 'code' - }, { - type: 'closeTag', - tagName: 'pre' - }]; - } -}; -function getHTMLRenderConvertors(linkAttribute, customConvertors) { - var convertors = _extends({}, baseConvertors); - - if (linkAttribute) { - convertors.link = function (_, _ref3) { - var entering = _ref3.entering, - origin = _ref3.origin; - var result = origin(); - - if (entering) { - result.attributes = _extends({}, result.attributes, linkAttribute); - } - - return result; - }; - } - - if (customConvertors) { - Object.keys(customConvertors).forEach(function (nodeType) { - var orgConvertor = convertors[nodeType]; - var customConvertor = customConvertors[nodeType]; - - if (orgConvertor) { - convertors[nodeType] = function (node, context) { - var newContext = _extends({}, context); - - newContext.origin = function () { - return orgConvertor(node, context); - }; - - return customConvertor(node, newContext); - }; - } else { - convertors[nodeType] = customConvertor; - } - }); - } - - return convertors; -} - -/***/ }), -/* 30 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* unused harmony export CodeBlockManager */ -/** - * @fileoverview Implements CodeBlockManager - * @author NHN FE Development Lab - */ - -/** - * Class Code Block Manager - */ -var CodeBlockManager = /*#__PURE__*/function () { - function CodeBlockManager() { - this._replacers = {}; - } - /** - * Set replacer for code block - * @param {string} language - code block language - * @param {function} replacer - replacer function to code block element - */ - - - var _proto = CodeBlockManager.prototype; - - _proto.setReplacer = function setReplacer(language, replacer) { - language = language.toLowerCase(); - this._replacers[language] = replacer; - } - /** - * get replacer for code block - * @param {string} language - code block type - * @returns {function} - replacer function - */ - ; - - _proto.getReplacer = function getReplacer(language) { - return this._replacers[language]; - } - /** - * Create code block html. - * @param {string} language - code block language - * @param {string} codeText - code text - * @returns {string} - */ - ; - - _proto.createCodeBlockHtml = function createCodeBlockHtml(language, codeText) { - language = language.toLowerCase(); - var replacer = this.getReplacer(language); - - if (replacer) { - return replacer(codeText, language); - } - - return escape(codeText, false); - }; - - return CodeBlockManager; -}(); -/** - * escape code from markdown-it - * @param {string} html HTML string - * @param {string} encode Boolean value of whether encode or not - * @returns {string} - * @ignore - */ - - -function escape(html, encode) { - return html.replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, '''); -} - - -/* harmony default export */ __webpack_exports__["a"] = (new CodeBlockManager()); - -/***/ }), -/* 31 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return invokePlugins; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getPluginInfo; }); -/* harmony import */ var tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17); -/* harmony import */ var tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var tui_code_snippet_type_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27); -/* harmony import */ var tui_code_snippet_type_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isFunction__WEBPACK_IMPORTED_MODULE_1__); -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - - - -/** - * Invoke plugins - * @param {Array.} plugins - list of plugin function only or - * plugin function with options - * @param {Editor|Viewer} editor - editor or viewer instance - */ - -function invokePlugins(plugins, editor) { - plugins.forEach(function (plugin) { - if (tui_code_snippet_type_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(plugin)) { - plugin(editor); - } else if (tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0___default()(plugin)) { - var pluginFn = plugin[0], - _plugin$ = plugin[1], - options = _plugin$ === void 0 ? {} : _plugin$; - pluginFn(editor, options); - } - }); -} -/** - * Get plugin info - * @param {Array.} plugins - list of plugin function only or - * plugin function with options - * @returns {Object} - plugin info - */ - -function getPluginInfo(plugins) { - if (!plugins) { - return {}; - } - - return plugins.reduce(function (acc, plugin) { - var pluginInfo = tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0___default()(plugin) ? plugin[0] : plugin; - - if (!tui_code_snippet_type_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(pluginInfo)) { - var renderer = pluginInfo.renderer, - parser = pluginInfo.parser, - pluginFn = pluginInfo.pluginFn; - plugin = tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0___default()(plugin) ? [pluginFn, plugin[1]] : pluginFn; - - if (renderer) { - acc.renderer = _extends({}, acc.renderer, renderer); - } - - if (parser) { - acc.parser = _extends({}, acc.parser, parser); - } - } - - acc.plugins.push(plugin); - return acc; - }, { - plugins: [], - renderer: {}, - parser: {} - }); -} - -/***/ }), -/* 32 */ -/***/ (function(module, exports, __webpack_require__) { - -/*! - * to-mark - * @version 1.0.1 | Tue Nov 24 2020 - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(true) - module.exports = factory(); - else {} -})(window, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -// ESM COMPAT FLAG -__webpack_require__.r(__webpack_exports__); - -// CONCATENATED MODULE: ./src/domRunner.js -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/** - * @fileoverview Implements DomRunner - * @author NHN Ent. FE Development Lab - */ -var NODE = { - ELEMENT_NODE: 1, - ATTRIBUTE_NODE: 2, - TEXT_NODE: 3 -}; -/** - * DomRunner - * @param {HTMLElement} node A root node that it has nodes to iterate(not iterate itself and its any siblings) - * @class - */ - -var DomRunner = /*#__PURE__*/function () { - function DomRunner(node) { - this._normalizeTextChildren(node); - - this._root = node; - this._current = node; - } - /** - * Iterate next node - * @returns {HTMLElement} next node - */ - - - var _proto = DomRunner.prototype; - - _proto.next = function next() { - var current = this._current; - var node; - - if (this._current) { - node = this._getNextNode(current); - - while (this._isNeedNextSearch(node, current)) { - current = current.parentNode; - node = current.nextSibling; - } - - this._current = node; - } - - return this._current; - } - /** - * Return current node - * @returns {HTMLElement} current node - */ - ; - - _proto.getNode = function getNode() { - this._normalizeTextChildren(this._current); - - return this._current; - }; - - _proto._normalizeTextChildren = function _normalizeTextChildren(node) { - if (!node || node.childNodes.length < 2) { - return; - } - - var childNode = node.firstChild; - var nextNode; - - while (childNode.nextSibling) { - nextNode = childNode.nextSibling; - - if (childNode.nodeType === NODE.TEXT_NODE && nextNode.nodeType === NODE.TEXT_NODE) { - childNode.nodeValue += nextNode.nodeValue; - node.removeChild(nextNode); - } else { - childNode = nextNode; - } - } - } - /** - * Get current node's text content - * @returns {string} text - */ - ; - - _proto.getNodeText = function getNodeText() { - var node = this.getNode(); - var text; - - if (node.nodeType === NODE.TEXT_NODE) { - text = node.nodeValue; - } else { - text = node.textContent || node.innerText; - } - - return text; - } - /** - * Check if there is next node to iterate - * @private - * @param {HTMLElement} node next node - * @param {HTMLElement} current next node - * @returns {boolean} result - */ - ; - - _proto._isNeedNextSearch = function _isNeedNextSearch(node, current) { - return !node && current !== this._root && current.parentNode !== this._root; - } - /** - * Return available next node - * @private - * @param {HTMLElement} current current node - * @returns {node} next node - */ - ; - - _proto._getNextNode = function _getNextNode(current) { - return current.firstChild || current.nextSibling; - }; - - return DomRunner; -}(); - -_defineProperty(DomRunner, "NODE_TYPE", NODE); - - -// CONCATENATED MODULE: ./src/toDom.js -/** - * @fileoverview Implements toDom - * @author NHN Ent. FE Development Lab - */ -var FIND_FIRST_LAST_SPACE_OR_RETURN_OR_TAB_RX = /^[\s\r\n\t]+|[\s\r\n\t]+$/g; -var FIND_RETURN_OR_TAB_BETWEEN_TAGS_RX = />[\r\n\t]+[ ]+<'); // remove spaces more than 1(if need more space, must use  ) - - html = html.replace(FIND_WHOLE_SPACE_MORE_THAN_ONE_BETWEEN_TAGS_RX, '> <'); - return html; -} - -toDom.preProcess = preProcess; -// CONCATENATED MODULE: ./src/renderer.js -function renderer_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/** - * @fileoverview Implements Renderer - * @author NHN Ent. FE Development Lab - */ -var FIND_LEAD_SPACE_RX = /^\u0020/; -var FIND_TRAIL_SPACE_RX = /.+\u0020$/; -var FIND_SPACE_RETURN_TAB_RX = /[\n\s\t]+/g; -var FIND_CHAR_TO_TRIM_RX = /^[\u0020\r\n\t]+|[\u0020\r\n\t]+$/g; // find first and last characters for trim - -var FIND_SPACE_MORE_THAN_ONE_RX = /[\u0020]+/g; // find space more than one - -var FIND_CHAR_TO_ESCAPE_RX = /[>(){}[\]+-.!#|]/g; // find characters that need escape - -var FIND_CHAR_TO_ESCAPE_IN_LINK_RX = /[[\]]/g; // find characters to be escaped in links or images - -var FIND_MARKDOWN_IMAGE_SYNTAX_RX = /!\[.*\]\(.*\)/g; // find markdown image syntax - -var TEXT_NODE = 3; -/** - * Iterate properties of object - * from https://github.com/nhnent/fe.code-snippet/blob/master/src/collection.js - * @param {object} obj object to iterate - * @param {function} iteratee callback function - * @param {*} [context] context of callback - */ - -function forEachOwnProperties(obj, iteratee, context) { - var key; - context = context || null; - - for (key in obj) { - if (obj.hasOwnProperty(key)) { - if (iteratee.call(context, obj[key], key, obj) === false) { - break; - } - } - } -} -/** - * Whether if inline node or not - * @param {Node} node Element - * @returns {boolean} - */ -// eslint-disable-next-line complexity - - -function isInlineNode(node) { - var tag = node.tagName; - return tag === 'S' || tag === 'B' || tag === 'I' || tag === 'EM' || tag === 'STRONG' || tag === 'A' || tag === 'IMG' || tag === 'CODE'; -} -/** - * Returns HTML string of an element using given subContent - * @param {Node} node Element - * @param {string} subContent string content of node - * @returns {string} - */ - - -function getRawHtmlString(node, subContent) { - var tempNode = node.cloneNode(false); - tempNode.innerHTML = subContent; - return tempNode.outerHTML; -} -/** - * Clone rules - * @param {object} destination object for apply rules - * @param {object} source source object for clone rules - */ - - -function cloneRules(destination, source) { - forEachOwnProperties(source, function (value, key) { - if (key !== 'converter') { - if (!destination[key]) { - destination[key] = {}; - } - - cloneRules(destination[key], value); - } else { - destination[key] = value; - } - }); -} -/** - * Renderer - * @param {object} [rules] rules to add - * @class - */ - - -var Renderer = /*#__PURE__*/function () { - function Renderer(rules) { - this.rules = {}; - /** - * Line feed replacement text - * @type string - */ - - this.lineFeedReplacement = "\u200B\u200B"; - - if (rules) { - this.addRules(rules); - } - } - /** - * Add rule - * @param {string} selectorString rule selector - * @param {function} converter converter function - */ - - - var _proto = Renderer.prototype; - - _proto.addRule = function addRule(selectorString, converter) { - var selectors = selectorString.split(', '); - var selector = selectors.pop(); - converter.fname = selectorString; - - while (selector) { - this._setConverterWithSelector(selector, converter); - - selector = selectors.pop(); - } - } - /** - * Add rules using object - * @param {object} rules key(rule selector), value(converter function) - */ - ; - - _proto.addRules = function addRules(rules) { - forEachOwnProperties(rules, function (converter, selectorString) { - this.addRule(selectorString, converter); - }, this); - } - /** - * Remove flanked space of dom node - * @param {string} content text content - * @param {HTMLElement} node current node - * @returns {string} result - */ - // eslint-disable-next-line complexity - ; - - _proto.getSpaceControlled = function getSpaceControlled(content, node) { - var lead = ''; - var trail = ''; - var text; - - if (node.previousSibling && (node.previousSibling.nodeType === TEXT_NODE || isInlineNode(node.previousSibling))) { - text = node.previousSibling.innerHTML || node.previousSibling.nodeValue; - - if (FIND_TRAIL_SPACE_RX.test(text) || FIND_LEAD_SPACE_RX.test(node.innerHTML || node.nodeValue)) { - lead = ' '; - } - } - - if (node.nextSibling && (node.nextSibling.nodeType === TEXT_NODE || isInlineNode(node.nextSibling))) { - text = node.nextSibling.innerHTML || node.nextSibling.nodeValue; - - if (FIND_LEAD_SPACE_RX.test(text) || FIND_TRAIL_SPACE_RX.test(node.innerHTML || node.nodeValue)) { - trail = ' '; - } - } - - return lead + content + trail; - } - /** - * Convert dom node to markdown using dom node and subContent - * @param {HTMLElement} node node to convert - * @param {string} subContent child nodes converted text - * @returns {string} converted text - */ - // eslint-disable-next-line complexity - ; - - _proto.convert = function convert(node, subContent) { - var result; - - var converter = this._getConverter(node); - - if (node && node.nodeType === Node.ELEMENT_NODE && node.hasAttribute('data-tomark-pass')) { - node.removeAttribute('data-tomark-pass'); - result = getRawHtmlString(node, subContent); - } else if (converter) { - result = converter.call(this, node, subContent); - } else if (node) { - result = this.getSpaceControlled(this._getInlineHtml(node, subContent), node); - } - - return result || ''; - }; - - _proto._getInlineHtml = function _getInlineHtml(node, subContent) { - var html = node.outerHTML; - var tagName = node.tagName; - var escapedSubContent = subContent.replace(/\$/g, '$$$$'); // escape $: replace all $ char to $$ before we throw this string to replace - - return html.replace(new RegExp("(<" + tagName + " ?.*?>).*()", 'i'), "$1" + escapedSubContent + "$2"); - } - /** - * Get converter function for node - * @private - * @param {HTMLElement} node node - * @returns {function} converter function - */ - ; - - _proto._getConverter = function _getConverter(node) { - var rulePointer = this.rules; - var converter; - - while (node && rulePointer) { - rulePointer = this._getNextRule(rulePointer, this._getRuleNameFromNode(node)); - node = this._getPrevNode(node); - - if (rulePointer && rulePointer.converter) { - converter = rulePointer.converter; - } - } - - return converter; - } - /** - * Get next rule object - * @private - * @param {object} ruleObj rule object - * @param {string} ruleName rule tag name to find - * @returns {object} rule Object - */ - ; - - _proto._getNextRule = function _getNextRule(ruleObj, ruleName) { - return ruleObj[ruleName]; - } - /** - * Get proper rule tag name from node - * @private - * @param {HTMLElement} node node - * @returns {string} rule tag name - */ - ; - - _proto._getRuleNameFromNode = function _getRuleNameFromNode(node) { - return node.tagName || 'TEXT_NODE'; - } - /** - * Get node's available parent node - * @private - * @param {HTMLElement} node node - * @returns {HTMLElement | undefined} result - */ - ; - - _proto._getPrevNode = function _getPrevNode(node) { - var parentNode = node.parentNode; - var previousNode; - - if (parentNode && !parentNode.__htmlRootByToMark) { - previousNode = parentNode; - } - - return previousNode; - } - /** - * Set converter for selector - * @private - * @param {string} selectors rule selector - * @param {function} converter converter function - */ - ; - - _proto._setConverterWithSelector = function _setConverterWithSelector(selectors, converter) { - var rulePointer = this.rules; - - this._eachSelector(selectors, function (ruleElem) { - if (!rulePointer[ruleElem]) { - rulePointer[ruleElem] = {}; - } - - rulePointer = rulePointer[ruleElem]; - }); - - rulePointer.converter = converter; - } - /** - * Iterate each selectors - * @private - * @param {string} selectors rule selectors - * @param {function} iteratee callback - */ - ; - - _proto._eachSelector = function _eachSelector(selectors, iteratee) { - var selectorArray = selectors.split(' '); - var selectorIndex = selectorArray.length - 1; - - while (selectorIndex >= 0) { - iteratee(selectorArray[selectorIndex]); - selectorIndex -= 1; - } - } - /** - * Trim text - * @param {string} text text be trimed - * @returns {string} trimed text - */ - ; - - _proto.trim = function trim(text) { - return text.replace(FIND_CHAR_TO_TRIM_RX, ''); - } - /** - * Returns whether text empty or not - * @param {string} text text be checked - * @returns {boolean} result - */ - ; - - _proto.isEmptyText = function isEmptyText(text) { - return text.replace(FIND_SPACE_RETURN_TAB_RX, '') === ''; - } - /** - * Collape space more than 2 - * @param {string} text text be collapsed - * @returns {string} result - */ - ; - - _proto.getSpaceCollapsedText = function getSpaceCollapsedText(text) { - return text.replace(FIND_SPACE_MORE_THAN_ONE_RX, ' '); - } - /** - * Apply backslash escape to text - * @param {string} text text be processed - * @returns {string} processed text - */ - ; - - _proto.escapeText = function escapeText(text) { - return text.replace(FIND_CHAR_TO_ESCAPE_RX, function (matched) { - return "\\" + matched; - }); - } - /** - * Escape given text for link - * @param {string} text - text be processed - * @returns {string} - processed text - */ - ; - - _proto.escapeTextForLink = function escapeTextForLink(text) { - var imageSyntaxRanges = []; - var result = FIND_MARKDOWN_IMAGE_SYNTAX_RX.exec(text); - - while (result) { - imageSyntaxRanges.push([result.index, result.index + result[0].length]); - result = FIND_MARKDOWN_IMAGE_SYNTAX_RX.exec(text); - } - - return text.replace(FIND_CHAR_TO_ESCAPE_IN_LINK_RX, function (matched, offset) { - var isDelimiter = imageSyntaxRanges.some(function (range) { - return offset > range[0] && offset < range[1]; - }); - return isDelimiter ? matched : "\\" + matched; - }); - } - /** - * Backslash escape to text for html - * Apply backslash escape to text - * @param {string} text text be processed - * @returns {string} processed text - */ - ; - - _proto.escapeTextHtml = function escapeTextHtml(text) { - return text.replace(new RegExp(Renderer.markdownTextToEscapeHtmlRx.source, 'g'), function (matched) { - return "\\" + matched; - }); - } - /** - * Backslash is using for escape ASCII punctuation character. - * https://spec.commonmark.org/0.29/#backslash-escapes - * If user input backslash as text, backslash is kept by inserting backslash. - * For example, if input text is "\$", this text is changed "\\$" - * @param {string} text text be processed - * @returns {string} processed text - */ - ; - - _proto.escapeTextBackSlash = function escapeTextBackSlash(text) { - return text.replace(new RegExp(Renderer.markdownTextToEscapeBackSlashRx.source, 'g'), function (matched) { - return "\\" + matched; - }); - } - /** - * Escapes in markdown paired characters - * @param {string} text Text to escape - * @returns {string} escaped text - */ - ; - - _proto.escapePairedCharacters = function escapePairedCharacters(text) { - return text.replace(new RegExp(Renderer.markdownTextToEscapePairedCharsRx.source, 'g'), function (matched) { - return "\\" + matched; - }); - }; - - _proto._isNeedEscape = function _isNeedEscape(text) { - var res = false; - var markdownTextToEscapeRx = Renderer.markdownTextToEscapeRx; - var type; - - for (type in markdownTextToEscapeRx) { - if (markdownTextToEscapeRx.hasOwnProperty(type) && markdownTextToEscapeRx[type].test(text)) { - res = true; - break; - } - } - - return res; - }; - - _proto._isNeedEscapeHtml = function _isNeedEscapeHtml(text) { - return Renderer.markdownTextToEscapeHtmlRx.test(text); - }; - - _proto._isNeedEscapeBackSlash = function _isNeedEscapeBackSlash(text) { - return Renderer.markdownTextToEscapeBackSlashRx.test(text); - }; - - _proto.mix = function mix(renderer) { - cloneRules(this.rules, renderer.rules); - } - /** - * Renderer factory - * Return new renderer - * @param {Renderer} srcRenderer renderer to extend - * @param {object} rules rule object, key(rule selector), value(converter function) - * @returns {Renderer} renderer - */ - ; - - Renderer.factory = function factory(srcRenderer, rules) { - var renderer = new Renderer(); - - if (!rules) { - rules = srcRenderer; - } else { - renderer.mix(srcRenderer); - } - - renderer.addRules(rules); - return renderer; - }; - - return Renderer; -}(); - -renderer_defineProperty(Renderer, "markdownTextToEscapeRx", { - codeblock: /(^ {4}[^\n]+\n*)+/, - hr: /^ *((\* *){3,}|(- *){3,} *|(_ *){3,}) */, - heading: /^(#{1,6}) +[\s\S]+/, - lheading: /^([^\n]+)\n *(=|-){2,} */, - blockquote: /^( *>[^\n]+.*)+/, - list: /^ *(\*+|-+|\d+\.) [\s\S]+/, - def: /^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? */, - link: /!?\[.*\]\(.*\)/, - reflink: /!?\[.*\]\s*\[([^\]]*)\]/, - verticalBar: /\u007C/, - codeblockGfm: /^(`{3,})/, - codeblockTildes: /^(~{3,})/ -}); - -renderer_defineProperty(Renderer, "markdownTextToEscapeHtmlRx", /<([a-zA-Z_][a-zA-Z0-9\-._]*)(\s|[^\\/>])*\/?>|<(\/)([a-zA-Z_][a-zA-Z0-9\-._]*)\s*\/?>||<([a-zA-Z_][a-zA-Z0-9\-.:/]*)>/); - -renderer_defineProperty(Renderer, "markdownTextToEscapeBackSlashRx", /\\[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~\\]/); - -renderer_defineProperty(Renderer, "markdownTextToEscapePairedCharsRx", /[*_~`]/); - - -// CONCATENATED MODULE: ./src/renderer.basic.js -/** - * @fileoverview Implements basicRenderer - * @author NHN Ent. FE Development Lab - */ - -var FIND_LAST_RETURN_RX = /\n$/g; -var FIND_BR_AND_RETURN_RX = /[ \xA0]+\n\n/g; -var FIND_MULTIPLE_EMPTYLINE_BETWEEN_TEXT_RX = /([ \xA0]+\n){2,}/g; -var FIND_LINK_HREF = /href="(.*?)"/; -var START_OF_LINES_RX = /^/gm; -/** - * Basic Markdown Renderer - * @exports basicRenderer - * @augments Renderer - */ - -/* harmony default export */ var renderer_basic = (Renderer.factory({ - // inlines - TEXT_NODE: function TEXT_NODE(node) { - var managedText = this.trim(this.getSpaceCollapsedText(node.nodeValue)); - - if (this._isNeedEscapeBackSlash(managedText)) { - managedText = this.escapeTextBackSlash(managedText); - } - - managedText = this.escapePairedCharacters(managedText); - - if (this._isNeedEscapeHtml(managedText)) { - managedText = this.escapeTextHtml(managedText); - } - - if (this._isNeedEscape(managedText)) { - managedText = this.escapeText(managedText); - } - - return this.getSpaceControlled(managedText, node); - }, - 'CODE TEXT_NODE': function CODETEXT_NODE(node) { - return node.nodeValue; - }, - 'EM, I': function EMI(node, subContent) { - var res = ''; - - if (!this.isEmptyText(subContent)) { - res = "*" + subContent + "*"; - } - - return res; - }, - 'STRONG, B': function STRONGB(node, subContent) { - var res = ''; - - if (!this.isEmptyText(subContent)) { - res = "**" + subContent + "**"; - } - - return res; - }, - A: function A(node, subContent) { - var res = subContent; - var title = ''; - var url; // "href" attribute is difficult to predict depending on the situation - // so use as it is applied to html - - var foundedHref = FIND_LINK_HREF.exec(node.outerHTML); - - if (foundedHref) { - url = foundedHref[1].replace(/&/g, '&'); - } - - if (node.title) { - title = " \"" + node.title + "\""; - } - - if (!this.isEmptyText(subContent) && url) { - res = "[" + this.escapeTextForLink(subContent) + "](" + url + title + ")"; - } - - return res; - }, - IMG: function IMG(node) { - var src = node.getAttribute('src'); - var alt = node.alt; - - if (src) { - return "![" + this.escapeTextForLink(alt) + "](" + src + ")"; - } - - return ''; - }, - BR: function BR() { - return ' \n'; - }, - CODE: function CODE(node, subContent) { - var backticks, numBackticks; - var res = ''; - - if (!this.isEmptyText(subContent)) { - numBackticks = parseInt(node.getAttribute('data-backticks'), 10); - backticks = isNaN(numBackticks) ? '`' : Array(numBackticks + 1).join('`'); - res = backticks + subContent + backticks; - } - - return res; - }, - // Paragraphs - P: function P(node, subContent) { - var res = ''; // convert multiple brs to one br - - subContent = subContent.replace(FIND_MULTIPLE_EMPTYLINE_BETWEEN_TEXT_RX, ' \n'); - - if (!this.isEmptyText(subContent)) { - res = "\n\n" + subContent + "\n\n"; - } - - return res; - }, - 'BLOCKQUOTE P': function BLOCKQUOTEP(node, subContent) { - return subContent; - }, - 'LI P': function LIP(node, subContent) { - var res = ''; - - if (!this.isEmptyText(subContent)) { - res = subContent; - } - - return res; - }, - // Headings - 'H1, H2, H3, H4, H5, H6': function H1H2H3H4H5H6(node, subContent) { - var res = ''; - var headingNumber = parseInt(node.tagName.charAt(1), 10); - - while (headingNumber) { - res += '#'; - headingNumber -= 1; - } - - res += ' '; - res += subContent; - return "\n\n" + res + "\n\n"; - }, - 'LI H1, LI H2, LI H3, LI H4, LI H5, LI H6': function LIH1LIH2LIH3LIH4LIH5LIH6(node, subContent) { - var headingNumber = parseInt(node.tagName.charAt(1), 10); - return Array(headingNumber + 1).join('#') + " " + subContent; - }, - // List - 'UL, OL': function ULOL(node, subContent) { - return "\n\n" + subContent + "\n\n"; - }, - 'LI OL, LI UL': function LIOLLIUL(node, subContent) { - var processedSubContent; // remove last br of li - - processedSubContent = subContent.replace(FIND_BR_AND_RETURN_RX, '\n'); // parent LI converter add \n too, so we remove last return - - processedSubContent = processedSubContent.replace(FIND_LAST_RETURN_RX, ''); - var res = processedSubContent.replace(START_OF_LINES_RX, ' '); - return "\n" + res; - }, - 'UL LI': function ULLI(node, subContent) { - var res = ''; // convert multiple brs to one br - - subContent = subContent.replace(FIND_MULTIPLE_EMPTYLINE_BETWEEN_TEXT_RX, ' \n'); - - if (node.firstChild && node.firstChild.tagName === 'P') { - res += '\n'; - } - - res += "* " + subContent + "\n"; - return res; - }, - // eslint-disable-next-line complexity - 'OL LI': function OLLI(node, subContent) { - var res = ''; - var liCounter = parseInt(node.parentNode.getAttribute('start') || 1, 10); - - while (node.previousSibling) { - node = node.previousSibling; - - if (node.nodeType === 1 && node.tagName === 'LI') { - liCounter += 1; - } - } // convert multiple brs to one br - - - subContent = subContent.replace(FIND_MULTIPLE_EMPTYLINE_BETWEEN_TEXT_RX, ' \n'); - - if (node.firstChild && node.firstChild.tagName === 'P') { - res += '\n'; - } - - res += liCounter + ". " + subContent + "\n"; - return res; - }, - // HR - HR: function HR() { - return '\n\n- - -\n\n'; - }, - // Blockquote - BLOCKQUOTE: function BLOCKQUOTE(node, subContent) { - // convert multiple brs to one emptyline - subContent = subContent.replace(FIND_MULTIPLE_EMPTYLINE_BETWEEN_TEXT_RX, '\n\n'); - var trimmedText = this.trim(subContent); - var res = trimmedText.replace(START_OF_LINES_RX, '> '); - return "\n\n" + res + "\n\n"; - }, - // Code Block - 'PRE CODE': function PRECODE(node, subContent) { - var lastNremoved = subContent.replace(FIND_LAST_RETURN_RX, ''); - var res = lastNremoved.replace(START_OF_LINES_RX, ' '); - return "\n\n" + res + "\n\n"; - } -})); -// CONCATENATED MODULE: ./src/renderer.gfm.js -/** - * @fileoverview Implements Github flavored markdown renderer - * @author NHN Ent. FE Development Lab - */ - - -/** - * gfmRenderer - * github flavored Markdown Renderer - * - * we didnt render gfm br here because we need distingush returns that made by block with br - * so we render gfm br later in toMark.js finalize function - * @exports gfmRenderer - * @augments Renderer - */ - -/* harmony default export */ var renderer_gfm = (Renderer.factory(renderer_basic, { - 'DEL, S': function DELS(node, subContent) { - return "~~" + subContent + "~~"; - }, - 'PRE CODE': function PRECODE(node, subContent) { - var language = ''; - var numberOfBackticks = node.getAttribute('data-backticks'); - - if (node.getAttribute('data-language')) { - language = " " + node.getAttribute('data-language'); - } - - numberOfBackticks = parseInt(numberOfBackticks, 10); - var backticks = isNaN(numberOfBackticks) ? '```' : Array(numberOfBackticks + 1).join('`'); - subContent = subContent.replace(/(\r\n)|(\r)|(\n)/g, this.lineFeedReplacement); - return "\n\n" + backticks + language + "\n" + subContent + "\n" + backticks + "\n\n"; - }, - PRE: function PRE(node, subContent) { - return subContent; - }, - 'UL LI': function ULLI(node, subContent) { - return renderer_basic.convert(node, makeTaskIfNeed(node, subContent)); - }, - 'OL LI': function OLLI(node, subContent) { - return renderer_basic.convert(node, makeTaskIfNeed(node, subContent)); - }, - // Table - TABLE: function TABLE(node, subContent) { - return "\n\n" + subContent + "\n\n"; - }, - 'TBODY, TFOOT': function TBODYTFOOT(node, subContent) { - return subContent; - }, - 'TR TD, TR TH': function TRTDTRTH(node, subContent) { - subContent = subContent.replace(/(\r\n)|(\r)|(\n)/g, ''); - return " " + subContent + " |"; - }, - 'TD BR, TH BR': function TDBRTHBR() { - return '
'; - }, - TR: function TR(node, subContent) { - return "|" + subContent + "\n"; - }, - THEAD: function THEAD(node, subContent) { - var result = ''; - var ths = findChildTag(findChildTag(node, 'TR')[0], 'TH'); - - for (var i = 0, thsLength = ths.length; i < thsLength; i += 1) { - result += " " + makeTableHeadAlignText(ths[i]) + " |"; - } - - return subContent ? subContent + "|" + result + "\n" : ''; - } -})); -/** - * Make task Markdown string if need - * @param {HTMLElement} node Passed HTML Element - * @param {string} subContent node's content - * @returns {string} - */ - -function makeTaskIfNeed(node, subContent) { - var condition; - - if (node.className.indexOf('task-list-item') !== -1) { - condition = node.className.indexOf('checked') !== -1 ? 'x' : ' '; - subContent = "[" + condition + "] " + subContent; - } - - return subContent; -} -/** - * Make table head align text - * @param {HTMLElement} th Table head cell element - * @returns {string} - */ - - -function makeTableHeadAlignText(th) { - var leftAlignValue, rightAlignValue, textLength; - var align = th.align; - textLength = th.textContent ? th.textContent.length : th.innerText.length; - leftAlignValue = ''; - rightAlignValue = ''; - - if (align) { - if (align === 'left') { - leftAlignValue = ':'; - textLength -= 1; - } else if (align === 'right') { - rightAlignValue = ':'; - textLength -= 1; - } else if (align === 'center') { - rightAlignValue = ':'; - leftAlignValue = ':'; - textLength -= 2; - } - } - - return leftAlignValue + repeatString('-', textLength) + rightAlignValue; -} -/** - * Find child element of given tag name - * @param {HTMLElement} node starting element - * @param {string} tagName Tag name for search - * @returns {Array.} - */ - - -function findChildTag(node, tagName) { - var childNodes = node.childNodes; - var result = []; - - for (var i = 0, childLength = childNodes.length; i < childLength; i += 1) { - if (childNodes[i].tagName && childNodes[i].tagName === tagName) { - result.push(childNodes[i]); - } - } - - return result; -} -/** - * Repeat given string - * @param {string} pattern String for repeat - * @param {number} count Amount of repeat - * @returns {string} - */ - - -function repeatString(pattern, count) { - var result = pattern; - count = Math.max(count, 3); - - while (count > 1) { - result += pattern; - count -= 1; - } - - return result; -} -// CONCATENATED MODULE: ./src/toMark.js -/** - * @fileoverview Implements toMark - * @author NHN Ent. FE Development Lab - */ - - - - -var FIND_UNUSED_BRS_RX = /[ \xA0]+(\n\n)/g; -var FIND_FIRST_LAST_WITH_SPACE_RETURNS_RX = /^[\n]+|[\s\n]+$/g; -var FIND_MULTIPLE_BRS_RX = /([ \xA0]+\n){2,}/g; -var FIND_RETURNS_RX = /([ \xA0]){2,}\n/g; -var FIND_RETURNS_AND_SPACE_RX = /[ \xA0\n]+/g; -/** - * @exports toMark - * @param {string} htmlStr html string to convert - * @param {object} options option - * @param {boolean} options.gfm if this property is false turn off it cant parse gfm - * @param {Renderer} options.renderer pass renderer to use - * @returns {string} converted markdown text - * @example - * toMark('

hello world

'); // "# hello world" - * toMark('strike'); // "~~strike~~" - * toMark('strike', {gfm: false}); // "strike" - */ - -function toMark(htmlStr, options) { - var isGfm = true; - var renderer; - - if (!htmlStr) { - return ''; - } - - renderer = renderer_gfm; - - if (options) { - isGfm = options.gfm; - - if (isGfm === false) { - renderer = renderer_basic; - } - - renderer = options.renderer || renderer; - } - - var runner = new DomRunner(toDom(htmlStr)); - return finalize(parse(runner, renderer), isGfm, renderer.lineFeedReplacement); -} -/** - * Parse dom to markdown - * @param {DomRunner} runner runner - * @param {Renderer} renderer renderer - * @returns {string} markdown text - */ - -function parse(runner, renderer) { - var markdownContent = ''; - - while (runner.next()) { - markdownContent += tracker(runner, renderer); - } - - return markdownContent; -} -/** - * Remove first and last return character - * @param {string} text text to finalize - * @param {boolean} isGfm isGfm flag - * @param {string} lineFeedReplacement Line feed replacement text - * @returns {string} result - */ - - -function finalize(text, isGfm, lineFeedReplacement) { - // collapse return and
- text = text.replace(FIND_UNUSED_BRS_RX, '\n'); // collapse multiple br - - text = text.replace(FIND_MULTIPLE_BRS_RX, '\n\n'); - text = text.replace(FIND_RETURNS_AND_SPACE_RX, function (matched) { - var returnCount = (matched.match(/\n/g) || []).length; - - if (returnCount >= 3) { - return '\n\n'; - } - - if (matched >= 1) { - return '\n'; - } - - return matched; - }); // remove first and last \n - - text = text.replace(FIND_FIRST_LAST_WITH_SPACE_RETURNS_RX, ''); - text = text.replace(new RegExp(lineFeedReplacement, 'g'), '\n'); // in gfm replace ' \n' make by
to '\n' - - if (isGfm) { - text = text.replace(FIND_RETURNS_RX, '\n'); - } - - return text; -} -/** - * Iterate childNodes and process conversion using recursive call - * @param {DomRunner} runner dom runner - * @param {Renderer} renderer renderer to use - * @returns {string} processed text - */ - - -function tracker(runner, renderer) { - var subContent = ''; - var node = runner.getNode(); - - for (var i = 0, t = node.childNodes.length; i < t; i += 1) { - runner.next(); - subContent += tracker(runner, renderer); - } - - return renderer.convert(node, subContent); -} -// CONCATENATED MODULE: ./src/index.js -/** - * @fileoverview Implements entry point - * @author NHN Ent. FE Development Lab - */ - - - - -toMark.Renderer = Renderer; -toMark.basicRenderer = renderer_basic; -toMark.gfmRenderer = renderer_gfm; -/* harmony default export */ var src = __webpack_exports__["default"] = (toMark); - -/***/ }) -/******/ ])["default"]; -}); - -/***/ }), -/* 33 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Get HTML element's design classes. - * @author NHN FE Development Lab - */ - - - -var isUndefined = __webpack_require__(8); - -/** - * Get HTML element's design classes. - * @param {(HTMLElement|SVGElement)} element target element - * @returns {string} element css class name - * @memberof module:domUtil - */ -function getClass(element) { - if (!element || !element.className) { - return ''; - } - - if (isUndefined(element.className.baseVal)) { - return element.className; - } - - return element.className.baseVal; -} - -module.exports = getClass; - - -/***/ }), -/* 34 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is a number or not. - * @author NHN FE Development Lab - */ - - - -/** - * Check whether the given variable is a number or not. - * If the given variable is a number, return true. - * @param {*} obj - Target for checking - * @returns {boolean} Is number? - * @memberof module:type - */ -function isNumber(obj) { - return typeof obj === 'number' || obj instanceof Number; -} - -module.exports = isNumber; - - -/***/ }), -/* 35 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* unused harmony export CLASS_HIGHLIGHT */ -/* harmony import */ var tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19); -/* harmony import */ var tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20); -/* harmony import */ var tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5); -/* harmony import */ var tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6); -/* harmony import */ var tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(22); -/* harmony import */ var _toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var _preview__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(38); -/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(0); -/* harmony import */ var _htmlRenderConvertors__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(29); -/* harmony import */ var _scroll_helper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(18); -/* harmony import */ var _scroll_cache_offsetInfo__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(24); -/* harmony import */ var _utils_markdown__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(2); -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -/** - * @fileoverview Implements markdown preview - * @author NHN FE Development Lab - */ - - - - - - - - - - - -var CLASS_HIGHLIGHT = 'te-preview-highlight'; - -function findTableCell(tableRow, _ref) { - var ch = _ref.ch; - var cell = tableRow.firstChild; - - while (cell && cell.next) { - if (Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_10__[/* getMdStartCh */ "e"])(cell.next) > ch + 1) { - break; - } - - cell = cell.next; - } - - return cell; -} -/** - * Class Markdown Preview - * @param {HTMLElement} el - base element - * @param {EventManager} eventManager - event manager - * @param {Convertor} convertor - convertor - * @param {object} options - * @param {boolean} options.isViewer - true for view-only mode - * @param {boolean} options.highlight - true for using live-highlight feature - * @param {object} opitons.linkAttribute - attributes for link element - * @param {object} opitons.customHTMLRenderer - map of custom HTML render functions - - * @ignore - */ - - -var MarkdownPreview = /*#__PURE__*/function (_Preview) { - _inheritsLoose(MarkdownPreview, _Preview); - - function MarkdownPreview(el, eventManager, convertor, options) { - var _this; - - _this = _Preview.call(this, el, eventManager, convertor, options.isViewer) || this; - - _this.lazyRunner.registerLazyRunFunction('invokeCodeBlock', _this.invokeCodeBlockPlugins, _this.delayCodeBlockTime, _assertThisInitialized(_this)); - - var linkAttribute = options.linkAttribute, - customHTMLRenderer = options.customHTMLRenderer, - _options$highlight = options.highlight, - highlight = _options$highlight === void 0 ? false : _options$highlight; - _this.renderHTML = Object(_toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_4__["createRenderHTML"])({ - gfm: true, - nodeId: true, - convertors: Object(_htmlRenderConvertors__WEBPACK_IMPORTED_MODULE_7__[/* getHTMLRenderConvertors */ "a"])(linkAttribute, customHTMLRenderer) - }); - _this.cursorNodeId = null; - - _this._initEvent(highlight); - - return _this; - } - /** - * Initialize event - * @private - */ - - - var _proto = MarkdownPreview.prototype; - - _proto._initEvent = function _initEvent(highlight) { - var _this2 = this; - - this.eventManager.listen('contentChangedFromMarkdown', this.update.bind(this)); // need to implement a listener function for 'previewNeedsRefresh' event - // to support third-party plugins which requires re-executing script for every re-render - - if (highlight) { - this.eventManager.listen('cursorActivity', function (_ref2) { - var markdownNode = _ref2.markdownNode, - cursor = _ref2.cursor; - - _this2._updateCursorNode(markdownNode, cursor); - }); - this.eventManager.listen('blur', function () { - _this2._removeHighlight(); - }); - } - - tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_0___default()(this.el, 'scroll', function (event) { - _this2.eventManager.emit('scroll', { - source: 'preview', - data: Object(_scroll_helper__WEBPACK_IMPORTED_MODULE_8__[/* findAdjacentElementToScrollTop */ "a"])(event.target.scrollTop, _this2._previewContent) - }); - }); - }; - - _proto._removeHighlight = function _removeHighlight() { - if (this.cursorNodeId) { - var currentEl = this._getElementByNodeId(this.cursorNodeId); - - if (currentEl) { - tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_3___default()(currentEl, CLASS_HIGHLIGHT); - } - } - }; - - _proto._updateCursorNode = function _updateCursorNode(cursorNode, cursorPos) { - if (cursorNode) { - cursorNode = Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_10__[/* findClosestNode */ "b"])(cursorNode, function (mdNode) { - return !Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_10__[/* isInlineNode */ "h"])(mdNode); - }); - - if (cursorNode.type === 'tableRow') { - cursorNode = findTableCell(cursorNode, cursorPos); - } else if (cursorNode.type === 'tableBody') { - // empty line next to table - cursorNode = null; - } - } - - var cursorNodeId = cursorNode ? cursorNode.id : null; - - if (this.cursorNodeId === cursorNodeId) { - return; - } - - var inFrontMatter = cursorNode && cursorNode.customType === 'frontMatter'; - - var oldEL = this._getElementByNodeId(this.cursorNodeId); - - var newEL = this._getElementByNodeId(cursorNodeId); - - if (oldEL) { - tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_3___default()(oldEL, CLASS_HIGHLIGHT); - } - - if (newEL && !inFrontMatter) { - tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_2___default()(newEL, CLASS_HIGHLIGHT); - } - - this.cursorNodeId = cursorNodeId; - }; - - _proto._getElementByNodeId = function _getElementByNodeId(nodeId) { - if (!nodeId) { - return null; - } - - return this._previewContent.querySelector("[data-nodeid=\"" + nodeId + "\"]"); - }; - - _proto.update = function update(changed) { - var _this3 = this; - - changed.forEach(function (editResult) { - return _this3.replaceRangeNodes(editResult); - }); - this.eventManager.emit('previewRenderAfter', this); - }; - - _proto.replaceRangeNodes = function replaceRangeNodes(editResult) { - var _this4 = this; - - var nodes = editResult.nodes, - removedNodeRange = editResult.removedNodeRange; - var contentEl = this._previewContent; - var newHtml = this.eventManager.emitReduce('convertorAfterMarkdownToHtmlConverted', nodes.map(function (node) { - return _this4.renderHTML(node); - }).join('')); - - if (!removedNodeRange) { - contentEl.insertAdjacentHTML('afterbegin', newHtml); - } else { - var _removedNodeRange$id = removedNodeRange.id, - startNodeId = _removedNodeRange$id[0], - endNodeId = _removedNodeRange$id[1]; - - var startEl = this._getElementByNodeId(startNodeId); - - var endEl = this._getElementByNodeId(endNodeId); - - if (startEl) { - startEl.insertAdjacentHTML('beforebegin', newHtml); - var el = startEl; - - while (el !== endEl) { - var nextEl = el.nextElementSibling; - el.parentNode.removeChild(el); - Object(_scroll_cache_offsetInfo__WEBPACK_IMPORTED_MODULE_9__[/* removeOffsetInfoByNode */ "c"])(el); - el = nextEl; - } - - if (el.parentNode) { - _utils_dom__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].remove(el); - Object(_scroll_cache_offsetInfo__WEBPACK_IMPORTED_MODULE_9__[/* removeOffsetInfoByNode */ "c"])(el); - } - } - } - - var codeBlockEls = this.getCodeBlockElements(nodes.map(function (node) { - return node.id; - })); - - if (codeBlockEls.length) { - this.lazyRunner.run('invokeCodeBlock', codeBlockEls); - } - } - /** - * render - * @param {string} html - html string to render - * @override - */ - ; - - _proto.render = function render(html) { - _Preview.prototype.render.call(this, html); - - this.eventManager.emit('previewRenderAfter', this); - }; - - _proto.remove = function remove() { - tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_1___default()(this.el, 'scroll'); - this.el = null; - }; - - return MarkdownPreview; -}(_preview__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"]); - -/* harmony default export */ __webpack_exports__["a"] = (MarkdownPreview); - -/***/ }), -/* 36 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10); -/* harmony import */ var tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8); -/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var tui_code_snippet_type_isFalsy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44); -/* harmony import */ var tui_code_snippet_type_isFalsy__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isFalsy__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var tui_code_snippet_enum_enum__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(45); -/* harmony import */ var tui_code_snippet_enum_enum__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_enum_enum__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _utils_map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(23); -/** - * @fileoverview Implements EventManager - * @author NHN FE Development Lab - */ - - - - - -var eventList = ['previewBeforeHook', 'previewRenderAfter', 'previewNeedsRefresh', 'addImageBlobHook', 'setMarkdownAfter', 'contentChangedFromWysiwyg', 'changeFromWysiwyg', 'contentChangedFromMarkdown', 'changeFromMarkdown', 'change', 'changeModeToWysiwyg', 'changeModeToMarkdown', 'changeModeBefore', 'changeMode', 'changePreviewStyle', 'changePreviewTabPreview', 'changePreviewTabWrite', 'openPopupAddLink', 'openPopupAddImage', 'openPopupAddTable', 'openPopupTableUtils', 'openHeadingSelect', 'openPopupCodeBlockLanguages', 'openPopupCodeBlockEditor', 'openDropdownToolbar', 'closePopupCodeBlockLanguages', 'closePopupCodeBlockEditor', 'closeAllPopup', 'command', 'addCommandBefore', 'htmlUpdate', 'markdownUpdate', 'renderedHtmlUpdated', 'removeEditor', 'convertorAfterMarkdownToHtmlConverted', 'convertorBeforeHtmlToMarkdownConverted', 'convertorAfterHtmlToMarkdownConverted', 'stateChange', 'wysiwygSetValueAfter', 'wysiwygSetValueBefore', 'wysiwygGetValueBefore', 'wysiwygProcessHTMLText', 'wysiwygRangeChangeAfter', 'wysiwygKeyEvent', 'scroll', 'click', 'mousedown', 'mouseover', 'mouseout', 'mouseup', 'contextmenu', 'keydown', 'keyup', 'keyMap', 'load', 'focus', 'blur', 'paste', 'pasteBefore', 'willPaste', 'copy', 'copyBefore', 'copyAfter', 'cut', 'cutAfter', 'drop', 'show', 'hide', 'changeLanguage', 'cursorActivity', 'requireScrollSync', 'requireScrollIntoView', 'setCodeBlockLanguages']; -/** - * Class EventManager - * @ignore - */ - -var EventManager = /*#__PURE__*/function () { - function EventManager() { - this.events = new _utils_map__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"](); - this.TYPE = new tui_code_snippet_enum_enum__WEBPACK_IMPORTED_MODULE_3___default.a(eventList); - } - /** - * Listen event and bind event handler - * @param {string} typeStr Event type string - * @param {function} handler Event handler - */ - - - var _proto = EventManager.prototype; - - _proto.listen = function listen(typeStr, handler) { - var typeInfo = this._getTypeInfo(typeStr); - - var eventHandlers = this.events.get(typeInfo.type) || []; - - if (!this._hasEventType(typeInfo.type)) { - throw new Error("There is no event type " + typeInfo.type); - } - - if (typeInfo.namespace) { - handler.namespace = typeInfo.namespace; - } - - eventHandlers.push(handler); - this.events.set(typeInfo.type, eventHandlers); - } - /** - * Emit event - * @param {string} eventName Event name to emit - * @returns {Array} - */ - ; - - _proto.emit = function emit() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - var typeStr = args.shift(); - - var typeInfo = this._getTypeInfo(typeStr); - - var eventHandlers = this.events.get(typeInfo.type); - var results; - - if (eventHandlers) { - tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default()(eventHandlers, function (handler) { - var result = handler.apply(void 0, args); - - if (!tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(result)) { - results = results || []; - results.push(result); - } - }); - } - - return results; - } - /** - * Emit given event and return result - * @param {string} eventName Event name to emit - * @param {string} sourceText Source text to change - * @returns {string} - */ - ; - - _proto.emitReduce = function emitReduce() { - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - var type = args.shift(); - var eventHandlers = this.events.get(type); - - if (eventHandlers) { - tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default()(eventHandlers, function (handler) { - var result = handler.apply(void 0, args); - - if (!tui_code_snippet_type_isFalsy__WEBPACK_IMPORTED_MODULE_2___default()(result)) { - args[0] = result; - } - }); - } - - return args[0]; - } - /** - * Get event type and namespace - * @param {string} typeStr Event type name - * @returns {{type: string, namespace: string}} - * @private - */ - ; - - _proto._getTypeInfo = function _getTypeInfo(typeStr) { - var splited = typeStr.split('.'); - return { - type: splited[0], - namespace: splited[1] - }; - } - /** - * Check whether event type exists or not - * @param {string} type Event type name - * @returns {boolean} - * @private - */ - ; - - _proto._hasEventType = function _hasEventType(type) { - return !tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(this.TYPE[this._getTypeInfo(type).type]); - } - /** - * Add event type when given event not exists - * @param {string} type Event type name - */ - ; - - _proto.addEventType = function addEventType(type) { - if (this._hasEventType(type)) { - throw new Error("There is already have event type " + type); - } - - this.TYPE.set(type); - } - /** - * Remove event handler from given event type - * @param {string} typeStr Event type name - * @param {function} [handler] - registered event handler - */ - ; - - _proto.removeEventHandler = function removeEventHandler(typeStr, handler) { - var _this = this; - - var _this$_getTypeInfo = this._getTypeInfo(typeStr), - type = _this$_getTypeInfo.type, - namespace = _this$_getTypeInfo.namespace; - - if (type && handler) { - this._removeEventHandlerWithHandler(type, handler); - } else if (type && !namespace) { - // dont use dot notation cuz eslint - this.events.delete(type); - } else if (!type && namespace) { - this.events.forEach(function (eventHandlers, eventType) { - _this._removeEventHandlerWithTypeInfo(eventType, namespace); - }); - } else if (type && namespace) { - this._removeEventHandlerWithTypeInfo(type, namespace); - } - } - /** - * Remove event handler with event handler - * @param {string} type - event type name - * @param {function} handler - event handler - * @private - */ - ; - - _proto._removeEventHandlerWithHandler = function _removeEventHandlerWithHandler(type, handler) { - var eventHandlers = this.events.get(type) || []; - var handlerIndex = eventHandlers.indexOf(handler); - - if (handlerIndex >= 0) { - eventHandlers.splice(handlerIndex, 1); - } - } - /** - * Remove event handler with event type information - * @param {string} type Event type name - * @param {string} namespace Event namespace - * @private - */ - ; - - _proto._removeEventHandlerWithTypeInfo = function _removeEventHandlerWithTypeInfo(type, namespace) { - var handlersToSurvive = []; - var eventHandlers = this.events.get(type); - - if (!eventHandlers) { - return; - } - - eventHandlers.map(function (handler) { - if (handler.namespace !== namespace) { - handlersToSurvive.push(handler); - } - - return null; - }); - this.events.set(type, handlersToSurvive); - }; - - return EventManager; -}(); - -/* harmony default export */ __webpack_exports__["a"] = (EventManager); - -/***/ }), -/* 37 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var _toast_ui_to_mark__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(32); -/* harmony import */ var _toast_ui_to_mark__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_toast_ui_to_mark__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22); -/* harmony import */ var _toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _htmlRenderConvertors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29); -/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0); -/** - * @fileoverview Convertor have responsible to convert markdown and html - * @author NHN FE Development Lab - */ - - - - // This regular expression refere markdownIt. -// https://github.com/markdown-it/markdown-it/blob/master/lib/common/html_re.js - -var attrName = '[a-zA-Z_:][a-zA-Z0-9:._-]*'; -var unquoted = '[^"\'=<>`\\x00-\\x20]+'; -var singleQuoted = "'[^']*'"; -var doubleQuoted = '"[^"]*"'; -var attrValue = "(?:" + unquoted + "|" + singleQuoted + "|" + doubleQuoted + ")"; -var attribute = "(?:\\s+" + attrName + "(?:\\s*=\\s*" + attrValue + ")?)*\\s*"; -var openingTag = "(\\\\<|<)([A-Za-z][A-Za-z0-9\\-]*" + attribute + ")(\\/?>)"; -var HTML_TAG_RX = new RegExp(openingTag, 'g'); -var FRONT_MATTER_RX = /^\s?\\-\\-\\-([\s\S]+?)\\-\\-\\-/; -/** - * Class Convertor - * @param {EventManager} em - EventManager instance - * @ignore - */ - -var Convertor = /*#__PURE__*/function () { - function Convertor(em, options) { - if (options === void 0) { - options = {}; - } - - var _options = options, - linkAttribute = _options.linkAttribute, - customHTMLRenderer = _options.customHTMLRenderer, - extendedAutolinks = _options.extendedAutolinks, - referenceDefinition = _options.referenceDefinition, - customParser = _options.customParser, - frontMatter = _options.frontMatter, - customProp = _options.customProp; - this.options = options; - this.mdReader = new _toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_1__["Parser"]({ - extendedAutolinks: extendedAutolinks, - disallowedHtmlBlockTags: ['br'], - referenceDefinition: referenceDefinition, - disallowDeepHeading: true, - customParser: customParser, - frontMatter: frontMatter - }); - this.renderHTML = Object(_toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_1__["createRenderHTML"])({ - gfm: true, - convertors: Object(_htmlRenderConvertors__WEBPACK_IMPORTED_MODULE_2__[/* getHTMLRenderConvertors */ "a"])(linkAttribute, customHTMLRenderer), - customProp: customProp - }); - this.eventManager = em; - } - /** - * _markdownToHtmlWithCodeHighlight - * Convert markdown to html with Codehighlight - * @param {string} markdown markdown text - * @returns {string} html text - * @private - */ - - - var _proto = Convertor.prototype; - - _proto._markdownToHtmlWithCodeHighlight = function _markdownToHtmlWithCodeHighlight(markdown) { - return this.renderHTML(this.mdReader.parse(markdown)); - } - /** - * _markdownToHtml - * Convert markdown to html - * @param {string} markdown markdown text - * @param {object} env environment sandbox for markdownit - * @returns {string} html text - * @private - */ - ; - - _proto._markdownToHtml = function _markdownToHtml(markdown) { - markdown = markdown.replace(HTML_TAG_RX, function (match, $1, $2, $3) { - return match[0] !== '\\' ? "" + $1 + $2 + " data-tomark-pass " + $3 : match; - }); - return this.renderHTML(this.mdReader.parse(markdown)); - } - /** - * Remove BR's data-tomark-pass attribute text when br in code element - * @param {string} renderedHTML Rendered HTML string from markdown editor - * @returns {string} - * @private - */ - ; - - _proto._removeBrToMarkPassAttributeInCode = function _removeBrToMarkPassAttributeInCode(renderedHTML) { - var wrapper = _utils_dom__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].createElementWith("
" + renderedHTML + "
"); - _utils_dom__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].findAll(wrapper, 'code, pre').forEach(function (codeOrPre) { - var codeEelement = codeOrPre; - codeEelement.innerHTML = codeEelement.innerHTML.replace(/\sdata-tomark-pass\s(\/?)>/g, '$1>'); - }); - renderedHTML = wrapper.innerHTML; - return renderedHTML; - } - /** - * toHTMLWithCodeHighlight - * Convert markdown to html with Codehighlight - * emit convertorAfterMarkdownToHtmlConverted - * @param {string} markdown markdown text - * @returns {string} html text - */ - ; - - _proto.toHTMLWithCodeHighlight = function toHTMLWithCodeHighlight(markdown) { - var html = this._markdownToHtmlWithCodeHighlight(markdown); - - html = this.eventManager.emitReduce('convertorAfterMarkdownToHtmlConverted', html); - return html; - } - /** - * toHTML - * Convert markdown to html - * emit convertorAfterMarkdownToHtmlConverted - * @param {string} markdown markdown text - * @returns {string} html text - */ - ; - - _proto.toHTML = function toHTML(markdown) { - var html = this._markdownToHtml(markdown); - - html = this.eventManager.emitReduce('convertorAfterMarkdownToHtmlConverted', html); - html = this._removeBrToMarkPassAttributeInCode(html); - return html; - }; - - _proto.initHtmlSanitizer = function initHtmlSanitizer(sanitizer) { - this.eventManager.listen('convertorAfterMarkdownToHtmlConverted', function (html) { - return sanitizer(html, true); - }); - } - /** - * toMarkdown - * Convert html to markdown - * emit convertorAfterHtmlToMarkdownConverted - * @param {string} html html text - * @param {object | null} toMarkOptions - toMark library options - * @returns {string} markdown text - */ - ; - - _proto.toMarkdown = function toMarkdown(html, toMarkOptions) { - var result = []; - html = this.eventManager.emitReduce('convertorBeforeHtmlToMarkdownConverted', html); - html = this._appendAttributeForLinkIfNeed(html); - html = this._appendAttributeForBrIfNeed(html); - var markdown = _toast_ui_to_mark__WEBPACK_IMPORTED_MODULE_0___default()(html, toMarkOptions); - - if (this.options.frontMatter) { - markdown = markdown.replace(FRONT_MATTER_RX, '---$1---'); - } - - markdown = this.eventManager.emitReduce('convertorAfterHtmlToMarkdownConverted', markdown); - markdown = this._removeNewlinesBeforeAfterAndBlockElement(markdown); - markdown.split('\n').forEach(function (line, index) { - var FIND_TABLE_RX = /^(
)+\||\|[^|]*\|/gi; - var FIND_CODE_RX = /`[^`]*
[^`]*`/gi; - var FIND_BRS_BEFORE_TABLE = /^(
)+\|/gi; - - if (FIND_TABLE_RX.test(line)) { - line = line.replace(FIND_BRS_BEFORE_TABLE, function (match) { - return match.replace(/
/gi, '
\n'); - }); - } else if (!FIND_CODE_RX.test(line)) { - line = line.replace(/
/gi, '
\n'); - } - - result[index] = line; - }); - return result.join('\n'); - }; - - _proto._removeNewlinesBeforeAfterAndBlockElement = function _removeNewlinesBeforeAfterAndBlockElement(markdown) { - // Newlines('\n\n') are created on to-mark. - var NEWLINES_BEFORE_BLOCK_RX = /
\n\n(#{1,6} .*|```|\||(\*+|-+|\d+\.) .*| *>[^\n]+.*)/g; - var NEWLINES_AFTER_BLOCK_RX = /(#{1,6} .*|```|\|)\n\n
/g; - markdown = markdown.replace(NEWLINES_BEFORE_BLOCK_RX, '
$1'); - markdown = markdown.replace(NEWLINES_AFTER_BLOCK_RX, '$1\n
'); - return markdown; - }; - - _proto._appendAttributeForLinkIfNeed = function _appendAttributeForLinkIfNeed(html) { - var LINK_RX = /!?\[.*\]\(<\s*a[^>]*>(.*?)<\s*\/\s*a>\)/gi; - return html.replace(LINK_RX, function (match) { - return match.replace(//gi; - var FIND_DOUBLE_BR_RX = /

/gi; - var FIND_PASSING_AND_NORMAL_BR_RX = /

(.)/gi; - var FIRST_TWO_BRS_BEFORE_RX = /([^>]|<\/a>|<\/code>|<\/span>|<\/b>|<\/i>|<\/s>|]*>)/; - var TWO_BRS_RX = /

/; - var FIND_FIRST_TWO_BRS_RX = new RegExp(FIRST_TWO_BRS_BEFORE_RX.source + TWO_BRS_RX.source, 'g'); - var FIND_ATTRI_WITH_EMTPY_STR_RX = /
/gi; - html = html.replace(FIND_BR_RX, '
'); - html = html.replace(FIND_DOUBLE_BR_RX, '

'); - html = html.replace(FIND_ATTRI_WITH_EMTPY_STR_RX, '
'); - html = html.replace(FIND_PASSING_AND_NORMAL_BR_RX, '

$1'); - html = html.replace(FIND_FIRST_TWO_BRS_RX, '$1

'); // Preserve
when there is only one empty line before or after a block element. - - html = html.replace(/(.)

(|
||
    |
      |
      )/g, '$1

      $2'); - html = html.replace(/(<\/h[1-6]>|<\/pre>|<\/table>|<\/ul>|<\/ol>|<\/blockquote>)
      (.)/g, '$1
      $2'); - return html; - }; - - return Convertor; -}(); - -/* harmony default export */ __webpack_exports__["a"] = (Convertor); - -/***/ }), -/* 38 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/domUtil/css.js -var css = __webpack_require__(4); -var css_default = /*#__PURE__*/__webpack_require__.n(css); - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/type/isString.js -var isString = __webpack_require__(9); -var isString_default = /*#__PURE__*/__webpack_require__.n(isString); - -// CONCATENATED MODULE: ./src/js/lazyRunner.js -/** - * @fileoverview Implements LazyRunner - * @author NHN FE Development Lab - */ - -/** - * Class LazyRunner - * @ignore - */ - -var lazyRunner_LazyRunner = /*#__PURE__*/function () { - function LazyRunner() { - this.globalTOID = null; - this.lazyRunFunctions = {}; - } - - var _proto = LazyRunner.prototype; - - _proto.run = function run(fn, params, context, delay) { - var TOID; - - if (isString_default()(fn)) { - TOID = this._runRegisteredRun(fn, params, context, delay); - } else { - TOID = this._runSingleRun(fn, params, context, delay, this.globalTOID); - this.globalTOID = TOID; - } - - return TOID; - }; - - _proto.registerLazyRunFunction = function registerLazyRunFunction(name, fn, delay, context) { - context = context || this; - this.lazyRunFunctions[name] = { - fn: fn, - delay: delay, - context: context, - TOID: null - }; - }; - - _proto._runSingleRun = function _runSingleRun(fn, params, context, delay, TOID) { - this._clearTOIDIfNeed(TOID); - - TOID = setTimeout(function () { - fn.call(context, params); - }, delay); - return TOID; - }; - - _proto._runRegisteredRun = function _runRegisteredRun(lazyRunName, params, context, delay) { - var lazyRunFunction = this.lazyRunFunctions[lazyRunName]; - var fn = lazyRunFunction.fn; - var TOID = lazyRunFunction.TOID; - delay = delay || lazyRunFunction.delay; - context = context || lazyRunFunction.context; - TOID = this._runSingleRun(fn, params, context, delay, TOID); - lazyRunFunction.TOID = TOID; - return TOID; - }; - - _proto._clearTOIDIfNeed = function _clearTOIDIfNeed(TOID) { - if (TOID) { - clearTimeout(TOID); - } - }; - - return LazyRunner; -}(); - -/* harmony default export */ var lazyRunner = (lazyRunner_LazyRunner); -// EXTERNAL MODULE: ./src/js/utils/dom.js -var dom = __webpack_require__(0); - -// EXTERNAL MODULE: ./src/js/codeBlockManager.js -var codeBlockManager = __webpack_require__(30); - -// CONCATENATED MODULE: ./src/js/preview.js -/** - * @fileoverview Implements preview - * @author NHN FE Development Lab - */ - - - - -/** - * Class Preview - * @param {HTMLElement} el - Container element for preview - * @param {EventManager} eventManager - Event manager instance - * @param {Convertor} convertor - Convertor instance - * @param {boolean} isViewer - whether viewer mode or not - * @ignore - */ - -var preview_Preview = /*#__PURE__*/function () { - function Preview(el, eventManager, convertor, isViewer) { - this.eventManager = eventManager; - this.convertor = convertor; - this.el = el; - this.isViewer = !!isViewer; - this.delayCodeBlockTime = 500; - - this._initContentSection(); - - this.lazyRunner = new lazyRunner(); - } - /** - * Initialize content selection - * @private - */ - - - var _proto = Preview.prototype; - - _proto._initContentSection = function _initContentSection() { - this._previewContent = dom["a" /* default */].createElementWith("
      "); - this.el.appendChild(this._previewContent); - }; - - _proto.getCodeBlockElements = function getCodeBlockElements(nodeIds) { - var contentEl = this._previewContent; - var codeEls = []; - var targetEls; - - if (nodeIds) { - targetEls = nodeIds.map(function (id) { - return contentEl.querySelector("[data-nodeid=\"" + id + "\"]"); - }).filter(Boolean); - } else { - targetEls = [contentEl]; - } - - targetEls.forEach(function (targetEl) { - codeEls.push.apply(codeEls, dom["a" /* default */].findAll(targetEl, 'code[data-language]')); - }); - return codeEls; - }; - - _proto.invokeCodeBlockPlugins = function invokeCodeBlockPlugins(codeBlocks) { - codeBlocks.forEach(function (codeBlock) { - var lang = codeBlock.getAttribute('data-language'); - var html = codeBlockManager["a" /* default */].createCodeBlockHtml(lang, codeBlock.textContent); - codeBlock.innerHTML = html; - }); - } - /** - * Refresh rendering - * @param {string} markdown Markdown text - */ - ; - - _proto.refresh = function refresh(markdown) { - if (markdown === void 0) { - markdown = ''; - } - - this.render(this.convertor.toHTMLWithCodeHighlight(markdown)); - this.invokeCodeBlockPlugins(this.getCodeBlockElements()); - } - /** - * get html string - * @returns {string} - html preview string - */ - ; - - _proto.getHTML = function getHTML() { - return this._previewContent.innerHTML; - } - /** - * set html string - * @param {string} html - html preview string - */ - ; - - _proto.setHTML = function setHTML(html) { - this._previewContent.innerHTML = html; - } - /** - * Render HTML on preview - * @param {string} html HTML string - */ - ; - - _proto.render = function render(html) { - var _previewContent = this._previewContent; - html = this.eventManager.emit('previewBeforeHook', html) || html; - dom["a" /* default */].empty(_previewContent); - _previewContent.innerHTML = html; - } - /** - * Set preview height - * @param {number} height - Height for preview container - */ - ; - - _proto.setHeight = function setHeight(height) { - css_default()(this.el, { - height: height + "px" - }); - } - /** - * set min height - * @param {number} minHeight - min height - */ - ; - - _proto.setMinHeight = function setMinHeight(minHeight) { - css_default()(this.el, { - minHeight: minHeight + "px" - }); - } - /** - * Is Preview visible - * @returns {boolean} result - */ - ; - - _proto.isVisible = function isVisible() { - return this.el.style.display !== 'none'; - }; - - return Preview; -}(); - -/* harmony default export */ var preview = __webpack_exports__["a"] = (preview_Preview); - -/***/ }), -/* 39 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Set className value - * @author NHN FE Development Lab - */ - - - -var isArray = __webpack_require__(17); -var isUndefined = __webpack_require__(8); - -/** - * Set className value - * @param {(HTMLElement|SVGElement)} element - target element - * @param {(string|string[])} cssClass - class names - * @private - */ -function setClassName(element, cssClass) { - cssClass = isArray(cssClass) ? cssClass.join(' ') : cssClass; - - cssClass = cssClass.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); - - if (isUndefined(element.className.baseVal)) { - element.className = cssClass; - - return; - } - - element.className.baseVal = cssClass; -} - -module.exports = setClassName; - - -/***/ }), -/* 40 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Get event collection for specific HTML element - * @author NHN FE Development Lab - */ - - - -var EVENT_KEY = '_feEventKey'; - -/** - * Get event collection for specific HTML element - * @param {HTMLElement} element - HTML element - * @param {string} type - event type - * @returns {array} - * @private - */ -function safeEvent(element, type) { - var events = element[EVENT_KEY]; - var handlers; - - if (!events) { - events = element[EVENT_KEY] = {}; - } - - handlers = events[type]; - if (!handlers) { - handlers = events[type] = []; - } - - return handlers; -} - -module.exports = safeEvent; - - -/***/ }), -/* 41 */, -/* 42 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is truthy or not. - * @author NHN FE Development Lab - */ - - - -var isExisty = __webpack_require__(28); - -/** - * Check whether the given variable is truthy or not. - * If the given variable is not null or not undefined or not false, returns true. - * (It regards 0 as true) - * @param {*} obj - Target for checking - * @returns {boolean} Is truthy? - * @memberof module:type - */ -function isTruthy(obj) { - return isExisty(obj) && obj !== false; -} - -module.exports = isTruthy; - - -/***/ }), -/* 43 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Send hostname on DOMContentLoaded. - * @author NHN FE Development Lab - */ - - - -var isUndefined = __webpack_require__(8); -var imagePing = __webpack_require__(49); - -var ms7days = 7 * 24 * 60 * 60 * 1000; - -/** - * Check if the date has passed 7 days - * @param {number} date - milliseconds - * @returns {boolean} - * @private - */ -function isExpired(date) { - var now = new Date().getTime(); - - return now - date > ms7days; -} - -/** - * Send hostname on DOMContentLoaded. - * To prevent hostname set tui.usageStatistics to false. - * @param {string} appName - application name - * @param {string} trackingId - GA tracking ID - * @ignore - */ -function sendHostname(appName, trackingId) { - var url = 'https://www.google-analytics.com/collect'; - var hostname = location.hostname; - var hitType = 'event'; - var eventCategory = 'use'; - var applicationKeyForStorage = 'TOAST UI ' + appName + ' for ' + hostname + ': Statistics'; - var date = window.localStorage.getItem(applicationKeyForStorage); - - // skip if the flag is defined and is set to false explicitly - if (!isUndefined(window.tui) && window.tui.usageStatistics === false) { - return; - } - - // skip if not pass seven days old - if (date && !isExpired(date)) { - return; - } - - window.localStorage.setItem(applicationKeyForStorage, new Date().getTime()); - - setTimeout(function() { - if (document.readyState === 'interactive' || document.readyState === 'complete') { - imagePing(url, { - v: 1, - t: hitType, - tid: trackingId, - cid: hostname, - dp: hostname, - dh: appName, - el: appName, - ec: eventCategory - }); - } - }, 1000); -} - -module.exports = sendHostname; - - -/***/ }), -/* 44 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is falsy or not. - * @author NHN FE Development Lab - */ - - - -var isTruthy = __webpack_require__(42); - -/** - * Check whether the given variable is falsy or not. - * If the given variable is null or undefined or false, returns true. - * @param {*} obj - Target for checking - * @returns {boolean} Is falsy? - * @memberof module:type - */ -function isFalsy(obj) { - return !isTruthy(obj); -} - -module.exports = isFalsy; - - -/***/ }), -/* 45 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview This module provides a Enum Constructor. - * @author NHN FE Development Lab - * @example - * // node, commonjs - * var Enum = require('tui-code-snippet/enum/enum'); - */ - - - -var isNumber = __webpack_require__(34); -var isArray = __webpack_require__(17); -var toArray = __webpack_require__(3); -var forEach = __webpack_require__(26); - -/** - * Check whether the defineProperty() method is supported. - * @type {boolean} - * @ignore - */ -var isSupportDefinedProperty = (function() { - try { - Object.defineProperty({}, 'x', {}); - - return true; - } catch (e) { - return false; - } -})(); - -/** - * A unique value of a constant. - * @type {number} - * @ignore - */ -var enumValue = 0; - -/** - * Make a constant-list that has unique values. - * In modern browsers (except IE8 and lower), - * a value defined once can not be changed. - * - * @param {...string|string[]} itemList Constant-list (An array of string is available) - * @class - * - * @example - * var Enum = require('tui-code-snippet/enum/enum'); // node, commonjs - * - * var MYENUM = new Enum('TYPE1', 'TYPE2'); - * var MYENUM2 = new Enum(['TYPE1', 'TYPE2']); - * - * //usage - * if (value === MYENUM.TYPE1) { - * .... - * } - * - * //add (If a duplicate name is inputted, will be disregarded.) - * MYENUM.set('TYPE3', 'TYPE4'); - * - * //get name of a constant by a value - * MYENUM.getName(MYENUM.TYPE1); // 'TYPE1' - * - * // In modern browsers (except IE8 and lower), a value can not be changed in constants. - * var originalValue = MYENUM.TYPE1; - * MYENUM.TYPE1 = 1234; // maybe TypeError - * MYENUM.TYPE1 === originalValue; // true - **/ -function Enum(itemList) { - if (itemList) { - this.set.apply(this, arguments); - } -} - -/** - * Define a constants-list - * @param {...string|string[]} itemList Constant-list (An array of string is available) - */ -Enum.prototype.set = function(itemList) { - var self = this; - - if (!isArray(itemList)) { - itemList = toArray(arguments); - } - - forEach(itemList, function itemListIteratee(item) { - self._addItem(item); - }); -}; - -/** - * Return a key of the constant. - * @param {number} value A value of the constant. - * @returns {string|undefined} Key of the constant. - */ -Enum.prototype.getName = function(value) { - var self = this; - var foundedKey; - - forEach(this, function(itemValue, key) { // eslint-disable-line consistent-return - if (self._isEnumItem(key) && value === itemValue) { - foundedKey = key; - - return false; - } - }); - - return foundedKey; -}; - -/** - * Create a constant. - * @private - * @param {string} name Constant name. (It will be a key of a constant) - */ -Enum.prototype._addItem = function(name) { - var value; - - if (!this.hasOwnProperty(name)) { - value = this._makeEnumValue(); - - if (isSupportDefinedProperty) { - Object.defineProperty(this, name, { - enumerable: true, - configurable: false, - writable: false, - value: value - }); - } else { - this[name] = value; - } - } -}; - -/** - * Return a unique value for assigning to a constant. - * @private - * @returns {number} A unique value - */ -Enum.prototype._makeEnumValue = function() { - var value; - - value = enumValue; - enumValue += 1; - - return value; -}; - -/** - * Return whether a constant from the given key is in instance or not. - * @param {string} key - A constant key - * @returns {boolean} Result - * @private - */ -Enum.prototype._isEnumItem = function(key) { - return isNumber(this[key]); -}; - -module.exports = Enum; - - -/***/ }), -/* 46 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10); -/* harmony import */ var tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var tui_code_snippet_object_extend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7); -/* harmony import */ var tui_code_snippet_object_extend__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_object_extend__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19); -/* harmony import */ var tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20); -/* harmony import */ var tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _mdPreview__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(35); -/* harmony import */ var _eventManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(36); -/* harmony import */ var _commandManager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1); -/* harmony import */ var _convertor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(37); -/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(0); -/* harmony import */ var _codeBlockManager__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(30); -/* harmony import */ var _pluginHelper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(31); -/* harmony import */ var _utils_common__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(12); -/* harmony import */ var _htmlSanitizer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(25); -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -/** - * @fileoverview Implements editor preivew - * @author NHN FE Development Lab - */ - - - - - - - - - - - - - -var TASK_ATTR_NAME = 'data-te-task'; -var DISABLED_TASK_ATTR_NAME = 'data-te-task-disabled'; -var TASK_CHECKED_CLASS_NAME = 'checked'; -/** - * Class ToastUIEditorViewer - * @param {object} options Option object - * @param {HTMLElement} options.el - container element - * @param {string} [options.initialValue] Editor's initial value - * @param {Object} [options.events] - Events - * @param {function} [options.events.load] - It would be emitted when editor fully load - * @param {function} [options.events.change] - It would be emitted when content changed - * @param {function} [options.events.stateChange] - It would be emitted when format change by cursor position - * @param {function} [options.events.focus] - It would be emitted when editor get focus - * @param {function} [options.events.blur] - It would be emitted when editor loose focus - * @param {Object} [options.hooks] - Hooks - * @param {function} [options.hooks.previewBeforeHook] - Submit preview to hook URL before preview be shown - * @param {Array.} [options.plugins] - Array of plugins. A plugin can be either a function or an array in the form of [function, options]. - * @param {boolean} [options.useDefaultHTMLSanitizer=true] - use default htmlSanitizer - * @param {Object} [options.extendedAutolinks] - Using extended Autolinks specified in GFM spec - * @param {Object} [options.customConvertor] - convertor extention - * @param {Object} [options.linkAttribute] - Attributes of anchor element that should be rel, target, contenteditable, hreflang, type - * @param {Object} [options.customHTMLRenderer] - Object containing custom renderer functions correspond to markdown node - * @param {boolean} [options.referenceDefinition=false] - whether use the specification of link reference definition - * @param {function} [options.customHTMLSanitizer=null] - custom HTML sanitizer - * @param {boolean} [options.frontMatter=false] - whether use the front matter - */ - -var ToastUIEditorViewer = /*#__PURE__*/function () { - function ToastUIEditorViewer(options) { - var _this = this; - - this.options = tui_code_snippet_object_extend__WEBPACK_IMPORTED_MODULE_1___default()({ - useDefaultHTMLSanitizer: true, - linkAttribute: null, - extendedAutolinks: false, - customConvertor: null, - customHTMLRenderer: null, - referenceDefinition: false, - customHTMLSanitizer: null, - frontMatter: false - }, options); - this.codeBlockLanguages = []; - this.eventManager = new _eventManager__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"](); - this.commandManager = new _commandManager__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"](this); - var linkAttribute = Object(_utils_common__WEBPACK_IMPORTED_MODULE_11__[/* sanitizeLinkAttribute */ "c"])(this.options.linkAttribute); - - var _getPluginInfo = Object(_pluginHelper__WEBPACK_IMPORTED_MODULE_10__[/* getPluginInfo */ "a"])(this.options.plugins), - renderer = _getPluginInfo.renderer, - parser = _getPluginInfo.parser, - plugins = _getPluginInfo.plugins; - - var _this$options = this.options, - customHTMLRenderer = _this$options.customHTMLRenderer, - customHTMLSanitizer = _this$options.customHTMLSanitizer, - extendedAutolinks = _this$options.extendedAutolinks, - referenceDefinition = _this$options.referenceDefinition, - frontMatter = _this$options.frontMatter; - var rendererOptions = { - linkAttribute: linkAttribute, - customHTMLRenderer: _extends({}, renderer, customHTMLRenderer), - extendedAutolinks: extendedAutolinks, - referenceDefinition: referenceDefinition, - customParser: parser, - frontMatter: frontMatter - }; - - if (this.options.customConvertor) { - // eslint-disable-next-line new-cap - this.convertor = new this.options.customConvertor(this.eventManager, rendererOptions); - } else { - this.convertor = new _convertor__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"](this.eventManager, rendererOptions); - } - - var sanitizer = customHTMLSanitizer || (this.options.useDefaultHTMLSanitizer ? _htmlSanitizer__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"] : null); - - if (sanitizer) { - this.convertor.initHtmlSanitizer(sanitizer); - } - - if (this.options.hooks) { - tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default()(this.options.hooks, function (fn, key) { - _this.addHook(key, fn); - }); - } - - if (this.options.events) { - tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default()(this.options.events, function (fn, key) { - _this.on(key, fn); - }); - } - - var _this$options2 = this.options, - el = _this$options2.el, - initialValue = _this$options2.initialValue; - var existingHTML = el.innerHTML; - el.innerHTML = ''; - this.preview = new _mdPreview__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"](el, this.eventManager, this.convertor, _extends({}, rendererOptions, { - isViewer: true - })); - tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_2___default()(this.preview.el, 'mousedown', this._toggleTask.bind(this)); - - if (plugins) { - Object(_pluginHelper__WEBPACK_IMPORTED_MODULE_10__[/* invokePlugins */ "b"])(plugins, this); - } - - if (initialValue) { - this.setMarkdown(initialValue); - } else if (existingHTML) { - this.preview.setHTML(existingHTML); - } - - this.eventManager.emit('load', this); - } - /** - * Toggle task by detecting mousedown event. - * @param {MouseEvent} ev - event - * @private - */ - - - var _proto = ToastUIEditorViewer.prototype; - - _proto._toggleTask = function _toggleTask(ev) { - var style = getComputedStyle(ev.target, ':before'); - - if (!ev.target.hasAttribute(DISABLED_TASK_ATTR_NAME) && ev.target.hasAttribute(TASK_ATTR_NAME) && _utils_dom__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].isInsideButtonBox(style, ev.offsetX, ev.offsetY)) { - _utils_dom__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].toggleClass(ev.target, TASK_CHECKED_CLASS_NAME); - this.eventManager.emit('change', { - source: 'viewer', - data: ev - }); - } - } - /** - * Set content for preview - * @param {string} markdown Markdown text - */ - ; - - _proto.setMarkdown = function setMarkdown(markdown) { - this.markdownValue = markdown = markdown || ''; - this.preview.refresh(this.markdownValue); - this.eventManager.emit('setMarkdownAfter', this.markdownValue); - } - /** - * Bind eventHandler to event type - * @param {string} type Event type - * @param {function} handler Event handler - */ - ; - - _proto.on = function on(type, handler) { - this.eventManager.listen(type, handler); - } - /** - * Unbind eventHandler from event type - * @param {string} type Event type - */ - ; - - _proto.off = function off(type) { - this.eventManager.removeEventHandler(type); - } - /** - * Remove Viewer preview from document - */ - ; - - _proto.remove = function remove() { - this.eventManager.emit('removeEditor'); - tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_3___default()(this.preview.el, 'mousedown', this._toggleTask.bind(this)); - this.preview.remove(); - this.options = null; - this.eventManager = null; - this.commandManager = null; - this.convertor = null; - this.preview = null; - } - /** - * Add hook to Viewer preview's event - * @param {string} type Event type - * @param {function} handler Event handler - */ - ; - - _proto.addHook = function addHook(type, handler) { - this.eventManager.removeEventHandler(type); - this.eventManager.listen(type, handler); - } - /** - * Return true - * @returns {boolean} - */ - ; - - _proto.isViewer = function isViewer() { - return true; - } - /** - * Return false - * @returns {boolean} - */ - ; - - _proto.isMarkdownMode = function isMarkdownMode() { - return false; - } - /** - * Return false - * @returns {boolean} - */ - ; - - _proto.isWysiwygMode = function isWysiwygMode() { - return false; - } - /** - * Set code block languages - * @param {Array} languages - code lauguage list - */ - ; - - _proto.setCodeBlockLanguages = function setCodeBlockLanguages(languages) { - var _this2 = this; - - if (languages === void 0) { - languages = []; - } - - languages.forEach(function (lang) { - if (_this2.codeBlockLanguages.indexOf(lang) < 0) { - _this2.codeBlockLanguages.push(lang); - } - }); - }; - - return ToastUIEditorViewer; -}(); -/** - * Check whether is viewer (using in plugins) - * @type {boolean} - * @ignore - */ - - -ToastUIEditorViewer.isViewer = true; -/** - * domUtil instance - * @type {DomUtil} - * @ignore - */ - -ToastUIEditorViewer.domUtils = _utils_dom__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"]; -/** - * CodeBlockManager instance using in plugins - * @type {CodeBlockManager} - * @ignore - */ - -ToastUIEditorViewer.codeBlockManager = _codeBlockManager__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"]; -/** - * WwCodeBlockManager class using in plugins - * @type {Class.} - * @ignore - */ - -ToastUIEditorViewer.WwCodeBlockManager = null; -/** - * WwTableManager class using in plugins - * @type {Class.} - * @ignore - */ - -ToastUIEditorViewer.WwTableManager = null; -/** - * WwTableManager class using in plugins - * @type {Class.} - * @ignore - */ - -ToastUIEditorViewer.WwTableSelectionManager = null; -/* harmony default export */ __webpack_exports__["a"] = (ToastUIEditorViewer); - -/***/ }), -/* 47 */, -/* 48 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is null or not. - * @author NHN FE Development Lab - */ - - - -/** - * Check whether the given variable is null or not. - * If the given variable(arguments[0]) is null, returns true. - * @param {*} obj - Target for checking - * @returns {boolean} Is null? - * @memberof module:type - */ -function isNull(obj) { - return obj === null; -} - -module.exports = isNull; - - -/***/ }), -/* 49 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Request image ping. - * @author NHN FE Development Lab - */ - - - -var forEachOwnProperties = __webpack_require__(10); - -/** - * @module request - */ - -/** - * Request image ping. - * @param {String} url url for ping request - * @param {Object} trackingInfo infos for make query string - * @returns {HTMLElement} - * @memberof module:request - * @example - * var imagePing = require('tui-code-snippet/request/imagePing'); // node, commonjs - * - * imagePing('https://www.google-analytics.com/collect', { - * v: 1, - * t: 'event', - * tid: 'trackingid', - * cid: 'cid', - * dp: 'dp', - * dh: 'dh' - * }); - */ -function imagePing(url, trackingInfo) { - var trackingElement = document.createElement('img'); - var queryString = ''; - forEachOwnProperties(trackingInfo, function(value, key) { - queryString += '&' + key + '=' + value; - }); - queryString = queryString.substring(1); - - trackingElement.src = url + '?' + queryString; - - trackingElement.style.display = 'none'; - document.body.appendChild(trackingElement); - document.body.removeChild(trackingElement); - - return trackingElement; -} - -module.exports = imagePing; - - -/***/ }), -/* 50 */, -/* 51 */ -/***/ (function(module, exports, __webpack_require__) { - -// extracted by mini-css-extract-plugin - -/***/ }), -/* 52 */, -/* 53 */, -/* 54 */, -/* 55 */, -/* 56 */, -/* 57 */, -/* 58 */, -/* 59 */, -/* 60 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _viewer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(46); -/* harmony import */ var _css_contents_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(51); -/* harmony import */ var _css_contents_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_contents_css__WEBPACK_IMPORTED_MODULE_1__); -/** - * @fileoverview entry point for viewer - * @author NHN FE Development Lab - */ - - -/* harmony default export */ __webpack_exports__["default"] = (_viewer__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"]); - -/***/ }) -/******/ ])["default"]; -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor.css b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor.css deleted file mode 100644 index 2cee463091..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor.css +++ /dev/null @@ -1,1804 +0,0 @@ -/*! - * @toast-ui/editor - * @version 2.5.1 | Tue Nov 24 2020 - * @author NHN FE Development Lab - * @license MIT - */ -@charset "utf-8"; -/* height */ -.auto-height, -.auto-height .tui-editor-defaultUI { - height: auto; -} - -.auto-height .tui-editor { - position: relative; -} - -:not(.auto-height) > .tui-editor-defaultUI, -:not(.auto-height) > .tui-editor-defaultUI > .te-editor-section { - display: -ms-flexbox; - display: flex; - -ms-flex-direction: column; - flex-direction: column; -} - -:not(.auto-height) > .tui-editor-defaultUI > .te-editor-section { - -ms-flex: 1; - flex: 1; -} - -/* tui editor */ -.tui-editor:after, -.tui-editor-defaultUI-toolbar:after { - content: ''; - display: block; - height: 0; - clear: both; -} - -.tui-editor { - position: absolute; - line-height: 1; - color: #222; - width: 100%; - height: inherit; -} - -.te-editor-section { - min-height: 0px; - position: relative; - height: inherit; -} - -.te-md-container { - display: none; - overflow: hidden; - height: 100%; -} - -.te-md-container .te-editor { - line-height: 1.5; -} - -.te-md-container .te-editor, -.te-md-container .te-preview { - box-sizing: border-box; - padding: 0; - height: inherit; -} - -.te-md-container .CodeMirror { - font-size: 13px; - height: inherit; -} - -.te-md-container .te-preview { - overflow: auto; - padding: 0 25px; - height: 100%; -} - -.te-md-container .te-preview > p:first-child { - margin-top: 0 !important; -} - -.te-md-container .te-preview .tui-editor-contents { - padding-top: 8px; -} - -.tui-editor .te-preview-style-tab > .te-editor, -.tui-editor .te-preview-style-tab > .te-preview { - float: left; - width: 100%; - display: none; -} - -.tui-editor .te-preview-style-tab > .te-tab-active { - display: block; -} - -.tui-editor .te-preview-style-vertical > .te-tab-section { - display: none; -} - -.tui-editor .te-preview-style-tab > .te-tab-section { - display: block; -} - -.tui-editor .te-preview-style-vertical .te-editor { - float: left; - width: 50%; -} - -.tui-editor .te-preview-style-vertical .te-preview { - float: left; - width: 50%; -} - -.tui-editor .te-md-splitter { - display: none; - position: absolute; - left: 50%; - top: 0; - height: 100%; - width: 1px; - border-left: 1px solid #e5e5e5; -} - -.tui-editor .te-preview-style-vertical .te-md-splitter { - display: block; -} - -.te-ww-container { - display: none; - overflow: hidden; - z-index: 10; - height: inherit; - background-color: #fff; -} - -.te-ww-container > .te-editor { - overflow: auto; - height: inherit; -} - -.te-ww-container .tui-editor-contents:focus { - outline: none; -} - -.te-ww-container .tui-editor-contents { - padding: 0 25px; -} - -.te-ww-container .tui-editor-contents:first-child { - box-sizing: border-box; - margin: 0px; - padding: 16px 25px 0px 25px; - height: inherit; -} - -.te-ww-container .tui-editor-contents:last-child { - margin-bottom: 16px; -} - -.te-md-mode .te-md-container { - display: block; - z-index: 100; -} - -.te-ww-mode .te-ww-container { - display: block; - z-index: 100; -} - -.tui-editor.te-hide, -.tui-editor-defaultUI.te-hide { - display: none; -} - -.tui-editor-defaultUI .CodeMirror-lines { - padding-top: 18px; - padding-bottom: 18px; -} - -.tui-editor-defaultUI pre.CodeMirror-line { - padding-left: 25px; - padding-right: 25px; -} - -.tui-editor-defaultUI .CodeMirror pre.CodeMirror-placeholder { - margin: 0; - padding-left: 25px; - color: grey; -} - -.tui-editor-defaultUI .CodeMirror-scroll { - cursor: text; -} - -/* Essential element style */ -.tui-editor-contents td.te-cell-selected { - background-color: #d8dfec; -} -.tui-editor-contents td.te-cell-selected::selection { - background-color: #d8dfec; -} -.tui-editor-contents th.te-cell-selected { - background-color: #908f8f; -} -.tui-editor-contents th.te-cell-selected::selection { - background-color: #908f8f; -} - -/* default UI Styles */ -.tui-editor-defaultUI { - position: relative; - border: 1px solid #e5e5e5; - height: 100%; - font-family: 'Open Sans', 'Helvetica Neue', 'Helvetica', 'Arial', '나눔바른고딕', - 'Nanum Barun Gothic', '맑은고딕', 'Malgun Gothic', sans-serif; -} - -.tui-editor-defaultUI button { - color: #fff; - padding: 0px 14px 0px 15px; - height: 28px; - font-size: 12px; - border: none; - cursor: pointer; - outline: none; -} -.tui-editor-defaultUI button.te-ok-button { - background-color: #4b96e6; -} -.tui-editor-defaultUI button.te-close-button { - background-color: #777; -} - -.tui-editor-defaultUI-toolbar { - padding: 0 25px; - height: 31px; - background-color: #fff; - border: 0; - overflow: hidden; -} - -.tui-toolbar-divider { - float: left; - display: inline-block; - width: 1px; - height: 14px; - background-color: #ddd; - margin: 9px 6px; -} - -.tui-toolbar-button-group { - height: 28px; - border-right: 1px solid #d9d9d9; - float: left; -} - -.te-toolbar-section { - height: 32px; - box-sizing: border-box; - border-bottom: 1px solid #e5e5e5; -} - -.tui-editor-defaultUI-toolbar button { - float: left; - box-sizing: border-box; - outline: none; - cursor: pointer; - background-color: #fff; - width: 22px; - height: 22px; - padding: 3px; - border-radius: 0; - margin: 5px 3px; - border: 1px solid #fff; -} - -.tui-editor-defaultUI-toolbar button:hover, -.tui-editor-defaultUI-toolbar button:active, -.tui-editor-defaultUI-toolbar button.active { - border: 1px solid #aaa; - background-color: #fff; -} - -.tui-editor-defaultUI-toolbar button:first-child { - margin-left: 0; -} - -.tui-editor-defaultUI-toolbar button:last-child { - margin-right: 0; -} - -.tui-editor-defaultUI-toolbar button.tui-scrollsync { - width: auto; - color: #777777; - border: 0; -} - -.tui-editor-defaultUI button.tui-scrollsync:after { - content: 'Scroll off'; -} - -.tui-editor-defaultUI button.tui-scrollsync.active { - color: #4b96e6; - font-weight: bold; -} - -.tui-editor-defaultUI button.tui-scrollsync.active:after { - content: 'Scroll on'; -} - -.tui-editor-defaultUI .te-mode-switch-section { - background-color: #f9f9f9; - border-top: 1px solid #e5e5e5; - height: 20px; - font-size: 12px; -} - -.tui-editor-defaultUI .te-mode-switch { - float: right; - height: 100%; -} - -.tui-editor-defaultUI .te-switch-button { - width: 92px; - height: inherit; - background: #e5e5e5; - outline: 0; - color: #a0aabf; - cursor: pointer; - border: 0; - border-left: 1px solid #ddd; - border-right: 1px solid #ddd; -} - -.tui-editor-defaultUI .te-switch-button.active { - background-color: #fff; - color: #000; -} - -.tui-editor-defaultUI .te-markdown-tab-section { - float: left; - height: 31px; - background: #fff; -} - -.te-markdown-tab-section .te-tab { - margin: 0 -7px 0 24px; - background: #fff; -} - -.tui-editor-defaultUI .te-tab button { - box-sizing: border-box; - line-height: 100%; - position: relative; - cursor: pointer; - z-index: 1; - font-size: 13px; - background-color: #f9f9f9; - border: solid 1px #e5e5e5; - border-top: 0; - padding: 0 9px; - color: #777; - border-radius: 0; - outline: 0; -} - -.te-markdown-tab-section .te-tab button:last-child { - margin-left: -1px; -} - -.te-markdown-tab-section .te-tab button.te-tab-active, -.te-markdown-tab-section .te-tab button:hover.te-tab-active { - background-color: #fff; - color: #333; - border-bottom: 1px solid #fff; - z-index: 2; -} - -.te-markdown-tab-section .te-tab button:hover { - background-color: #fff; - color: #333; -} - -.tui-popup-modal-background { - background-color: rgba(202, 202, 202, 0.6); - position: fixed; - margin: 0px; - left: 0px; - top: 0px; - width: 100%; - height: 100%; - z-index: 9999; -} - -.tui-popup-wrapper.fit-window, -.tui-popup-modal-background.fit-window .tui-popup-wrapper { - width: 100%; - height: 100%; -} - -.tui-popup-wrapper { - width: 500px; - margin-right: auto; - border: 1px solid #cacaca; - background: white; - z-index: 9999; -} - -.tui-popup-modal-background .tui-popup-wrapper { - position: absolute; - margin: auto; - top: 0px; - right: 0px; - bottom: 0px; - left: 0px; -} - -.tui-popup-header { - padding: 10px; - height: auto; - line-height: normal; - position: relative; - border-bottom: 1px solid #cacaca; -} - -.tui-popup-header .tui-popup-header-buttons { - float: right; -} - -.tui-popup-header .tui-popup-header-buttons button { - padding: 0px; - background-color: transparent; - background-size: cover; - float: left; -} - -.tui-popup-header .tui-popup-close-button { - margin: 3px; - width: 13px; - height: 13px; - background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMHB4IiBoZWlnaHQ9IjEwcHgiIHZpZXdCb3g9IjAgMCAxMCAxMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5GMjc2Qzc4MC0zM0JBLTQ3MTItQTM3OC04RkQwQUNDOTFDRTk8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImxuYi1mb2xkZXItZGVsIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGZpbGw9IiM3Nzc3NzciPiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDMuNTg1Nzg2NDQgTDEuNzA3MTA2NzgsMC4yOTI4OTMyMTkgTDAuMjkyODkzMjE5LDEuNzA3MTA2NzggTDMuNTg1Nzg2NDQsNSBMMC4yOTI4OTMyMTksOC4yOTI4OTMyMiBMMS43MDcxMDY3OCw5LjcwNzEwNjc4IEw1LDYuNDE0MjEzNTYgTDguMjkyODkzMjIsOS43MDcxMDY3OCBMOS43MDcxMDY3OCw4LjI5Mjg5MzIyIEw2LjQxNDIxMzU2LDUgTDkuNzA3MTA2NzgsMS43MDcxMDY3OCBMOC4yOTI4OTMyMiwwLjI5Mjg5MzIxOSBMNSwzLjU4NTc4NjQ0IFoiIGlkPSJDb21iaW5lZC1TaGFwZSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+); -} - -.tui-popup-header .tui-popup-title { - font-size: 13px; - font-weight: bold; - color: #333; - vertical-align: bottom; -} - -.tui-popup-body { - padding: 15px; - font-size: 12px; -} - -.tui-editor-popup { - position: absolute; - top: 30px; - left: 50%; - margin-left: -250px; -} - -.tui-editor-popup.tui-popup-modal-background { - position: fixed; - top: 0px; - left: 0px; - margin: 0px; -} - -.tui-editor-popup .tui-popup-body label { - font-weight: bold; - color: #666; - display: block; - margin: 10px 0 5px; -} - -.tui-editor-popup .tui-popup-body .te-button-section { - margin-top: 15px; -} - -.tui-editor-popup .tui-popup-body input[type='text'], -.tui-editor-popup .tui-popup-body input[type='file'] { - padding: 4px 10px; - border: 1px solid #bfbfbf; - box-sizing: border-box; - width: 100%; -} - -.tui-editor-popup .tui-popup-body input[type='text'].disabled { - border-color: #e5e5e5; - background-color: #eee; - color: #e5e5e5; -} - -.tui-editor-popup .tui-popup-body input.wrong { - border-color: #ff0000; -} - -.te-popup-add-link .tui-popup-wrapper { - height: 219px; -} - -.te-popup-add-image .tui-popup-wrapper { - height: 243px; -} - -.te-popup-add-image .te-tab { - display: block; - background: none; - border-bottom: 1px solid #ebebeb; - margin-bottom: 8px; -} - -.te-popup-add-image .te-url-type { - display: none; -} - -.te-popup-add-image .te-file-type { - display: none; -} - -.te-popup-add-image div.te-tab-active, -.te-popup-add-image form.te-tab-active { - display: block; -} - -.te-popup-add-image .te-tab button { - border: 1px solid #ccc; - background: #eee; - min-width: 100px; - margin-left: -1px; - border-bottom: 0px; - border-radius: 3px 3px 0px 0px; -} - -.te-popup-add-image .te-tab button.te-tab-active { - background: #fff; -} - -.te-popup-add-table .te-table-selection { - position: relative; -} - -.te-popup-add-table .te-table-body { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZmspKREMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgAMSwQgckFvTgAAAABJRU5ErkJggg=='); -} - -.te-popup-add-table .te-table-header { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZksLCxMMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgDxKwPzTeWPdAAAAABJRU5ErkJggg=='); -} - -.te-popup-add-table .te-selection-area { - position: absolute; - top: 0; - left: 0; - background: #80d2ff; - opacity: 0.3; - z-index: 999; -} - -.te-popup-add-table .te-description { - margin: 10px 0 0 0; - text-align: center; -} - -.te-popup-table-utils { - width: auto; - min-width: 120px; -} - -.te-popup-table-utils .tui-popup-body { - padding: 0px; -} - -.te-popup-table-utils button { - display: block; - width: 100%; - background-color: #fff; - border: none; - outline: 0; - padding: 0px 10px 0px 10px; - font-size: 12px; - line-height: 28px; - text-align: left; - color: #777; -} - -.te-popup-table-utils button:hover { - background-color: #f4f4f4; -} - -.te-popup-table-utils hr { - margin: 0; - background-color: #cacaca; - border-style: none; - height: 1px; -} - -.te-popup-table-utils .te-context-menu-disabled { - color: #ccc; -} - -.te-popup-table-utils .te-context-menu-disabled:hover { - background-color: #fff; -} - -.te-heading-add { - width: auto; -} - -.te-heading-add .tui-popup-body { - padding: 0; -} - -.te-heading-add h1, -.te-heading-add h2, -.te-heading-add h3, -.te-heading-add h4, -.te-heading-add h5, -.te-heading-add h6, -.te-heading-add ul, -.te-heading-add p { - padding: 0; - margin: 0; -} - -.te-heading-add ul { - list-style: none; -} - -.te-heading-add ul li { - padding: 2px 10px; - cursor: pointer; -} - -.te-heading-add ul li:hover { - background-color: #eee; -} - -.te-heading-add h1 { - font-size: 24px; -} - -.te-heading-add h2 { - font-size: 22px; -} - -.te-heading-add h3 { - font-size: 20px; -} - -.te-heading-add h4 { - font-size: 18px; -} - -.te-heading-add h5 { - font-size: 16px; -} - -.te-heading-add h6 { - font-size: 14px; -} - -.te-dropdown-toolbar { - position: absolute; - width: auto; -} - -.te-dropdown-toolbar .tui-popup-body { - padding: 0px; -} - -.tui-popup-color { - padding: 0; -} - -.tui-popup-color .tui-colorpicker-container, -.tui-popup-color .tui-colorpicker-palette-container { - width: 144px; -} - -.tui-popup-color .tui-colorpicker-container ul { - width: 144px; - margin-bottom: 8px; -} - -.tui-popup-color .tui-colorpicker-container li { - padding: 0 1px 1px 0; -} - -.tui-popup-color .tui-colorpicker-container li .tui-colorpicker-palette-button { - border: 0; - width: 17px; - height: 17px; -} - -.tui-popup-color .tui-popup-body { - padding: 10px; -} - -.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-toggle-slider { - display: none; -} - -.tui-popup-color .te-apply-button, -.tui-popup-color .tui-colorpicker-palette-hex { - float: right; -} - -.tui-popup-color .te-apply-button { - height: 21px; - width: 35px; - background: #fff; - border: 1px solid #efefef; - position: absolute; - bottom: 135px; - right: 10px; - color: black; -} - -.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-hex { - border: 1px solid #e1e1e1; - padding: 3px 14px; - margin-left: -1px; -} - -.tui-popup-color .tui-colorpicker-container div.tui-colorpicker-clearfix { - display: inline-block; -} - -.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-preview { - width: 19px; - height: 19px; -} - -.tui-popup-color .tui-colorpicker-slider-container .tui-colorpicker-slider-right { - width: 22px; -} - -.tui-popup-color .tui-colorpicker-slider-container .tui-colorpicker-huebar-handle { - display: none; -} - -.tui-tooltip { - position: absolute; - background-color: #222; - z-index: 999; - opacity: 0.8; - color: #fff; - padding: 2px 5px; - font-size: 10px; -} - -.tui-tooltip .arrow { - content: ''; - display: inline-block; - width: 10px; - height: 10px; - background-color: #222; - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); - position: absolute; - top: -3px; - left: 6px; - z-index: -1; -} - -.tui-toolbar-icons { - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANoAAAC8CAYAAAAesLCcAAAAAXNSR0IArs4c6QAAKj9JREFUeAHtnQuUVdWZ5++tgoLi/ZKX8hAVEYIxOmrSyyQkxkw7ziTjGF8QEZwZTEaxO3bjMt29IumVLG1Nxplga0JmIQ8FxTgTk3bF6bQr2Cur07aNOhIVUUAEoajiafEoiqLu/P6Hs2/OPZxzzzn3XqSq+PZap/be3/72d77zP/vb3977nr0rl7NgCBgChoAhYAgYAoaAIWAIGAKGgCFgCBgChoAhYAgYAoaAIWAIGAKGgCFgCBgChoAhYAicAgTyae95/fXXF2J434N+0zPPPLM2pjySjLxLogrq6uqONDQ0bF6xYsXBqPI4mtMPPbxncvk4fscXV+70c8/l8nH8ji+u3NGT9HJ8Lk6rp+NPinuansHnBdsG8ot4xtuD9ErTCxcurNuwYcO4lStXbqlUhqtX5xJVxOdS99Eq6pdU7ezs7NPe3j6+hGgZQyABga9//etjYFnDNS+BNVXxvHnzer/zzjuTjx49OiJVhQSmijza6NGj+zY3N1+LUayS/Hw+f3D16tUDEu5VUhz0ENOmTXvtzTffHALD2WKqr6/vfOqpp14rqWCZjxUB53lTeFRvpJOCzxvBJHlU1y6S+IJgUOcz5J/lkrEpHOP6kOvXXIuR9S/EqQPyBvTq1WtSR0dH70Cldtpla+/evVuyjrYkoxYeLVcoFN4IKFR1EsM9XLUQE1AzBG644YbnddVK4MyZM8/TVQt5GIU82BouZ2QSW8+lUdF/5vondL+DOFVA3hlMXyaHjEx1G44dOza8ra1tyi233DIylbAAU69AOnWyqampLcS8MpTPlMWbfSpYgd5kTzCfJg1AJT2ry8fVzdoDIy9yTunkp+2Bq9XL3c/FtdLLyYuL6Uw9fGm0C0m+z/MujeNNQ2dI5sm76aabxtKxtq9atWpXmnoV8NSj7yPc5zVGSf9UQf0TqmBs48D9EBgcOKEwhlATj4bsRdz4ezH3yEz2H+TMzBWtwklBgGnBNTSqf+8b2X3c5G9531MrvRmLC+8i7z0ZGV5iDIaghttYiTzkLKbeDK4dgfqtpFu4NIT0AtOcBS5dLkZeC7wb6OyPOj5NZfByHS6vmPyoYD4pXZFHQ5n8rFmzzmLRQnO0K/ybfJP4r5JuGFWOvLUA3UCZ5mhurncGaY2zUwXpFGQM54NladLSKcgXzgfLsqSr1St8r1rpFZYbzgeMTEX9uJ5hweDSvXv3hllT5Z2RiRljq9OciFW+txndpKofZAKD37EYcsmRI0c0T/sM+UEqR14v5P07kou4vihamkD9Azzb262trecwhOzv1gvoEPJz584dfPDgwXF4Ye8eaeSJp2KPBjglDRtZ7WlvmoaPHsMbWqThNZ6Ti0DIyNzNpu7bt6+i1eagkTlhNOi+69evr3i1+YknnpBHm8ElD+cFDK0Do/kFmSsxkl4333xz6hXExYsXHz3//PM3sPhRHNJiXIWlS5fu69+//7u6gQzZu1GKP6kZg7LwPgUMLUjSyuMvSwgZMsg7Yf6Du96XQUROOokfYL0OwOXjZDi+uHKnE3yeZ3P5OH7HF1fu6El6OT4Xp9XT8SfFafV0cqQvwWVLYui3lhBSZIRjuO24atCHu3QlMc+mzv72cF3o79FZPIIx9wmXlctjSJ2UbwnzYGxtjOha8JapHVVqxvDNAvkjGNlqLP/PA7SKk/JkyNrLZHlbxUKsoiEQQoBOYQkfQrSGyBVnfU9X6m0qlmYVDQFDwBAwBAwBQ8AQMAQMAUPAEDAEDAFDwBAwBAwBQ8AQMAQMAUPAEDAEDAFDwBAwBAwBQ8AQMAQMgVOOgL7Jy/odYTml9U2ernI8VmYInJYI1NLQBKAZ2mnZjE7KQ2f6ep+Gpy3if8k1hw+J9aX163yseT9fR79QiXbUzbN1YYy+2uZr/V7Eh5DThLz9lcgL10kyPO4T3uoTFlGSTzI85JXsYSup7GeSdArXSdIxSacIeYk6hut01zzY/ATd54NhTbZwcfzChMmTJ2/1v+rPBEsmQ0OyjOw7GNki4nUYymeJf3rbbbdNXbJkSeYvo30jG4ORNSPzMPEA4gkA9CbgZPoy2jVgxUmNE50TA3K8YaNi5J02jVPAaFMvuyce5P3OIFs8i8Ph6rAWL2EH72wNX7Pf8+STT0buuIC/gfKzkDcgeBaHw9VhLWHa2Yy8A9q9QXm1BjIPkdPZFHqdv19Nt6g4oNMITsZqZFPoRu1XyyIoa4/+CsIPAsAMdxNu2o+byhNlDjfeeOMFbBvvRN47rjK9RV0lPYarb3F1CPg75/8fUoaFJfGeyu3128M2lE+GjU1Ghhwde6DRUElAXrm9fupo34IntbHRcU9hVHQnBv0ljHUSsTvFSptCr0PW70oUSMjMmTOnL7upR7J1S7upG2iq3vOrM6DD2IS81GeGZDW0p7jhV3iIeVOnTl1ZrUHgiicBzJA+ffpsWbZs2R7kRu8wTABExa6XRcZ3OeNiYYoqZVlcL4uX3cFW9u1lmXtQIRskV9JAb+aRfoXhzAsbTvhRfcNcDP1qsF8F9jODPHrHeIKheLSPiLckGY4ME94J8A4i3sv5IpuC8uLS6H0dZU+ge98YHhmshpHSNTGg91Da5tnOuMIVtG+Ssq3I09kkiSHT0JFGt4Cbj+dhVrz11lsLebiHMbjHKjU4wNxG79Bw+PDhiWxvH8MxXs3Lly9vqcTgeOA8+uiEpvt46oV6cmd8SkcF1Ymii0bZ2sCWe8/QnPGVqxNXFqZXo1tYlvK10g38Zkhe0MjidBV+MkSMbR7nx2x1dVXfBWjeGTBBI4vTVZhztVO+hfrTXV0nKy72h7qr4HceLI41FZ3762i5WCNLJSTElGhoQZC5ebE6D3UOmUfYzv0IPEW6wC9mIhLwenMfV4QL9pL0Dn10+hXGohORXLHX4IuZMglnZHQGXyjDlrrIGdnAgQM3pK5kjKcEAYz4TwNGVqCj3o0iDdDcATqZho50MiPpOIrtGO/Vgcw62r93IsFJHzqGUcQgdPLVoyhyx9NPP13RQS1BmcjTyVfj+/btu5XTYJuDZUlp6haHnUnGniRL5cgrdgjqadPU6Qk8dFjdbujIu9Kp1merHdJh/2/el3cAr98mfsfUJNNiCPU0p2xobGzcOmnSpL1uxKY2gZEdpPPNvBiS6NGCjYfFi0/zIK/yIBrvKjzN9Sg9x0Avl/EPig/gOPBD7kFI78VDjsezZT7LpBbGFVT/dDKu4HMzL7qH3vzfQrtaw0HeUbHYYQyt2KnB48r3qK7LuFjTA9KDiOVdpofkRS6GwKvqx/y6SieFs/E4X6Gz/8cQo+Zj81lxLCoZKo/LNsiYwivpPN+uk768P3v27OHMpV7ggbb6vV4rWmrSrGX55+I0jqNjXDpz71yWS4+y/KqFkGOkh2mSSU+S6QQs3cO9fOQUF0McLU4H13CiyqnrebTgYoijRfGLlsY4k3QKyy6no3iTdIqQV9Y7+3OuT9LIT1jeD8vy82WX99Ffc663aKQnLO9HydOwjHeYdXn/eRZhwkam93F71D1S0PaHjUx1qvmvMqk9GosUu/Fol+HR/hog9PvEUK7Xub7Mcc7riTMFDK2D5dP19IhjOfhS5+1p+Vcuf4OO88okDGY1SDdPI7swa/0wP/JOWAwJ8/TUvL/SODPu+YR1XFkUHX55lNjVQ2EdVS8D7X9m4E1kZeqSadqSKLCnMcjQsnqMchhoQSSrxygnz8pOXwRSe7SuDpEMjKCDXL9bC11lYFpl1dCxFvJMhiFgCBgChoAhYAgYAoaAIWAIGAKGgCFgCBgChoAhYAgYAoaAIWAIGAKGgCFgCBgChoAhYAgYAoaAIWAI9EQEMn0c6gAIf0+Y9SNTJ8fF4e8Ja/CRqRNd/Kq/SPATleoc1tXJTatzGDtXPy5O0jNOnzLyUn3Am6SnPnXj49tF7OioQ8fE7fxJeupTtylTpjRv3749n/XgGz2r0zeMVxw9Dh9Hd/qG32sc3dWLizPv+5IgQDnbF6gzICoy1qBCo0eP/r2fbw8/WJDP0l0DgYCR/QMa/YbGpw27FQdnZGybmtza2jqZA59qciRBxQqdhIoVfVTMx7YzpAuAr1Fcbdi1a9dAyQBw7XGrKPDl/tIhQ4b8t/CJXJV2BHy5P5Ee9gO3KdUpVW1HUKk+7v7huFp9wvLC+Sh9/b2JMrKLuN5hB3PqdhSlr783cTKyGtmGdSSsQ0/IpwYo+LAY2Ax9Kc+1JkivNI0c7wAX5KY+vit8L2Tcunfv3kvpXa/nZb4VLs+apzMZzkbU/ojTsWLe1visMnoKvzwM2D7ApswH2cDZwXAxaGRfyHpmIu9KB+eeNWjQoKaxY8cW5MnAqpFNv0cGDx78TiVDx66OdUWGBlAz9GB4oDWKqw00as+jjRgxomKP5uugsx5ewTjuwDiWika6uO1eeRcoTxzycnBQX55xCo1iK5tbd6ku8ryd106Oi5GXau7j+F0cp58rT6On41Ucp5/jqURPjOz71L+b93Q1mMjjOE+W2cikBzvqz0TWSIaJgzAyvZ+aGVkSnrp/lpCEZ1pZmedoGlIhfALXFs47fJ+4qjB//vw+CGjgal+0aFFNhg14xkjjqlRRevGayqtUj1NVT56Me79BB3sBcYmRabNtVr3OO++8JuocVkdGXGJk2mybVV534M/s0eiJZujButL8LAC0hozXc35EceiY1SMEZOl46jYawyaOcSgOHSvxCEGZ4XQ1+oVlKV9r/SRT3pye/Uskf8PVgJf/ooaLlR4doWMsGI6+q4UP5mR5rg0aLsrIaF9juMd2ropCGM9qPVwYz0o9XGaPpvmZEKB3W6O42oCcqudn0gG9lg0dOvRSgCkaWTW60Zh2n3/++W8jr2hk1cjr7nXBoYXl/C+Cywx3cjPv7r5Kn0uGpTMzZWTI9k6p8o2sUpFdul5mjwa4M/REAL5GcbUBcGsyP8OLzYnSJa5H4+WWnaPFDYvjejTkpZqjxekTpbtoSXrG6VNGXio9Xf2gvhwD6JGhueLMcVBf5n5Vy8uswCmqkMmj+aBPkK4YyOZqdfZB1/ws19TU9Ilq5Vl9Q8AQMAQMAUPAEDAEDAFDwBAwBAwBQ8AQMAQMAUPAEDAEDAFDwBAwBAwBQ8AQMAQMAUPAEDAEDAFDwBAwBAwBQ8AQMAQMAUPAEMiOQNkv2IPi/A+KT/iaPI4erBuV9j8oPmH/VBw9SkYamtMvzJv0VXyY3+Wdfi7v4p729T7/9rjvwYMHH2D70Vf1jOzaeK5///736t8eR2C6jWMI5vHP2n/l8AjH7EGrW79+vXZWD1EZuz/2cSbLhzqTJYyp/o81+wB18NP+sJxyeV/Ov/o8/8a9k3VjPlUI1pu+47VU7f6WW27pz46FKarLFqH1K1asOKj022MuLtllf8GOVxN3RGT6el83sdDzEaDB1mNkv+ZJ/wQDm6hL6UOHDn0r5unPYl/Z4pgyGWmeIwvOw8hGwqPdGg1Kv/fee6Oi6mBkvTE2b5dIVHkZ2jzKdByGLqWrCug4gg6hU5fS1QjLvB+tmpt9HHXZudtv3759j7r9aZV6Lqer3xOPd/vTXC/pyrPG1eoTvl+1+oTl+fk5xFdwbaORfY2jHDa3t7dfhMf6e7/ci9yz+B7urGBZMD1z5szh5AfIU3FtbGxsbMeQG9ml/VGQzz2LPJOMLViWlKaONhDP5Frh894C7c+QWdGBT9Stp/MYhoHt9uUNh7YNecf8fKaoRxkaQExlM+EzIKBDeuZkQiKCGXmNnIQ1CbB1tsX7ESw9ksRwcTZeKMdw8G46mJf9hywxsvCDU2drmObyGI0MTbvgt7rhF9mjrjwqllFG0cvQZGQytsd8nm8Si7bYz2eNZGQa8XmHw5LW2ZXDXD6rsCyGpvHyYFm6s2ql/RtmGkv7ddQz1GtYQfDG0EpzDoWKM/ca6DKHen/L1Y+rGKCXjM9dAc9QdpzOyVcj0GccjaRkeI28S5yMYIy8xHG6+OP0CcoKppP0jNMnKCOYTqmnOqocPfqLwbrhdOBZtvEObw+XuzwG2xdZucmTJ2tIFxvcs8jIwH1LLGN0gYaKv+X51qkYWb8lEm1x2jmZ6rmAziPQ+QDyvKMskHdANMpb0szJnBwXZzG096h0CcMIjZ03SQA3nigACSrLFKh7hLr97rrrrgYqeqdf+WnJzXwaloyVkEmHcsw6+YrhUjkWK+siCPgG6nWApEsagcpSdi7Fp/EXQbwO25ftlamtqyzglYt1khKpDY3G/zA3eoKe5kFufqcE07D/RrHKFGcJnG7bzEGcE5ubm89iXvWB6iqtWGWKswTmZMvQ6xXquKGjVx2Qy3quuHtw8tVu5B2id53EM2vo6IWsL83Vc3Gl+rj64bhafcLy/LwOOPoc7/VKYuEZGdyzgFOBtqEh2rgoRsp02MiADRs2DCQ+flBIBKN7FuRdAu7q0N+IYIsiyXMdpD3+d3T2RkPcs57O927oKov1tlHCGCZ6iyCU7QyVj1IZNG/1MVRWNpva0JgIP8mwTuNmrTy96UvdwMPcSNnqsneJKPQbcgFgRjKvmiYWwG0DoM2U7YmokkjiRb2F0V6qxZBE5hQMyDvMYsjbLEuPT8HeY1hosMt5mM8R/5Aj4D6IWwwJPXDsYgjvdTed1QDkjcMjtLvFkCeffLJkMSQoD/5UiyEYpVsEWfSzn/3sO0EZlEnGncSpF0XgdYsgzbz/7SF56rRHwpN5USS1oemGeA0ZVGajUt2owIPIoCoyqih5onGM2SGiOUorAErJUOI4Nfl0Kcen33lIv+/yyDsd5mhLed45GMYV9OD/zOU9Ph3tX9AE7g9gUcSWDjd2MWTlypW7qTtcxsY1xZ2mxYnF24PHiQexxTjTLobM5N796LB/4vRyMSumP6HjvofnyLIo4i2C8I9Xdjk5LhaNQ6RGk8+8KJLK0OIaq1PAxRhOqmFaEFBXNypGXqoFhqi6RqscAXA/xg/WV4V/sO7Xr1/cFKHsYgiGUKDDejf8g/W5554bHpp5SsvIMMi0iyHzMKRfuZ9fgk8tGm1NP6Jr+Jhq9RGD1SLI/qhTs0VD3n7xIK8leC9LGwKGgCFgCBgChoAhYAgYAoaAIWAIGAKGgCFgCBgChoAhYAgYAoaAIWAIGAKGgCFgCBgChoAhYAgYAgkI8K3aQl0JbKmL9f+Ke+o/Bk8NgjGeNgik+tZRaPA92X0+Kgv9uKqID1XH+AJKvpCuSqhVNgS6KAJlPwJO+pg47UfE7tmTPiY+HT4iTsLUYeXiJIyTMHVyXFwtxoxqltLpzkDORCezmphRzUQ63YHI83ZGVyOrK9ct69H46vq7YeUBeR70VuirwmVJebYt7AjzIEtfS3cS13S7TPg+ls+OgJsqsDVmoastI+NdrVE+qtzxRcVuqsBX9cVRjIyMdqH2lIsqj5LTHWkl52GEHyAA8LmjRo26X3lAVp1/CJSFq8XmHcCA24cz/ZqUl41xfeTKYiv3sAJ5Kne5R3N5xY6WNqbOWne5Oi6v2NHSxjIiTRe4rtXJYqon70M0Adoa0VTGdZ8zOPHEBRmRpgtcQ3SymPjmz5/fh6iBNnVANJWJxxlcnKzuSC9raP4DHQHMmTt37lzDMOWPSY8CmNdURv7nGgoB9P9J+/DsNdJmwWGcLjWZuoMxMki9tFlT8s7luuTGG288J60846s9As7IkPwG7+ZKfzNtDiOYobvhgdaIpjLxJBmbMzJ4D0+bNm2Dv5k2t2vXLh1tkBsxYkSraCoTT080tlQ9J43/WoxrBYCqZ9P2c21bb4T2IbTdxMOJz6TnTLUZjnP+hmJgGpvL0LV9d93QoUPr9u/fP93P1w8ePHgdLzPtLlsZaXG3LzISA7qWfXYZfKKQAENar9HV9Qwb2apVq4o7jSk7YX6m08LYpPkiUFxIO/hueKQTYWQdDjbKTpifYXC9OGx1MjyNmmqkGemg1/OSyb2vUZyUF0+5QPs8T+XsDH9XcVJePEkhjUfT4TvrMaRXEKbGqXMYroI2C5rmeDf5sbaLpwpHjx5tw8g8LwaYec6kGNTa2jpMw0iOnd6kWPlUwozpY0OA91ycn9XiprSB4vysWnnoVtLRJuWT7kcbLZGXlE+SV7ZXV2V64N8TTePSEXCao32Vh7ic9F7Sr9KLXEUP8mtoI+jVPwW9bKAHnEYP2BdD1clJ2xl+DCHfn0rHoB3ioJ8NDB0nU9YLeW+VFdYNC51HC3rUtLSox6Wu53mDHjUtLUqeaLxPb35G0hs6yqv53mcztLncaylxLsmbiUchyqtpfsb5G5/g/W9xXrMSb3b8Dl3/bxqP9g6P8W0O+R8PwA+wKDKD/LNcwzCuL6mRKCZ/EQbySeKyAQPS0WMfamiIvKbzzz9/Awa2D5pOHxqoRqKYfKObhJcVaIU1R0DDPw0DEXyhhoV6D3ifGbqR5meKRSs3ZBSPCxr+aRhIvlHDQgyqLjg/E59oWYeMTn53iBM9WtRDYAz/gxcxm7IfBcrvwuCWYzx/GqClStLjjeNFDudlNLsK5EeS381Lij1dyfF2p1gdUxZ9wbPsO1LHlFHe2rT88mzileGRPmF+FixPI1OeTXwyPN9Dlvx+FixPI6878ZT9HS3qQejJenMO40yM6kkawULHwwsfTnom5QuyLGIgJw/Amo/tCU58kdeLMnlNnbCUqXE6nSyuDgEZmJPAezhhfhYsd3zl4uD7pSM9YX4WLC8npzuWZTY0DifVys4ZeJslwQdWHvDu9Mt/Hiwrl547d663xM+qY3F1S/zKY9BnqJyshpY9IiR5qKwPibzUHiqr7CA/95kYzFebRt66amVYfUPAEDAEDAFDwBAwBAwBQ8AQMAQMAUPAEDAEDAFDwBAwBAwBQ8AQMAQMAUPAEDAEDAFDwBAwBAwBQ+DUI1D2g9VTr156DTZu3Jjpe8hzzjmn7LNv2bIl08e6EyZM+Fg+hUqPiHF2JQTSbJPpSvqaLoZAt0Qg9UfFbIm4gS+49V/vV/FB6Pfd08bRXXlczNf5w9j0N4aPkfeE/mF4JD1OThx9+/btuR/96Pgunrvuuis3dqy3QyOOPZH+wQcflMgbP358Yh1jMAQcAqk8GkZxFUb2FJVeHThwYHEPWhzdCY+LZ82aNYiys9k4eOjIkSPFPWhx9Dg55ehr167NNTQ0eJfS1YZXX301xz9L9y6lax3Y+KjzWGoWtJGyZsK6maBht2wvBK9K1A/WD6aH37Lj3RG3bs80rdD9076Mu+DNsxP6e0uWLGkNKB5HD7CcmGxvbx8pKueD7MA76nAeL8TRXXnamO06uddffz134YUXepfSolUaOC8it27dutz06dO9S2nRahW+/e1vf76tre19xbWQec899ww8fPjwdMW1kHfvvfcuCOsGbYbolchfsGDB6LBuyoteibxwnYb6/NnHafkte1aMLTsXD9dNyhdyhXPZQvloEl+4PK2heQ3gggsu2BQSEEcPsZVmGS56DeDxxx/XOSTFEEcvMqRMrF+/Pnfw4MHcpZde6l1Ki1ZpUF1O6MpdfPHF3qV0NfKCeqgBM1p4BtpDisMNOsibJq0Gy0bZSRwHsVNxuEGnkRHmQc6/BHXzdVwtepg3TZ56B4O6OZ1FT1M/iYcucIZ48vncGsXVhmFDxvStq6+7uSin4J2hU8ymSaQ1NM8wONPhKMPF4OpeHL3svfEu3n2Z312MvKIbjqOXFRZR6IaKjz32WE6XgqNFsCeS3FAxKM/REiuXYXBGRgO7/oEHHnhIcbBBl6kaWeQaLDI2PfTQQ02Kgw06slIK4v333/8SbJqjPyMvpli6+vQUEkpZHnzwwVanm7yYdFRe9FLOCnOdxw2N8dqaCiWUrVbI594oyxBRmNbQIqp2TdKBAwdyHM6au/rqq3M0Xu9SWjSVZQ3Oe11zzTW5H/zgB96ltPNyWeUF+WlclwUbbKBBXxbkS5tGXv9gg3UNWvS0MuL4wHKNdKV8QVDnOP4kutON6ciooM5J9dKUc/DcDPFxLuIaxdWGPft2tHUe61zl5DAWXenSaeMeZ2iaj/HivCGeA0FDPtFUljVoPqYgGS64tCtz9KyxvFjYK6hBi55VlvjlxcJeQXnRK5EXriNdOQ1tYljnMF/avHRrbGxcF9Y5bf0ovtFzdkzkfx9NYOC4pWnpmPejeKql0ZYWDb+16XtZ5PQ4Q9MQkSPscqyOFnFQWrRKho8vv/xyjv8TkON4vKI8pUVT2ekWWM08VMtnRl5nLeXVen4m3bwFlT59xnF88G+droVC5zddOk1c0xWZNDc8WTz2ZcjJQrZ7yR0+e4eOxbs1X5+fu3vpmKWVaq8lfVdXhjZ27u5xbceOrMwVcleIzvC5affyMWMcT1Kc+gfrJEFWbgh0BQRqPT/TM8no2jpKFsixt8IvszxvjzG0pG8Xs4AiXvt2MStip57/uBc67ojajxU2o1HNR2z8ZHCkkMs/lxvc8Oen/olNA0PAEDAEDAFDwBAwBAwBQ8AQMAQMAUPAEDAEDAFDwBAwBAwBQ8AQOIkI1Px3hpOoq4k2BGIRCO0qKfKx37HiNh7cWVIUSAKZa4P5NOmKlUgj3HgMgZOJQJxxxd0zjdHFGVcZmamMrsd8GRIHhNFrhwD/o/wcNpS+IIlsb/njp59+emOl0vXP4pubm89T/ZEjR767aNGi0m+cKhXcReulNjT3kWV4a3gcPc3zXr+6UP/iL5v+Et45uNbhbKh7vb6ucH/L0rHey0wjw/FMnFPo29q54wE+j/mqaPlc4bmBdWPufX9pvs3p6Hi517a6fH5ey/Ixv3K0uPhk9Jpx9wrST1bPGrxHUhodPg/Ps1zX4Q1e4mPd/0j6XNXz0z8M86gsKtx2220DW1tbz2EnxUYdh8E/ix+C0fYRr9JEO8M8UXKiaPJUce+pXFmULEej3tq4d1CuzNUPx6kNLVyxFnnfyL5TV1dY1FmoW5cvFD7beSz30xG3tUzdteSM1LttPYP9ux2/Pv5l9fFv3fj7J62FnTvR8/6wrpSd1VkoLIY+Llxm+T8gQIN6icZ2HZRnFfPF+s8xsG+IQ2loJYb4h5onpmRcGNJGGZtizovZh0c7Q5wjRozYV6mRuTvJoFy6VrEMqlayTqmh8YHmf+BBfrtr2dhv+Q+0ZOy8Qr/ti/OZ9jy9+PzOOTIyeapcr7qv9eqT23z0cP6i3ctG/X0QKOeN5eFkbMGyuHS1L3DmzJkTVq5cuSUsP47u+Kp9yRqaRQ3H4ujuvuEYPYrGhgeSZ/OGe1mMzMkMGhu0jQw9f6+yao3Mye/K8Snd+Elj38gY5LLhs7d/feHCgqdLViPzwC0UZitm2Hj37sdHv7zzx6Ob94SM7ISXkM9tPYFWY8JNN900kdOyXvEbZVE69Bmiy9iKxBom/PnPFDXgoFjl8SJTVB6kx6U1J+Nclz9jPrYNHufZPh80MpWJR7xxckTXPW+++eZReLJ2DR99zzYwaGQqE09a/crdr6uVpfdo+fx+jGKwhmnP3JD3zm47PsfaoXHE/koerG99w4K2Y+3jkbti0aamhcNv3fHw/LNHP7ZwYT7brttCYaru36+h34t7yiji5mreHC2Xv70Ma7GIRkV/EB/KebynnnrqferrnI1nFPve4fMcQrQa2vVRns7dCfZLXDoqRlbssEaejAa8idO/Jin2PclA5WnMm6I8XdQ9/IUPjlcrfEOeDJ1kbM/5vF/1n+dd8h4Pseft/PKSSAsfmpNpuChPhl6esYnJzdsw1k84HsietysR0o0zqT0aiwvv6Tn/8YXmYi/80vPNE0VzZUonBTV2d7GZ7gOM7DOqw8s8p9BZeORHG3ccc+XOMJJkduVyNUaO0bsBHWVsCxRzeUZ3MvWWccmoZFzcd7QzMtFP5n1NdjQCqT1aPl//cKFw7ImOo50PnjGn+U6Jo2f+G8UqU5wmuHlSFC8e7ZsY26NMtO9gm/ijUTyRtHz+LSz1c4faD11JuRpyZHD3lgGnXQzBUKqeZOPZ1tDYPc+GYqmMjPvGeqzIh4sg+p7MMzYZXVYj0xK+VhdDCx/eqi638xZIgjwRKhRJWsLX6mJ44UMMgQWSIk+xYg9JpPZou5aNerK+Ln8j7uvMY50db+pSWjSVVYLHsDlNn562sNDg6jb26ve0ny6ZW7jy2DifX+6V5Qs/HD636fJR32gaOezWnV+O5aeA8WCqxZByMrKUybMNHTp0ouIs9arllXFx8O26rEam++p3stWrV/+Q4ZywepbLW+b3n8Gbs6lMPEm/qWm4umrVqp141obgMr/0cnM2lYkn7dBWOnaXkNqj6YFalo3R3EJX1eHM2R8NP9x58IUdG5u2cnQXh54UWg+1H7wZ93E4V9fbzQNS3efKa0YtffHvdngrj4WOzn8+2nG8GnL/Yvey0cXl/ZKhaMrFEBxR2TlaWEEaYawHXLx4cerVVO5bdo4Wcd9YD1jNSVPo8Xnu5RmZFj7Ia07m/WCNkXnGBs0zwLBO4TzzsuJvaVr40JxMPKQl0y2QeL+zhet293wqQytpoGWe2A3NyrAUiz5cPmj3iNktl3XmO/6a4ck8CoYyRHm9Llf/5ZalIzKd363FGX6wvuqEH6zzox7eXbzjHxJYwra6lIshf6h1+qWCRiYvptVFUDhXSGhICU0/WKcytqCRyYtpdVELH5KlIaU8mVsgUZzFA6NDps5Q90wKyMzU0SXJi+19kypa+emHgJbwMY4u8wlWVgMrN9pwbzOrgSEzdiThZFpsCBgChoAhYAgYAoaAIWAIGAKGgCFgCBgChoAhYAgYAoZA7RGw5f3aY2oSP2YE9LX/zp075/Pb3n/i1udz6WujN/ld9g2uH/PVyqtZVeJH/jr+w+3IXr16Deno6OjL96qIyh/WNWDAgJYsHx/o3mZoWd+A8XcpBPjd6woU+l9cMrBjGMIGDG4H8XnEZxHrx+zHSC/gN6/DpBMDMgfwFcxE94M6xtZG+ii0vhhdb19Ay7Rp07al/eom1ZchiZoZgyFwChBgX99nMYA1GFEbBrWgX79+jyxdurTNqcLXJ1MwDP331Dso11co/9WVxcX+FyyT4ddWrQ8xpuagMc2ZM6cv32Tq288zNmzYIEe1JU5WkG4eLYiGpbsNAjII/ie5/mn7GRjFpQwP3+bLlU9jeH+E59nJ95O/oPxqyvVvhb+FMWoXwtf4AFrfbUYGPFk9BVMZJvZiZ8p6eUB5Nzxa/969e3ccPnx4H+WD+Qj6KMY2knsNgb6JfYV7IwUGiObRAmBYsvsggBHdg/FMROPbMbL1pJfQ8OfqCYi19WYdyekY10/4v9v/pa2t7Svk7+KKNTTKRnM1YGQfYJBteMSJpIfjFXO6CBp6NiJrFzsitjCHG8JO+ZHQEg0t9TYZ3cWCIdBVEMCwZDjtXEv52Pkb5OdiVBvxZrdB+z6Xt+ueeMvy5ct3U/426Yu4yoXB1C8wXNyNzBEyMvJH8GgaHsozNqoytHaGkx2au+H9+omWFMzQkhCy8q6KwCQUW8fwTsZ2rZTEAGbh3R6H9lcY3RLRMDA3h9pFuuwRGRiN5nGHNSdD1lDVb2ho2MzOgl3I/JBh4i7RjhAU4+U6MMZUOwfM0ISYhe6KgGu//fUAGFJwCOelMbgtzLO03K+9b4kHvjLs9NYtMDRPNsbnnY8j+chyaXk0lTfClurgV5ujCUEL3RGBTTT8T+g3tKampt/wAH+Eof0Yo7obuk7kcudPtkC/m/xwrh9wxQa80xEMp6+MiPlXK4z9WQAZP2/evG3MCftQ7p1DyUJLh35jo7wewwwad6xsM7RYaKygKyOAMf0CA7oQI7uBxY77WaC4lvwX0Pk1Yqnu/cEQXiKtRY434VukgjJhP/yNmzZt0rCxiTmYfqweuHfv3guCdTA+/WZHca82yluCZXFpLWdaMAS6HQKXX375v7a3t89CcZ2gvAoDeZhYwzsZmDzcDVwaUnL6e34VS/K3Llu27AD52MAiiI6aGIahDuU3uT1MxZodM0PIVmibuY+8mOZue1lxfJ+5mxtOOtbI2BuPRpYY0RDo4ggwTLwKFf8v10dc32dItyj4g7XU93/Uvpzl+rLDRvEqzJo1axAGfB5JGVBT+Adr8fg/avfHyLQSmSqYoaWCyZi6KgIsw38OD6RPsGQc+rHrPa7NXFoA0RDvLC790KwTyPYTJwYZEj9IT8BzaRVSY0R9edLOHC2vORzDxd6QZYha9Uzl0WzoKCQtdFsEWJTYctlll/2UYZy8Wn8MYjzxFC6tP2wk/yjx7LRGBm/utddea8db7mppadHPAVpdbMCY+2J4ckxHSGuZf3NaI4PXgiFgCBgChoAhYAgYAoaAIWAIGAKGgCFgCBgChoAhYAgYAoaAIWAIGAKGgCFgCBgChoAhYAgYAoaAIWAIGAKGgCFgCBgChoAhYAgYAoaAIWAIGAKGgCFgCBgChoAhkAqB/w/mpdIDtoo4VgAAAABJRU5ErkJggg==); - background-size: 218px 188px; - display: inline-block; -} - -@media only screen and (-webkit-min-device-pixel-ratio: 2), - only screen and (min--moz-device-pixel-ratio: 2), - only screen and (-o-min-device-pixel-ratio: 2/1), - only screen and (min-device-pixel-ratio: 2), - only screen and (min-resolution: 192dpi), - only screen and (min-resolution: 2dppx) { - .tui-toolbar-icons { - background: url(data:image/png;base64,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Xqz8qBcJkED0BGIbcoxe1QtDor4qT80zFpNh01flYWg2e1Fo2C6Me5NnSQLFToAeWpFfITFmxbrCUdCJMeMKxyK/iageCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACQQgkA5QNlTRRYsWZbwEbNu2LTFdnPSAftc6pas06PesihdTmIurXdekOefi6qBfpJyD8rHrk+s4LM+gfHLpY8+P+r6Ngmc6nf7q1q1b6+26RnEcBc/S0tLmLVu2HI5Cn6Ay7Hxz3V9BywfVx17ezjfX/RW0vL29oMclQSuwPAmQAAnkS0A3ZrW1tR9Gh1ebr6w46unGrK6ubiz0GxdHO5QZD4HEDJo8aeBmmWk7jf2SnuspxFYnlkN50pg8efJLNuHdki67LZ2HJEACAQnYjVl/f/+PIeLxYjFqdmPW0dExC/rNpFELeKELWDwxgybn2NfXt1A/V9zg2/XjQsePHz8+StcBN/gZ/ZhxEiCB/Ai4GLMKSCvFXnCj5mTMYHDVNAiNWn6XPfFaZUm2iJt6YSZzfioN8e1Jtp+rLegzUi8Dfdv14yTiixcvbhw7duxdDQ0Nb/ppL2nvdsmSJZfMmzfvQH19fb9P/Qrq3SbNxw8Tvcxg9/6D8pVhRsMzE2OmthJslodJlRE2DMpXhhnFM9OMWVaFsrKyRB/+w573hVo/0YsEg7FQB42nou36caHj8CAtP6qamprEPTQwuq21tfX3GOa4vNA8nNoHo/G7d++eD/2qnPKZRgJuBFyMWQbGbHVTU9NDbvWSSvcwZvs3b958PCk92E7+BBIzaPJkDzVnaKrux0qi17XjgkbXrFkzDAroT43da9eu7SqQUmLMxKjVFah9z2Z7e3sr8TAyb+nSpTWeBZl5wRGQewKjDP/bfuLFYswwslAmhsuuH42ZncjgPE7MoHH+LPANMhw1HpUhyNWrV0u8qDZczxIYthnyoIJOIrH7qKggUBkLATFmuCf+E4k/xsPYCpVZTMZsx44dc86ePXvpypUrxyv9aMwUicEfJjaHxvmz/G4WYwjyOnQQizAf8LJdCpLPT0raMx2Og855OIiwJBlDkCOgx17I7rBk4gDpnu/32csHnfOw1w96HJSfXX7UPO3yg/Kz10+Kp2bMrsQ9m8LvvRG6pzCc2OowZ5b4MKN4ZmLMwCc7VI55sktg1ES/Ppc5s6IYZgx7f9rvh6iPw96fUeuT2JM1589CXToOQYbCx8pxE8CDzbUwYvNVO/i9l4hRKwZjJjrBmI2A8apU+kkoRq2YjZmuK+P+CCRi0Dh/5u9i5CqFDiKQN5ZLXtT55eXlRa1f1OdLeecJ4Msfv4ARq8U92qNSxaghrs9LO3pmGFavV3XiCuGpnsK87z4YNcs96rCacYBnhv5ralx6UW60BBIxaJw/C33RZKjxOnQaj4WWFIMALGnuxDXetX79+hMxiKfIQUIARuMJu1HTVHc1Zqhzr1YutuimTZtanYyaahD3saMxw709RZVhWNwEEplDw1Mb3z/L8z4Au8e83kuLew4nl9roIE7MnTvX9b20pOZwcunpll9ofm56qfRi56f0VCH0fQLzKrIg5HHs8tJ0doNn9En70nzxzJIyZkoPMWrQT16Ytny1qLKy8uCGDRssS/PFMyu0Mct1fxZ6ji3X/Zn0HFsiBg037UJ1Q0mITnC7flzoOG7agr9/5sDgTRizu4rVK8M17K+oqDhAr8zhyl3gSejkmtCRCYWsUYMx+wSM2TodSyGMmWof+p009MsaNcOYHVX5EhaDMdP1YdwfgdiHHDl/5u9C2EpxiNEGhIeDi4AYNWi83MmYyZkk7ZnZ6YlRQ9o+J2MmZQvtmdn15bE/ArF7aLgxFuqqwOvYrh8XOl5s32/MNcRYaF65hhgLrR/bLx4ChlErHoVsmhhGzZbKw8FMIHaDhg6a82cB7hAMMdYFKC7veVlWbeWqix+xzB/kvQX9ukvQMXTo92zeyjlUDMrHQYRnUlieQfl4KuOQGTVPexNx87W3F/Q4br5B9WH5eAnEPuTI+bN4LyClkwAJkAAJnCMQm4fm9uSGIch9yEuFfbINewHdntxaWlquMPSL1FMIqy/rkwAJkAAJeBOI3UPzbp65JEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJFC8BNJRq7Zo0aKMLnPbtm2ebQQtr8vOJ472rtXrQb9n9WN7PGh5e/24j+38crWX63rkqh80384vV/1c1yNXfXt+UD72+rmOw/IMyieXPvb8qHkq+dB7TDqdvgPHtZlMZrak4/gVBE04fgjtnpI0tfm4Ds2ov728vPwLjz/++CFVL98Q7ZWWlZXV9Pf3j8M+TOSUlJR0YT/Z29t7HPr16bJzXQfI6oF+7T09PYdQt1uvG1fc0Om/bfLf5nRNX5xytaXftdVJvaX5j579sL28n+MVK1aM6OzsnKeXrays3LVhw4azeprEd065xtLv2vPnN//Bsx+2l3c7LnHLYDoJkAAJOBFYvHjxDUh/CYbrO9ivQ3ys7BKXNMkzyiDqe5uCuku7u7ufX758+TTftRwKrlq1ahQM0AIYrmkwZsNRpFR2iUua5EkZh6quSahXDmNWjQKXw9BUuBaMMAMG9E67OKc0e5mkjvv6+mrsbTml2cvEeUyDFiddyiaBIUYAnfn7YXh+jtPyMjrTpMySJUv+Zx6nPw6G4+/yqJetAmM4+uzZs7PFALnJkDwpI2Xdynikl8KL9Dp3j6r+s8B5pBh4ew1Jkzx7etLH0EEeEMbZ25U0ybOnJ3VMg5YUabZDAoOcwK233joFHkITTiM7hOd1Oij3Mzytv+BVxiPvfR55rlmrV68uh4c3C51qzuG10tLSthEjRnS4CvPIgFFJwqAsgwrZdsDy97IbKkma5BV6G4frm7UfGMZ9U3ZRyEgbYOiSUrYsqYbYTjgC+LEOb2trW7d169Y6XRLG03P+ePXyccXr6+tLdu3aNX3Lli2v6204jffr+XHHi4WP23kWmo+bXk7pMBb3ozOXYTd9a0Rn9nUM4x1D/v9Ax3sP9n9oamrapheyx+3XBU/15hwQ2phq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Q4EADMZCdR5O82cqr1BhrvmzQunFdqMhEGr8368KGKb7NDyb7xnl/xHDjWu86sKIrUX+J6UMjMZnMPz3917lw+bJC9dYij/NkHMM+h3wkgn9piM/a2j5TpoXKeaRAAmQQHIEEvHQ9OFGPLW5Djeq09bL6HVVftSh/l4ZPlLsOtyo2tXL6HVVPkMSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESGKwE0oNV8aGq92uvvZaJ89wuvfTSUNd8//7918ap34wZM56NUz5lkwAJDF0CJUP31HhmJEACJEACFxIBGrQL6WrzXEmABEhgCBOgQRvCF5enRgIkQAIXEoGyOE520aJFEyD389jfg33Otm3barzaCVreS5afvNWrV5efPXt2Un9//8je3t5K6PecV72g5b1kRZF3+PDh1AMPPGAR9alPfSo1depUS1qhDg4cOOCo3/Tp0wulEtslARK4AAhEbtBqa2v/DIZiI9iN9MMvaHk/Mr3K1NXVjT19+vTMvr4+X95p0PJebUeV9+yzA9dNSFqxGLQ//OEPA05V0mjQBmBhAgmQQIQEIjVoixcvfi+M2VboVyE6ptPpdRUVFV930zdoeTc5ftNXrVo1Cp7ZLOioVvodq66ubnarH7S8m5wo02GIU889N9ChlLRbbrklVVpaGmVzgWX19PSkXnzxxQH1JO1DH/pQqry8fEAeE0iABLwJjFtx2HP188kNU1Wf5i0oZG4uPQaKT+8vSaV/MnbspHteXZvuGpgfbUpkBg3DhtKTPog9a8wQ/rapqemTMGqOFyJo+bCnnclk0suWLZuujFlZWdnZTZs2HXTTL2j5sPr5rb9r164UjHK2uPLIZAhS0iRvwYIFfkXFUk50OHXqVFa28shkCFLSJO8tb3lLLO1GJbS+vn6iyEJ4NCqZUcr5wQ9+kH0iuPPOO3uilEtZJBAPgcyM/lTmMydP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VSp27NgxTQnDMOHxMWPG7JIhQ5WmhximPIrjl5E/wDhDRzHI+6L8yr5qW7fqKo0hCZAACZBATATgVaXx+ag/QPxVWhP3whB9TR3Da6tAx38zvJp3I03iexD+BwyehPLVEFl08Uns02F85MXm38HA/Ezm4yQ/is3QU96Py3qQIhOGqhlf+zeNqXhtr7/+unx8eCSGJtNY/NGFMqcbGxuzhk7OA9tEyKrAufSgzFn8r7Y2mY+LQke7DBo0OxEekwAJkEDMBLCwYjbmop5BR69/eeNHMAir8RmpwC9Ew3B8ECr/GkaxPUrVjU9dzYNM8zNWMK5t8+fP3w+jZA59+m0TespnsdqhZ2QvU+ttm0rqiYyTAAmQAAnER+DFF188CU/lWXhWS9GK6ocvhxdzB9JHX3nllbteeuml7Ff43bQQD2r37t0LYVxkwUg9ZHVgWPBXbuXzSX/uued6r7766jfR1jhpT2QgrDx27NgE6FmKvevll1/2NE5S7+DBg6Og5wyc3xSsiOx/4YUXIjW86tzooSkSDEmABEggYQIYenwvOvxtaHaiQ9MvI+3XMFSHUOY4PCMZpqtCXIzLfKRfj/BirV4b3hObieE+c4Wilhcqavwjz1kwSOZ7bkqgzKNBl3bo143VjlmvDWkl0K0UexXSR8AbLVflEfbBEL6Uj4enyXCM0qA5YmEiCZAACSRDAP8j7WIYCvmnnjeFbHEf5q8+ijmuP4aU41hd5sNgnC6BrpbVio6FvRO78f7da1HO96nmaNAUCYYkQAIkUEAC8NZugFGThSHvCaIGvKPnUe8HMBIPyftsQermU1a8NXwJZCrqmv9ixqcc+Wr/Mby6cBw66++x+ayeuxgNWm5GLEECJEACiRFYvnz5NAzRfRBG6gPYZ6JhGY6cYChwCsbgOOIvYn8WHtm/RfmlDaMNX4F4bBhaHA19RmP14jAZjoQHp4YW+xDvRV4HzuEszuc0FoKY/4bGVwMsRAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKDgMD/D2WyCk5hENCOAAAAAElFTkSuQmCC); - background-size: 218px 188px; - display: inline-block; - } -} - -.tui-toolbar-icons.tui-heading { - background-position: -172px -48px; -} - -.tui-toolbar-icons.tui-heading:disabled { - background-position: -193px -48px; -} - -.tui-toolbar-icons.tui-bold { - background-position: -4px -4px; -} - -.tui-toolbar-icons.tui-bold:disabled { - background-position: -25px -4px; -} - -.tui-toolbar-icons.tui-italic { - background-position: -4px -48px; -} - -.tui-toolbar-icons.tui-italic:disabled { - background-position: -25px -48px; -} - -.tui-toolbar-icons.tui-color { - background-position: -172px -70px; -} - -.tui-toolbar-icons.tui-color:disabled { - background-position: -193px -70px; -} - -.tui-toolbar-icons.tui-strike { - background-position: -4px -26px; -} - -.tui-toolbar-icons.tui-strike:disabled { - background-position: -25px -26px; -} - -.tui-toolbar-icons.tui-hrline { - background-position: -46px -92px; -} - -.tui-toolbar-icons.tui-hrline:disabled { - background-position: -67px -92px; -} - -.tui-toolbar-icons.tui-quote { - background-position: -4px -114px; -} - -.tui-toolbar-icons.tui-quote:disabled { - background-position: -25px -114px; -} - -.tui-toolbar-icons.tui-ul { - background-position: -46px -4px; -} - -.tui-toolbar-icons.tui-ul:disabled { - background-position: -67px -4px; -} - -.tui-toolbar-icons.tui-ol { - background-position: -46px -26px; -} - -.tui-toolbar-icons.tui-ol:disabled { - background-position: -67px -26px; -} - -.tui-toolbar-icons.tui-task { - background-position: -130px -48px; -} - -.tui-toolbar-icons.tui-task:disabled { - background-position: -151px -48px; -} - -.tui-toolbar-icons.tui-indent { - background-position: -46px -48px; -} - -.tui-toolbar-icons.tui-indent:disabled { - background-position: -67px -48px; -} - -.tui-toolbar-icons.tui-outdent { - background-position: -46px -70px; -} - -.tui-toolbar-icons.tui-outdent:disabled { - background-position: -67px -70px; -} - -.tui-toolbar-icons.tui-table { - background-position: -88px -92px; -} - -.tui-toolbar-icons.tui-table:disabled { - background-position: -109px -92px; -} - -.tui-toolbar-icons.tui-image { - background-position: -130px -4px; -} - -.tui-toolbar-icons.tui-image:disabled { - background-position: -151px -4px; -} - -.tui-toolbar-icons.tui-link { - background-position: -130px -26px; -} - -.tui-toolbar-icons.tui-link:disabled { - background-position: -151px -26px; -} - -.tui-toolbar-icons.tui-code { - background-position: -130px -92px; -} - -.tui-toolbar-icons.tui-code:disabled { - background-position: -151px -92px; -} - -.tui-toolbar-icons.tui-codeblock { - background-position: -130px -70px; -} - -.tui-toolbar-icons.tui-codeblock:disabled { - background-position: -151px -70px; -} - -.tui-toolbar-icons.tui-more { - background-position: -172px -92px; -} - -.tui-toolbar-icons.tui-more:disabled { - background-position: -193px -92px; -} -.tui-colorpicker-svg-slider { - border: 1px solid #ebebeb; -} -.tui-colorpicker-vml-slider { - border: 1px solid #ebebeb; -} -.tui-colorpicker-svg-huebar { - border: 1px solid #ebebeb; -} - -.tui-editor-pseudo-clipboard { - position: fixed; - left: -1000px; - top: -1000px; - width: 100px; - height: 100px; -} - -.te-ww-block-overlay.code-block-header { - text-align: right; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; -} - -.te-ww-block-overlay.code-block-header span { - font-size: 10px; - font-weight: 600; - padding: 0px 10px; - color: #333333; - cursor: default; -} - -.te-ww-block-overlay.code-block-header button { - margin: 8px; - font-size: 10px; - color: #333333; - background-color: #f9f9f9; - border: 1px solid #dddddd; - padding: 4px; - height: auto; -} - -.te-popup-code-block-languages { - position: fixed; - box-sizing: border-box; - width: 130px; -} - -.te-popup-code-block-languages .tui-popup-body { - max-height: 169px; - overflow: auto; - padding: 0px; -} - -.te-popup-code-block-languages button { - width: 100%; - background-color: #fff; - border: none; - outline: 0; - padding: 0px 10px 0px 10px; - font-size: 12px; - line-height: 24px; - text-align: left; - color: #777; -} - -.te-popup-code-block-languages button.active { - background-color: #f4f4f4; -} - -.tui-popup-code-block-editor .tui-popup-wrapper { - width: 70%; - height: 70%; - margin: auto; - display: -ms-flexbox; - display: flex; - -ms-flex-direction: column; - flex-direction: column; -} - -.te-input-language { - position: relative; - margin-left: 15px; - cursor: pointer; -} - -.te-input-language input { - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 10px; - padding: 3px 5px; - border: 1px solid #dddddd; - background-color: #f9f9f9; - box-sizing: border-box; - width: 130px; - outline: none; -} - -.te-input-language input::-ms-clear { - display: none; -} - -.te-input-language::after { - content: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT42Q0NBRDk2QS0yMjYxLTRFNDAtOTk1RC1DRUUyQUREQUQ3NkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLWQtc2lkZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlJlY3RhbmdsZS03IiBwb2ludHM9IjIgNSAxMCA1IDYgMTAiPjwvcG9seWdvbj4gICAgICAgIDwvZz4gICAgPC9nPjwvc3ZnPg==); - position: absolute; - top: 1px; - right: 3px; -} - -.te-input-language.active::after { - content: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5BNEZDRkIzMy0zNjdBLTREMjAtOEEyNC1DQ0I2ODFBMDZDODg8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLXVwLXNpZGUiIGZpbGw9IiM1NTU1NTUiPiAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJSZWN0YW5nbGUtNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi4wMDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgxLCAtMSkgdHJhbnNsYXRlKC02LjAwMDAwMCwgLTYuNTAwMDAwKSAiIHBvaW50cz0iMiA0IDEwIDQgNiA5Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=); -} - -.tui-popup-code-block-editor button { - margin: -1px 3px; -} - -.tui-popup-code-block-editor .tui-popup-header-buttons { - height: 20px; -} - -.tui-popup-code-block-editor .popup-editor-toggle-preview::after { - content: 'Preview off'; - color: #777; - margin-right: 22px; -} - -.tui-popup-code-block-editor .popup-editor-toggle-preview.active::after { - content: 'Preview on'; - color: #4b96e6; -} - -.tui-popup-code-block-editor .popup-editor-toggle-scroll::after { - content: 'Scroll off'; - color: #777; - margin-right: 16px; -} - -.tui-popup-code-block-editor .popup-editor-toggle-scroll.active::after { - content: 'Scroll on'; - color: #4b96e6; -} - -.tui-popup-code-block-editor .popup-editor-toggle-fit { - width: 18px; - height: 18px; - margin-top: 4px; - margin-right: 14px; - background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT40OUQ4RTYyMy1GRTAyLTQ1RUUtQkQ5Ri0xMjUyQjEzRTU1MkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLWV4cGFuZCIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBhdGggZD0iTTMsMyBMOSwzIEw5LDUgTDUsNSBMNSw5IEwzLDkgTDMsMyBaIE0xNSwxNSBMOSwxNSBMOSwxMyBMMTMsMTMgTDEzLDkgTDE1LDkgTDE1LDE1IFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4wMDAwMDAsIDkuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC05LjAwMDAwMCwgLTkuMDAwMDAwKSAiPjwvcGF0aD4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZSIgZmlsbC1ydWxlPSJub256ZXJvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMS41MDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC0xMS41MDAwMDAsIC02LjUwMDAwMCkgIiBwb2ludHM9IjkuMDg1Nzg2NDQgNS41IDEyLjUgOC45MTQyMTM1NiAxMy45MTQyMTM2IDcuNSAxMC41IDQuMDg1Nzg2NDQiPjwvcG9seWdvbj4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZS1Db3B5IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYuNTAwMDAwLCAxMS41MDAwMDApIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTYuNTAwMDAwLCAtMTEuNTAwMDAwKSAiIHBvaW50cz0iNC4wODU3ODY0NCAxMC41IDcuNSAxMy45MTQyMTM2IDguOTE0MjEzNTYgMTIuNSA1LjUgOS4wODU3ODY0NCI+PC9wb2x5Z29uPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+); -} - -.tui-popup-code-block-editor .popup-editor-toggle-fit.active { - background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT4wN0Q1MjlCRi1GNTIzLTREN0EtQTlGNi05NTUzNTU5RDNEMUE8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLXJlZHVjZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzIiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS41MDAwMDAsIDEyLjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtNS41MDAwMDAsIC0xMi41MDAwMDApICIgcG9pbnRzPSIzLjA4NTc4NjQ0IDExLjUgNi41IDE0LjkxNDIxMzYgNy45MTQyMTM1NiAxMy41IDQuNSAxMC4wODU3ODY0Ij48L3BvbHlnb24+ICAgICAgICAgICAgPHBhdGggZD0iTTksOSBMMTUsOSBMMTUsMTEgTDExLDExIEwxMSwxNSBMOSwxNSBMOSw5IFogTTksOSBMMyw5IEwzLDcgTDcsNyBMNywzIEw5LDMgTDksOSBaIiBpZD0iQ29tYmluZWQtU2hhcGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMDAwMDAwLCA5LjAwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtOS4wMDAwMDAsIC05LjAwMDAwMCkgIj48L3BhdGg+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzMiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIuNTAwMDAwLCA1LjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtMTIuNTAwMDAwLCAtNS41MDAwMDApICIgcG9pbnRzPSIxNC45MTQyMTM2IDYuNSAxMS41IDMuMDg1Nzg2NDQgMTAuMDg1Nzg2NCA0LjUgMTMuNSA3LjkxNDIxMzU2Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=); -} - -.tui-popup-code-block-editor .tui-popup-close-button { - margin-top: 6px; -} - -.tui-popup-code-block-editor .tui-popup-body { - z-index: -1; - padding: 0px; - display: -ms-flexbox; - display: flex; - -ms-flex-direction: column; - flex-direction: column; - -ms-flex: 1; - flex: 1; -} - -.tui-popup-code-block-editor .popup-editor-body { - position: relative; - -ms-flex: 1; - flex: 1; - border-bottom: 1px solid #cacaca; -} - -.tui-popup-code-block-editor .te-button-section { - padding: 15px; -} - -.tui-popup-code-block-editor .te-button-section button { - float: left; -} - -.tui-popup-code-block-editor .tui-editor-contents pre { - margin: 0px; - background-color: transparent; -} - -.tui-popup-code-block-editor .CodeMirror { - height: auto; -} - -.tui-popup-code-block-editor .CodeMirror-line { - font-family: Consolas, Courier, 'Lucida Grande', '나눔바른고딕', 'Nanum Barun Gothic', '맑은고딕', - 'Malgun Gothic', sans-serif; - font-size: 13px; - line-height: 160%; - letter-spacing: -0.3px; -} - -.tui-popup-code-block-editor .popup-editor-editor-wrapper { - min-height: 100%; -} - -.tui-split-scroll-wrapper { - position: relative; -} - -.tui-split-scroll { - position: absolute; -} - -.tui-split-scroll, -.tui-split-scroll-wrapper { - width: 100%; - height: 100%; -} - -.tui-split-scroll .tui-split-content-left, -.tui-split-scroll .tui-split-content-right { - position: absolute; - top: 0px; - width: 50%; - box-sizing: border-box; -} - -.tui-split-scroll .tui-split-content-left { - left: 0px; -} - -.tui-split-scroll .tui-split-content-right { - left: 50%; -} - -.tui-split-scroll .tui-splitter { - position: absolute; - left: 50%; - top: 0; - height: 100%; - width: 1px; - border-left: 1px solid #cacaca; -} - -.tui-split-scroll .tui-split-scroll-content { - width: 100%; - height: 100%; - overflow: hidden; - position: relative; -} - -.tui-split-scroll .tui-split-content-left, -.tui-split-scroll .tui-split-content-right { - height: 100%; - overflow-x: hidden; - overflow-y: auto; -} - -.tui-split-scroll button.tui-scrollsync { - top: 10px; - opacity: 0.2; -} - -.tui-split-scroll button.tui-scrollsync::after { - content: 'scroll off'; -} - -.tui-split-scroll.scroll-sync button.tui-scrollsync { - opacity: 0.5; -} - -.tui-split-scroll.scroll-sync .tui-split-content-left, -.tui-split-scroll.scroll-sync .tui-split-content-right { - height: auto; - overflow: initial; -} - -.tui-split-scroll.scroll-sync button.tui-scrollsync::after { - content: 'scroll on'; -} - -.tui-split-scroll.scroll-sync .tui-split-scroll-content { - overflow-y: auto; -} - -.tui-split-scroll.single-content .tui-splitter { - display: none; -} - -.tui-split-scroll.single-content .tui-split-content-left { - width: 100%; -} - -.tui-split-scroll.single-content .tui-split-content-right { - display: none; -} - -.tui-split-scroll.single-content button.tui-scrollsync { - display: none; -} - -@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { - /* IE10+ */ - .tui-split-scroll-wrapper .tui-splitter { - left: calc(50% - 9px); - } -} - -@supports (-ms-accelerator: true) { - /* IE Edge 12+ CSS styles go here */ - .tui-split-scroll-wrapper .tui-splitter { - left: calc(50% - 9px); - } -} - -@media screen and (max-width: 480px) { - .tui-popup-wrapper { - max-width: 300px; - } - - .tui-editor-popup { - margin-left: -150px; - } - - .te-dropdown-toolbar { - max-width: none; - } -} - -@charset "utf-8"; -.tui-editor-contents { - margin: 0; - padding: 0; - font-size: 13px; - font-family: 'Open Sans', 'Helvetica Neue', 'Helvetica', 'Arial', '나눔바른고딕', - 'Nanum Barun Gothic', '맑은고딕', 'Malgun Gothic', sans-serif; -} - -.tui-editor-contents *:not(table) { - line-height: 160%; - box-sizing: content-box; -} - -.tui-editor-contents i, -.tui-editor-contents cite, -.tui-editor-contents em, -.tui-editor-contents var, -.tui-editor-contents address, -.tui-editor-contents dfn { - font-style: italic; -} - -.tui-editor-contents strong { - font-weight: bold; -} - -.tui-editor-contents p { - margin: 10px 0; - color: #222; -} - -.tui-editor-contents > h1:first-of-type, -.tui-editor-contents > div > div:first-of-type h1 { - margin-top: 14px; -} - -.tui-editor-contents h1, -.tui-editor-contents h2, -.tui-editor-contents h3, -.tui-editor-contents h4, -.tui-editor-contents h5, -.tui-editor-contents h6 { - font-weight: bold; - color: #222; -} - -.tui-editor-contents h1 { - font-size: 24px; - line-height: 28px; - border-bottom: 3px double #999; - margin: 52px 0 15px 0; - padding-bottom: 7px; -} - -.tui-editor-contents h2 { - font-size: 22px; - line-height: 23px; - border-bottom: 1px solid #dbdbdb; - margin: 20px 0 13px 0; - padding-bottom: 7px; -} - -.tui-editor-contents h3 { - font-size: 20px; - margin: 18px 0 2px; -} - -.tui-editor-contents h4 { - font-size: 18px; - margin: 10px 0 2px; -} - -.tui-editor-contents h3, -.tui-editor-contents h4 { - line-height: 18px; -} - -.tui-editor-contents h5 { - font-size: 16px; -} - -.tui-editor-contents h6 { - font-size: 14px; -} - -.tui-editor-contents h5, -.tui-editor-contents h6 { - line-height: 17px; - margin: 9px 0 -4px; -} - -.tui-editor-contents del { - color: #999; -} - -.tui-editor-contents blockquote { - margin: 14px 0; - border-left: 4px solid #e5e5e5; - padding: 0 16px; - color: #999; -} - -.tui-editor-contents blockquote p, -.tui-editor-contents blockquote ul, -.tui-editor-contents blockquote ol { - color: #999; -} - -.tui-editor-contents blockquote > :first-child { - margin-top: 0; -} - -.tui-editor-contents blockquote > :last-child { - margin-bottom: 0; -} - -.tui-editor-contents pre, -.tui-editor-contents code { - font-family: Consolas, Courier, 'Apple SD 산돌고딕 Neo', -apple-system, 'Lucida Grande', - 'Apple SD Gothic Neo', '맑은 고딕', 'Malgun Gothic', 'Segoe UI', '돋움', dotum, sans-serif; - border: 0; - border-radius: 0; -} - -.tui-editor-contents pre { - margin: 2px 0 8px; - padding: 18px; - background-color: #f5f7f8; -} - -.tui-editor-contents code { - color: #c1798b; - background-color: #f9f2f4; - padding: 2px 3px; - letter-spacing: -0.3px; - border-radius: 2px; -} - -.tui-editor-contents pre code { - padding: 0; - color: inherit; - white-space: pre-wrap; - background-color: transparent; -} - -.tui-editor-contents pre.addon { - border: 1px solid #e8ebed; - background-color: #fff; -} - -.tui-editor-contents img { - margin: 4px 0 10px; - box-sizing: border-box; - vertical-align: top; - max-width: 100%; -} - -.tui-editor-contents table { - border: 1px solid rgba(0, 0, 0, 0.1); - margin: 12px 0 14px; - color: #222; - width: auto; - border-collapse: collapse; - box-sizing: border-box; -} - -.tui-editor-contents table th, -.tui-editor-contents table td { - border: 1px solid rgba(0, 0, 0, 0.1); - padding: 5px 14px 5px 12px; - height: 32px; -} - -.tui-editor-contents table th { - background-color: #555; - font-weight: 300; - color: #fff; - padding-top: 6px; -} - -.tui-editor-contents ul, -.tui-editor-contents menu, -.tui-editor-contents ol, -.tui-editor-contents dir { - display: block; - list-style-type: none; - padding-left: 24px; - margin: 6px 0 10px; - color: #222; -} - -.tui-editor-contents ol { - list-style-type: none; - counter-reset: li; -} - -.tui-editor-contents ol > li { - counter-increment: li; -} - -.tui-editor-contents ul > li::before, -.tui-editor-contents ol > li::before { - display: inline-block; - position: absolute; -} - -.tui-editor-contents ul > li::before { - content: ''; - margin-top: 6px; - margin-left: -17px; - width: 5px; - height: 5px; - border-radius: 50%; - background-color: #ccc; -} - -.tui-editor-contents ol > li::before { - content: '.' counter(li); - margin-left: -28px; - width: 24px; - text-align: right; - direction: rtl; - color: #aaa; -} - -.tui-editor-contents ul ul, -.tui-editor-contents ul ol, -.tui-editor-contents ol ol, -.tui-editor-contents ol ul { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -.tui-editor-contents ul li, -.tui-editor-contents ol li { - position: relative; -} - -.tui-editor-contents ul p, -.tui-editor-contents ol p { - margin: 0; -} - -.tui-editor-contents ul li.task-list-item::before, -.tui-editor-contents ol li.task-list-item::before, -.tui-editor-contents pre ul li::before { - content: ''; -} - -.tui-editor-contents th ol, -.tui-editor-contents th ul { - color: #fff; -} - -.tui-editor-contents hr { - border-top: 1px solid #eee; - margin: 16px 0; -} - -.tui-editor-contents a { - text-decoration: underline; - color: #4b96e6; -} - -.tui-editor-contents a:hover { - color: #1f70de; -} - -.tui-editor-contents a.image-link { - position: relative; -} - -.tui-editor-contents a.image-link::before { - content: ''; - position: absolute; - margin: 0; - width: 20px; - height: 20px; - top: 2px; - right: 2px; - background-repeat: no-repeat; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAFKADAAQAAAABAAAAFAAAAACy3fD9AAAA/0lEQVQ4Ee2UIY6FQAyG/91wAQQJDg8SSwI3QIFAcQHuwFHQoOAEEFAELB6H4wIku+9vQgIP9zLyVbTTTufLtJ3MzzRNf1AoGlmu6ypBzvOMXyWkC+QLvDTjw6VM+Xr2OA6UZYmu67Dvu2zleX6zuq7D933EcQxNuyPu3usYYXVdw/M8mKYpIMMwxEZRJHbbNsmhkySJxE71APJmhGVZhnVdURQFlmU585GmKSzLEp+570Dlz+ZxQ/aGJVNYsm3bCIJA/LZtMY4jmqbBMAwIw1DiV/UAstEUltP3vawdxxFbVZVYDoWwM1eCp+LnoErIUt7DL/Ac1edWng1/WlXyD380myY5A34sAAAAAElFTkSuQmCC'); - cursor: pointer; -} - -.tui-editor-contents .task-list-item { - border: 0; - list-style: none; - padding-left: 24px; - margin-left: -24px; -} - -.tui-editor-contents .task-list-item::before { - background-repeat: no-repeat; - background-size: 18px 18px; - background-position: center; - content: ''; - margin-left: 0; - margin-top: 0; - border-radius: 0; - height: 18px; - width: 18px; - position: absolute; - left: 0; - top: 1px; - cursor: pointer; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEqADAAQAAAABAAAAEgAAAACaqbJVAAAAQklEQVQ4EWM8c+bMfwYqABaQGcbGxhQZdfbsWQYmikxA0jxqEFJg4GCOhhGOgEESHg0jpMDAwRx8YQQuj0DlCaUAAEdBCPJ7TaEPAAAAAElFTkSuQmCC'); -} - -.tui-editor-contents .task-list-item.checked::before { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEqADAAQAAAABAAAAEgAAAACaqbJVAAAA1ElEQVQ4EWP0nvbsPwMVABMVzAAbMWoQIiT5OJgYvLS5EAJQFguGCB4BkCHt/kIM8kKsYFXbrn6DqyY6sJENefjuN8ORuz/ghoAYWA0COR2kEQbQDanc+I7h049/MGkwjVANFQYZkmXHD/YCyABiDAFpxQgjkJO9dbjA4QAKDxAAhQnIO9hcAlYAJDBcBHIySANII8gAYgwBGYZhEEgQZFjVJohhhFwCUg8CjPgyLT8nE8N/YJZGD1iIVlQSI4yQpT9+R40ZZDl0NlavoSsihj/4DAIAR+hZHUj727YAAAAASUVORK5CYII='); -} - -.tui-editor-contents .task-list-item input[type='checkbox'], -.tui-editor-contents .task-list-item .task-list-item-checkbox { - margin-left: -17px; - margin-right: 3.8px; - margin-top: 3px; -} - -.tui-editor-contents-placeholder::before { - content: attr(data-placeholder); - color: grey; - line-height: 160%; - position: absolute; -} - -.te-preview .tui-editor-contents h1 { - min-height: 28px; -} - -.te-preview .tui-editor-contents h2 { - min-height: 23px; -} - -.te-preview .tui-editor-contents blockquote { - min-height: 20px; -} - -.te-preview .tui-editor-contents li { - min-height: 22px; -} - -@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { - /* IE10+11 */ - .te-ww-container .tui-editor-contents li { - vertical-align: middle; - } - - .te-ww-container .tui-editor-contents ul > li::before, - .te-ww-container .tui-editor-contents ol > li::before, - .te-ww-container .tui-editor-contents .task-list-item:before { - position: static; - vertical-align: middle; - } - - .te-ww-container .tui-editor-contents ul > li::before { - margin-top: -3px; - margin-right: 12px; - } - - .te-ww-container .tui-editor-contents ol > li::before { - margin-right: 6px; - } - - .te-ww-container .tui-editor-contents .task-list-item { - padding-left: 2px; - } -} - -.tui-editor-contents .te-preview-highlight { - position: relative; - z-index: 0; -} - -.tui-editor-contents .te-preview-highlight::after { - content: ''; - background-color: rgba(255, 245, 131, 0.5); - border-radius: 4px; - z-index: -1; - position: absolute; - top: -4px; - right: -4px; - left: -4px; - bottom: -4px; -} - -.tui-editor-contents h1.te-preview-highlight::after, -.tui-editor-contents h2.te-preview-highlight::after { - bottom: 0; -} - -.tui-editor-contents td.te-preview-highlight::after, -.tui-editor-contents th.te-preview-highlight::after { - display: none; -} - -.tui-editor-contents th.te-preview-highlight, -.tui-editor-contents td.te-preview-highlight { - background-color: rgba(255, 245, 131, 0.5); -} - -.tui-editor-contents th.te-preview-highlight { - color: #222; -} - -.te-md-container .CodeMirror { - font-family: 'Open Sans', 'Helvetica Neue', 'Helvetica', 'Arial', '나눔바른고딕', - 'Nanum Barun Gothic', '맑은고딕', 'Malgun Gothic', sans-serif; - color: #222; -} - -.tui-md-heading1 { - font-size: 24px; -} - -.tui-md-heading2 { - font-size: 22px; -} - -.tui-md-heading3 { - font-size: 20px; -} - -.tui-md-heading4 { - font-size: 18px; -} - -.tui-md-heading5 { - font-size: 16px; -} - -.tui-md-heading6 { - font-size: 14px; -} - -.tui-md-heading.tui-md-delimiter.setext { - line-height: 15px; -} - -.tui-md-strong, -.tui-md-heading, -.tui-md-list-item.tui-md-list-item-bullet, -.tui-md-list-item.tui-md-meta { - font-weight: bold; -} - -.tui-md-emph { - font-style: italic; -} - -.tui-md-strike { - text-decoration: line-through; -} - -.tui-md-strike.tui-md-delimiter { - text-decoration: none; -} - -.tui-md-delimiter, -.tui-md-thematic-break, -.tui-md-link, -.tui-md-table, -.tui-md-block-quote { - color: #ccc; -} - -.tui-md-code-block.tui-md-meta, -.tui-md-code.tui-md-delimiter { - color: #aaa; -} - -.tui-md-meta, -.tui-md-html, -.tui-md-link.tui-md-link-url.tui-md-marked-text { - color: #999; -} - -.tui-md-block-quote.tui-md-marked-text, -.tui-md-list-item.tui-md-meta { - color: #555; -} - -.tui-md-table.tui-md-marked-text { - color: #222; -} - -.tui-md-link.tui-md-link-desc.tui-md-marked-text, -.tui-md-list-item-odd.tui-md-list-item-bullet { - color: #4b96e6; -} - -.tui-md-list-item-even.tui-md-list-item-bullet { - color: #cb4848; -} - -.tui-md-code.tui-md-marked-text { - color: #c1798b; -} - -.tui-md-code { - background-color: rgba(243, 229, 233, 0.5); - padding: 2px 0; - letter-spacing: -0.3px; -} - -.tui-md-code.tui-md-delimiter.start { - padding-left: 2px; - border-top-left-radius: 2px; - border-bottom-left-radius: 2px; -} - -.tui-md-code.tui-md-delimiter.end { - padding-right: 2px; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; -} - -.tui-md-code-block.CodeMirror-linebackground { - left: 20px; - right: 20px; - background-color: #f5f7f8; -} - -.tui-md-code-block.CodeMirror-linebackground.start { - top: 2px; -} - -.tui-md-code-block.CodeMirror-linebackground.end { - bottom: 2px; -} - -.tui-md-code, -.tui-md-code-block { - font-family: Consolas, Courier, 'Lucida Grande', '나눔바른고딕', 'Nanum Barun Gothic', '맑은고딕', - 'Malgun Gothic', sans-serif; -} - diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor.js deleted file mode 100644 index 1ecaa485bc..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/toastr/toastui-editor.js +++ /dev/null @@ -1,29366 +0,0 @@ -/*! - * @toast-ui/editor - * @version 2.5.1 | Tue Nov 24 2020 - * @author NHN FE Development Lab - * @license MIT - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("codemirror")); - else if(typeof define === 'function' && define.amd) - define(["codemirror"], factory); - else if(typeof exports === 'object') - exports["Editor"] = factory(require("codemirror")); - else - root["toastui"] = root["toastui"] || {}, root["toastui"]["Editor"] = factory(root["CodeMirror"]); -})(window, function(__WEBPACK_EXTERNAL_MODULE__15__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 65); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3); -/* harmony import */ var tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8); -/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9); -/* harmony import */ var tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var tui_code_snippet_domUtil_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4); -/* harmony import */ var tui_code_snippet_domUtil_css__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_css__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5); -/* harmony import */ var tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6); -/* harmony import */ var tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var tui_code_snippet_domUtil_hasClass__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(16); -/* harmony import */ var tui_code_snippet_domUtil_hasClass__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_hasClass__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(13); -/* harmony import */ var tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7__); -/** - * @fileoverview DOM Utils - * @author NHN FE Development Lab - */ - - - - - - - - -var FIND_ZWB = /\u200B/g; -var _window = window, - getComputedStyle = _window.getComputedStyle; -/** - * Check if node is text node - * @param {Node} node node to check - * @returns {boolean} result - * @ignore - */ - -var isTextNode = function isTextNode(node) { - return node && node.nodeType === Node.TEXT_NODE; -}; -/** - * Check if node is element node - * @param {Node} node node to check - * @returns {boolean} result - * @ignore - */ - - -var isElemNode = function isElemNode(node) { - return node && node.nodeType === Node.ELEMENT_NODE; -}; -/** - * Check that the node is block node - * @param {Node} node node - * @returns {boolean} - * @ignore - */ - - -var isBlockNode = function isBlockNode(node) { - return /^(ADDRESS|ARTICLE|ASIDE|BLOCKQUOTE|DETAILS|DIALOG|DD|DIV|DL|DT|FIELDSET|FIGCAPTION|FIGURE|FOOTER|FORM|H[\d]|HEADER|HGROUP|HR|LI|MAIN|NAV|OL|P|PRE|SECTION|UL)$/gi.test(this.getNodeName(node)); -}; -/** - * Get node name of node - * @param {Node} node node - * @returns {string} node name - * @ignore - */ - - -var getNodeName = function getNodeName(node) { - if (isElemNode(node)) { - return node.tagName; - } - - return 'TEXT'; -}; -/** - * Get node offset length of node(for Range API) - * @param {Node} node node - * @returns {number} length - * @ignore - */ - - -var getTextLength = function getTextLength(node) { - var len; - - if (isElemNode(node)) { - len = node.textContent.replace(FIND_ZWB, '').length; - } else if (isTextNode(node)) { - len = node.nodeValue.replace(FIND_ZWB, '').length; - } - - return len; -}; -/** - * Get node offset length of node(for Range API) - * @param {Node} node node - * @returns {number} length - * @ignore - */ - - -var getOffsetLength = function getOffsetLength(node) { - var len; - - if (isElemNode(node)) { - len = node.childNodes.length; - } else if (isTextNode(node)) { - len = node.nodeValue.replace(FIND_ZWB, '').length; - } - - return len; -}; -/** - * get node offset between parent's childnodes - * @param {Node} node node - * @returns {number} offset(index) - * @ignore - */ - - -var getNodeOffsetOfParent = function getNodeOffsetOfParent(node) { - var childNodesOfParent = node.parentNode.childNodes; - var i, t, found; - - for (i = 0, t = childNodesOfParent.length; i < t; i += 1) { - if (childNodesOfParent[i] === node) { - found = i; - break; - } - } - - return found; -}; -/** - * get child node by offset - * @param {Node} node node - * @param {number} index offset index - * @returns {Node} foudned node - * @ignore - */ - - -var getChildNodeByOffset = function getChildNodeByOffset(node, index) { - var currentNode; - - if (isTextNode(node)) { - currentNode = node; - } else if (node.childNodes.length && index >= 0) { - currentNode = node.childNodes[index]; - } - - return currentNode; -}; -/** - * find next node from passed node - * @param {strong} direction previous or next - * @param {Node} node node - * @param {string} untilNodeName parent node name to limit - * @returns {Node} founded node - * @ignore - */ - - -var getNodeWithDirectionUntil = function getNodeWithDirectionUntil(direction, node, untilNodeName) { - var directionKey = direction + "Sibling"; - var nodeName, foundedNode; - - while (node && !node[directionKey]) { - nodeName = getNodeName(node.parentNode); - - if (nodeName === untilNodeName || nodeName === 'BODY') { - break; - } - - node = node.parentNode; - } - - if (node[directionKey]) { - foundedNode = node[directionKey]; - } - - return foundedNode; -}; -/** - * get prev node of childnode pointed with index - * @param {Node} node node - * @param {number} index offset index - * @param {string} untilNodeName parent node name to limit - * @returns {Node} founded node - * @ignore - */ - - -var getPrevOffsetNodeUntil = function getPrevOffsetNodeUntil(node, index, untilNodeName) { - var prevNode; - - if (index > 0) { - prevNode = getChildNodeByOffset(node, index - 1); - } else { - prevNode = getNodeWithDirectionUntil('previous', node, untilNodeName); - } - - return prevNode; -}; - -var getParentUntilBy = function getParentUntilBy(node, matchCondition, stopCondition) { - while (node.parentNode && !matchCondition(node.parentNode)) { - node = node.parentNode; - - if (stopCondition && stopCondition(node)) { - break; - } - } - - if (matchCondition(node.parentNode)) { - return node; - } - - return null; -}; -/** - * get parent node until paseed node name - * @param {Node} node node - * @param {string|HTMLNode} untilNode node name or node to limit - * @returns {Node} founded node - * @ignore - */ - - -var getParentUntil = function getParentUntil(node, untilNode) { - var foundedNode; - - if (tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default()(untilNode)) { - foundedNode = getParentUntilBy(node, function (targetNode) { - return untilNode === getNodeName(targetNode); - }); - } else { - foundedNode = getParentUntilBy(node, function (targetNode) { - return untilNode === targetNode; - }); - } - - return foundedNode; -}; -/** - * get node on the given direction under given parent - * @param {strong} direction previous or next - * @param {Node} node node - * @param {string|Node} underNode parent node name to limit - * @returns {Node} founded node - * @ignore - */ - - -var getNodeWithDirectionUnderParent = function getNodeWithDirectionUnderParent(direction, node, underNode) { - var directionKey = direction + "Sibling"; - var foundedNode; - node = getParentUntil(node, underNode); - - if (node && node[directionKey]) { - foundedNode = node[directionKey]; - } - - return foundedNode; -}; -/** - * get top previous top level node under given node - * @param {Node} node node - * @param {Node} underNode underNode - * @returns {Node} founded node - * @ignore - */ - - -var getTopPrevNodeUnder = function getTopPrevNodeUnder(node, underNode) { - return getNodeWithDirectionUnderParent('previous', node, underNode); -}; -/** - * get next top level block node - * @param {Node} node node - * @param {Node} underNode underNode - * @returns {Node} founded node - * @ignore - */ - - -var getTopNextNodeUnder = function getTopNextNodeUnder(node, underNode) { - return getNodeWithDirectionUnderParent('next', node, underNode); -}; -/** - * Get parent element the body element - * @param {Node} node Node for start searching - * @returns {Node} - * @ignore - */ - - -var getTopBlockNode = function getTopBlockNode(node) { - return getParentUntil(node, 'BODY'); -}; -/** - * Get previous text node - * @param {Node} node Node for start searching - * @returns {Node} - * @ignore - */ - - -var getPrevTextNode = function getPrevTextNode(node) { - node = node.previousSibling || node.parentNode; - - while (!isTextNode(node) && getNodeName(node) !== 'BODY') { - if (node.previousSibling) { - node = node.previousSibling; - - while (node.lastChild) { - node = node.lastChild; - } - } else { - node = node.parentNode; - } - } - - if (getNodeName(node) === 'BODY') { - node = null; - } - - return node; -}; -/** - * test whether root contains the given node - * @param {HTMLNode|string} root - root node - * @param {HTMLNode} found - node to test - * @returns {Boolean} true if root contains node - * @ignore - */ - - -var containsNode = function containsNode(root, node) { - var walker = document.createTreeWalker(root, 4, null, false); - var found = root === node; - - while (!found && walker.nextNode()) { - found = walker.currentNode === node; - } - - return found; -}; -/** - * find node by offset - * @param {HTMLElement} root Root element - * @param {Array.} offsetList offset list - * @param {function} textNodeFilter Text node filter - * @returns {Array} - * @ignore - */ - - -var findOffsetNode = function findOffsetNode(root, offsetList, textNodeFilter) { - var result = []; - var text = ''; - var walkerOffset = 0; - var newWalkerOffset; - - if (!offsetList.length) { - return result; - } - - var offset = offsetList.shift(); - var walker = document.createTreeWalker(root, 4, null, false); - - while (walker.nextNode()) { - text = walker.currentNode.nodeValue || ''; - - if (textNodeFilter) { - text = textNodeFilter(text); - } - - newWalkerOffset = walkerOffset + text.length; - - while (newWalkerOffset >= offset) { - result.push({ - container: walker.currentNode, - offsetInContainer: offset - walkerOffset, - offset: offset - }); - - if (!offsetList.length) { - return result; - } - - offset = offsetList.shift(); - } - - walkerOffset = newWalkerOffset; - } // there should be offset left - - - do { - result.push({ - container: walker.currentNode, - offsetInContainer: text.length, - offset: offset - }); - offset = offsetList.shift(); - } while (!tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(offset)); - - return result; -}; - -var getNodeInfo = function getNodeInfo(node) { - var path = {}; - path.tagName = node.nodeName; - - if (node.id) { - path.id = node.id; - } - - var className = node.className.trim(); - - if (className) { - path.className = className; - } - - return path; -}; - -var getPath = function getPath(node, root) { - var paths = []; - - while (node && node !== root) { - if (isElemNode(node)) { - paths.unshift(getNodeInfo(node)); - } - - node = node.parentNode; - } - - return paths; -}; -/** - * Find next, previous TD or TH element by given TE element - * @param {HTMLElement} node TD element - * @param {string} direction 'next' or 'previous' - * @returns {HTMLElement|null} - * @ignore - */ - - -var getTableCellByDirection = function getTableCellByDirection(node, direction) { - var targetElement = null; - - if (!tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(direction) && (direction === 'next' || direction === 'previous')) { - if (direction === 'next') { - targetElement = node.nextElementSibling; - } else { - targetElement = node.previousElementSibling; - } - } - - return targetElement; -}; -/** - * Find sibling TR's TD element by given TD and direction - * @param {HTMLElement} node TD element - * @param {string} direction Boolean value for find first TD in next line - * @param {boolean} [needEdgeCell=false] Boolean value for find first TD in next line - * @returns {HTMLElement|null} - * @ignore - */ - - -var getSiblingRowCellByDirection = function getSiblingRowCellByDirection(node, direction, needEdgeCell) { - var tableCellElement = null; - var index, targetRowElement, currentContainer, siblingContainer, isSiblingContainerExists; - - if (!tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(direction) && (direction === 'next' || direction === 'previous')) { - if (node) { - if (direction === 'next') { - targetRowElement = node.parentNode && node.parentNode.nextSibling; - currentContainer = parents(node, 'thead'); - siblingContainer = currentContainer[0] && currentContainer[0].nextSibling; - isSiblingContainerExists = siblingContainer && getNodeName(siblingContainer) === 'TBODY'; - index = 0; - } else { - targetRowElement = node.parentNode && node.parentNode.previousSibling; - currentContainer = parents(node, 'tbody'); - siblingContainer = currentContainer[0] && currentContainer[0].previousSibling; - isSiblingContainerExists = siblingContainer && getNodeName(siblingContainer) === 'THEAD'; - index = node.parentNode.childNodes.length - 1; - } - - if (tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(needEdgeCell) || !needEdgeCell) { - index = getNodeOffsetOfParent(node); - } - - if (targetRowElement) { - tableCellElement = children(targetRowElement, 'td,th')[index]; - } else if (currentContainer[0] && isSiblingContainerExists) { - tableCellElement = findAll(siblingContainer, 'td,th')[index]; - } - } - } - - return tableCellElement; -}; -/** - * Check that the inline node is supported by markdown - * @param {Node} node TD element - * @returns {boolean} - * @ignore - */ - - -var isMDSupportInlineNode = function isMDSupportInlineNode(node) { - return /^(A|B|BR|CODE|DEL|EM|I|IMG|S|SPAN|STRONG)$/gi.test(node.nodeName); -}; -/** - * Check that node is styled node. - * Styled node is a node that has text and decorates text. - * @param {Node} node TD element - * @returns {boolean} - * @ignore - */ - - -var isStyledNode = function isStyledNode(node) { - return /^(A|ABBR|ACRONYM|B|BDI|BDO|BIG|CITE|CODE|DEL|DFN|EM|I|INS|KBD|MARK|Q|S|SAMP|SMALL|SPAN|STRONG|SUB|SUP|U|VAR)$/gi.test(node.nodeName); -}; -/** - * remove node from 'start' node to 'end-1' node inside parent - * if 'end' node is null, remove all child nodes after 'start' node. - * @param {Node} parentNode - parent node - * @param {Node} start - start node to remove - * @param {Node} end - end node to remove - * @ignore - */ - - -var removeChildFromStartToEndNode = function removeChildFromStartToEndNode(parentNode, start, end) { - var child = start; - - if (!child || parentNode !== child.parentNode) { - return; - } - - while (child !== end) { - var nextNode = child.nextSibling; - parentNode.removeChild(child); - child = nextNode; - } -}; -/** - * remove nodes along the direction from the node to reach targetParent node - * @param {Node} targetParent - stop removing when reach target parent node - * @param {Node} node - start node - * @param {boolean} isForward - direction - * @ignore - */ - - -var removeNodesByDirection = function removeNodesByDirection(targetParent, node, isForward) { - var parentNode = node; - - while (parentNode !== targetParent) { - var nextParent = parentNode.parentNode; - var _parentNode = parentNode, - nextSibling = _parentNode.nextSibling, - previousSibling = _parentNode.previousSibling; - - if (!isForward && nextSibling) { - removeChildFromStartToEndNode(nextParent, nextSibling, null); - } else if (isForward && previousSibling) { - removeChildFromStartToEndNode(nextParent, nextParent.childNodes[0], parentNode); - } - - parentNode = nextParent; - } -}; - -var getLeafNode = function getLeafNode(node) { - var result = node; - - while (result.childNodes && result.childNodes.length) { - var _result = result, - nextLeaf = _result.firstChild; // When inline tag have empty text node with other childnodes, ignore empty text node. - - if (isTextNode(nextLeaf) && !getTextLength(nextLeaf)) { - result = nextLeaf.nextSibling || nextLeaf; - } else { - result = nextLeaf; - } - } - - return result; -}; -/** - * check if a coordinates is inside a button box - * @param {object} style - computed style of task box - * @param {number} offsetX - event x offset - * @param {number} offsetY - event y offset - * @returns {boolean} - * @ignore - */ - - -var isInsideButtonBox = function isInsideButtonBox(style, offsetX, offsetY) { - var rect = { - left: parseInt(style.left, 10), - top: parseInt(style.top, 10), - width: parseInt(style.width, 10), - height: parseInt(style.height, 10) - }; - return offsetX >= rect.left && offsetX <= rect.left + rect.width && offsetY >= rect.top && offsetY <= rect.top + rect.height; -}; -/** - * Check whether node is OL or UL - * @param {node} node - node - * @returns {boolean} - whether node is OL or UL - * @ignore - */ - - -var isListNode = function isListNode(node) { - if (!node) { - return false; - } - - return node.nodeName === 'UL' || node.nodeName === 'OL'; -}; -/** - * Check whether node is first list item - * @param {node} node - node - * @returns {boolean} whether node is first list item - * @ignore - */ - - -var isFirstListItem = function isFirstListItem(node) { - var nodeName = node.nodeName, - parentNode = node.parentNode; - return nodeName === 'LI' && node === parentNode.firstChild; -}; -/** - * Check whether node is first level list item - * @param {node} node - node - * @returns {boolean} whether node is first level list item - * @ignore - */ - - -var isFirstLevelListItem = function isFirstLevelListItem(node) { - var nodeName = node.nodeName, - listNode = node.parentNode; - var listParentNode = listNode.parentNode; - return nodeName === 'LI' && !isListNode(listParentNode); -}; -/** - * Merge node to target node and detach node - * @param {node} node - node - * @param {node} targetNode - target node - * @ignore - */ - - -var mergeNode = function mergeNode(node, targetNode) { - if (node.hasChildNodes()) { - tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(node.childNodes).forEach(function () { - targetNode.appendChild(node.firstChild); - }); - targetNode.normalize(); - } - - if (node.parentNode) { - node.parentNode.removeChild(node); - } -}; -/** - * Create hr that is not contenteditable - * @returns {node} hr is wraped div - * @ignore - */ - - -var createHorizontalRule = function createHorizontalRule() { - var div = document.createElement('div'); - var hr = document.createElement('hr'); - div.setAttribute('contenteditable', false); - hr.setAttribute('contenteditable', false); - div.appendChild(hr); - return div; -}; -/** - * Create Empty Line - * @returns {node}

      - * @private - */ - - -var createEmptyLine = function createEmptyLine() { - var div = document.createElement('div'); - div.appendChild(document.createElement('br')); - return div; -}; -/** - * Find same tagName child node and change wrapping order. - * For example, if below node need to optimize 'B' tag. - * test - * should be changed tag's order. - * test - * @param {node} node - * @param {string} tagName - * @returns {node} - * @private - */ - - -var changeTagOrder = function changeTagOrder(node, tagName) { - if (node.nodeName !== 'SPAN') { - var parentNode = node.parentNode; - var tempNode = node; - - while (tempNode.childNodes && tempNode.childNodes.length === 1 && !isTextNode(tempNode.firstChild)) { - tempNode = tempNode.firstChild; - - if (tempNode.nodeName === 'SPAN') { - break; - } - - if (tempNode.nodeName === tagName) { - var wrapper = document.createElement(tagName); - mergeNode(tempNode, tempNode.parentNode); - parentNode.replaceChild(wrapper, node); - wrapper.appendChild(node); - return wrapper; - } - } - } - - return node; -}; -/** - * Find same tagName nodes and merge from startNode to endNode. - * @param {node} startNode - * @param {node} endNode - * @param {string} tagName - * @returns {node} - * @private - */ - - -var mergeSameNodes = function mergeSameNodes(startNode, endNode, tagName) { - var startBlockNode = changeTagOrder(startNode, tagName); - - if (startBlockNode.nodeName === tagName) { - var endBlockNode = changeTagOrder(endNode, tagName); - var mergeTargetNode = startBlockNode; - var nextNode = startBlockNode.nextSibling; - - while (nextNode) { - var tempNext = nextNode.nextSibling; - nextNode = changeTagOrder(nextNode, tagName); - - if (nextNode.nodeName === tagName) { - // eslint-disable-next-line max-depth - if (mergeTargetNode) { - mergeNode(nextNode, mergeTargetNode); - } else { - mergeTargetNode = nextNode; - } - } else { - mergeTargetNode = null; - } - - if (nextNode === endBlockNode) { - break; - } - - nextNode = tempNext; - } - } -}; -/** - * Find same tagName nodes in range and merge nodes. - * For example range is like this - * AAABBB - * nodes is changed below - * AAABBB - * @param {range} range - * @param {string} tagName - * @private - */ - - -var optimizeRange = function optimizeRange(range, tagName) { - var collapsed = range.collapsed, - commonAncestorContainer = range.commonAncestorContainer, - startContainer = range.startContainer, - endContainer = range.endContainer; - - if (!collapsed) { - var optimizedNode = null; - - if (startContainer !== endContainer) { - var startNode = getParentUntil(startContainer, commonAncestorContainer); - var endNode = getParentUntil(endContainer, commonAncestorContainer); - - if (startNode && endNode) { - mergeSameNodes(startNode, endNode, tagName); - } - - optimizedNode = commonAncestorContainer; - } else if (isTextNode(startContainer)) { - optimizedNode = startContainer.parentNode; - } - - if (optimizedNode && optimizedNode.nodeName === tagName) { - var _optimizedNode = optimizedNode, - previousSibling = _optimizedNode.previousSibling; - var tempNode; - - if (previousSibling) { - tempNode = changeTagOrder(previousSibling); - - if (tempNode.nodeName === tagName) { - mergeNode(optimizedNode, tempNode); - } - } - - var _optimizedNode2 = optimizedNode, - nextSibling = _optimizedNode2.nextSibling; - - if (nextSibling) { - tempNode = changeTagOrder(nextSibling); - - if (tempNode.nodeName === tagName) { - mergeNode(tempNode, optimizedNode); - } - } - } - } -}; -/** - * Gets all text node from root element. - * @param {HTMLElement} root Root element - * @returns {Array} list of text nodes - * @ignore - */ - - -var getAllTextNode = function getAllTextNode(root) { - var walker = document.createTreeWalker(root, 4, null, false); - var result = []; - - while (walker.nextNode()) { - var node = walker.currentNode; - - if (isTextNode(node)) { - result.push(node); - } - } - - return result; -}; -/** - * Check whether the node is 'TD' or 'TH' - * @param {HTMLElement} node - the target node - * @returns {boolean} - whether the node is 'TD' or 'TH' - * @ignore - */ - - -var isCellNode = function isCellNode(node) { - if (!node) { - return false; - } - - return node.nodeName === 'TD' || node.nodeName === 'TH'; -}; -/** - * Get the last node on the target node by the condition - * @param {HTMLElement} node - the target node - * @returns {function} - the condition to find the node - * @ignore - */ - - -var getLastNodeBy = function getLastNodeBy(node, condition) { - var lastNode = node && node.lastChild; - - while (lastNode && condition(lastNode)) { - lastNode = lastNode.lastChild; - } - - return lastNode; -}; -/** - * Get the parent node on the target node by the condition - * @param {HTMLElement} node - the target node - * @returns {function} - the condition to find the node - * @ignore - */ - - -var getParentNodeBy = function getParentNodeBy(node, condition) { - while (node && condition(node.parentNode, node)) { - node = node.parentNode; - } - - return node; -}; -/** - * Get the sibling node on the target node by the condition - * @param {HTMLElement} node - the target node - * @param {string} direction - the direction to find node ('previous', 'next') - * @returns {function} - the condition to find the node - * @ignore - */ - - -var getSiblingNodeBy = function getSiblingNodeBy(node, direction, condition) { - var directionKey = direction + "Sibling"; - - while (node && condition(node[directionKey], node)) { - node = node[directionKey]; - } - - return node; -}; -/** - * Create element with contents - * @param {string|Node} contents - contents to appended - * @param {HTMLElement} [target] - container element to append contents - * @returns {Node} created node - * @ignore - */ - - -function createElementWith(contents, target) { - var container = document.createElement('div'); - - if (tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default()(contents)) { - container.innerHTML = contents; - } else { - container.appendChild(contents); - } - - var firstChild = container.firstChild; - - if (target) { - target.appendChild(firstChild); - } - - return firstChild; -} -/** - * Find nodes matching by selector - * @param {HTMLElement} element - target element - * @param {string} selector - selector to find nodes - * @returns {Array.} found nodes - * @ignore - */ - - -function findAll(element, selector) { - var nodeList = tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(element.querySelectorAll(selector)); - - if (nodeList.length) { - return nodeList; - } - - return []; -} -/** - * Checks whether specific node is included in target node - * @param {HTMLElement} element - target to find - * @param {Node} containedNode - node to find - * @returns {boolean} whether node is contained or not - * @ignore - */ - - -function isContain(element, contained) { - return element !== contained && element.contains(contained); -} -/** - * Gets closest node matching by selector - * @param {Node} node - target node - * @param {string|Node} found - selector or element to find node - * @param {Node} [root] - root node - * @returns {?Node} - found node - * @ignore - */ - - -function closest(node, found, root) { - var condition; - root = root || document; - - if (tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default()(found)) { - condition = function condition(target) { - return tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default()(target, found); - }; - } else { - condition = function condition(target) { - return target === found; - }; - } - - while (node && node !== root) { - if (isElemNode(node) && condition(node)) { - return node; - } - - node = node.parentNode; - } - - return null; -} -/** - * Gets parent node matching by selector from target node - * @param {Node} node - target node - * @param {string} [selector] - selector to find - * @returns {Node} found node - * @ignore - */ - - -function parent(node, selector) { - var parentNode = node.parentNode; - - if (selector) { - return parentNode && tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default()(parentNode, selector) ? parentNode : null; - } - - return parentNode; -} -/** - * Gets ancestor nodes matching by selector from target node - * @param {Node} node - target node - * @param {string|Node} found - selector or node to find - * @returns {Array.} found nodes - * @ignore - */ - - -function parents(node, found) { - var result = []; - - while (node && node !== document) { - node = closest(node.parentNode, found); - - if (node) { - result.push(node); - } - } - - return result; -} -/** - * Gets ancestor nodes until matching by selector from target node - * @param {Node} node - target node - * @param {string} selector - selector to find - * @param {Array.} found nodes - * @ignore - */ - - -function parentsUntil(node, selector) { - var result = []; - - while (node.parentNode && !tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default()(node.parentNode, selector)) { - node = node.parentNode; - - if (node) { - result.push(node); - } - } - - return result; -} -/** - * Gets child nodes matching by selector from target node - * @param {Node} node - target node - * @param {string} selector - selector to find - * @returns {Array.} found nodes - * @ignore - */ - - -function children(node, selector) { - var foundChildren; - - if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { - foundChildren = node.childNodes; - } else { - foundChildren = node.children; - } - - return tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(foundChildren).filter(function (child) { - return tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default()(child, selector); - }); -} -/** - * Appends node(s) on target node - * @param {Node} node - target node - * @param {string|Node} appended - html string or node to append - * @ignore - */ - - -function append(node, appended) { - if (tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default()(appended)) { - node.insertAdjacentHTML('beforeEnd', appended); - } else { - appended = appended.length ? tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(appended) : [appended]; - - for (var i = 0, len = appended.length; i < len; i += 1) { - node.appendChild(appended[i]); - } - } -} -/** - * Prepends node(s) on target node - * @param {Node} node - target node - * @param {string|Node} appended - html string or node to append - * @ignore - */ - - -function prepend(node, appended) { - if (tui_code_snippet_type_isString__WEBPACK_IMPORTED_MODULE_2___default()(appended)) { - node.insertAdjacentHTML('afterBegin', appended); - } else { - appended = appended.length ? tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(appended) : [appended]; - - for (var i = appended.length - 1, len = 0; i >= len; i -= 1) { - node.insertBefore(appended[i], node.firstChild); - } - } -} -/** - * Inserts new node in front of target node - * @param {Node} insertedNode - node to insert - * @param {Node} node - target node - * @ignore - */ - - -function insertBefore(insertedNode, node) { - var parentNode = node.parentNode; - - if (parentNode) { - parentNode.insertBefore(insertedNode, node); - } -} -/** - * Inserts new node after target node - * @param {Node} insertedNode - node to insert - * @param {Node} node - target node - * @ignore - */ - - -function insertAfter(insertedNode, node) { - var parentNode = node.parentNode; - - if (parentNode) { - parentNode.insertBefore(insertedNode, node.nextSibling); - } -} -/** - * Replaces target node(s) with html - * @param {Node} nodeList - target node(s) to replace - * @param {string} html - replaced html - * @ignore - */ - - -function replaceWith(nodeList, html) { - nodeList = nodeList.length ? tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(nodeList) : [nodeList]; - nodeList.forEach(function (node) { - node.insertAdjacentHTML('afterEnd', html); - node.parentNode.removeChild(node); - }); -} -/** - * Adds parent element to target node(s) - * @param {Node|Array.} nodeList - target node(s) - * @param {string} nodeName - node name to change parent element - * @ignore - */ - - -function wrap(nodeList, nodeName) { - nodeList = nodeList.length ? tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(nodeList) : [nodeList]; - nodeList.forEach(function (node) { - var wrapper = document.createElement(nodeName); - node.parentNode.insertBefore(wrapper, node); - wrapper.appendChild(node); - }); -} -/** - * Adds child element to target node(s) - * @param {Node|Array.} nodeList - target node(s) - * @param {string} nodeName - node name to change child element - * @ignore - */ - - -function wrapInner(nodeList, nodeName) { - nodeList = nodeList.length ? tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(nodeList) : [nodeList]; - nodeList.forEach(function (node) { - var wrapper = document.createElement(nodeName); - node.appendChild(wrapper); - - while (node.firstChild !== wrapper) { - wrapper.appendChild(node.firstChild); - } - }); -} -/** - * Removes target element and insert children at the same position - * @param {Node} node - parent node - * @returns {Array.} unwrapped nodes - * @ignore - */ - - -function unwrap(node) { - var result = []; - - while (node.firstChild) { - result.push(node.firstChild); - node.parentNode.insertBefore(node.firstChild, node); - } - - remove(node); - return result; -} -/** - * Removes target node from parent node - * @param {Node} node - target node - * @ignore - */ - - -function remove(node) { - if (node.parentNode) { - node.parentNode.removeChild(node); - } -} -/** - * Removes all children of target node - * @param {Node} node - target node - * @ignore - */ - - -function empty(node) { - while (node.firstChild) { - node.removeChild(node.firstChild); - } -} -/** - * Sets offset value of target element - * @param {HTMLElement} element - target element - * @returns {Object.} offset values - * @ignore - */ - - -function setOffset(element, offset) { - var _element$parentNode$g = element.parentNode.getBoundingClientRect(), - top = _element$parentNode$g.top, - left = _element$parentNode$g.left; - - tui_code_snippet_domUtil_css__WEBPACK_IMPORTED_MODULE_3___default()(element, { - top: offset.top - top - document.body.scrollTop + "px" - }); - tui_code_snippet_domUtil_css__WEBPACK_IMPORTED_MODULE_3___default()(element, { - left: offset.left - left - document.body.scrollLeft + "px" - }); -} -/** - * Gets offset value of target element - * @param {HTMLElement} element - target element - * @param {string} [selector] - selector to stop finding node - * @returns {Object.} offset values - * @ignore - */ - - -function getOffset(element, selector) { - if (selector === void 0) { - selector = 'document'; - } - - var top = 0; - var left = 0; - - do { - top += element.offsetTop || 0; - left += element.offsetLeft || 0; - element = element.offsetParent; - } while (element && !tui_code_snippet_domUtil_matches__WEBPACK_IMPORTED_MODULE_7___default()(element, selector)); - - return { - top: top, - left: left - }; -} -/** - * Gets outer width value of target element - * @param {HTMLElement} element - target element - * @param {boolean} includedMargin - whether to include margir or not - * @returns {number} outer width value - * @ignore - */ - - -function getOuterWidth(element, includedMargin) { - var widthValue = element.offsetWidth; - - if (includedMargin) { - var _getComputedStyle = getComputedStyle(element), - marginLeft = _getComputedStyle.marginLeft, - marginRight = _getComputedStyle.marginRight; - - widthValue += parseInt(marginLeft, 10) + parseInt(marginRight, 10); - } - - return widthValue; -} -/** - * Gets outer height value of target element - * @param {HTMLElement} element - target element - * @param {boolean} includedMargin - whether to include margir or not - * @returns {number} outer height value - * @ignore - */ - - -function getOuterHeight(element, includedMargin) { - var heightValue = element.offsetHeight; - - if (includedMargin) { - var _getComputedStyle2 = getComputedStyle(element), - marginTop = _getComputedStyle2.marginTop, - marginBottom = _getComputedStyle2.marginBottom; - - heightValue += parseInt(marginTop, 10) + parseInt(marginBottom, 10); - } - - return heightValue; -} -/** - * Toggles class name of target element - * @param {HTMLElement} element - target element - * @param {string} className - class name to toggle - * @param {boolean} [state] - whether to toggle or not by condition - * @ignore - */ - - -var toggleClass = function toggleClass(element, className, state) { - if (tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(state)) { - state = !tui_code_snippet_domUtil_hasClass__WEBPACK_IMPORTED_MODULE_6___default()(element, className); - } - - var toggleFn = state ? tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_4___default.a : tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_5___default.a; - toggleFn(element, className); -}; -/** - * Finalize html result - * @param {HTMLElement} html root element - * @param {boolean} needHtmlText pass true if need html text - * @returns {string|DocumentFragment} result - * @ignore - */ - - -function finalizeHtml(html, needHtmlText) { - var result; - - if (needHtmlText) { - result = html.innerHTML; - } else { - var frag = document.createDocumentFragment(); - var childNodes = tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(html.childNodes); - var length = childNodes.length; - - for (var i = 0; i < length; i += 1) { - frag.appendChild(childNodes[i]); - } - - result = frag; - } - - return result; -} -/** - * Get fragment replaced by newline to br tag - * @param {string} text original text - * @returns {DocumentFragment} fragment - * @ignore - */ - - -function getFragmentReplacedByNewlineToBr(text) { - var fragment = document.createDocumentFragment(); - var texts = text.split('\n'); - texts.forEach(function (plainText, index) { - var textNode = document.createTextNode(plainText); - fragment.appendChild(textNode); - - if (index < texts.length - 1) { - fragment.appendChild(document.createElement('br')); - } - }); - return fragment; -} - -/* harmony default export */ __webpack_exports__["a"] = ({ - getNodeName: getNodeName, - isTextNode: isTextNode, - isElemNode: isElemNode, - isBlockNode: isBlockNode, - getTextLength: getTextLength, - getOffsetLength: getOffsetLength, - getPrevOffsetNodeUntil: getPrevOffsetNodeUntil, - getNodeOffsetOfParent: getNodeOffsetOfParent, - getChildNodeByOffset: getChildNodeByOffset, - getNodeWithDirectionUntil: getNodeWithDirectionUntil, - containsNode: containsNode, - getTopPrevNodeUnder: getTopPrevNodeUnder, - getTopNextNodeUnder: getTopNextNodeUnder, - getParentUntilBy: getParentUntilBy, - getParentUntil: getParentUntil, - getTopBlockNode: getTopBlockNode, - getPrevTextNode: getPrevTextNode, - findOffsetNode: findOffsetNode, - getPath: getPath, - getNodeInfo: getNodeInfo, - getTableCellByDirection: getTableCellByDirection, - getSiblingRowCellByDirection: getSiblingRowCellByDirection, - isMDSupportInlineNode: isMDSupportInlineNode, - isStyledNode: isStyledNode, - removeChildFromStartToEndNode: removeChildFromStartToEndNode, - removeNodesByDirection: removeNodesByDirection, - getLeafNode: getLeafNode, - isInsideButtonBox: isInsideButtonBox, - isListNode: isListNode, - isFirstListItem: isFirstListItem, - isFirstLevelListItem: isFirstLevelListItem, - mergeNode: mergeNode, - createHorizontalRule: createHorizontalRule, - createEmptyLine: createEmptyLine, - changeTagOrder: changeTagOrder, - mergeSameNodes: mergeSameNodes, - optimizeRange: optimizeRange, - getAllTextNode: getAllTextNode, - isCellNode: isCellNode, - getLastNodeBy: getLastNodeBy, - getParentNodeBy: getParentNodeBy, - getSiblingNodeBy: getSiblingNodeBy, - createElementWith: createElementWith, - findAll: findAll, - isContain: isContain, - closest: closest, - parent: parent, - parents: parents, - parentsUntil: parentsUntil, - children: children, - append: append, - prepend: prepend, - insertBefore: insertBefore, - insertAfter: insertAfter, - replaceWith: replaceWith, - wrap: wrap, - wrapInner: wrapInner, - unwrap: unwrap, - remove: remove, - empty: empty, - setOffset: setOffset, - getOffset: getOffset, - getOuterWidth: getOuterWidth, - getOuterHeight: getOuterHeight, - toggleClass: toggleClass, - finalizeHtml: finalizeHtml, - getFragmentReplacedByNewlineToBr: getFragmentReplacedByNewlineToBr -}); - -/***/ }), -/* 1 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/object/extend.js -var extend = __webpack_require__(7); -var extend_default = /*#__PURE__*/__webpack_require__.n(extend); - -// CONCATENATED MODULE: ./src/js/command.js -/** - * @fileoverview Implements Command - * @author NHN FE Development Lab - */ - -/** - * Class Command - * @param {string} name Command name - * @param {number} type Command type (Command.TYPE) - * @param {Array.} [keyMap] keyMap - * @ignore - */ - -var Command = /*#__PURE__*/function () { - function Command(name, type, keyMap) { - this.name = name; - this.type = type; - - if (keyMap) { - this.setKeyMap(keyMap); - } - } - /** - * returns Name of command - * @returns {string} Command Name - */ - - - var _proto = Command.prototype; - - _proto.getName = function getName() { - return this.name; - } - /** - * returns Type of command - * @returns {number} Command Command type number - */ - ; - - _proto.getType = function getType() { - return this.type; - } - /** - * returns whether Command Type is Markdown or not - * @returns {boolean} result - */ - ; - - _proto.isMDType = function isMDType() { - return this.type === Command.TYPE.MD; - } - /** - * returns whether Command Type is Wysiwyg or not - * @returns {boolean} result - */ - ; - - _proto.isWWType = function isWWType() { - return this.type === Command.TYPE.WW; - } - /** - * returns whether Command Type is Global or not - * @returns {boolean} result - */ - ; - - _proto.isGlobalType = function isGlobalType() { - return this.type === Command.TYPE.GB; - } - /** - * Set keymap value for each os - * @param {string} win Windows Key(and etc) - * @param {string} mac Mac osx key - */ - ; - - _proto.setKeyMap = function setKeyMap(win, mac) { - this.keyMap = [win, mac]; - }; - - return Command; -}(); -/** - * Command factory method - * @param {string} typeStr Editor type name - * @param {object} props Property - * @param {string} props.name Command name - * @param {number} props.type Command type number - * @returns {Command} - * @static - */ - - -Command.factory = function (typeStr, props) { - var type; - - if (typeStr === 'markdown') { - type = Command.TYPE.MD; - } else if (typeStr === 'wysiwyg') { - type = Command.TYPE.WW; - } else if (typeStr === 'global') { - type = Command.TYPE.GB; - } - - var command = new Command(props.name, type); - extend_default()(command, props); - return command; -}; -/** - * Command Type Constant - * markdown : 0 - * wysiwyg : 1 - * global : 2 - * @type {object} - * @private - */ - - -Command.TYPE = { - MD: 0, - WW: 1, - GB: 2 -}; -/* harmony default export */ var js_command = (Command); -// EXTERNAL MODULE: ./src/js/utils/common.js -var common = __webpack_require__(12); - -// EXTERNAL MODULE: ./src/js/utils/map.js -var map = __webpack_require__(23); - -// CONCATENATED MODULE: ./src/js/commandManager.js -/** - * @fileoverview Implements CommandManager - * @author NHN FE Development Lab - */ - - - - -var KEYMAP_OS_INDEX = common["b" /* isMac */] ? 1 : 0; -/** - * Class CommandManager - * @param {ToastUIEditor} base nedInstance - * @param {object} [options={}] - option object - * @param {boolean} [options.useCommandShortcut=true] - execute command with keyMap - * @ignore - */ - -var commandManager_CommandManager = /*#__PURE__*/function () { - function CommandManager(base, options) { - if (options === void 0) { - options = {}; - } - - this._command = new map["a" /* default */](); - this._mdCommand = new map["a" /* default */](); - this._wwCommand = new map["a" /* default */](); - this._options = extend_default()({ - useCommandShortcut: true - }, options); - this.base = base; - this.keyMapCommand = {}; - - this._initEvent(); - } - /** - * You can change command before command addition by addCommandBefore event. - * @param {object} command - command - * @returns {object} - * @private - */ - - - var _proto = CommandManager.prototype; - - _proto._addCommandBefore = function _addCommandBefore(command) { - var commandWrapper = { - command: command - }; - this.base.eventManager.emit('addCommandBefore', commandWrapper); - return commandWrapper.command || command; - } - /** - * Add command - * @param {Command} command Command instance - * @returns {Command} Command - */ - ; - - _proto.addCommand = function addCommand(command) { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - if (args.length) { - command = CommandManager.command.apply(CommandManager, [command].concat(args)); - } - - command = this._addCommandBefore(command); - var name = command.getName(); - var commandBase; - - if (command.isMDType()) { - commandBase = this._mdCommand; - } else if (command.isWWType()) { - commandBase = this._wwCommand; - } else if (command.isGlobalType()) { - commandBase = this._command; - } - - commandBase.set(name, command); - - if (command.keyMap) { - this.keyMapCommand[command.keyMap[KEYMAP_OS_INDEX]] = name; - } - - return command; - } - /** - * _initEvent - * Bind event handler to eventManager - * @private - */ - ; - - _proto._initEvent = function _initEvent() { - var _this = this; - - this.base.eventManager.listen('command', function () { - _this.exec.apply(_this, arguments); - }); - this.base.eventManager.listen('keyMap', function (ev) { - if (!_this._options.useCommandShortcut) { - return; - } - - var command = _this.keyMapCommand[ev.keyMap]; - - if (command) { - ev.data.preventDefault(); - - _this.exec(command); - } - }); - } - /** - * Execute command - * @param {String} name Command name - * @param {*} ...args Command argument - * @returns {*} - */ - ; - - _proto.exec = function exec(name) { - var commandToRun, result; - var context = this.base; - commandToRun = this._command.get(name); - - if (!commandToRun) { - if (this.base.isMarkdownMode()) { - commandToRun = this._mdCommand.get(name); - context = this.base.mdEditor; - } else { - commandToRun = this._wwCommand.get(name); - context = this.base.wwEditor; - } - } - - if (commandToRun) { - var _commandToRun; - - for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - args[_key2 - 1] = arguments[_key2]; - } - - args.unshift(context); - result = (_commandToRun = commandToRun).exec.apply(_commandToRun, args); - } - - return result; - }; - - return CommandManager; -}(); -/** - * Create command by given editor type and property object - * @param {string} type Command type - * @param {{name: string, keyMap: Array}} props Property - * @returns {*} - * @static - */ - - -commandManager_CommandManager.command = function (type, props) { - var command = js_command.factory(type, props.name, props.keyMap); - extend_default()(command, props); - return command; -}; - -/* harmony default export */ var commandManager = __webpack_exports__["a"] = (commandManager_CommandManager); - -/***/ }), -/* 2 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* unused harmony export hasImageOrCodeBlockNode */ -/* unused harmony export hasSameLineParent */ -/* unused harmony export hasSpecificTypeAncestor */ -/* unused harmony export isEmptyLineNode */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return getMdStartLine; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return getMdEndLine; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return getMdStartCh; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getMdEndCh; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return isMultiLineNode; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return isHtmlNode; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return isStyledTextNode; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return isListItemNode; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return isTableCellNode; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return isInlineNode; }); -/* unused harmony export getLastLeafNode */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return findClosestNode; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return traverseParentNodes; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return addChPos; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return setChPos; }); -/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); - -function hasImageOrCodeBlockNode(mdNode) { - while (mdNode) { - if (Object(_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ "a"])(['image', 'codeBlock'], mdNode.type)) { - return true; - } - - mdNode = mdNode.firstChild; - } - - return false; -} -function hasSameLineParent(mdNode) { - return mdNode.parent && mdNode.parent.type !== 'document' && mdNode.parent.sourcepos[0][0] === mdNode.sourcepos[0][0]; -} -function hasSpecificTypeAncestor(mdNode) { - for (var _len = arguments.length, types = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - types[_key - 1] = arguments[_key]; - } - - while (mdNode.parent && mdNode.parent.type !== 'document') { - if (Object(_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ "a"])(types, mdNode.parent.type)) { - return true; - } - - mdNode = mdNode.parent; - } - - return false; -} -function isEmptyLineNode(text, mdNode) { - return !text.trim() && !hasImageOrCodeBlockNode(mdNode); -} -function getMdStartLine(mdNode) { - return mdNode.sourcepos[0][0]; -} -function getMdEndLine(mdNode) { - return mdNode.sourcepos[1][0]; -} -function getMdStartCh(mdNode) { - return mdNode.sourcepos[0][1]; -} -function getMdEndCh(mdNode) { - return mdNode.sourcepos[1][1]; -} -function isMultiLineNode(mdNode) { - var type = mdNode.type; - return type === 'codeBlock' || type === 'paragraph'; -} -function isHtmlNode(mdNode) { - var type = mdNode.type; - return type === 'htmlBlock' || type === 'htmlInline'; -} -function isStyledTextNode(mdNode) { - var type = mdNode.type; - return type === 'strike' || type === 'strong' || type === 'emph'; -} -function isListItemNode(mdNode) { - return mdNode.type === 'item'; -} -function isTableCellNode(mdNode) { - var type = mdNode.type; - return type === 'tableCell' || type === 'tableDelimCell'; -} -function isInlineNode(mdNode) { - switch (mdNode.type) { - case 'code': - case 'text': - case 'emph': - case 'strong': - case 'strike': - case 'link': - case 'image': - case 'htmlInline': - case 'linebreak': - case 'softbreak': - return true; - - default: - return false; - } -} -function getLastLeafNode(mdNode) { - while (mdNode.lastChild) { - mdNode = mdNode.lastChild; - } - - return mdNode; -} -function findClosestNode(mdNode, condition, includeSelf) { - if (includeSelf === void 0) { - includeSelf = true; - } - - mdNode = includeSelf ? mdNode : mdNode.parent; - - while (mdNode && mdNode.type !== 'document') { - if (condition(mdNode)) { - return mdNode; - } - - mdNode = mdNode.parent; - } - - return null; -} -function traverseParentNodes(mdNode, iteratee, includeSelf) { - if (includeSelf === void 0) { - includeSelf = true; - } - - mdNode = includeSelf ? mdNode : mdNode.parent; - - while (mdNode && mdNode.type !== 'document') { - iteratee(mdNode); - mdNode = mdNode.parent; - } -} -function addChPos(originPos, addedCh) { - return { - line: originPos.line, - ch: originPos.ch + addedCh - }; -} -function setChPos(originPos, newCh) { - return { - line: originPos.line, - ch: newCh - }; -} - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Transform the Array-like object to Array. - * @author NHN FE Development Lab - */ - - - -var forEachArray = __webpack_require__(21); - -/** - * Transform the Array-like object to Array. - * In low IE (below 8), Array.prototype.slice.call is not perfect. So, try-catch statement is used. - * @param {*} arrayLike Array-like object - * @returns {Array} Array - * @memberof module:collection - * @example - * var toArray = require('tui-code-snippet/collection/toArray'); // node, commonjs - * - * var arrayLike = { - * 0: 'one', - * 1: 'two', - * 2: 'three', - * 3: 'four', - * length: 4 - * }; - * var result = toArray(arrayLike); - * - * alert(result instanceof Array); // true - * alert(result); // one,two,three,four - */ -function toArray(arrayLike) { - var arr; - try { - arr = Array.prototype.slice.call(arrayLike); - } catch (e) { - arr = []; - forEachArray(arrayLike, function(value) { - arr.push(value); - }); - } - - return arr; -} - -module.exports = toArray; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Setting element style - * @author NHN FE Development Lab - */ - - - -var isString = __webpack_require__(9); -var forEach = __webpack_require__(26); - -/** - * Setting element style - * @param {(HTMLElement|SVGElement)} element - element to setting style - * @param {(string|object)} key - style prop name or {prop: value} pair object - * @param {string} [value] - style value - * @memberof module:domUtil - */ -function css(element, key, value) { - var style = element.style; - - if (isString(key)) { - style[key] = value; - - return; - } - - forEach(key, function(v, k) { - style[k] = v; - }); -} - -module.exports = css; - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Add css class to element - * @author NHN FE Development Lab - */ - - - -var forEach = __webpack_require__(26); -var inArray = __webpack_require__(14); -var getClass = __webpack_require__(33); -var setClassName = __webpack_require__(39); - -/** - * domUtil module - * @module domUtil - */ - -/** - * Add css class to element - * @param {(HTMLElement|SVGElement)} element - target element - * @param {...string} cssClass - css classes to add - * @memberof module:domUtil - */ -function addClass(element) { - var cssClass = Array.prototype.slice.call(arguments, 1); - var classList = element.classList; - var newClass = []; - var origin; - - if (classList) { - forEach(cssClass, function(name) { - element.classList.add(name); - }); - - return; - } - - origin = getClass(element); - - if (origin) { - cssClass = [].concat(origin.split(/\s+/), cssClass); - } - - forEach(cssClass, function(cls) { - if (inArray(cls, newClass) < 0) { - newClass.push(cls); - } - }); - - setClassName(element, newClass); -} - -module.exports = addClass; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Remove css class from element - * @author NHN FE Development Lab - */ - - - -var forEachArray = __webpack_require__(21); -var inArray = __webpack_require__(14); -var getClass = __webpack_require__(33); -var setClassName = __webpack_require__(39); - -/** - * Remove css class from element - * @param {(HTMLElement|SVGElement)} element - target element - * @param {...string} cssClass - css classes to remove - * @memberof module:domUtil - */ -function removeClass(element) { - var cssClass = Array.prototype.slice.call(arguments, 1); - var classList = element.classList; - var origin, newClass; - - if (classList) { - forEachArray(cssClass, function(name) { - classList.remove(name); - }); - - return; - } - - origin = getClass(element).split(/\s+/); - newClass = []; - forEachArray(origin, function(name) { - if (inArray(name, cssClass) < 0) { - newClass.push(name); - } - }); - - setClassName(element, newClass); -} - -module.exports = removeClass; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Extend the target object from other objects. - * @author NHN FE Development Lab - */ - - - -/** - * @module object - */ - -/** - * Extend the target object from other objects. - * @param {object} target - Object that will be extended - * @param {...object} objects - Objects as sources - * @returns {object} Extended object - * @memberof module:object - */ -function extend(target, objects) { // eslint-disable-line no-unused-vars - var hasOwnProp = Object.prototype.hasOwnProperty; - var source, prop, i, len; - - for (i = 1, len = arguments.length; i < len; i += 1) { - source = arguments[i]; - for (prop in source) { - if (hasOwnProp.call(source, prop)) { - target[prop] = source[prop]; - } - } - } - - return target; -} - -module.exports = extend; - - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is undefined or not. - * @author NHN FE Development Lab - */ - - - -/** - * Check whether the given variable is undefined or not. - * If the given variable is undefined, returns true. - * @param {*} obj - Target for checking - * @returns {boolean} Is undefined? - * @memberof module:type - */ -function isUndefined(obj) { - return obj === undefined; // eslint-disable-line no-undefined -} - -module.exports = isUndefined; - - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is a string or not. - * @author NHN FE Development Lab - */ - - - -/** - * Check whether the given variable is a string or not. - * If the given variable is a string, return true. - * @param {*} obj - Target for checking - * @returns {boolean} Is string? - * @memberof module:type - */ -function isString(obj) { - return typeof obj === 'string' || obj instanceof String; -} - -module.exports = isString; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Execute the provided callback once for each property of object which actually exist. - * @author NHN FE Development Lab - */ - - - -/** - * Execute the provided callback once for each property of object which actually exist. - * If the callback function returns false, the loop will be stopped. - * Callback function(iteratee) is invoked with three arguments: - * 1) The value of the property - * 2) The name of the property - * 3) The object being traversed - * @param {Object} obj The object that will be traversed - * @param {function} iteratee Callback function - * @param {Object} [context] Context(this) of callback function - * @memberof module:collection - * @example - * var forEachOwnProperties = require('tui-code-snippet/collection/forEachOwnProperties'); // node, commonjs - * - * var sum = 0; - * - * forEachOwnProperties({a:1,b:2,c:3}, function(value){ - * sum += value; - * }); - * alert(sum); // 6 - */ -function forEachOwnProperties(obj, iteratee, context) { - var key; - - context = context || null; - - for (key in obj) { - if (obj.hasOwnProperty(key)) { - if (iteratee.call(context, obj[key], key, obj) === false) { - break; - } - } - } -} - -module.exports = forEachOwnProperties; - - -/***/ }), -/* 11 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview This module detects the kind of well-known browser and version. - * @author NHN FE Development Lab - */ - - - -/** - * Browser module - * @module browser - */ - -/** - * This object has an information that indicate the kind of browser. It can detect IE8 ~ IE11, Chrome, Firefox, Safari, and Edge. - * @memberof module:browser - * @example - * var browser = require('tui-code-snippet/browser/browser'); // node, commonjs - * - * browser.chrome === true; // chrome - * browser.firefox === true; // firefox - * browser.safari === true; // safari - * browser.msie === true; // IE - * browser.edge === true; // edge - * browser.others === true; // other browser - * browser.version; // browser version - */ -var browser = { - chrome: false, - firefox: false, - safari: false, - msie: false, - edge: false, - others: false, - version: 0 -}; - -if (typeof window !== 'undefined' && window.navigator) { - detectBrowser(); -} - -/** - * Detect the browser. - * @private - */ -function detectBrowser() { - var nav = window.navigator; - var appName = nav.appName.replace(/\s/g, '_'); - var userAgent = nav.userAgent; - - var rIE = /MSIE\s([0-9]+[.0-9]*)/; - var rIE11 = /Trident.*rv:11\./; - var rEdge = /Edge\/(\d+)\./; - var versionRegex = { - firefox: /Firefox\/(\d+)\./, - chrome: /Chrome\/(\d+)\./, - safari: /Version\/([\d.]+).*Safari\/(\d+)/ - }; - - var key, tmp; - - var detector = { - Microsoft_Internet_Explorer: function() { // eslint-disable-line camelcase - var detectedVersion = userAgent.match(rIE); - - if (detectedVersion) { // ie8 ~ ie10 - browser.msie = true; - browser.version = parseFloat(detectedVersion[1]); - } else { // no version information - browser.others = true; - } - }, - Netscape: function() { // eslint-disable-line complexity - var detected = false; - - if (rIE11.exec(userAgent)) { - browser.msie = true; - browser.version = 11; - detected = true; - } else if (rEdge.exec(userAgent)) { - browser.edge = true; - browser.version = userAgent.match(rEdge)[1]; - detected = true; - } else { - for (key in versionRegex) { - if (versionRegex.hasOwnProperty(key)) { - tmp = userAgent.match(versionRegex[key]); - if (tmp && tmp.length > 1) { // eslint-disable-line max-depth - browser[key] = detected = true; - browser.version = parseFloat(tmp[1] || 0); - break; - } - } - } - } - if (!detected) { - browser.others = true; - } - } - }; - - var fn = detector[appName]; - - if (fn) { - detector[appName](); - } -} - -module.exports = browser; - - -/***/ }), -/* 12 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return isMac; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return sendHostName; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return includes; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return sanitizeLinkAttribute; }); -/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8); -/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var tui_code_snippet_request_sendHostname__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(43); -/* harmony import */ var tui_code_snippet_request_sendHostname__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_request_sendHostname__WEBPACK_IMPORTED_MODULE_1__); - - -var isMac = /Mac/.test(navigator.platform); -function sendHostName() { - tui_code_snippet_request_sendHostname__WEBPACK_IMPORTED_MODULE_1___default()('editor', 'UA-129966929-1'); -} -function includes(arr, targetItem) { - return arr.indexOf(targetItem) !== -1; -} -var availableLinkAttributes = ['rel', 'target', 'contenteditable', 'hreflang', 'type']; -/** - * sanitize attribute for link - * @param {object} attribute - attribute for link - * @returns {object} sanitized attribute - */ - -function sanitizeLinkAttribute(attribute) { - if (!attribute) { - return null; - } - - var linkAttribute = {}; - availableLinkAttributes.forEach(function (key) { - if (!tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_0___default()(attribute[key])) { - linkAttribute[key] = attribute[key]; - } - }); - return linkAttribute; -} - -/***/ }), -/* 13 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check element match selector - * @author NHN FE Development Lab - */ - - - -var inArray = __webpack_require__(14); -var toArray = __webpack_require__(3); - -var elProto = Element.prototype; -var matchSelector = elProto.matches || - elProto.webkitMatchesSelector || - elProto.mozMatchesSelector || - elProto.msMatchesSelector || - function(selector) { - var doc = this.document || this.ownerDocument; - - return inArray(this, toArray(doc.querySelectorAll(selector))) > -1; - }; - -/** - * Check element match selector - * @param {HTMLElement} element - element to check - * @param {string} selector - selector to check - * @returns {boolean} is selector matched to element? - * @memberof module:domUtil - */ -function matches(element, selector) { - return matchSelector.call(element, selector); -} - -module.exports = matches; - - -/***/ }), -/* 14 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* eslint-disable complexity */ -/** - * @fileoverview Returns the first index at which a given element can be found in the array. - * @author NHN FE Development Lab - */ - - - -var isArray = __webpack_require__(17); - -/** - * @module array - */ - -/** - * Returns the first index at which a given element can be found in the array - * from start index(default 0), or -1 if it is not present. - * It compares searchElement to elements of the Array using strict equality - * (the same method used by the ===, or triple-equals, operator). - * @param {*} searchElement Element to locate in the array - * @param {Array} array Array that will be traversed. - * @param {number} startIndex Start index in array for searching (default 0) - * @returns {number} the First index at which a given element, or -1 if it is not present - * @memberof module:array - * @example - * var inArray = require('tui-code-snippet/array/inArray'); // node, commonjs - * - * var arr = ['one', 'two', 'three', 'four']; - * var idx1 = inArray('one', arr, 3); // -1 - * var idx2 = inArray('one', arr); // 0 - */ -function inArray(searchElement, array, startIndex) { - var i; - var length; - startIndex = startIndex || 0; - - if (!isArray(array)) { - return -1; - } - - if (Array.prototype.indexOf) { - return Array.prototype.indexOf.call(array, searchElement, startIndex); - } - - length = array.length; - for (i = startIndex; startIndex >= 0 && i < length; i += 1) { - if (array[i] === searchElement) { - return i; - } - } - - return -1; -} - -module.exports = inArray; - - -/***/ }), -/* 15 */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE__15__; - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check element has specific css class - * @author NHN FE Development Lab - */ - - - -var inArray = __webpack_require__(14); -var getClass = __webpack_require__(33); - -/** - * Check element has specific css class - * @param {(HTMLElement|SVGElement)} element - target element - * @param {string} cssClass - css class - * @returns {boolean} - * @memberof module:domUtil - */ -function hasClass(element, cssClass) { - var origin; - - if (element.classList) { - return element.classList.contains(cssClass); - } - - origin = getClass(element).split(/\s+/); - - return inArray(cssClass, origin) > -1; -} - -module.exports = hasClass; - - -/***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is an instance of Array or not. - * @author NHN FE Development Lab - */ - - - -/** - * Check whether the given variable is an instance of Array or not. - * If the given variable is an instance of Array, return true. - * @param {*} obj - Target for checking - * @returns {boolean} Is array instance? - * @memberof module:type - */ -function isArray(obj) { - return obj instanceof Array; -} - -module.exports = isArray; - - -/***/ }), -/* 18 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return isNodeToBeCalculated; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getAdditionalTopPos; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return getParentNodeObj; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getCmRangeHeight; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return getNextEmptyLineHeight; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return getTotalOffsetTop; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return findAdjacentElementToScrollTop; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return getFallbackScrollTop; }); -/* harmony import */ var _utils_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); -/* harmony import */ var _utils_markdown__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2); - - -var nestableTypes = ['list', 'blockQuote']; -var nestableTagNames = ['UL', 'OL', 'BLOCKQUOTE']; -var tableElementTagNames = ['TR', 'TH', 'TBODY', 'TD']; -function isNodeToBeCalculated(mdNode) { - return !Object(_utils_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ "a"])(nestableTypes, mdNode.type); -} -function getAdditionalTopPos(scrollTop, offsetTop, currentNodeHeight, targetNodeHeight) { - var diff = (scrollTop - offsetTop) / currentNodeHeight; - return diff < 1 ? diff * targetNodeHeight : targetNodeHeight; -} -function getParentNodeObj(mdNode) { - var node = document.querySelector("[data-nodeid=\"" + mdNode.id + "\"]"); - - while (!node || Object(_utils_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ "a"])(tableElementTagNames, mdNode.type) || Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_1__[/* isStyledTextNode */ "k"])(mdNode)) { - mdNode = mdNode.parent; - node = document.querySelector("[data-nodeid=\"" + mdNode.id + "\"]"); - } - - return getNonNestableNodeObj(getParentListItemObj(mdNode)); -} - -function getParentListItemObj(orgMdNode) { - var mdNode = orgMdNode; - - while (orgMdNode && orgMdNode !== 'document') { - if (orgMdNode.type === 'item') { - mdNode = orgMdNode; - break; - } - - orgMdNode = orgMdNode.parent; - } - - return { - mdNode: mdNode, - node: document.querySelector("[data-nodeid=\"" + mdNode.id + "\"]") - }; -} - -function getNonNestableNodeObj(_ref) { - var mdNode = _ref.mdNode, - node = _ref.node; - - while (Object(_utils_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ "a"])(nestableTypes, mdNode.type) && mdNode.firstChild) { - mdNode = mdNode.firstChild; - node = node.firstElementChild; - } - - return { - mdNode: mdNode, - node: node - }; -} - -function getCmRangeHeight(mdNode, cm) { - var start = Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_1__[/* getMdStartLine */ "f"])(mdNode); - var end = Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_1__[/* getMdEndLine */ "d"])(mdNode); - var cmNodeHeight = cm.lineInfo(start - 1).handle.height; - var height = cm.heightAtLine(end, 'local') - cm.heightAtLine(start - 1, 'local'); - return height <= 0 ? cmNodeHeight : height + getNextEmptyLineHeight(cm, Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_1__[/* getMdEndLine */ "d"])(mdNode)); -} -function getNextEmptyLineHeight(cm, start, end) { - if (end === void 0) { - end = Number.MAX_VALUE; - } - - var lineInfo = cm.lineInfo(start); - - if (!lineInfo) { - return 0; - } - - var detailLineInfo = lineInfo.handle; - var height = 0; - - while (start <= end && !detailLineInfo.text.trim()) { - height += detailLineInfo.height; - start += 1; - detailLineInfo = cm.lineInfo(start).handle; - } - - return height; -} -function getTotalOffsetTop(el, root) { - var offsetTop = 0; - - while (el && el !== root) { - if (!Object(_utils_common__WEBPACK_IMPORTED_MODULE_0__[/* includes */ "a"])(nestableTagNames, el.tagName)) { - offsetTop += el.offsetTop; - } - - if (el.offsetParent === root.offsetParent) { - break; - } - - el = el.parentElement; - } - - return offsetTop; -} -function findAdjacentElementToScrollTop(scrollTop, root) { - var el = root; - var prev = null; - - while (el) { - var _el = el, - firstElementChild = _el.firstElementChild; - - if (!firstElementChild) { - break; - } - - var lastSibling = findLastSiblingElementToScrollTop(firstElementChild, scrollTop, getTotalOffsetTop(el, root)); - prev = el; - el = lastSibling; - } - - var adjacentEl = el || prev; - return adjacentEl === root ? null : adjacentEl; -} - -function findLastSiblingElementToScrollTop(el, scrollTop, offsetTop) { - if (el && scrollTop > offsetTop + el.offsetTop) { - return findLastSiblingElementToScrollTop(el.nextElementSibling, scrollTop, offsetTop) || el; - } - - return null; -} - -function getFallbackScrollTop(scrollInfo) { - var latestScrollTop = scrollInfo.latestScrollTop, - scrollTop = scrollInfo.scrollTop, - targetScrollTop = scrollInfo.targetScrollTop, - sourceScrollTop = scrollInfo.sourceScrollTop; - - if (latestScrollTop === null) { - return targetScrollTop; - } - - return latestScrollTop < scrollTop ? Math.max(targetScrollTop, sourceScrollTop) : Math.min(targetScrollTop, sourceScrollTop); -} - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Bind DOM events - * @author NHN FE Development Lab - */ - - - -var isString = __webpack_require__(9); -var forEach = __webpack_require__(26); - -var safeEvent = __webpack_require__(40); - -/** - * Bind DOM events. - * @param {HTMLElement} element - element to bind events - * @param {(string|object)} types - Space splitted events names or eventName:handler object - * @param {(function|object)} handler - handler function or context for handler method - * @param {object} [context] context - context for handler method. - * @memberof module:domEvent - * @example - * var div = document.querySelector('div'); - * - * // Bind one event to an element. - * on(div, 'click', toggle); - * - * // Bind multiple events with a same handler to multiple elements at once. - * // Use event names splitted by a space. - * on(div, 'mouseenter mouseleave', changeColor); - * - * // Bind multiple events with different handlers to an element at once. - * // Use an object which of key is an event name and value is a handler function. - * on(div, { - * keydown: highlight, - * keyup: dehighlight - * }); - * - * // Set a context for handler method. - * var name = 'global'; - * var repository = {name: 'CodeSnippet'}; - * on(div, 'drag', function() { - * console.log(this.name); - * }, repository); - * // Result when you drag a div: "CodeSnippet" - */ -function on(element, types, handler, context) { - if (isString(types)) { - forEach(types.split(/\s+/g), function(type) { - bindEvent(element, type, handler, context); - }); - - return; - } - - forEach(types, function(func, type) { - bindEvent(element, type, func, handler); - }); -} - -/** - * Bind DOM events - * @param {HTMLElement} element - element to bind events - * @param {string} type - events name - * @param {function} handler - handler function or context for handler method - * @param {object} [context] context - context for handler method. - * @private - */ -function bindEvent(element, type, handler, context) { - /** - * Event handler - * @param {Event} e - event object - */ - function eventHandler(e) { - handler.call(context || element, e || window.event); - } - - if ('addEventListener' in element) { - element.addEventListener(type, eventHandler); - } else if ('attachEvent' in element) { - element.attachEvent('on' + type, eventHandler); - } - memorizeHandler(element, type, handler, eventHandler); -} - -/** - * Memorize DOM event handler for unbinding. - * @param {HTMLElement} element - element to bind events - * @param {string} type - events name - * @param {function} handler - handler function that user passed at on() use - * @param {function} wrappedHandler - handler function that wrapped by domevent for implementing some features - * @private - */ -function memorizeHandler(element, type, handler, wrappedHandler) { - var events = safeEvent(element, type); - var existInEvents = false; - - forEach(events, function(obj) { - if (obj.handler === handler) { - existInEvents = true; - - return false; - } - - return true; - }); - - if (!existInEvents) { - events.push({ - handler: handler, - wrappedHandler: wrappedHandler - }); - } -} - -module.exports = on; - - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Unbind DOM events - * @author NHN FE Development Lab - */ - - - -var isString = __webpack_require__(9); -var forEach = __webpack_require__(26); - -var safeEvent = __webpack_require__(40); - -/** - * Unbind DOM events - * If a handler function is not passed, remove all events of that type. - * @param {HTMLElement} element - element to unbind events - * @param {(string|object)} types - Space splitted events names or eventName:handler object - * @param {function} [handler] - handler function - * @memberof module:domEvent - * @example - * // Following the example of domEvent#on - * - * // Unbind one event from an element. - * off(div, 'click', toggle); - * - * // Unbind multiple events with a same handler from multiple elements at once. - * // Use event names splitted by a space. - * off(element, 'mouseenter mouseleave', changeColor); - * - * // Unbind multiple events with different handlers from an element at once. - * // Use an object which of key is an event name and value is a handler function. - * off(div, { - * keydown: highlight, - * keyup: dehighlight - * }); - * - * // Unbind events without handlers. - * off(div, 'drag'); - */ -function off(element, types, handler) { - if (isString(types)) { - forEach(types.split(/\s+/g), function(type) { - unbindEvent(element, type, handler); - }); - - return; - } - - forEach(types, function(func, type) { - unbindEvent(element, type, func); - }); -} - -/** - * Unbind DOM events - * If a handler function is not passed, remove all events of that type. - * @param {HTMLElement} element - element to unbind events - * @param {string} type - events name - * @param {function} [handler] - handler function - * @private - */ -function unbindEvent(element, type, handler) { - var events = safeEvent(element, type); - var index; - - if (!handler) { - forEach(events, function(item) { - removeHandler(element, type, item.wrappedHandler); - }); - events.splice(0, events.length); - } else { - forEach(events, function(item, idx) { - if (handler === item.handler) { - removeHandler(element, type, item.wrappedHandler); - index = idx; - - return false; - } - - return true; - }); - events.splice(index, 1); - } -} - -/** - * Remove an event handler - * @param {HTMLElement} element - An element to remove an event - * @param {string} type - event type - * @param {function} handler - event handler - * @private - */ -function removeHandler(element, type, handler) { - if ('removeEventListener' in element) { - element.removeEventListener(type, handler); - } else if ('detachEvent' in element) { - element.detachEvent('on' + type, handler); - } -} - -module.exports = off; - - -/***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Execute the provided callback once for each element present in the array(or Array-like object) in ascending order. - * @author NHN FE Development Lab - */ - - - -/** - * Execute the provided callback once for each element present - * in the array(or Array-like object) in ascending order. - * If the callback function returns false, the loop will be stopped. - * Callback function(iteratee) is invoked with three arguments: - * 1) The value of the element - * 2) The index of the element - * 3) The array(or Array-like object) being traversed - * @param {Array|Arguments|NodeList} arr The array(or Array-like object) that will be traversed - * @param {function} iteratee Callback function - * @param {Object} [context] Context(this) of callback function - * @memberof module:collection - * @example - * var forEachArray = require('tui-code-snippet/collection/forEachArray'); // node, commonjs - * - * var sum = 0; - * - * forEachArray([1,2,3], function(value){ - * sum += value; - * }); - * alert(sum); // 6 - */ -function forEachArray(arr, iteratee, context) { - var index = 0; - var len = arr.length; - - context = context || null; - - for (; index < len; index += 1) { - if (iteratee.call(context, arr[index], index, arr) === false) { - break; - } - } -} - -module.exports = forEachArray; - - -/***/ }), -/* 22 */ -/***/ (function(module, exports) { - -!function(e,t){for(var r in t)e[r]=t[r]}(exports,function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/dist",r(r.s=11)}([function(e,t,r){"use strict";r.r(t),r.d(t,"__extends",(function(){return i})),r.d(t,"__assign",(function(){return o})),r.d(t,"__rest",(function(){return a})),r.d(t,"__decorate",(function(){return s})),r.d(t,"__param",(function(){return l})),r.d(t,"__metadata",(function(){return u})),r.d(t,"__awaiter",(function(){return c})),r.d(t,"__generator",(function(){return p})),r.d(t,"__createBinding",(function(){return f})),r.d(t,"__exportStar",(function(){return d})),r.d(t,"__values",(function(){return h})),r.d(t,"__read",(function(){return g})),r.d(t,"__spread",(function(){return m})),r.d(t,"__spreadArrays",(function(){return v})),r.d(t,"__await",(function(){return b})),r.d(t,"__asyncGenerator",(function(){return y})),r.d(t,"__asyncDelegator",(function(){return C})),r.d(t,"__asyncValues",(function(){return x})),r.d(t,"__makeTemplateObject",(function(){return k})),r.d(t,"__importStar",(function(){return N})),r.d(t,"__importDefault",(function(){return w})),r.d(t,"__classPrivateFieldGet",(function(){return D})),r.d(t,"__classPrivateFieldSet",(function(){return L})); -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ -var n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function i(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var o=function(){return(o=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=0;s--)(i=e[s])&&(a=(o<3?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a}function l(e,t){return function(r,n){t(r,n,e)}}function u(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function c(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{l(n.next(e))}catch(e){o(e)}}function s(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}l((n=n.apply(e,t||[])).next())}))}function p(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function g(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a}function m(){for(var e=[],t=0;t1||s(e,t)}))})}function s(e,t){try{(r=i[e](t)).value instanceof b?Promise.resolve(r.value.v).then(l,u):c(o[0][2],r)}catch(e){c(o[0][3],e)}var r}function l(e){s("next",e)}function u(e){s("throw",e)}function c(e,t){e(t),o.shift(),o.length&&s(o[0][0],o[0][1])}}function C(e){var t,r;return t={},n("next"),n("throw",(function(e){throw e})),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,i){t[n]=e[n]?function(t){return(r=!r)?{value:b(e[n](t)),done:"return"===n}:i?i(t):t}:i}}function x(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=h(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,i){(function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)})(n,i,(t=e[r](t)).done,t.value)}))}}}function k(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function N(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function w(e){return e&&e.__esModule?e:{default:e}}function D(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)}function L(e,t,r){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,r),r}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.text=t.isRefDef=t.isTable=t.isList=t.isHeading=t.isHtmlBlock=t.isCodeBlock=t.createNode=t.RefDefNode=t.TableCellNode=t.TableNode=t.CodeNode=t.HtmlBlockNode=t.CodeBlockNode=t.LinkNode=t.HeadingNode=t.ListNode=t.BlockNode=t.Node=t.removeAllNode=t.removeNodeById=t.getNodeById=t.isContainer=void 0;var n=r(0),i=n.__importDefault(r(18));function o(e){switch(e.type){case"document":case"blockQuote":case"list":case"item":case"paragraph":case"heading":case"emph":case"strong":case"strike":case"link":case"image":case"table":case"tableHead":case"tableBody":case"tableRow":case"tableCell":case"tableDelimRow":return!0;default:return!1}}t.isContainer=o;var a=1,s={};t.getNodeById=function(e){return s[e]},t.removeNodeById=function(e){delete s[e]},t.removeAllNode=function(){s={}};var l=function(){function e(e,t){this.parent=null,this.prev=null,this.next=null,this.firstChild=null,this.lastChild=null,this.literal=null,this.id="document"===e?-1:a++,this.type=e,this.sourcepos=t,s[this.id]=this}return e.prototype.isContainer=function(){return o(this)},e.prototype.unlink=function(){this.prev?this.prev.next=this.next:this.parent&&(this.parent.firstChild=this.next),this.next?this.next.prev=this.prev:this.parent&&(this.parent.lastChild=this.prev),this.parent=null,this.next=null,this.prev=null},e.prototype.replaceWith=function(e){this.insertBefore(e),this.unlink()},e.prototype.insertAfter=function(e){e.unlink(),e.next=this.next,e.next&&(e.next.prev=e),e.prev=this,this.next=e,this.parent&&(e.parent=this.parent,e.next||(e.parent.lastChild=e))},e.prototype.insertBefore=function(e){e.unlink(),e.prev=this.prev,e.prev&&(e.prev.next=e),e.next=this,this.prev=e,e.parent=this.parent,e.prev||(e.parent.firstChild=e)},e.prototype.appendChild=function(e){e.unlink(),e.parent=this,this.lastChild?(this.lastChild.next=e,e.prev=this.lastChild,this.lastChild=e):(this.firstChild=e,this.lastChild=e)},e.prototype.prependChild=function(e){e.unlink(),e.parent=this,this.firstChild?(this.firstChild.prev=e,e.next=this.firstChild,this.firstChild=e):(this.firstChild=e,this.lastChild=e)},e.prototype.walker=function(){return new i.default(this)},e}();t.Node=l;var u=function(e){function t(t,r){var n=e.call(this,t,r)||this;return n.open=!0,n.lineOffsets=null,n.stringContent=null,n.lastLineBlank=!1,n.lastLineChecked=!1,n.customType=null,n.type=t,n}return n.__extends(t,e),t}(l);t.BlockNode=u;var c=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.listData=null,t}return n.__extends(t,e),t}(u);t.ListNode=c;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.level=0,t.headingType="atx",t}return n.__extends(t,e),t}(u);t.HeadingNode=p;var f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.destination=null,t.title=null,t.extendedAutolink=!1,t}return n.__extends(t,e),t}(l);t.LinkNode=f;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.isFenced=!1,t.fenceChar=null,t.fenceLength=0,t.fenceOffset=-1,t.info=null,t.infoPadding=0,t}return n.__extends(t,e),t}(u);t.CodeBlockNode=d;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.htmlBlockType=-1,t}return n.__extends(t,e),t}(u);t.HtmlBlockNode=h;var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.tickCount=0,t}return n.__extends(t,e),t}(l);t.CodeNode=g;var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.columns=[],t}return n.__extends(t,e),t}(u);t.TableNode=m;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.startIdx=0,t.endIdx=0,t.paddingLeft=0,t.paddingRight=0,t.ignored=!1,t}return n.__extends(t,e),t}(u);t.TableCellNode=v;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.title="",t.dest="",t.label="",t}return n.__extends(t,e),t}(u);function y(e,t){switch(e){case"heading":return new p(e,t);case"list":case"item":return new c(e,t);case"link":case"image":return new f(e,t);case"codeBlock":return new d(e,t);case"htmlBlock":return new h(e,t);case"table":return new m(e,t);case"tableCell":return new v(e,t);case"document":case"paragraph":case"blockQuote":case"thematicBreak":case"tableRow":case"tableBody":case"tableHead":return new u(e,t);case"code":return new g(e,t);case"refDef":return new b(e,t);default:return new l(e,t)}}t.RefDefNode=b,t.createNode=y,t.isCodeBlock=function(e){return"codeBlock"===e.type},t.isHtmlBlock=function(e){return"htmlBlock"===e.type},t.isHeading=function(e){return"heading"===e.type},t.isList=function(e){return"list"===e.type},t.isTable=function(e){return"table"===e.type},t.isRefDef=function(e){return"refDef"===e.type},t.text=function(e,t){var r=y("text",t);return r.literal=e,r}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isEmpty=t.last=t.repeat=t.escapeXml=t.normalizeURI=t.unescapeString=t.ESCAPABLE=t.ENTITY=void 0;var n=r(0).__importDefault(r(12)),i=r(8);t.ENTITY="&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});";var o=/[\\&]/;t.ESCAPABLE="[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]";var a=new RegExp("\\\\"+t.ESCAPABLE+"|"+t.ENTITY,"gi"),s=new RegExp('[&<>"]',"g"),l=function(e){return 92===e.charCodeAt(0)?e.charAt(1):i.decodeHTML(e)};function u(e){switch(e){case"&":return"&";case"<":return"<";case">":return">";case'"':return""";default:return e}}t.unescapeString=function(e){return o.test(e)?e.replace(a,l):e},t.normalizeURI=function(e){try{return n.default(e)}catch(t){return e}},t.escapeXml=function(e){return s.test(e)?e.replace(s,u):e},t.repeat=function(e,t){for(var r=[],n=0;nt&&(t+=1),this.root.sourcepos[1]=[t+1,e[t].length]},e.prototype.replaceRangeNodes=function(e,t,r){e?(a.insertNodesBefore(e,r),a.removeNextUntil(e,t),[e.id,t.id].forEach((function(e){return o.removeNodeById(e)})),e.unlink()):t?(a.insertNodesBefore(t,r),o.removeNodeById(t.id),t.unlink()):a.prependChildNodes(this.root,r)},e.prototype.getNodeRange=function(e,t){var r=a.findChildNodeAtLine(this.root,e[0]),n=a.findChildNodeAtLine(this.root,t[0]);return n&&n.next&&t[0]+1===n.next.sourcepos[0][0]&&(n=n.next),a.getRangeForCustomType(r,n)},e.prototype.trigger=function(e,t){this.eventHandlerMap[e].forEach((function(e){e(t)}))},e.prototype.extendEndLine=function(e){for(;""===this.lineTexts[e];)e+=1;return e},e.prototype.parseRange=function(e,t,r,n){var i;e&&e.prev&&(o.isList(e.prev)&&function(e){var t=e.match(/^[ \t]+/);if(t&&(t[0].length>=2||/\t/.test(t[0])))return!0;var r=t?e.slice(t.length):e;return s.reBulletListMarker.test(r)||s.reOrderedListMarker.test(r)}(this.lineTexts[r-1])||o.isTable(e.prev)&&(i=this.lineTexts[r-1],!u.isBlank(i)&&-1!==i.indexOf("|")))&&(r=(e=e.prev).sourcepos[0][0]);for(var l=this.lineTexts.slice(r-1,n),c=this.parser.partialParseStart(r,l),p=t?t.next:this.root.firstChild,f=c.lastChild,d=f&&o.isCodeBlock(f),h=f&&o.isList(f);d&&p||h&&p&&("list"===p.type||p.sourcepos[0][1]>=2);){var g=this.extendEndLine(p.sourcepos[1][0]);this.parser.partialParseExtends(this.lineTexts.slice(n,g)),e||(e=t),t=p,n=g,p=p.next}return this.parser.partialParseFinish(),{newNodes:a.getChildNodes(c),extStartNode:e,extEndNode:t}},e.prototype.getRemovedNodeRange=function(e,t){return!e||e&&o.isRefDef(e)||t&&o.isRefDef(t)?null:{id:[e.id,t.id],line:[e.sourcepos[0][0]-1,t.sourcepos[1][0]-1]}},e.prototype.markDeletedRefMap=function(e,t){var r=this;if(!l.isEmptyObj(this.refMap)){var n=function(e){if(o.isRefDef(e)){var t=r.refMap[e.label];t&&e.id===t.id&&(t.unlinked=!0)}};e&&a.invokeNextUntil(n,e.parent,t),t&&a.invokeNextUntil(n,t)}},e.prototype.replaceWithNewRefDefState=function(e){var t=this;if(!l.isEmptyObj(this.refMap)){var r=function(e){if(o.isRefDef(e)){var r=e.label,n=t.refMap[r];n&&!n.unlinked||(t.refMap[r]=p(e))}};e.forEach((function(e){a.invokeNextUntil(r,e)}))}},e.prototype.replaceWithRefDefCandidate=function(){var e=this;l.isEmptyObj(this.refDefCandidateMap)||l.iterateObject(this.refDefCandidateMap,(function(t,r){var n=r.label,i=r.sourcepos,o=e.refMap[n];(!o||o.unlinked||o.sourcepos[0][0]>i[0][0])&&(e.refMap[n]=p(r))}))},e.prototype.getRangeWithRefDef=function(e,t,r,n,i){if(this.referenceDefinition&&!l.isEmptyObj(this.refMap)){var s=a.findChildNodeAtLine(this.root,e-1),u=a.findChildNodeAtLine(this.root,t+1);s&&o.isRefDef(s)&&s!==r&&s!==n&&(e=(r=s).sourcepos[0][0]),u&&o.isRefDef(u)&&u!==r&&u!==n&&(n=u,t=this.extendEndLine(n.sourcepos[1][0]+i))}return[r,n,e,t]},e.prototype.parseWithFrontMatter=function(e,t,r){void 0===r&&(r=0);var i=n.__spreadArrays(this.lineTexts),o=c.getFrontMatterPos(this.lineTexts),a=o[0],s=o[1];a>-1&&s>-1&&(this.lineTexts[a]=c.frontMatterOpen,this.lineTexts[s]=c.frontMatterClose,a>=t[0]-1&&(t[0]=s+1),a<=e[0]-1&&s>=t[0]-1&&(e[0]=a+1,t[0]=s+1));var l=this.parse(e,t,r);return this.lineTexts=i,l},e.prototype.parse=function(e,t,r){void 0===r&&(r=0);var n=this.getNodeRange(e,t),i=n[0],o=n[1],a=i?Math.min(i.sourcepos[0][0],e[0]):e[0],s=this.extendEndLine((o?Math.max(o.sourcepos[1][0],t[0]):t[0])+r),l=this.parseRange.apply(this,this.getRangeWithRefDef(a,s,i,o,r)),u=l.newNodes,c=l.extStartNode,p=l.extEndNode,f=this.getRemovedNodeRange(c,p),d=p?p.next:this.root.firstChild;return this.referenceDefinition?(this.markDeletedRefMap(c,p),this.replaceRangeNodes(c,p,u),this.replaceWithNewRefDefState(u)):this.replaceRangeNodes(c,p,u),{nodes:u,removedNodeRange:f,nextNode:d}},e.prototype.parseRefLink=function(){var e=this,t=[];return l.isEmptyObj(this.refMap)||l.iterateObject(this.refMap,(function(r,n){n.unlinked&&delete e.refMap[r],l.iterateObject(e.refLinkCandidateMap,(function(n,i){var o=i.node;i.refLabel===r&&t.push(e.parse(o.sourcepos[0],o.sourcepos[1]))}))})),t},e.prototype.removeUnlinkedCandidate=function(){l.isEmptyObj(this.refDefCandidateMap)||[this.refLinkCandidateMap,this.refDefCandidateMap].forEach((function(e){l.iterateObject(e,(function(t){a.isUnlinked(t)&&delete e[t]}))}))},e.prototype.editMarkdown=function(e,t,r){var n=this.updateLineTexts(e,t,r),i=this.frontMatter?this.parseWithFrontMatter(e,t,n):this.parse(e,t,n),o=l.omit(i,"nextNode");a.updateNextLineNumbers(i.nextNode,n),this.updateRootNodeState();var s=[o];return this.referenceDefinition&&(this.removeUnlinkedCandidate(),this.replaceWithRefDefCandidate(),s=s.concat(this.parseRefLink())),this.trigger("change",s),s},e.prototype.getLineTexts=function(){return this.lineTexts},e.prototype.getRootNode=function(){return this.root},e.prototype.findNodeAtPosition=function(e){var t=a.findNodeAtPosition(this.root,e);return t&&t!==this.root?t:null},e.prototype.findFirstNodeAtLine=function(e){return a.findFirstNodeAtLine(this.root,e)},e.prototype.on=function(e,t){this.eventHandlerMap[e].push(t)},e.prototype.off=function(e,t){var r=this.eventHandlerMap[e],n=r.indexOf(t);r.splice(n,1)},e.prototype.findNodeById=function(e){return a.findNodeById(e)},e.prototype.removeAllNode=function(){o.removeAllNode()},e}();t.ToastMark=f},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getFrontMatterPos=t.replaceFrontMatter=t.frontMatterClose=t.frontMatterOpen=void 0,t.frontMatterOpen="{:f",t.frontMatterClose="f:}";var n=/^---$/,i=/^---$([\s\S]*)^---$/m;t.replaceFrontMatter=function(e){var r=e.trim();return/^---/.test(r)&&function(e){return i.test(e)}(r)?e.replace(i,t.frontMatterOpen+"$1"+t.frontMatterClose):e},t.getFrontMatterPos=function(e){for(var t=-1,r=-1,i=0;i0)break;n.test(o)&&(t<0?t=i:r=i)}return[t,r]}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Parser=void 0;var n=r(0),i=r(2),o=r(1),a=r(19),s=r(22),l=r(4),u=r(10),c=r(3),p=r(6),f=r(26),d=[/./,/<\/(?:script|pre|style)>/i,/-->/,/\?>/,/>/,/\]\]>/],h=/^[#`~*+_=<>0-9-]/,g=/\r\n|\n|\r/;function m(){return o.createNode("document",[[1,1],[0,0]])}var v={smart:!1,tagFilter:!1,extendedAutolinks:!1,disallowedHtmlBlockTags:[],referenceDefinition:!1,disallowDeepHeading:!1,customParser:null,frontMatter:!1},b=function(){function e(e){this.options=n.__assign(n.__assign({},v),e),this.doc=m(),this.tip=this.doc,this.oldtip=this.doc,this.lineNumber=0,this.offset=0,this.column=0,this.nextNonspace=0,this.nextNonspaceColumn=0,this.indent=0,this.currentLine="",this.indented=!1,this.blank=!1,this.partiallyConsumedTab=!1,this.allClosed=!0,this.lastMatchedContainer=this.doc,this.refMap={},this.refLinkCandidateMap={},this.refDefCandidateMap={},this.lastLineLength=0,this.options.frontMatter&&(this.options.customParser=n.__assign(n.__assign({},f.frontMatterParser),this.options.customParser)),this.inlineParser=new a.InlineParser(this.options)}return e.prototype.advanceOffset=function(e,t){void 0===t&&(t=!1);for(var r,n,i,o=this.currentLine;e>0&&(i=o[this.offset]);)"\t"===i?(r=4-this.column%4,t?(this.partiallyConsumedTab=r>e,n=r>e?e:r,this.column+=n,this.offset+=this.partiallyConsumedTab?0:1,e-=n):(this.partiallyConsumedTab=!1,this.column+=r,this.offset+=1,e-=1)):(this.partiallyConsumedTab=!1,this.offset+=1,this.column+=1,e-=1)},e.prototype.advanceNextNonspace=function(){this.offset=this.nextNonspace,this.column=this.nextNonspaceColumn,this.partiallyConsumedTab=!1},e.prototype.findNextNonspace=function(){for(var e,t=this.currentLine,r=this.offset,n=this.column;""!==(e=t.charAt(r));)if(" "===e)r++,n++;else{if("\t"!==e)break;r++,n+=4-n%4}this.blank="\n"===e||"\r"===e||""===e,this.nextNonspace=r,this.nextNonspaceColumn=n,this.indent=this.nextNonspaceColumn-this.column,this.indented=this.indent>=l.CODE_INDENT},e.prototype.addLine=function(){if(this.partiallyConsumedTab){this.offset+=1;var e=4-this.column%4;this.tip.stringContent+=i.repeat(" ",e)}this.tip.lineOffsets?this.tip.lineOffsets.push(this.offset):this.tip.lineOffsets=[this.offset],this.tip.stringContent+=this.currentLine.slice(this.offset)+"\n"},e.prototype.addChild=function(e,t){for(;!s.blockHandlers[this.tip.type].canContain(e);)this.finalize(this.tip,this.lineNumber-1);var r=t+1,n=o.createNode(e,[[this.lineNumber,r],[0,0]]);return n.stringContent="",this.tip.appendChild(n),this.tip=n,n},e.prototype.closeUnmatchedBlocks=function(){if(!this.allClosed){for(;this.oldtip!==this.lastMatchedContainer;){var e=this.oldtip.parent;this.finalize(this.oldtip,this.lineNumber-1),this.oldtip=e}this.allClosed=!0}},e.prototype.finalize=function(e,t){var r=e.parent;e.open=!1,e.sourcepos[1]=[t,this.lastLineLength],s.blockHandlers[e.type].finalize(this,e),this.tip=r},e.prototype.processInlines=function(e){var t,r=this.options.customParser,n=e.walker();for(this.inlineParser.refMap=this.refMap,this.inlineParser.refLinkCandidateMap=this.refLinkCandidateMap,this.inlineParser.refDefCandidateMap=this.refDefCandidateMap,this.inlineParser.options=this.options;t=n.next();){var i=t.node,o=t.entering,a=i.type;r&&r[a]&&r[a](i,{entering:o,options:this.options}),o||"paragraph"!==a&&"heading"!==a&&("tableCell"!==a||i.ignored)||this.inlineParser.parse(i)}},e.prototype.incorporateLine=function(e){var t=this.doc;this.oldtip=this.tip,this.offset=0,this.column=0,this.blank=!1,this.partiallyConsumedTab=!1,this.lineNumber+=1,-1!==e.indexOf("\0")&&(e=e.replace(/\0/g,"�")),this.currentLine=e;for(var r,n=!0;(r=t.lastChild)&&r.open;){switch(t=r,this.findNextNonspace(),s.blockHandlers[t.type].continue(this,t)){case 0:break;case 1:n=!1;break;case 2:return void(this.lastLineLength=e.length);default:throw new Error("continue returned illegal value, must be 0, 1, or 2")}if(!n){t=t.parent;break}}this.allClosed=t===this.oldtip,this.lastMatchedContainer=t;for(var i="paragraph"!==t.type&&s.blockHandlers[t.type].acceptsLines,a=u.blockStarts.length;!i;){if(this.findNextNonspace(),"table"!==t.type&&"tableBody"!==t.type&&"paragraph"!==t.type&&!this.indented&&!h.test(e.slice(this.nextNonspace))){this.advanceNextNonspace();break}for(var l=0;l=1&&t.htmlBlockType<=5&&d[t.htmlBlockType].test(this.currentLine.slice(this.offset))&&(this.lastLineLength=e.length,this.finalize(t,this.lineNumber))):this.offset`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*/?>",t.CLOSETAG="]";var n="(?:"+t.OPENTAG+"|"+t.CLOSETAG+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|[<][?].*?[?][>]|]*>|)";t.reHtmlTag=new RegExp("^"+n,"i")},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.blockStarts=t.reOrderedListMarker=t.reBulletListMarker=void 0;var n=r(1),i=r(9),o=r(4),a=r(25),s=/^`{3,}(?!.*`)|^~{3,}/,l=[/./,/^<(?:script|pre|style)(?:\s|>|$)/i,/^/g, ''); - root.innerHTML = html; - } else { - root.appendChild(html); - } - - removeUnnecessaryTags(root); - leaveOnlyWhitelistAttribute(root); - return _utils_dom__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].finalizeHtml(root, needHtmlText); -} -/** - * Removes unnecessary tags. - * @param {HTMLElement} html - root element - * @private - */ - - -function removeUnnecessaryTags(html) { - var removedTags = _utils_dom__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].findAll(html, 'script, iframe, textarea, form, button, select, input, meta, style, link, title, embed, object, details, summary'); - removedTags.forEach(function (node) { - _utils_dom__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].remove(node); - }); -} -/** - * Checks whether the attribute and value that causing XSS or not. - * @param {string} attrName - name of attribute - * @param {string} attrValue - value of attirbute - * @param {boolean} state - * @private - */ - - -function isXSSAttribute(attrName, attrValue) { - return attrName.match(XSS_ATTR_RX) && attrValue.match(XSS_VALUE_RX); -} -/** - * Removes attributes of blacklist from node. - * @param {HTMLElement} node - node to remove attributes - * @param {NamedNodeMap} blacklistAttrs - attributes of blacklist - * @private - */ - - -function removeBlacklistAttributes(node, blacklistAttrs) { - tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(blacklistAttrs).forEach(function (_ref) { - var name = _ref.name; - - if (ON_EVENT_RX.test(name)) { - node[name] = null; - } - - if (node.getAttribute(name)) { - node.removeAttribute(name); - } - }); -} -/** - * Leaves only white list attributes. - * @param {HTMLElement} html - root element - * @private - */ - - -function leaveOnlyWhitelistAttribute(html) { - _utils_dom__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].findAll(html, '*').forEach(function (node) { - var attributes = node.attributes; - var blacklist = tui_code_snippet_collection_toArray__WEBPACK_IMPORTED_MODULE_0___default()(attributes).filter(function (attr) { - var name = attr.name, - value = attr.value; - var htmlAttr = name.match(HTML_ATTR_LIST_RX); - var svgAttr = name.match(SVG_ATTR_LIST_RX); - var xssAttr = htmlAttr && isXSSAttribute(name, value); - return !htmlAttr && !svgAttr || xssAttr; - }); - removeBlacklistAttributes(node, blacklist); - }); -} - -/* harmony default export */ __webpack_exports__["a"] = (htmlSanitizer); - -/***/ }), -/* 26 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Execute the provided callback once for each property of object(or element of array) which actually exist. - * @author NHN FE Development Lab - */ - - - -var isArray = __webpack_require__(17); -var forEachArray = __webpack_require__(21); -var forEachOwnProperties = __webpack_require__(10); - -/** - * @module collection - */ - -/** - * Execute the provided callback once for each property of object(or element of array) which actually exist. - * If the object is Array-like object(ex-arguments object), It needs to transform to Array.(see 'ex2' of example). - * If the callback function returns false, the loop will be stopped. - * Callback function(iteratee) is invoked with three arguments: - * 1) The value of the property(or The value of the element) - * 2) The name of the property(or The index of the element) - * 3) The object being traversed - * @param {Object} obj The object that will be traversed - * @param {function} iteratee Callback function - * @param {Object} [context] Context(this) of callback function - * @memberof module:collection - * @example - * var forEach = require('tui-code-snippet/collection/forEach'); // node, commonjs - * - * var sum = 0; - * - * forEach([1,2,3], function(value){ - * sum += value; - * }); - * alert(sum); // 6 - * - * // In case of Array-like object - * var array = Array.prototype.slice.call(arrayLike); // change to array - * forEach(array, function(value){ - * sum += value; - * }); - */ -function forEach(obj, iteratee, context) { - if (isArray(obj)) { - forEachArray(obj, iteratee, context); - } else { - forEachOwnProperties(obj, iteratee, context); - } -} - -module.exports = forEach; - - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is a function or not. - * @author NHN FE Development Lab - */ - - - -/** - * Check whether the given variable is a function or not. - * If the given variable is a function, return true. - * @param {*} obj - Target for checking - * @returns {boolean} Is function? - * @memberof module:type - */ -function isFunction(obj) { - return obj instanceof Function; -} - -module.exports = isFunction; - - -/***/ }), -/* 28 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is existing or not. - * @author NHN FE Development Lab - */ - - - -var isUndefined = __webpack_require__(8); -var isNull = __webpack_require__(48); - -/** - * Check whether the given variable is existing or not. - * If the given variable is not null and not undefined, returns true. - * @param {*} param - Target for checking - * @returns {boolean} Is existy? - * @memberof module:type - * @example - * var isExisty = require('tui-code-snippet/type/isExisty'); // node, commonjs - * - * isExisty(''); //true - * isExisty(0); //true - * isExisty([]); //true - * isExisty({}); //true - * isExisty(null); //false - * isExisty(undefined); //false -*/ -function isExisty(param) { - return !isUndefined(param) && !isNull(param); -} - -module.exports = isExisty; - - -/***/ }), -/* 29 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getHTMLRenderConvertors; }); -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -var baseConvertors = { - paragraph: function paragraph(node, _ref) { - var entering = _ref.entering, - origin = _ref.origin, - options = _ref.options; - var nodeId = options.nodeId, - _options$customProp = options.customProp, - customProp = _options$customProp === void 0 ? {} : _options$customProp; - var showFrontMatter = customProp.showFrontMatter && node.customType; // prevent paragraph from being removed when it's child of tight list item - // to show highlight style in live-preview mode - - if (nodeId && !node.customType || showFrontMatter) { - return { - type: entering ? 'openTag' : 'closeTag', - outerNewLine: true, - tagName: 'p' - }; - } - - return origin(); - }, - softbreak: function softbreak(node) { - var isPrevNodeHTML = node.prev && node.prev.type === 'htmlInline'; - var isPrevBR = isPrevNodeHTML && /
      /.test(node.prev.literal); - var content = isPrevBR ? '\n' : '
      \n'; - return { - type: 'html', - content: content - }; - }, - item: function item(node, _ref2) { - var entering = _ref2.entering; - - if (entering) { - var attributes = {}; - var classNames = []; - - if (node.listData.task) { - attributes['data-te-task'] = ''; - classNames.push('task-list-item'); - - if (node.listData.checked) { - classNames.push('checked'); - } - } - - return { - type: 'openTag', - tagName: 'li', - classNames: classNames, - attributes: attributes, - outerNewLine: true - }; - } - - return { - type: 'closeTag', - tagName: 'li', - outerNewLine: true - }; - }, - code: function code(node) { - var attributes = { - 'data-backticks': node.tickCount - }; - return [{ - type: 'openTag', - tagName: 'code', - attributes: attributes - }, { - type: 'text', - content: node.literal - }, { - type: 'closeTag', - tagName: 'code' - }]; - }, - codeBlock: function codeBlock(node) { - var infoWords = node.info ? node.info.split(/\s+/) : []; - var preClasses = []; - var codeAttrs = {}; - - if (node.fenceLength > 3) { - codeAttrs['data-backticks'] = node.fenceLength; - } - - if (infoWords.length > 0 && infoWords[0].length > 0) { - var lang = infoWords[0]; - preClasses.push("lang-" + lang); - codeAttrs['data-language'] = lang; - } - - return [{ - type: 'openTag', - tagName: 'pre', - classNames: preClasses - }, { - type: 'openTag', - tagName: 'code', - attributes: codeAttrs - }, { - type: 'text', - content: node.literal - }, { - type: 'closeTag', - tagName: 'code' - }, { - type: 'closeTag', - tagName: 'pre' - }]; - } -}; -function getHTMLRenderConvertors(linkAttribute, customConvertors) { - var convertors = _extends({}, baseConvertors); - - if (linkAttribute) { - convertors.link = function (_, _ref3) { - var entering = _ref3.entering, - origin = _ref3.origin; - var result = origin(); - - if (entering) { - result.attributes = _extends({}, result.attributes, linkAttribute); - } - - return result; - }; - } - - if (customConvertors) { - Object.keys(customConvertors).forEach(function (nodeType) { - var orgConvertor = convertors[nodeType]; - var customConvertor = customConvertors[nodeType]; - - if (orgConvertor) { - convertors[nodeType] = function (node, context) { - var newContext = _extends({}, context); - - newContext.origin = function () { - return orgConvertor(node, context); - }; - - return customConvertor(node, newContext); - }; - } else { - convertors[nodeType] = customConvertor; - } - }); - } - - return convertors; -} - -/***/ }), -/* 30 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* unused harmony export CodeBlockManager */ -/** - * @fileoverview Implements CodeBlockManager - * @author NHN FE Development Lab - */ - -/** - * Class Code Block Manager - */ -var CodeBlockManager = /*#__PURE__*/function () { - function CodeBlockManager() { - this._replacers = {}; - } - /** - * Set replacer for code block - * @param {string} language - code block language - * @param {function} replacer - replacer function to code block element - */ - - - var _proto = CodeBlockManager.prototype; - - _proto.setReplacer = function setReplacer(language, replacer) { - language = language.toLowerCase(); - this._replacers[language] = replacer; - } - /** - * get replacer for code block - * @param {string} language - code block type - * @returns {function} - replacer function - */ - ; - - _proto.getReplacer = function getReplacer(language) { - return this._replacers[language]; - } - /** - * Create code block html. - * @param {string} language - code block language - * @param {string} codeText - code text - * @returns {string} - */ - ; - - _proto.createCodeBlockHtml = function createCodeBlockHtml(language, codeText) { - language = language.toLowerCase(); - var replacer = this.getReplacer(language); - - if (replacer) { - return replacer(codeText, language); - } - - return escape(codeText, false); - }; - - return CodeBlockManager; -}(); -/** - * escape code from markdown-it - * @param {string} html HTML string - * @param {string} encode Boolean value of whether encode or not - * @returns {string} - * @ignore - */ - - -function escape(html, encode) { - return html.replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, '''); -} - - -/* harmony default export */ __webpack_exports__["a"] = (new CodeBlockManager()); - -/***/ }), -/* 31 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return invokePlugins; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getPluginInfo; }); -/* harmony import */ var tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17); -/* harmony import */ var tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var tui_code_snippet_type_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27); -/* harmony import */ var tui_code_snippet_type_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isFunction__WEBPACK_IMPORTED_MODULE_1__); -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - - - -/** - * Invoke plugins - * @param {Array.} plugins - list of plugin function only or - * plugin function with options - * @param {Editor|Viewer} editor - editor or viewer instance - */ - -function invokePlugins(plugins, editor) { - plugins.forEach(function (plugin) { - if (tui_code_snippet_type_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(plugin)) { - plugin(editor); - } else if (tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0___default()(plugin)) { - var pluginFn = plugin[0], - _plugin$ = plugin[1], - options = _plugin$ === void 0 ? {} : _plugin$; - pluginFn(editor, options); - } - }); -} -/** - * Get plugin info - * @param {Array.} plugins - list of plugin function only or - * plugin function with options - * @returns {Object} - plugin info - */ - -function getPluginInfo(plugins) { - if (!plugins) { - return {}; - } - - return plugins.reduce(function (acc, plugin) { - var pluginInfo = tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0___default()(plugin) ? plugin[0] : plugin; - - if (!tui_code_snippet_type_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(pluginInfo)) { - var renderer = pluginInfo.renderer, - parser = pluginInfo.parser, - pluginFn = pluginInfo.pluginFn; - plugin = tui_code_snippet_type_isArray__WEBPACK_IMPORTED_MODULE_0___default()(plugin) ? [pluginFn, plugin[1]] : pluginFn; - - if (renderer) { - acc.renderer = _extends({}, acc.renderer, renderer); - } - - if (parser) { - acc.parser = _extends({}, acc.parser, parser); - } - } - - acc.plugins.push(plugin); - return acc; - }, { - plugins: [], - renderer: {}, - parser: {} - }); -} - -/***/ }), -/* 32 */ -/***/ (function(module, exports, __webpack_require__) { - -/*! - * to-mark - * @version 1.0.1 | Tue Nov 24 2020 - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(true) - module.exports = factory(); - else {} -})(window, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -// ESM COMPAT FLAG -__webpack_require__.r(__webpack_exports__); - -// CONCATENATED MODULE: ./src/domRunner.js -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/** - * @fileoverview Implements DomRunner - * @author NHN Ent. FE Development Lab - */ -var NODE = { - ELEMENT_NODE: 1, - ATTRIBUTE_NODE: 2, - TEXT_NODE: 3 -}; -/** - * DomRunner - * @param {HTMLElement} node A root node that it has nodes to iterate(not iterate itself and its any siblings) - * @class - */ - -var DomRunner = /*#__PURE__*/function () { - function DomRunner(node) { - this._normalizeTextChildren(node); - - this._root = node; - this._current = node; - } - /** - * Iterate next node - * @returns {HTMLElement} next node - */ - - - var _proto = DomRunner.prototype; - - _proto.next = function next() { - var current = this._current; - var node; - - if (this._current) { - node = this._getNextNode(current); - - while (this._isNeedNextSearch(node, current)) { - current = current.parentNode; - node = current.nextSibling; - } - - this._current = node; - } - - return this._current; - } - /** - * Return current node - * @returns {HTMLElement} current node - */ - ; - - _proto.getNode = function getNode() { - this._normalizeTextChildren(this._current); - - return this._current; - }; - - _proto._normalizeTextChildren = function _normalizeTextChildren(node) { - if (!node || node.childNodes.length < 2) { - return; - } - - var childNode = node.firstChild; - var nextNode; - - while (childNode.nextSibling) { - nextNode = childNode.nextSibling; - - if (childNode.nodeType === NODE.TEXT_NODE && nextNode.nodeType === NODE.TEXT_NODE) { - childNode.nodeValue += nextNode.nodeValue; - node.removeChild(nextNode); - } else { - childNode = nextNode; - } - } - } - /** - * Get current node's text content - * @returns {string} text - */ - ; - - _proto.getNodeText = function getNodeText() { - var node = this.getNode(); - var text; - - if (node.nodeType === NODE.TEXT_NODE) { - text = node.nodeValue; - } else { - text = node.textContent || node.innerText; - } - - return text; - } - /** - * Check if there is next node to iterate - * @private - * @param {HTMLElement} node next node - * @param {HTMLElement} current next node - * @returns {boolean} result - */ - ; - - _proto._isNeedNextSearch = function _isNeedNextSearch(node, current) { - return !node && current !== this._root && current.parentNode !== this._root; - } - /** - * Return available next node - * @private - * @param {HTMLElement} current current node - * @returns {node} next node - */ - ; - - _proto._getNextNode = function _getNextNode(current) { - return current.firstChild || current.nextSibling; - }; - - return DomRunner; -}(); - -_defineProperty(DomRunner, "NODE_TYPE", NODE); - - -// CONCATENATED MODULE: ./src/toDom.js -/** - * @fileoverview Implements toDom - * @author NHN Ent. FE Development Lab - */ -var FIND_FIRST_LAST_SPACE_OR_RETURN_OR_TAB_RX = /^[\s\r\n\t]+|[\s\r\n\t]+$/g; -var FIND_RETURN_OR_TAB_BETWEEN_TAGS_RX = />[\r\n\t]+[ ]+<'); // remove spaces more than 1(if need more space, must use  ) - - html = html.replace(FIND_WHOLE_SPACE_MORE_THAN_ONE_BETWEEN_TAGS_RX, '> <'); - return html; -} - -toDom.preProcess = preProcess; -// CONCATENATED MODULE: ./src/renderer.js -function renderer_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/** - * @fileoverview Implements Renderer - * @author NHN Ent. FE Development Lab - */ -var FIND_LEAD_SPACE_RX = /^\u0020/; -var FIND_TRAIL_SPACE_RX = /.+\u0020$/; -var FIND_SPACE_RETURN_TAB_RX = /[\n\s\t]+/g; -var FIND_CHAR_TO_TRIM_RX = /^[\u0020\r\n\t]+|[\u0020\r\n\t]+$/g; // find first and last characters for trim - -var FIND_SPACE_MORE_THAN_ONE_RX = /[\u0020]+/g; // find space more than one - -var FIND_CHAR_TO_ESCAPE_RX = /[>(){}[\]+-.!#|]/g; // find characters that need escape - -var FIND_CHAR_TO_ESCAPE_IN_LINK_RX = /[[\]]/g; // find characters to be escaped in links or images - -var FIND_MARKDOWN_IMAGE_SYNTAX_RX = /!\[.*\]\(.*\)/g; // find markdown image syntax - -var TEXT_NODE = 3; -/** - * Iterate properties of object - * from https://github.com/nhnent/fe.code-snippet/blob/master/src/collection.js - * @param {object} obj object to iterate - * @param {function} iteratee callback function - * @param {*} [context] context of callback - */ - -function forEachOwnProperties(obj, iteratee, context) { - var key; - context = context || null; - - for (key in obj) { - if (obj.hasOwnProperty(key)) { - if (iteratee.call(context, obj[key], key, obj) === false) { - break; - } - } - } -} -/** - * Whether if inline node or not - * @param {Node} node Element - * @returns {boolean} - */ -// eslint-disable-next-line complexity - - -function isInlineNode(node) { - var tag = node.tagName; - return tag === 'S' || tag === 'B' || tag === 'I' || tag === 'EM' || tag === 'STRONG' || tag === 'A' || tag === 'IMG' || tag === 'CODE'; -} -/** - * Returns HTML string of an element using given subContent - * @param {Node} node Element - * @param {string} subContent string content of node - * @returns {string} - */ - - -function getRawHtmlString(node, subContent) { - var tempNode = node.cloneNode(false); - tempNode.innerHTML = subContent; - return tempNode.outerHTML; -} -/** - * Clone rules - * @param {object} destination object for apply rules - * @param {object} source source object for clone rules - */ - - -function cloneRules(destination, source) { - forEachOwnProperties(source, function (value, key) { - if (key !== 'converter') { - if (!destination[key]) { - destination[key] = {}; - } - - cloneRules(destination[key], value); - } else { - destination[key] = value; - } - }); -} -/** - * Renderer - * @param {object} [rules] rules to add - * @class - */ - - -var Renderer = /*#__PURE__*/function () { - function Renderer(rules) { - this.rules = {}; - /** - * Line feed replacement text - * @type string - */ - - this.lineFeedReplacement = "\u200B\u200B"; - - if (rules) { - this.addRules(rules); - } - } - /** - * Add rule - * @param {string} selectorString rule selector - * @param {function} converter converter function - */ - - - var _proto = Renderer.prototype; - - _proto.addRule = function addRule(selectorString, converter) { - var selectors = selectorString.split(', '); - var selector = selectors.pop(); - converter.fname = selectorString; - - while (selector) { - this._setConverterWithSelector(selector, converter); - - selector = selectors.pop(); - } - } - /** - * Add rules using object - * @param {object} rules key(rule selector), value(converter function) - */ - ; - - _proto.addRules = function addRules(rules) { - forEachOwnProperties(rules, function (converter, selectorString) { - this.addRule(selectorString, converter); - }, this); - } - /** - * Remove flanked space of dom node - * @param {string} content text content - * @param {HTMLElement} node current node - * @returns {string} result - */ - // eslint-disable-next-line complexity - ; - - _proto.getSpaceControlled = function getSpaceControlled(content, node) { - var lead = ''; - var trail = ''; - var text; - - if (node.previousSibling && (node.previousSibling.nodeType === TEXT_NODE || isInlineNode(node.previousSibling))) { - text = node.previousSibling.innerHTML || node.previousSibling.nodeValue; - - if (FIND_TRAIL_SPACE_RX.test(text) || FIND_LEAD_SPACE_RX.test(node.innerHTML || node.nodeValue)) { - lead = ' '; - } - } - - if (node.nextSibling && (node.nextSibling.nodeType === TEXT_NODE || isInlineNode(node.nextSibling))) { - text = node.nextSibling.innerHTML || node.nextSibling.nodeValue; - - if (FIND_LEAD_SPACE_RX.test(text) || FIND_TRAIL_SPACE_RX.test(node.innerHTML || node.nodeValue)) { - trail = ' '; - } - } - - return lead + content + trail; - } - /** - * Convert dom node to markdown using dom node and subContent - * @param {HTMLElement} node node to convert - * @param {string} subContent child nodes converted text - * @returns {string} converted text - */ - // eslint-disable-next-line complexity - ; - - _proto.convert = function convert(node, subContent) { - var result; - - var converter = this._getConverter(node); - - if (node && node.nodeType === Node.ELEMENT_NODE && node.hasAttribute('data-tomark-pass')) { - node.removeAttribute('data-tomark-pass'); - result = getRawHtmlString(node, subContent); - } else if (converter) { - result = converter.call(this, node, subContent); - } else if (node) { - result = this.getSpaceControlled(this._getInlineHtml(node, subContent), node); - } - - return result || ''; - }; - - _proto._getInlineHtml = function _getInlineHtml(node, subContent) { - var html = node.outerHTML; - var tagName = node.tagName; - var escapedSubContent = subContent.replace(/\$/g, '$$$$'); // escape $: replace all $ char to $$ before we throw this string to replace - - return html.replace(new RegExp("(<" + tagName + " ?.*?>).*()", 'i'), "$1" + escapedSubContent + "$2"); - } - /** - * Get converter function for node - * @private - * @param {HTMLElement} node node - * @returns {function} converter function - */ - ; - - _proto._getConverter = function _getConverter(node) { - var rulePointer = this.rules; - var converter; - - while (node && rulePointer) { - rulePointer = this._getNextRule(rulePointer, this._getRuleNameFromNode(node)); - node = this._getPrevNode(node); - - if (rulePointer && rulePointer.converter) { - converter = rulePointer.converter; - } - } - - return converter; - } - /** - * Get next rule object - * @private - * @param {object} ruleObj rule object - * @param {string} ruleName rule tag name to find - * @returns {object} rule Object - */ - ; - - _proto._getNextRule = function _getNextRule(ruleObj, ruleName) { - return ruleObj[ruleName]; - } - /** - * Get proper rule tag name from node - * @private - * @param {HTMLElement} node node - * @returns {string} rule tag name - */ - ; - - _proto._getRuleNameFromNode = function _getRuleNameFromNode(node) { - return node.tagName || 'TEXT_NODE'; - } - /** - * Get node's available parent node - * @private - * @param {HTMLElement} node node - * @returns {HTMLElement | undefined} result - */ - ; - - _proto._getPrevNode = function _getPrevNode(node) { - var parentNode = node.parentNode; - var previousNode; - - if (parentNode && !parentNode.__htmlRootByToMark) { - previousNode = parentNode; - } - - return previousNode; - } - /** - * Set converter for selector - * @private - * @param {string} selectors rule selector - * @param {function} converter converter function - */ - ; - - _proto._setConverterWithSelector = function _setConverterWithSelector(selectors, converter) { - var rulePointer = this.rules; - - this._eachSelector(selectors, function (ruleElem) { - if (!rulePointer[ruleElem]) { - rulePointer[ruleElem] = {}; - } - - rulePointer = rulePointer[ruleElem]; - }); - - rulePointer.converter = converter; - } - /** - * Iterate each selectors - * @private - * @param {string} selectors rule selectors - * @param {function} iteratee callback - */ - ; - - _proto._eachSelector = function _eachSelector(selectors, iteratee) { - var selectorArray = selectors.split(' '); - var selectorIndex = selectorArray.length - 1; - - while (selectorIndex >= 0) { - iteratee(selectorArray[selectorIndex]); - selectorIndex -= 1; - } - } - /** - * Trim text - * @param {string} text text be trimed - * @returns {string} trimed text - */ - ; - - _proto.trim = function trim(text) { - return text.replace(FIND_CHAR_TO_TRIM_RX, ''); - } - /** - * Returns whether text empty or not - * @param {string} text text be checked - * @returns {boolean} result - */ - ; - - _proto.isEmptyText = function isEmptyText(text) { - return text.replace(FIND_SPACE_RETURN_TAB_RX, '') === ''; - } - /** - * Collape space more than 2 - * @param {string} text text be collapsed - * @returns {string} result - */ - ; - - _proto.getSpaceCollapsedText = function getSpaceCollapsedText(text) { - return text.replace(FIND_SPACE_MORE_THAN_ONE_RX, ' '); - } - /** - * Apply backslash escape to text - * @param {string} text text be processed - * @returns {string} processed text - */ - ; - - _proto.escapeText = function escapeText(text) { - return text.replace(FIND_CHAR_TO_ESCAPE_RX, function (matched) { - return "\\" + matched; - }); - } - /** - * Escape given text for link - * @param {string} text - text be processed - * @returns {string} - processed text - */ - ; - - _proto.escapeTextForLink = function escapeTextForLink(text) { - var imageSyntaxRanges = []; - var result = FIND_MARKDOWN_IMAGE_SYNTAX_RX.exec(text); - - while (result) { - imageSyntaxRanges.push([result.index, result.index + result[0].length]); - result = FIND_MARKDOWN_IMAGE_SYNTAX_RX.exec(text); - } - - return text.replace(FIND_CHAR_TO_ESCAPE_IN_LINK_RX, function (matched, offset) { - var isDelimiter = imageSyntaxRanges.some(function (range) { - return offset > range[0] && offset < range[1]; - }); - return isDelimiter ? matched : "\\" + matched; - }); - } - /** - * Backslash escape to text for html - * Apply backslash escape to text - * @param {string} text text be processed - * @returns {string} processed text - */ - ; - - _proto.escapeTextHtml = function escapeTextHtml(text) { - return text.replace(new RegExp(Renderer.markdownTextToEscapeHtmlRx.source, 'g'), function (matched) { - return "\\" + matched; - }); - } - /** - * Backslash is using for escape ASCII punctuation character. - * https://spec.commonmark.org/0.29/#backslash-escapes - * If user input backslash as text, backslash is kept by inserting backslash. - * For example, if input text is "\$", this text is changed "\\$" - * @param {string} text text be processed - * @returns {string} processed text - */ - ; - - _proto.escapeTextBackSlash = function escapeTextBackSlash(text) { - return text.replace(new RegExp(Renderer.markdownTextToEscapeBackSlashRx.source, 'g'), function (matched) { - return "\\" + matched; - }); - } - /** - * Escapes in markdown paired characters - * @param {string} text Text to escape - * @returns {string} escaped text - */ - ; - - _proto.escapePairedCharacters = function escapePairedCharacters(text) { - return text.replace(new RegExp(Renderer.markdownTextToEscapePairedCharsRx.source, 'g'), function (matched) { - return "\\" + matched; - }); - }; - - _proto._isNeedEscape = function _isNeedEscape(text) { - var res = false; - var markdownTextToEscapeRx = Renderer.markdownTextToEscapeRx; - var type; - - for (type in markdownTextToEscapeRx) { - if (markdownTextToEscapeRx.hasOwnProperty(type) && markdownTextToEscapeRx[type].test(text)) { - res = true; - break; - } - } - - return res; - }; - - _proto._isNeedEscapeHtml = function _isNeedEscapeHtml(text) { - return Renderer.markdownTextToEscapeHtmlRx.test(text); - }; - - _proto._isNeedEscapeBackSlash = function _isNeedEscapeBackSlash(text) { - return Renderer.markdownTextToEscapeBackSlashRx.test(text); - }; - - _proto.mix = function mix(renderer) { - cloneRules(this.rules, renderer.rules); - } - /** - * Renderer factory - * Return new renderer - * @param {Renderer} srcRenderer renderer to extend - * @param {object} rules rule object, key(rule selector), value(converter function) - * @returns {Renderer} renderer - */ - ; - - Renderer.factory = function factory(srcRenderer, rules) { - var renderer = new Renderer(); - - if (!rules) { - rules = srcRenderer; - } else { - renderer.mix(srcRenderer); - } - - renderer.addRules(rules); - return renderer; - }; - - return Renderer; -}(); - -renderer_defineProperty(Renderer, "markdownTextToEscapeRx", { - codeblock: /(^ {4}[^\n]+\n*)+/, - hr: /^ *((\* *){3,}|(- *){3,} *|(_ *){3,}) */, - heading: /^(#{1,6}) +[\s\S]+/, - lheading: /^([^\n]+)\n *(=|-){2,} */, - blockquote: /^( *>[^\n]+.*)+/, - list: /^ *(\*+|-+|\d+\.) [\s\S]+/, - def: /^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? */, - link: /!?\[.*\]\(.*\)/, - reflink: /!?\[.*\]\s*\[([^\]]*)\]/, - verticalBar: /\u007C/, - codeblockGfm: /^(`{3,})/, - codeblockTildes: /^(~{3,})/ -}); - -renderer_defineProperty(Renderer, "markdownTextToEscapeHtmlRx", /<([a-zA-Z_][a-zA-Z0-9\-._]*)(\s|[^\\/>])*\/?>|<(\/)([a-zA-Z_][a-zA-Z0-9\-._]*)\s*\/?>||<([a-zA-Z_][a-zA-Z0-9\-.:/]*)>/); - -renderer_defineProperty(Renderer, "markdownTextToEscapeBackSlashRx", /\\[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~\\]/); - -renderer_defineProperty(Renderer, "markdownTextToEscapePairedCharsRx", /[*_~`]/); - - -// CONCATENATED MODULE: ./src/renderer.basic.js -/** - * @fileoverview Implements basicRenderer - * @author NHN Ent. FE Development Lab - */ - -var FIND_LAST_RETURN_RX = /\n$/g; -var FIND_BR_AND_RETURN_RX = /[ \xA0]+\n\n/g; -var FIND_MULTIPLE_EMPTYLINE_BETWEEN_TEXT_RX = /([ \xA0]+\n){2,}/g; -var FIND_LINK_HREF = /href="(.*?)"/; -var START_OF_LINES_RX = /^/gm; -/** - * Basic Markdown Renderer - * @exports basicRenderer - * @augments Renderer - */ - -/* harmony default export */ var renderer_basic = (Renderer.factory({ - // inlines - TEXT_NODE: function TEXT_NODE(node) { - var managedText = this.trim(this.getSpaceCollapsedText(node.nodeValue)); - - if (this._isNeedEscapeBackSlash(managedText)) { - managedText = this.escapeTextBackSlash(managedText); - } - - managedText = this.escapePairedCharacters(managedText); - - if (this._isNeedEscapeHtml(managedText)) { - managedText = this.escapeTextHtml(managedText); - } - - if (this._isNeedEscape(managedText)) { - managedText = this.escapeText(managedText); - } - - return this.getSpaceControlled(managedText, node); - }, - 'CODE TEXT_NODE': function CODETEXT_NODE(node) { - return node.nodeValue; - }, - 'EM, I': function EMI(node, subContent) { - var res = ''; - - if (!this.isEmptyText(subContent)) { - res = "*" + subContent + "*"; - } - - return res; - }, - 'STRONG, B': function STRONGB(node, subContent) { - var res = ''; - - if (!this.isEmptyText(subContent)) { - res = "**" + subContent + "**"; - } - - return res; - }, - A: function A(node, subContent) { - var res = subContent; - var title = ''; - var url; // "href" attribute is difficult to predict depending on the situation - // so use as it is applied to html - - var foundedHref = FIND_LINK_HREF.exec(node.outerHTML); - - if (foundedHref) { - url = foundedHref[1].replace(/&/g, '&'); - } - - if (node.title) { - title = " \"" + node.title + "\""; - } - - if (!this.isEmptyText(subContent) && url) { - res = "[" + this.escapeTextForLink(subContent) + "](" + url + title + ")"; - } - - return res; - }, - IMG: function IMG(node) { - var src = node.getAttribute('src'); - var alt = node.alt; - - if (src) { - return "![" + this.escapeTextForLink(alt) + "](" + src + ")"; - } - - return ''; - }, - BR: function BR() { - return ' \n'; - }, - CODE: function CODE(node, subContent) { - var backticks, numBackticks; - var res = ''; - - if (!this.isEmptyText(subContent)) { - numBackticks = parseInt(node.getAttribute('data-backticks'), 10); - backticks = isNaN(numBackticks) ? '`' : Array(numBackticks + 1).join('`'); - res = backticks + subContent + backticks; - } - - return res; - }, - // Paragraphs - P: function P(node, subContent) { - var res = ''; // convert multiple brs to one br - - subContent = subContent.replace(FIND_MULTIPLE_EMPTYLINE_BETWEEN_TEXT_RX, ' \n'); - - if (!this.isEmptyText(subContent)) { - res = "\n\n" + subContent + "\n\n"; - } - - return res; - }, - 'BLOCKQUOTE P': function BLOCKQUOTEP(node, subContent) { - return subContent; - }, - 'LI P': function LIP(node, subContent) { - var res = ''; - - if (!this.isEmptyText(subContent)) { - res = subContent; - } - - return res; - }, - // Headings - 'H1, H2, H3, H4, H5, H6': function H1H2H3H4H5H6(node, subContent) { - var res = ''; - var headingNumber = parseInt(node.tagName.charAt(1), 10); - - while (headingNumber) { - res += '#'; - headingNumber -= 1; - } - - res += ' '; - res += subContent; - return "\n\n" + res + "\n\n"; - }, - 'LI H1, LI H2, LI H3, LI H4, LI H5, LI H6': function LIH1LIH2LIH3LIH4LIH5LIH6(node, subContent) { - var headingNumber = parseInt(node.tagName.charAt(1), 10); - return Array(headingNumber + 1).join('#') + " " + subContent; - }, - // List - 'UL, OL': function ULOL(node, subContent) { - return "\n\n" + subContent + "\n\n"; - }, - 'LI OL, LI UL': function LIOLLIUL(node, subContent) { - var processedSubContent; // remove last br of li - - processedSubContent = subContent.replace(FIND_BR_AND_RETURN_RX, '\n'); // parent LI converter add \n too, so we remove last return - - processedSubContent = processedSubContent.replace(FIND_LAST_RETURN_RX, ''); - var res = processedSubContent.replace(START_OF_LINES_RX, ' '); - return "\n" + res; - }, - 'UL LI': function ULLI(node, subContent) { - var res = ''; // convert multiple brs to one br - - subContent = subContent.replace(FIND_MULTIPLE_EMPTYLINE_BETWEEN_TEXT_RX, ' \n'); - - if (node.firstChild && node.firstChild.tagName === 'P') { - res += '\n'; - } - - res += "* " + subContent + "\n"; - return res; - }, - // eslint-disable-next-line complexity - 'OL LI': function OLLI(node, subContent) { - var res = ''; - var liCounter = parseInt(node.parentNode.getAttribute('start') || 1, 10); - - while (node.previousSibling) { - node = node.previousSibling; - - if (node.nodeType === 1 && node.tagName === 'LI') { - liCounter += 1; - } - } // convert multiple brs to one br - - - subContent = subContent.replace(FIND_MULTIPLE_EMPTYLINE_BETWEEN_TEXT_RX, ' \n'); - - if (node.firstChild && node.firstChild.tagName === 'P') { - res += '\n'; - } - - res += liCounter + ". " + subContent + "\n"; - return res; - }, - // HR - HR: function HR() { - return '\n\n- - -\n\n'; - }, - // Blockquote - BLOCKQUOTE: function BLOCKQUOTE(node, subContent) { - // convert multiple brs to one emptyline - subContent = subContent.replace(FIND_MULTIPLE_EMPTYLINE_BETWEEN_TEXT_RX, '\n\n'); - var trimmedText = this.trim(subContent); - var res = trimmedText.replace(START_OF_LINES_RX, '> '); - return "\n\n" + res + "\n\n"; - }, - // Code Block - 'PRE CODE': function PRECODE(node, subContent) { - var lastNremoved = subContent.replace(FIND_LAST_RETURN_RX, ''); - var res = lastNremoved.replace(START_OF_LINES_RX, ' '); - return "\n\n" + res + "\n\n"; - } -})); -// CONCATENATED MODULE: ./src/renderer.gfm.js -/** - * @fileoverview Implements Github flavored markdown renderer - * @author NHN Ent. FE Development Lab - */ - - -/** - * gfmRenderer - * github flavored Markdown Renderer - * - * we didnt render gfm br here because we need distingush returns that made by block with br - * so we render gfm br later in toMark.js finalize function - * @exports gfmRenderer - * @augments Renderer - */ - -/* harmony default export */ var renderer_gfm = (Renderer.factory(renderer_basic, { - 'DEL, S': function DELS(node, subContent) { - return "~~" + subContent + "~~"; - }, - 'PRE CODE': function PRECODE(node, subContent) { - var language = ''; - var numberOfBackticks = node.getAttribute('data-backticks'); - - if (node.getAttribute('data-language')) { - language = " " + node.getAttribute('data-language'); - } - - numberOfBackticks = parseInt(numberOfBackticks, 10); - var backticks = isNaN(numberOfBackticks) ? '```' : Array(numberOfBackticks + 1).join('`'); - subContent = subContent.replace(/(\r\n)|(\r)|(\n)/g, this.lineFeedReplacement); - return "\n\n" + backticks + language + "\n" + subContent + "\n" + backticks + "\n\n"; - }, - PRE: function PRE(node, subContent) { - return subContent; - }, - 'UL LI': function ULLI(node, subContent) { - return renderer_basic.convert(node, makeTaskIfNeed(node, subContent)); - }, - 'OL LI': function OLLI(node, subContent) { - return renderer_basic.convert(node, makeTaskIfNeed(node, subContent)); - }, - // Table - TABLE: function TABLE(node, subContent) { - return "\n\n" + subContent + "\n\n"; - }, - 'TBODY, TFOOT': function TBODYTFOOT(node, subContent) { - return subContent; - }, - 'TR TD, TR TH': function TRTDTRTH(node, subContent) { - subContent = subContent.replace(/(\r\n)|(\r)|(\n)/g, ''); - return " " + subContent + " |"; - }, - 'TD BR, TH BR': function TDBRTHBR() { - return '
      '; - }, - TR: function TR(node, subContent) { - return "|" + subContent + "\n"; - }, - THEAD: function THEAD(node, subContent) { - var result = ''; - var ths = findChildTag(findChildTag(node, 'TR')[0], 'TH'); - - for (var i = 0, thsLength = ths.length; i < thsLength; i += 1) { - result += " " + makeTableHeadAlignText(ths[i]) + " |"; - } - - return subContent ? subContent + "|" + result + "\n" : ''; - } -})); -/** - * Make task Markdown string if need - * @param {HTMLElement} node Passed HTML Element - * @param {string} subContent node's content - * @returns {string} - */ - -function makeTaskIfNeed(node, subContent) { - var condition; - - if (node.className.indexOf('task-list-item') !== -1) { - condition = node.className.indexOf('checked') !== -1 ? 'x' : ' '; - subContent = "[" + condition + "] " + subContent; - } - - return subContent; -} -/** - * Make table head align text - * @param {HTMLElement} th Table head cell element - * @returns {string} - */ - - -function makeTableHeadAlignText(th) { - var leftAlignValue, rightAlignValue, textLength; - var align = th.align; - textLength = th.textContent ? th.textContent.length : th.innerText.length; - leftAlignValue = ''; - rightAlignValue = ''; - - if (align) { - if (align === 'left') { - leftAlignValue = ':'; - textLength -= 1; - } else if (align === 'right') { - rightAlignValue = ':'; - textLength -= 1; - } else if (align === 'center') { - rightAlignValue = ':'; - leftAlignValue = ':'; - textLength -= 2; - } - } - - return leftAlignValue + repeatString('-', textLength) + rightAlignValue; -} -/** - * Find child element of given tag name - * @param {HTMLElement} node starting element - * @param {string} tagName Tag name for search - * @returns {Array.} - */ - - -function findChildTag(node, tagName) { - var childNodes = node.childNodes; - var result = []; - - for (var i = 0, childLength = childNodes.length; i < childLength; i += 1) { - if (childNodes[i].tagName && childNodes[i].tagName === tagName) { - result.push(childNodes[i]); - } - } - - return result; -} -/** - * Repeat given string - * @param {string} pattern String for repeat - * @param {number} count Amount of repeat - * @returns {string} - */ - - -function repeatString(pattern, count) { - var result = pattern; - count = Math.max(count, 3); - - while (count > 1) { - result += pattern; - count -= 1; - } - - return result; -} -// CONCATENATED MODULE: ./src/toMark.js -/** - * @fileoverview Implements toMark - * @author NHN Ent. FE Development Lab - */ - - - - -var FIND_UNUSED_BRS_RX = /[ \xA0]+(\n\n)/g; -var FIND_FIRST_LAST_WITH_SPACE_RETURNS_RX = /^[\n]+|[\s\n]+$/g; -var FIND_MULTIPLE_BRS_RX = /([ \xA0]+\n){2,}/g; -var FIND_RETURNS_RX = /([ \xA0]){2,}\n/g; -var FIND_RETURNS_AND_SPACE_RX = /[ \xA0\n]+/g; -/** - * @exports toMark - * @param {string} htmlStr html string to convert - * @param {object} options option - * @param {boolean} options.gfm if this property is false turn off it cant parse gfm - * @param {Renderer} options.renderer pass renderer to use - * @returns {string} converted markdown text - * @example - * toMark('

      hello world

      '); // "# hello world" - * toMark('strike'); // "~~strike~~" - * toMark('strike', {gfm: false}); // "strike" - */ - -function toMark(htmlStr, options) { - var isGfm = true; - var renderer; - - if (!htmlStr) { - return ''; - } - - renderer = renderer_gfm; - - if (options) { - isGfm = options.gfm; - - if (isGfm === false) { - renderer = renderer_basic; - } - - renderer = options.renderer || renderer; - } - - var runner = new DomRunner(toDom(htmlStr)); - return finalize(parse(runner, renderer), isGfm, renderer.lineFeedReplacement); -} -/** - * Parse dom to markdown - * @param {DomRunner} runner runner - * @param {Renderer} renderer renderer - * @returns {string} markdown text - */ - -function parse(runner, renderer) { - var markdownContent = ''; - - while (runner.next()) { - markdownContent += tracker(runner, renderer); - } - - return markdownContent; -} -/** - * Remove first and last return character - * @param {string} text text to finalize - * @param {boolean} isGfm isGfm flag - * @param {string} lineFeedReplacement Line feed replacement text - * @returns {string} result - */ - - -function finalize(text, isGfm, lineFeedReplacement) { - // collapse return and
      - text = text.replace(FIND_UNUSED_BRS_RX, '\n'); // collapse multiple br - - text = text.replace(FIND_MULTIPLE_BRS_RX, '\n\n'); - text = text.replace(FIND_RETURNS_AND_SPACE_RX, function (matched) { - var returnCount = (matched.match(/\n/g) || []).length; - - if (returnCount >= 3) { - return '\n\n'; - } - - if (matched >= 1) { - return '\n'; - } - - return matched; - }); // remove first and last \n - - text = text.replace(FIND_FIRST_LAST_WITH_SPACE_RETURNS_RX, ''); - text = text.replace(new RegExp(lineFeedReplacement, 'g'), '\n'); // in gfm replace ' \n' make by
      to '\n' - - if (isGfm) { - text = text.replace(FIND_RETURNS_RX, '\n'); - } - - return text; -} -/** - * Iterate childNodes and process conversion using recursive call - * @param {DomRunner} runner dom runner - * @param {Renderer} renderer renderer to use - * @returns {string} processed text - */ - - -function tracker(runner, renderer) { - var subContent = ''; - var node = runner.getNode(); - - for (var i = 0, t = node.childNodes.length; i < t; i += 1) { - runner.next(); - subContent += tracker(runner, renderer); - } - - return renderer.convert(node, subContent); -} -// CONCATENATED MODULE: ./src/index.js -/** - * @fileoverview Implements entry point - * @author NHN Ent. FE Development Lab - */ - - - - -toMark.Renderer = Renderer; -toMark.basicRenderer = renderer_basic; -toMark.gfmRenderer = renderer_gfm; -/* harmony default export */ var src = __webpack_exports__["default"] = (toMark); - -/***/ }) -/******/ ])["default"]; -}); - -/***/ }), -/* 33 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Get HTML element's design classes. - * @author NHN FE Development Lab - */ - - - -var isUndefined = __webpack_require__(8); - -/** - * Get HTML element's design classes. - * @param {(HTMLElement|SVGElement)} element target element - * @returns {string} element css class name - * @memberof module:domUtil - */ -function getClass(element) { - if (!element || !element.className) { - return ''; - } - - if (isUndefined(element.className.baseVal)) { - return element.className; - } - - return element.className.baseVal; -} - -module.exports = getClass; - - -/***/ }), -/* 34 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is a number or not. - * @author NHN FE Development Lab - */ - - - -/** - * Check whether the given variable is a number or not. - * If the given variable is a number, return true. - * @param {*} obj - Target for checking - * @returns {boolean} Is number? - * @memberof module:type - */ -function isNumber(obj) { - return typeof obj === 'number' || obj instanceof Number; -} - -module.exports = isNumber; - - -/***/ }), -/* 35 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* unused harmony export CLASS_HIGHLIGHT */ -/* harmony import */ var tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19); -/* harmony import */ var tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20); -/* harmony import */ var tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5); -/* harmony import */ var tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6); -/* harmony import */ var tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(22); -/* harmony import */ var _toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var _preview__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(38); -/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(0); -/* harmony import */ var _htmlRenderConvertors__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(29); -/* harmony import */ var _scroll_helper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(18); -/* harmony import */ var _scroll_cache_offsetInfo__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(24); -/* harmony import */ var _utils_markdown__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(2); -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -/** - * @fileoverview Implements markdown preview - * @author NHN FE Development Lab - */ - - - - - - - - - - - -var CLASS_HIGHLIGHT = 'te-preview-highlight'; - -function findTableCell(tableRow, _ref) { - var ch = _ref.ch; - var cell = tableRow.firstChild; - - while (cell && cell.next) { - if (Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_10__[/* getMdStartCh */ "e"])(cell.next) > ch + 1) { - break; - } - - cell = cell.next; - } - - return cell; -} -/** - * Class Markdown Preview - * @param {HTMLElement} el - base element - * @param {EventManager} eventManager - event manager - * @param {Convertor} convertor - convertor - * @param {object} options - * @param {boolean} options.isViewer - true for view-only mode - * @param {boolean} options.highlight - true for using live-highlight feature - * @param {object} opitons.linkAttribute - attributes for link element - * @param {object} opitons.customHTMLRenderer - map of custom HTML render functions - - * @ignore - */ - - -var MarkdownPreview = /*#__PURE__*/function (_Preview) { - _inheritsLoose(MarkdownPreview, _Preview); - - function MarkdownPreview(el, eventManager, convertor, options) { - var _this; - - _this = _Preview.call(this, el, eventManager, convertor, options.isViewer) || this; - - _this.lazyRunner.registerLazyRunFunction('invokeCodeBlock', _this.invokeCodeBlockPlugins, _this.delayCodeBlockTime, _assertThisInitialized(_this)); - - var linkAttribute = options.linkAttribute, - customHTMLRenderer = options.customHTMLRenderer, - _options$highlight = options.highlight, - highlight = _options$highlight === void 0 ? false : _options$highlight; - _this.renderHTML = Object(_toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_4__["createRenderHTML"])({ - gfm: true, - nodeId: true, - convertors: Object(_htmlRenderConvertors__WEBPACK_IMPORTED_MODULE_7__[/* getHTMLRenderConvertors */ "a"])(linkAttribute, customHTMLRenderer) - }); - _this.cursorNodeId = null; - - _this._initEvent(highlight); - - return _this; - } - /** - * Initialize event - * @private - */ - - - var _proto = MarkdownPreview.prototype; - - _proto._initEvent = function _initEvent(highlight) { - var _this2 = this; - - this.eventManager.listen('contentChangedFromMarkdown', this.update.bind(this)); // need to implement a listener function for 'previewNeedsRefresh' event - // to support third-party plugins which requires re-executing script for every re-render - - if (highlight) { - this.eventManager.listen('cursorActivity', function (_ref2) { - var markdownNode = _ref2.markdownNode, - cursor = _ref2.cursor; - - _this2._updateCursorNode(markdownNode, cursor); - }); - this.eventManager.listen('blur', function () { - _this2._removeHighlight(); - }); - } - - tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_0___default()(this.el, 'scroll', function (event) { - _this2.eventManager.emit('scroll', { - source: 'preview', - data: Object(_scroll_helper__WEBPACK_IMPORTED_MODULE_8__[/* findAdjacentElementToScrollTop */ "a"])(event.target.scrollTop, _this2._previewContent) - }); - }); - }; - - _proto._removeHighlight = function _removeHighlight() { - if (this.cursorNodeId) { - var currentEl = this._getElementByNodeId(this.cursorNodeId); - - if (currentEl) { - tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_3___default()(currentEl, CLASS_HIGHLIGHT); - } - } - }; - - _proto._updateCursorNode = function _updateCursorNode(cursorNode, cursorPos) { - if (cursorNode) { - cursorNode = Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_10__[/* findClosestNode */ "b"])(cursorNode, function (mdNode) { - return !Object(_utils_markdown__WEBPACK_IMPORTED_MODULE_10__[/* isInlineNode */ "h"])(mdNode); - }); - - if (cursorNode.type === 'tableRow') { - cursorNode = findTableCell(cursorNode, cursorPos); - } else if (cursorNode.type === 'tableBody') { - // empty line next to table - cursorNode = null; - } - } - - var cursorNodeId = cursorNode ? cursorNode.id : null; - - if (this.cursorNodeId === cursorNodeId) { - return; - } - - var inFrontMatter = cursorNode && cursorNode.customType === 'frontMatter'; - - var oldEL = this._getElementByNodeId(this.cursorNodeId); - - var newEL = this._getElementByNodeId(cursorNodeId); - - if (oldEL) { - tui_code_snippet_domUtil_removeClass__WEBPACK_IMPORTED_MODULE_3___default()(oldEL, CLASS_HIGHLIGHT); - } - - if (newEL && !inFrontMatter) { - tui_code_snippet_domUtil_addClass__WEBPACK_IMPORTED_MODULE_2___default()(newEL, CLASS_HIGHLIGHT); - } - - this.cursorNodeId = cursorNodeId; - }; - - _proto._getElementByNodeId = function _getElementByNodeId(nodeId) { - if (!nodeId) { - return null; - } - - return this._previewContent.querySelector("[data-nodeid=\"" + nodeId + "\"]"); - }; - - _proto.update = function update(changed) { - var _this3 = this; - - changed.forEach(function (editResult) { - return _this3.replaceRangeNodes(editResult); - }); - this.eventManager.emit('previewRenderAfter', this); - }; - - _proto.replaceRangeNodes = function replaceRangeNodes(editResult) { - var _this4 = this; - - var nodes = editResult.nodes, - removedNodeRange = editResult.removedNodeRange; - var contentEl = this._previewContent; - var newHtml = this.eventManager.emitReduce('convertorAfterMarkdownToHtmlConverted', nodes.map(function (node) { - return _this4.renderHTML(node); - }).join('')); - - if (!removedNodeRange) { - contentEl.insertAdjacentHTML('afterbegin', newHtml); - } else { - var _removedNodeRange$id = removedNodeRange.id, - startNodeId = _removedNodeRange$id[0], - endNodeId = _removedNodeRange$id[1]; - - var startEl = this._getElementByNodeId(startNodeId); - - var endEl = this._getElementByNodeId(endNodeId); - - if (startEl) { - startEl.insertAdjacentHTML('beforebegin', newHtml); - var el = startEl; - - while (el !== endEl) { - var nextEl = el.nextElementSibling; - el.parentNode.removeChild(el); - Object(_scroll_cache_offsetInfo__WEBPACK_IMPORTED_MODULE_9__[/* removeOffsetInfoByNode */ "c"])(el); - el = nextEl; - } - - if (el.parentNode) { - _utils_dom__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].remove(el); - Object(_scroll_cache_offsetInfo__WEBPACK_IMPORTED_MODULE_9__[/* removeOffsetInfoByNode */ "c"])(el); - } - } - } - - var codeBlockEls = this.getCodeBlockElements(nodes.map(function (node) { - return node.id; - })); - - if (codeBlockEls.length) { - this.lazyRunner.run('invokeCodeBlock', codeBlockEls); - } - } - /** - * render - * @param {string} html - html string to render - * @override - */ - ; - - _proto.render = function render(html) { - _Preview.prototype.render.call(this, html); - - this.eventManager.emit('previewRenderAfter', this); - }; - - _proto.remove = function remove() { - tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_1___default()(this.el, 'scroll'); - this.el = null; - }; - - return MarkdownPreview; -}(_preview__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"]); - -/* harmony default export */ __webpack_exports__["a"] = (MarkdownPreview); - -/***/ }), -/* 36 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10); -/* harmony import */ var tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8); -/* harmony import */ var tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var tui_code_snippet_type_isFalsy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44); -/* harmony import */ var tui_code_snippet_type_isFalsy__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_type_isFalsy__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var tui_code_snippet_enum_enum__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(45); -/* harmony import */ var tui_code_snippet_enum_enum__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_enum_enum__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _utils_map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(23); -/** - * @fileoverview Implements EventManager - * @author NHN FE Development Lab - */ - - - - - -var eventList = ['previewBeforeHook', 'previewRenderAfter', 'previewNeedsRefresh', 'addImageBlobHook', 'setMarkdownAfter', 'contentChangedFromWysiwyg', 'changeFromWysiwyg', 'contentChangedFromMarkdown', 'changeFromMarkdown', 'change', 'changeModeToWysiwyg', 'changeModeToMarkdown', 'changeModeBefore', 'changeMode', 'changePreviewStyle', 'changePreviewTabPreview', 'changePreviewTabWrite', 'openPopupAddLink', 'openPopupAddImage', 'openPopupAddTable', 'openPopupTableUtils', 'openHeadingSelect', 'openPopupCodeBlockLanguages', 'openPopupCodeBlockEditor', 'openDropdownToolbar', 'closePopupCodeBlockLanguages', 'closePopupCodeBlockEditor', 'closeAllPopup', 'command', 'addCommandBefore', 'htmlUpdate', 'markdownUpdate', 'renderedHtmlUpdated', 'removeEditor', 'convertorAfterMarkdownToHtmlConverted', 'convertorBeforeHtmlToMarkdownConverted', 'convertorAfterHtmlToMarkdownConverted', 'stateChange', 'wysiwygSetValueAfter', 'wysiwygSetValueBefore', 'wysiwygGetValueBefore', 'wysiwygProcessHTMLText', 'wysiwygRangeChangeAfter', 'wysiwygKeyEvent', 'scroll', 'click', 'mousedown', 'mouseover', 'mouseout', 'mouseup', 'contextmenu', 'keydown', 'keyup', 'keyMap', 'load', 'focus', 'blur', 'paste', 'pasteBefore', 'willPaste', 'copy', 'copyBefore', 'copyAfter', 'cut', 'cutAfter', 'drop', 'show', 'hide', 'changeLanguage', 'cursorActivity', 'requireScrollSync', 'requireScrollIntoView', 'setCodeBlockLanguages']; -/** - * Class EventManager - * @ignore - */ - -var EventManager = /*#__PURE__*/function () { - function EventManager() { - this.events = new _utils_map__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"](); - this.TYPE = new tui_code_snippet_enum_enum__WEBPACK_IMPORTED_MODULE_3___default.a(eventList); - } - /** - * Listen event and bind event handler - * @param {string} typeStr Event type string - * @param {function} handler Event handler - */ - - - var _proto = EventManager.prototype; - - _proto.listen = function listen(typeStr, handler) { - var typeInfo = this._getTypeInfo(typeStr); - - var eventHandlers = this.events.get(typeInfo.type) || []; - - if (!this._hasEventType(typeInfo.type)) { - throw new Error("There is no event type " + typeInfo.type); - } - - if (typeInfo.namespace) { - handler.namespace = typeInfo.namespace; - } - - eventHandlers.push(handler); - this.events.set(typeInfo.type, eventHandlers); - } - /** - * Emit event - * @param {string} eventName Event name to emit - * @returns {Array} - */ - ; - - _proto.emit = function emit() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - var typeStr = args.shift(); - - var typeInfo = this._getTypeInfo(typeStr); - - var eventHandlers = this.events.get(typeInfo.type); - var results; - - if (eventHandlers) { - tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default()(eventHandlers, function (handler) { - var result = handler.apply(void 0, args); - - if (!tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(result)) { - results = results || []; - results.push(result); - } - }); - } - - return results; - } - /** - * Emit given event and return result - * @param {string} eventName Event name to emit - * @param {string} sourceText Source text to change - * @returns {string} - */ - ; - - _proto.emitReduce = function emitReduce() { - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - var type = args.shift(); - var eventHandlers = this.events.get(type); - - if (eventHandlers) { - tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default()(eventHandlers, function (handler) { - var result = handler.apply(void 0, args); - - if (!tui_code_snippet_type_isFalsy__WEBPACK_IMPORTED_MODULE_2___default()(result)) { - args[0] = result; - } - }); - } - - return args[0]; - } - /** - * Get event type and namespace - * @param {string} typeStr Event type name - * @returns {{type: string, namespace: string}} - * @private - */ - ; - - _proto._getTypeInfo = function _getTypeInfo(typeStr) { - var splited = typeStr.split('.'); - return { - type: splited[0], - namespace: splited[1] - }; - } - /** - * Check whether event type exists or not - * @param {string} type Event type name - * @returns {boolean} - * @private - */ - ; - - _proto._hasEventType = function _hasEventType(type) { - return !tui_code_snippet_type_isUndefined__WEBPACK_IMPORTED_MODULE_1___default()(this.TYPE[this._getTypeInfo(type).type]); - } - /** - * Add event type when given event not exists - * @param {string} type Event type name - */ - ; - - _proto.addEventType = function addEventType(type) { - if (this._hasEventType(type)) { - throw new Error("There is already have event type " + type); - } - - this.TYPE.set(type); - } - /** - * Remove event handler from given event type - * @param {string} typeStr Event type name - * @param {function} [handler] - registered event handler - */ - ; - - _proto.removeEventHandler = function removeEventHandler(typeStr, handler) { - var _this = this; - - var _this$_getTypeInfo = this._getTypeInfo(typeStr), - type = _this$_getTypeInfo.type, - namespace = _this$_getTypeInfo.namespace; - - if (type && handler) { - this._removeEventHandlerWithHandler(type, handler); - } else if (type && !namespace) { - // dont use dot notation cuz eslint - this.events.delete(type); - } else if (!type && namespace) { - this.events.forEach(function (eventHandlers, eventType) { - _this._removeEventHandlerWithTypeInfo(eventType, namespace); - }); - } else if (type && namespace) { - this._removeEventHandlerWithTypeInfo(type, namespace); - } - } - /** - * Remove event handler with event handler - * @param {string} type - event type name - * @param {function} handler - event handler - * @private - */ - ; - - _proto._removeEventHandlerWithHandler = function _removeEventHandlerWithHandler(type, handler) { - var eventHandlers = this.events.get(type) || []; - var handlerIndex = eventHandlers.indexOf(handler); - - if (handlerIndex >= 0) { - eventHandlers.splice(handlerIndex, 1); - } - } - /** - * Remove event handler with event type information - * @param {string} type Event type name - * @param {string} namespace Event namespace - * @private - */ - ; - - _proto._removeEventHandlerWithTypeInfo = function _removeEventHandlerWithTypeInfo(type, namespace) { - var handlersToSurvive = []; - var eventHandlers = this.events.get(type); - - if (!eventHandlers) { - return; - } - - eventHandlers.map(function (handler) { - if (handler.namespace !== namespace) { - handlersToSurvive.push(handler); - } - - return null; - }); - this.events.set(type, handlersToSurvive); - }; - - return EventManager; -}(); - -/* harmony default export */ __webpack_exports__["a"] = (EventManager); - -/***/ }), -/* 37 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var _toast_ui_to_mark__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(32); -/* harmony import */ var _toast_ui_to_mark__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_toast_ui_to_mark__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22); -/* harmony import */ var _toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _htmlRenderConvertors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29); -/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0); -/** - * @fileoverview Convertor have responsible to convert markdown and html - * @author NHN FE Development Lab - */ - - - - // This regular expression refere markdownIt. -// https://github.com/markdown-it/markdown-it/blob/master/lib/common/html_re.js - -var attrName = '[a-zA-Z_:][a-zA-Z0-9:._-]*'; -var unquoted = '[^"\'=<>`\\x00-\\x20]+'; -var singleQuoted = "'[^']*'"; -var doubleQuoted = '"[^"]*"'; -var attrValue = "(?:" + unquoted + "|" + singleQuoted + "|" + doubleQuoted + ")"; -var attribute = "(?:\\s+" + attrName + "(?:\\s*=\\s*" + attrValue + ")?)*\\s*"; -var openingTag = "(\\\\<|<)([A-Za-z][A-Za-z0-9\\-]*" + attribute + ")(\\/?>)"; -var HTML_TAG_RX = new RegExp(openingTag, 'g'); -var FRONT_MATTER_RX = /^\s?\\-\\-\\-([\s\S]+?)\\-\\-\\-/; -/** - * Class Convertor - * @param {EventManager} em - EventManager instance - * @ignore - */ - -var Convertor = /*#__PURE__*/function () { - function Convertor(em, options) { - if (options === void 0) { - options = {}; - } - - var _options = options, - linkAttribute = _options.linkAttribute, - customHTMLRenderer = _options.customHTMLRenderer, - extendedAutolinks = _options.extendedAutolinks, - referenceDefinition = _options.referenceDefinition, - customParser = _options.customParser, - frontMatter = _options.frontMatter, - customProp = _options.customProp; - this.options = options; - this.mdReader = new _toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_1__["Parser"]({ - extendedAutolinks: extendedAutolinks, - disallowedHtmlBlockTags: ['br'], - referenceDefinition: referenceDefinition, - disallowDeepHeading: true, - customParser: customParser, - frontMatter: frontMatter - }); - this.renderHTML = Object(_toast_ui_toastmark__WEBPACK_IMPORTED_MODULE_1__["createRenderHTML"])({ - gfm: true, - convertors: Object(_htmlRenderConvertors__WEBPACK_IMPORTED_MODULE_2__[/* getHTMLRenderConvertors */ "a"])(linkAttribute, customHTMLRenderer), - customProp: customProp - }); - this.eventManager = em; - } - /** - * _markdownToHtmlWithCodeHighlight - * Convert markdown to html with Codehighlight - * @param {string} markdown markdown text - * @returns {string} html text - * @private - */ - - - var _proto = Convertor.prototype; - - _proto._markdownToHtmlWithCodeHighlight = function _markdownToHtmlWithCodeHighlight(markdown) { - return this.renderHTML(this.mdReader.parse(markdown)); - } - /** - * _markdownToHtml - * Convert markdown to html - * @param {string} markdown markdown text - * @param {object} env environment sandbox for markdownit - * @returns {string} html text - * @private - */ - ; - - _proto._markdownToHtml = function _markdownToHtml(markdown) { - markdown = markdown.replace(HTML_TAG_RX, function (match, $1, $2, $3) { - return match[0] !== '\\' ? "" + $1 + $2 + " data-tomark-pass " + $3 : match; - }); - return this.renderHTML(this.mdReader.parse(markdown)); - } - /** - * Remove BR's data-tomark-pass attribute text when br in code element - * @param {string} renderedHTML Rendered HTML string from markdown editor - * @returns {string} - * @private - */ - ; - - _proto._removeBrToMarkPassAttributeInCode = function _removeBrToMarkPassAttributeInCode(renderedHTML) { - var wrapper = _utils_dom__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].createElementWith("
      " + renderedHTML + "
      "); - _utils_dom__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].findAll(wrapper, 'code, pre').forEach(function (codeOrPre) { - var codeEelement = codeOrPre; - codeEelement.innerHTML = codeEelement.innerHTML.replace(/\sdata-tomark-pass\s(\/?)>/g, '$1>'); - }); - renderedHTML = wrapper.innerHTML; - return renderedHTML; - } - /** - * toHTMLWithCodeHighlight - * Convert markdown to html with Codehighlight - * emit convertorAfterMarkdownToHtmlConverted - * @param {string} markdown markdown text - * @returns {string} html text - */ - ; - - _proto.toHTMLWithCodeHighlight = function toHTMLWithCodeHighlight(markdown) { - var html = this._markdownToHtmlWithCodeHighlight(markdown); - - html = this.eventManager.emitReduce('convertorAfterMarkdownToHtmlConverted', html); - return html; - } - /** - * toHTML - * Convert markdown to html - * emit convertorAfterMarkdownToHtmlConverted - * @param {string} markdown markdown text - * @returns {string} html text - */ - ; - - _proto.toHTML = function toHTML(markdown) { - var html = this._markdownToHtml(markdown); - - html = this.eventManager.emitReduce('convertorAfterMarkdownToHtmlConverted', html); - html = this._removeBrToMarkPassAttributeInCode(html); - return html; - }; - - _proto.initHtmlSanitizer = function initHtmlSanitizer(sanitizer) { - this.eventManager.listen('convertorAfterMarkdownToHtmlConverted', function (html) { - return sanitizer(html, true); - }); - } - /** - * toMarkdown - * Convert html to markdown - * emit convertorAfterHtmlToMarkdownConverted - * @param {string} html html text - * @param {object | null} toMarkOptions - toMark library options - * @returns {string} markdown text - */ - ; - - _proto.toMarkdown = function toMarkdown(html, toMarkOptions) { - var result = []; - html = this.eventManager.emitReduce('convertorBeforeHtmlToMarkdownConverted', html); - html = this._appendAttributeForLinkIfNeed(html); - html = this._appendAttributeForBrIfNeed(html); - var markdown = _toast_ui_to_mark__WEBPACK_IMPORTED_MODULE_0___default()(html, toMarkOptions); - - if (this.options.frontMatter) { - markdown = markdown.replace(FRONT_MATTER_RX, '---$1---'); - } - - markdown = this.eventManager.emitReduce('convertorAfterHtmlToMarkdownConverted', markdown); - markdown = this._removeNewlinesBeforeAfterAndBlockElement(markdown); - markdown.split('\n').forEach(function (line, index) { - var FIND_TABLE_RX = /^(
      )+\||\|[^|]*\|/gi; - var FIND_CODE_RX = /`[^`]*
      [^`]*`/gi; - var FIND_BRS_BEFORE_TABLE = /^(
      )+\|/gi; - - if (FIND_TABLE_RX.test(line)) { - line = line.replace(FIND_BRS_BEFORE_TABLE, function (match) { - return match.replace(/
      /gi, '
      \n'); - }); - } else if (!FIND_CODE_RX.test(line)) { - line = line.replace(/
      /gi, '
      \n'); - } - - result[index] = line; - }); - return result.join('\n'); - }; - - _proto._removeNewlinesBeforeAfterAndBlockElement = function _removeNewlinesBeforeAfterAndBlockElement(markdown) { - // Newlines('\n\n') are created on to-mark. - var NEWLINES_BEFORE_BLOCK_RX = /
      \n\n(#{1,6} .*|```|\||(\*+|-+|\d+\.) .*| *>[^\n]+.*)/g; - var NEWLINES_AFTER_BLOCK_RX = /(#{1,6} .*|```|\|)\n\n
      /g; - markdown = markdown.replace(NEWLINES_BEFORE_BLOCK_RX, '
      $1'); - markdown = markdown.replace(NEWLINES_AFTER_BLOCK_RX, '$1\n
      '); - return markdown; - }; - - _proto._appendAttributeForLinkIfNeed = function _appendAttributeForLinkIfNeed(html) { - var LINK_RX = /!?\[.*\]\(<\s*a[^>]*>(.*?)<\s*\/\s*a>\)/gi; - return html.replace(LINK_RX, function (match) { - return match.replace(//gi; - var FIND_DOUBLE_BR_RX = /

      /gi; - var FIND_PASSING_AND_NORMAL_BR_RX = /

      (.)/gi; - var FIRST_TWO_BRS_BEFORE_RX = /([^>]|<\/a>|<\/code>|<\/span>|<\/b>|<\/i>|<\/s>|]*>)/; - var TWO_BRS_RX = /

      /; - var FIND_FIRST_TWO_BRS_RX = new RegExp(FIRST_TWO_BRS_BEFORE_RX.source + TWO_BRS_RX.source, 'g'); - var FIND_ATTRI_WITH_EMTPY_STR_RX = /
      /gi; - html = html.replace(FIND_BR_RX, '
      '); - html = html.replace(FIND_DOUBLE_BR_RX, '

      '); - html = html.replace(FIND_ATTRI_WITH_EMTPY_STR_RX, '
      '); - html = html.replace(FIND_PASSING_AND_NORMAL_BR_RX, '

      $1'); - html = html.replace(FIND_FIRST_TWO_BRS_RX, '$1

      '); // Preserve
      when there is only one empty line before or after a block element. - - html = html.replace(/(.)

      (|
      |
|
    |
      |
      )/g, '$1

      $2'); - html = html.replace(/(<\/h[1-6]>|<\/pre>|<\/table>|<\/ul>|<\/ol>|<\/blockquote>)
      (.)/g, '$1
      $2'); - return html; - }; - - return Convertor; -}(); - -/* harmony default export */ __webpack_exports__["a"] = (Convertor); - -/***/ }), -/* 38 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/domUtil/css.js -var css = __webpack_require__(4); -var css_default = /*#__PURE__*/__webpack_require__.n(css); - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/type/isString.js -var isString = __webpack_require__(9); -var isString_default = /*#__PURE__*/__webpack_require__.n(isString); - -// CONCATENATED MODULE: ./src/js/lazyRunner.js -/** - * @fileoverview Implements LazyRunner - * @author NHN FE Development Lab - */ - -/** - * Class LazyRunner - * @ignore - */ - -var lazyRunner_LazyRunner = /*#__PURE__*/function () { - function LazyRunner() { - this.globalTOID = null; - this.lazyRunFunctions = {}; - } - - var _proto = LazyRunner.prototype; - - _proto.run = function run(fn, params, context, delay) { - var TOID; - - if (isString_default()(fn)) { - TOID = this._runRegisteredRun(fn, params, context, delay); - } else { - TOID = this._runSingleRun(fn, params, context, delay, this.globalTOID); - this.globalTOID = TOID; - } - - return TOID; - }; - - _proto.registerLazyRunFunction = function registerLazyRunFunction(name, fn, delay, context) { - context = context || this; - this.lazyRunFunctions[name] = { - fn: fn, - delay: delay, - context: context, - TOID: null - }; - }; - - _proto._runSingleRun = function _runSingleRun(fn, params, context, delay, TOID) { - this._clearTOIDIfNeed(TOID); - - TOID = setTimeout(function () { - fn.call(context, params); - }, delay); - return TOID; - }; - - _proto._runRegisteredRun = function _runRegisteredRun(lazyRunName, params, context, delay) { - var lazyRunFunction = this.lazyRunFunctions[lazyRunName]; - var fn = lazyRunFunction.fn; - var TOID = lazyRunFunction.TOID; - delay = delay || lazyRunFunction.delay; - context = context || lazyRunFunction.context; - TOID = this._runSingleRun(fn, params, context, delay, TOID); - lazyRunFunction.TOID = TOID; - return TOID; - }; - - _proto._clearTOIDIfNeed = function _clearTOIDIfNeed(TOID) { - if (TOID) { - clearTimeout(TOID); - } - }; - - return LazyRunner; -}(); - -/* harmony default export */ var lazyRunner = (lazyRunner_LazyRunner); -// EXTERNAL MODULE: ./src/js/utils/dom.js -var dom = __webpack_require__(0); - -// EXTERNAL MODULE: ./src/js/codeBlockManager.js -var codeBlockManager = __webpack_require__(30); - -// CONCATENATED MODULE: ./src/js/preview.js -/** - * @fileoverview Implements preview - * @author NHN FE Development Lab - */ - - - - -/** - * Class Preview - * @param {HTMLElement} el - Container element for preview - * @param {EventManager} eventManager - Event manager instance - * @param {Convertor} convertor - Convertor instance - * @param {boolean} isViewer - whether viewer mode or not - * @ignore - */ - -var preview_Preview = /*#__PURE__*/function () { - function Preview(el, eventManager, convertor, isViewer) { - this.eventManager = eventManager; - this.convertor = convertor; - this.el = el; - this.isViewer = !!isViewer; - this.delayCodeBlockTime = 500; - - this._initContentSection(); - - this.lazyRunner = new lazyRunner(); - } - /** - * Initialize content selection - * @private - */ - - - var _proto = Preview.prototype; - - _proto._initContentSection = function _initContentSection() { - this._previewContent = dom["a" /* default */].createElementWith("
      "); - this.el.appendChild(this._previewContent); - }; - - _proto.getCodeBlockElements = function getCodeBlockElements(nodeIds) { - var contentEl = this._previewContent; - var codeEls = []; - var targetEls; - - if (nodeIds) { - targetEls = nodeIds.map(function (id) { - return contentEl.querySelector("[data-nodeid=\"" + id + "\"]"); - }).filter(Boolean); - } else { - targetEls = [contentEl]; - } - - targetEls.forEach(function (targetEl) { - codeEls.push.apply(codeEls, dom["a" /* default */].findAll(targetEl, 'code[data-language]')); - }); - return codeEls; - }; - - _proto.invokeCodeBlockPlugins = function invokeCodeBlockPlugins(codeBlocks) { - codeBlocks.forEach(function (codeBlock) { - var lang = codeBlock.getAttribute('data-language'); - var html = codeBlockManager["a" /* default */].createCodeBlockHtml(lang, codeBlock.textContent); - codeBlock.innerHTML = html; - }); - } - /** - * Refresh rendering - * @param {string} markdown Markdown text - */ - ; - - _proto.refresh = function refresh(markdown) { - if (markdown === void 0) { - markdown = ''; - } - - this.render(this.convertor.toHTMLWithCodeHighlight(markdown)); - this.invokeCodeBlockPlugins(this.getCodeBlockElements()); - } - /** - * get html string - * @returns {string} - html preview string - */ - ; - - _proto.getHTML = function getHTML() { - return this._previewContent.innerHTML; - } - /** - * set html string - * @param {string} html - html preview string - */ - ; - - _proto.setHTML = function setHTML(html) { - this._previewContent.innerHTML = html; - } - /** - * Render HTML on preview - * @param {string} html HTML string - */ - ; - - _proto.render = function render(html) { - var _previewContent = this._previewContent; - html = this.eventManager.emit('previewBeforeHook', html) || html; - dom["a" /* default */].empty(_previewContent); - _previewContent.innerHTML = html; - } - /** - * Set preview height - * @param {number} height - Height for preview container - */ - ; - - _proto.setHeight = function setHeight(height) { - css_default()(this.el, { - height: height + "px" - }); - } - /** - * set min height - * @param {number} minHeight - min height - */ - ; - - _proto.setMinHeight = function setMinHeight(minHeight) { - css_default()(this.el, { - minHeight: minHeight + "px" - }); - } - /** - * Is Preview visible - * @returns {boolean} result - */ - ; - - _proto.isVisible = function isVisible() { - return this.el.style.display !== 'none'; - }; - - return Preview; -}(); - -/* harmony default export */ var preview = __webpack_exports__["a"] = (preview_Preview); - -/***/ }), -/* 39 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Set className value - * @author NHN FE Development Lab - */ - - - -var isArray = __webpack_require__(17); -var isUndefined = __webpack_require__(8); - -/** - * Set className value - * @param {(HTMLElement|SVGElement)} element - target element - * @param {(string|string[])} cssClass - class names - * @private - */ -function setClassName(element, cssClass) { - cssClass = isArray(cssClass) ? cssClass.join(' ') : cssClass; - - cssClass = cssClass.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); - - if (isUndefined(element.className.baseVal)) { - element.className = cssClass; - - return; - } - - element.className.baseVal = cssClass; -} - -module.exports = setClassName; - - -/***/ }), -/* 40 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Get event collection for specific HTML element - * @author NHN FE Development Lab - */ - - - -var EVENT_KEY = '_feEventKey'; - -/** - * Get event collection for specific HTML element - * @param {HTMLElement} element - HTML element - * @param {string} type - event type - * @returns {array} - * @private - */ -function safeEvent(element, type) { - var events = element[EVENT_KEY]; - var handlers; - - if (!events) { - events = element[EVENT_KEY] = {}; - } - - handlers = events[type]; - if (!handlers) { - handlers = events[type] = []; - } - - return handlers; -} - -module.exports = safeEvent; - - -/***/ }), -/* 41 */ -/***/ (function(module, exports, __webpack_require__) { - -// extracted by mini-css-extract-plugin - -/***/ }), -/* 42 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is truthy or not. - * @author NHN FE Development Lab - */ - - - -var isExisty = __webpack_require__(28); - -/** - * Check whether the given variable is truthy or not. - * If the given variable is not null or not undefined or not false, returns true. - * (It regards 0 as true) - * @param {*} obj - Target for checking - * @returns {boolean} Is truthy? - * @memberof module:type - */ -function isTruthy(obj) { - return isExisty(obj) && obj !== false; -} - -module.exports = isTruthy; - - -/***/ }), -/* 43 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Send hostname on DOMContentLoaded. - * @author NHN FE Development Lab - */ - - - -var isUndefined = __webpack_require__(8); -var imagePing = __webpack_require__(49); - -var ms7days = 7 * 24 * 60 * 60 * 1000; - -/** - * Check if the date has passed 7 days - * @param {number} date - milliseconds - * @returns {boolean} - * @private - */ -function isExpired(date) { - var now = new Date().getTime(); - - return now - date > ms7days; -} - -/** - * Send hostname on DOMContentLoaded. - * To prevent hostname set tui.usageStatistics to false. - * @param {string} appName - application name - * @param {string} trackingId - GA tracking ID - * @ignore - */ -function sendHostname(appName, trackingId) { - var url = 'https://www.google-analytics.com/collect'; - var hostname = location.hostname; - var hitType = 'event'; - var eventCategory = 'use'; - var applicationKeyForStorage = 'TOAST UI ' + appName + ' for ' + hostname + ': Statistics'; - var date = window.localStorage.getItem(applicationKeyForStorage); - - // skip if the flag is defined and is set to false explicitly - if (!isUndefined(window.tui) && window.tui.usageStatistics === false) { - return; - } - - // skip if not pass seven days old - if (date && !isExpired(date)) { - return; - } - - window.localStorage.setItem(applicationKeyForStorage, new Date().getTime()); - - setTimeout(function() { - if (document.readyState === 'interactive' || document.readyState === 'complete') { - imagePing(url, { - v: 1, - t: hitType, - tid: trackingId, - cid: hostname, - dp: hostname, - dh: appName, - el: appName, - ec: eventCategory - }); - } - }, 1000); -} - -module.exports = sendHostname; - - -/***/ }), -/* 44 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is falsy or not. - * @author NHN FE Development Lab - */ - - - -var isTruthy = __webpack_require__(42); - -/** - * Check whether the given variable is falsy or not. - * If the given variable is null or undefined or false, returns true. - * @param {*} obj - Target for checking - * @returns {boolean} Is falsy? - * @memberof module:type - */ -function isFalsy(obj) { - return !isTruthy(obj); -} - -module.exports = isFalsy; - - -/***/ }), -/* 45 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview This module provides a Enum Constructor. - * @author NHN FE Development Lab - * @example - * // node, commonjs - * var Enum = require('tui-code-snippet/enum/enum'); - */ - - - -var isNumber = __webpack_require__(34); -var isArray = __webpack_require__(17); -var toArray = __webpack_require__(3); -var forEach = __webpack_require__(26); - -/** - * Check whether the defineProperty() method is supported. - * @type {boolean} - * @ignore - */ -var isSupportDefinedProperty = (function() { - try { - Object.defineProperty({}, 'x', {}); - - return true; - } catch (e) { - return false; - } -})(); - -/** - * A unique value of a constant. - * @type {number} - * @ignore - */ -var enumValue = 0; - -/** - * Make a constant-list that has unique values. - * In modern browsers (except IE8 and lower), - * a value defined once can not be changed. - * - * @param {...string|string[]} itemList Constant-list (An array of string is available) - * @class - * - * @example - * var Enum = require('tui-code-snippet/enum/enum'); // node, commonjs - * - * var MYENUM = new Enum('TYPE1', 'TYPE2'); - * var MYENUM2 = new Enum(['TYPE1', 'TYPE2']); - * - * //usage - * if (value === MYENUM.TYPE1) { - * .... - * } - * - * //add (If a duplicate name is inputted, will be disregarded.) - * MYENUM.set('TYPE3', 'TYPE4'); - * - * //get name of a constant by a value - * MYENUM.getName(MYENUM.TYPE1); // 'TYPE1' - * - * // In modern browsers (except IE8 and lower), a value can not be changed in constants. - * var originalValue = MYENUM.TYPE1; - * MYENUM.TYPE1 = 1234; // maybe TypeError - * MYENUM.TYPE1 === originalValue; // true - **/ -function Enum(itemList) { - if (itemList) { - this.set.apply(this, arguments); - } -} - -/** - * Define a constants-list - * @param {...string|string[]} itemList Constant-list (An array of string is available) - */ -Enum.prototype.set = function(itemList) { - var self = this; - - if (!isArray(itemList)) { - itemList = toArray(arguments); - } - - forEach(itemList, function itemListIteratee(item) { - self._addItem(item); - }); -}; - -/** - * Return a key of the constant. - * @param {number} value A value of the constant. - * @returns {string|undefined} Key of the constant. - */ -Enum.prototype.getName = function(value) { - var self = this; - var foundedKey; - - forEach(this, function(itemValue, key) { // eslint-disable-line consistent-return - if (self._isEnumItem(key) && value === itemValue) { - foundedKey = key; - - return false; - } - }); - - return foundedKey; -}; - -/** - * Create a constant. - * @private - * @param {string} name Constant name. (It will be a key of a constant) - */ -Enum.prototype._addItem = function(name) { - var value; - - if (!this.hasOwnProperty(name)) { - value = this._makeEnumValue(); - - if (isSupportDefinedProperty) { - Object.defineProperty(this, name, { - enumerable: true, - configurable: false, - writable: false, - value: value - }); - } else { - this[name] = value; - } - } -}; - -/** - * Return a unique value for assigning to a constant. - * @private - * @returns {number} A unique value - */ -Enum.prototype._makeEnumValue = function() { - var value; - - value = enumValue; - enumValue += 1; - - return value; -}; - -/** - * Return whether a constant from the given key is in instance or not. - * @param {string} key - A constant key - * @returns {boolean} Result - * @private - */ -Enum.prototype._isEnumItem = function(key) { - return isNumber(this[key]); -}; - -module.exports = Enum; - - -/***/ }), -/* 46 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10); -/* harmony import */ var tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var tui_code_snippet_object_extend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7); -/* harmony import */ var tui_code_snippet_object_extend__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_object_extend__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19); -/* harmony import */ var tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20); -/* harmony import */ var tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _mdPreview__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(35); -/* harmony import */ var _eventManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(36); -/* harmony import */ var _commandManager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1); -/* harmony import */ var _convertor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(37); -/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(0); -/* harmony import */ var _codeBlockManager__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(30); -/* harmony import */ var _pluginHelper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(31); -/* harmony import */ var _utils_common__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(12); -/* harmony import */ var _htmlSanitizer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(25); -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -/** - * @fileoverview Implements editor preivew - * @author NHN FE Development Lab - */ - - - - - - - - - - - - - -var TASK_ATTR_NAME = 'data-te-task'; -var DISABLED_TASK_ATTR_NAME = 'data-te-task-disabled'; -var TASK_CHECKED_CLASS_NAME = 'checked'; -/** - * Class ToastUIEditorViewer - * @param {object} options Option object - * @param {HTMLElement} options.el - container element - * @param {string} [options.initialValue] Editor's initial value - * @param {Object} [options.events] - Events - * @param {function} [options.events.load] - It would be emitted when editor fully load - * @param {function} [options.events.change] - It would be emitted when content changed - * @param {function} [options.events.stateChange] - It would be emitted when format change by cursor position - * @param {function} [options.events.focus] - It would be emitted when editor get focus - * @param {function} [options.events.blur] - It would be emitted when editor loose focus - * @param {Object} [options.hooks] - Hooks - * @param {function} [options.hooks.previewBeforeHook] - Submit preview to hook URL before preview be shown - * @param {Array.} [options.plugins] - Array of plugins. A plugin can be either a function or an array in the form of [function, options]. - * @param {boolean} [options.useDefaultHTMLSanitizer=true] - use default htmlSanitizer - * @param {Object} [options.extendedAutolinks] - Using extended Autolinks specified in GFM spec - * @param {Object} [options.customConvertor] - convertor extention - * @param {Object} [options.linkAttribute] - Attributes of anchor element that should be rel, target, contenteditable, hreflang, type - * @param {Object} [options.customHTMLRenderer] - Object containing custom renderer functions correspond to markdown node - * @param {boolean} [options.referenceDefinition=false] - whether use the specification of link reference definition - * @param {function} [options.customHTMLSanitizer=null] - custom HTML sanitizer - * @param {boolean} [options.frontMatter=false] - whether use the front matter - */ - -var ToastUIEditorViewer = /*#__PURE__*/function () { - function ToastUIEditorViewer(options) { - var _this = this; - - this.options = tui_code_snippet_object_extend__WEBPACK_IMPORTED_MODULE_1___default()({ - useDefaultHTMLSanitizer: true, - linkAttribute: null, - extendedAutolinks: false, - customConvertor: null, - customHTMLRenderer: null, - referenceDefinition: false, - customHTMLSanitizer: null, - frontMatter: false - }, options); - this.codeBlockLanguages = []; - this.eventManager = new _eventManager__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"](); - this.commandManager = new _commandManager__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"](this); - var linkAttribute = Object(_utils_common__WEBPACK_IMPORTED_MODULE_11__[/* sanitizeLinkAttribute */ "c"])(this.options.linkAttribute); - - var _getPluginInfo = Object(_pluginHelper__WEBPACK_IMPORTED_MODULE_10__[/* getPluginInfo */ "a"])(this.options.plugins), - renderer = _getPluginInfo.renderer, - parser = _getPluginInfo.parser, - plugins = _getPluginInfo.plugins; - - var _this$options = this.options, - customHTMLRenderer = _this$options.customHTMLRenderer, - customHTMLSanitizer = _this$options.customHTMLSanitizer, - extendedAutolinks = _this$options.extendedAutolinks, - referenceDefinition = _this$options.referenceDefinition, - frontMatter = _this$options.frontMatter; - var rendererOptions = { - linkAttribute: linkAttribute, - customHTMLRenderer: _extends({}, renderer, customHTMLRenderer), - extendedAutolinks: extendedAutolinks, - referenceDefinition: referenceDefinition, - customParser: parser, - frontMatter: frontMatter - }; - - if (this.options.customConvertor) { - // eslint-disable-next-line new-cap - this.convertor = new this.options.customConvertor(this.eventManager, rendererOptions); - } else { - this.convertor = new _convertor__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"](this.eventManager, rendererOptions); - } - - var sanitizer = customHTMLSanitizer || (this.options.useDefaultHTMLSanitizer ? _htmlSanitizer__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"] : null); - - if (sanitizer) { - this.convertor.initHtmlSanitizer(sanitizer); - } - - if (this.options.hooks) { - tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default()(this.options.hooks, function (fn, key) { - _this.addHook(key, fn); - }); - } - - if (this.options.events) { - tui_code_snippet_collection_forEachOwnProperties__WEBPACK_IMPORTED_MODULE_0___default()(this.options.events, function (fn, key) { - _this.on(key, fn); - }); - } - - var _this$options2 = this.options, - el = _this$options2.el, - initialValue = _this$options2.initialValue; - var existingHTML = el.innerHTML; - el.innerHTML = ''; - this.preview = new _mdPreview__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"](el, this.eventManager, this.convertor, _extends({}, rendererOptions, { - isViewer: true - })); - tui_code_snippet_domEvent_on__WEBPACK_IMPORTED_MODULE_2___default()(this.preview.el, 'mousedown', this._toggleTask.bind(this)); - - if (plugins) { - Object(_pluginHelper__WEBPACK_IMPORTED_MODULE_10__[/* invokePlugins */ "b"])(plugins, this); - } - - if (initialValue) { - this.setMarkdown(initialValue); - } else if (existingHTML) { - this.preview.setHTML(existingHTML); - } - - this.eventManager.emit('load', this); - } - /** - * Toggle task by detecting mousedown event. - * @param {MouseEvent} ev - event - * @private - */ - - - var _proto = ToastUIEditorViewer.prototype; - - _proto._toggleTask = function _toggleTask(ev) { - var style = getComputedStyle(ev.target, ':before'); - - if (!ev.target.hasAttribute(DISABLED_TASK_ATTR_NAME) && ev.target.hasAttribute(TASK_ATTR_NAME) && _utils_dom__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].isInsideButtonBox(style, ev.offsetX, ev.offsetY)) { - _utils_dom__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].toggleClass(ev.target, TASK_CHECKED_CLASS_NAME); - this.eventManager.emit('change', { - source: 'viewer', - data: ev - }); - } - } - /** - * Set content for preview - * @param {string} markdown Markdown text - */ - ; - - _proto.setMarkdown = function setMarkdown(markdown) { - this.markdownValue = markdown = markdown || ''; - this.preview.refresh(this.markdownValue); - this.eventManager.emit('setMarkdownAfter', this.markdownValue); - } - /** - * Bind eventHandler to event type - * @param {string} type Event type - * @param {function} handler Event handler - */ - ; - - _proto.on = function on(type, handler) { - this.eventManager.listen(type, handler); - } - /** - * Unbind eventHandler from event type - * @param {string} type Event type - */ - ; - - _proto.off = function off(type) { - this.eventManager.removeEventHandler(type); - } - /** - * Remove Viewer preview from document - */ - ; - - _proto.remove = function remove() { - this.eventManager.emit('removeEditor'); - tui_code_snippet_domEvent_off__WEBPACK_IMPORTED_MODULE_3___default()(this.preview.el, 'mousedown', this._toggleTask.bind(this)); - this.preview.remove(); - this.options = null; - this.eventManager = null; - this.commandManager = null; - this.convertor = null; - this.preview = null; - } - /** - * Add hook to Viewer preview's event - * @param {string} type Event type - * @param {function} handler Event handler - */ - ; - - _proto.addHook = function addHook(type, handler) { - this.eventManager.removeEventHandler(type); - this.eventManager.listen(type, handler); - } - /** - * Return true - * @returns {boolean} - */ - ; - - _proto.isViewer = function isViewer() { - return true; - } - /** - * Return false - * @returns {boolean} - */ - ; - - _proto.isMarkdownMode = function isMarkdownMode() { - return false; - } - /** - * Return false - * @returns {boolean} - */ - ; - - _proto.isWysiwygMode = function isWysiwygMode() { - return false; - } - /** - * Set code block languages - * @param {Array} languages - code lauguage list - */ - ; - - _proto.setCodeBlockLanguages = function setCodeBlockLanguages(languages) { - var _this2 = this; - - if (languages === void 0) { - languages = []; - } - - languages.forEach(function (lang) { - if (_this2.codeBlockLanguages.indexOf(lang) < 0) { - _this2.codeBlockLanguages.push(lang); - } - }); - }; - - return ToastUIEditorViewer; -}(); -/** - * Check whether is viewer (using in plugins) - * @type {boolean} - * @ignore - */ - - -ToastUIEditorViewer.isViewer = true; -/** - * domUtil instance - * @type {DomUtil} - * @ignore - */ - -ToastUIEditorViewer.domUtils = _utils_dom__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"]; -/** - * CodeBlockManager instance using in plugins - * @type {CodeBlockManager} - * @ignore - */ - -ToastUIEditorViewer.codeBlockManager = _codeBlockManager__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"]; -/** - * WwCodeBlockManager class using in plugins - * @type {Class.} - * @ignore - */ - -ToastUIEditorViewer.WwCodeBlockManager = null; -/** - * WwTableManager class using in plugins - * @type {Class.} - * @ignore - */ - -ToastUIEditorViewer.WwTableManager = null; -/** - * WwTableManager class using in plugins - * @type {Class.} - * @ignore - */ - -ToastUIEditorViewer.WwTableSelectionManager = null; -/* harmony default export */ __webpack_exports__["a"] = (ToastUIEditorViewer); - -/***/ }), -/* 47 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Creates a debounced function that delays invoking fn until after delay milliseconds has elapsed since the last time the debouced function was invoked. - * @author NHN FE Development Lab - */ - - - -/** - * @module tricks - */ - -/** - * Creates a debounced function that delays invoking fn until after delay milliseconds has elapsed - * since the last time the debouced function was invoked. - * @param {function} fn The function to debounce. - * @param {number} [delay=0] The number of milliseconds to delay - * @returns {function} debounced function. - * @memberof module:tricks - * @example - * var debounce = require('tui-code-snippet/tricks/debounce'); // node, commonjs - * - * function someMethodToInvokeDebounced() {} - * - * var debounced = debounce(someMethodToInvokeDebounced, 300); - * - * // invoke repeatedly - * debounced(); - * debounced(); - * debounced(); - * debounced(); - * debounced(); - * debounced(); // last invoke of debounced() - * - * // invoke someMethodToInvokeDebounced() after 300 milliseconds. - */ -function debounce(fn, delay) { - var timer, args; - - /* istanbul ignore next */ - delay = delay || 0; - - function debounced() { // eslint-disable-line require-jsdoc - args = Array.prototype.slice.call(arguments); - - window.clearTimeout(timer); - timer = window.setTimeout(function() { - fn.apply(null, args); - }, delay); - } - - return debounced; -} - -module.exports = debounce; - - -/***/ }), -/* 48 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is null or not. - * @author NHN FE Development Lab - */ - - - -/** - * Check whether the given variable is null or not. - * If the given variable(arguments[0]) is null, returns true. - * @param {*} obj - Target for checking - * @returns {boolean} Is null? - * @memberof module:type - */ -function isNull(obj) { - return obj === null; -} - -module.exports = isNull; - - -/***/ }), -/* 49 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Request image ping. - * @author NHN FE Development Lab - */ - - - -var forEachOwnProperties = __webpack_require__(10); - -/** - * @module request - */ - -/** - * Request image ping. - * @param {String} url url for ping request - * @param {Object} trackingInfo infos for make query string - * @returns {HTMLElement} - * @memberof module:request - * @example - * var imagePing = require('tui-code-snippet/request/imagePing'); // node, commonjs - * - * imagePing('https://www.google-analytics.com/collect', { - * v: 1, - * t: 'event', - * tid: 'trackingid', - * cid: 'cid', - * dp: 'dp', - * dh: 'dh' - * }); - */ -function imagePing(url, trackingInfo) { - var trackingElement = document.createElement('img'); - var queryString = ''; - forEachOwnProperties(trackingInfo, function(value, key) { - queryString += '&' + key + '=' + value; - }); - queryString = queryString.substring(1); - - trackingElement.src = url + '?' + queryString; - - trackingElement.style.display = 'none'; - document.body.appendChild(trackingElement); - document.body.removeChild(trackingElement); - - return trackingElement; -} - -module.exports = imagePing; - - -/***/ }), -/* 50 */ -/***/ (function(module, exports, __webpack_require__) { - -// extracted by mini-css-extract-plugin - -/***/ }), -/* 51 */ -/***/ (function(module, exports, __webpack_require__) { - -// extracted by mini-css-extract-plugin - -/***/ }), -/* 52 */ -/***/ (function(module, exports, __webpack_require__) { - -// extracted by mini-css-extract-plugin - -/***/ }), -/* 53 */, -/* 54 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is an object or not. - * @author NHN FE Development Lab - */ - - - -/** - * Check whether the given variable is an object or not. - * If the given variable is an object, return true. - * @param {*} obj - Target for checking - * @returns {boolean} Is object? - * @memberof module:type - */ -function isObject(obj) { - return obj === Object(obj); -} - -module.exports = isObject; - - -/***/ }), -/* 55 */ -/***/ (function(module, exports, __webpack_require__) { - -!function(e,t){"use strict";function n(e,t,n){this.root=this.currentNode=e,this.nodeType=t,this.filter=n||ue}function o(e,t){for(var n=e.length;n--;)if(!t(e[n]))return!1;return!0}function i(e){return e.nodeType===M&&!!pe[e.nodeName]}function r(e){switch(e.nodeType){case H:return me;case M:case z:if(de&&Ne.has(e))return Ne.get(e);break;default:return ge}var t;return t=o(e.childNodes,a)?fe.test(e.nodeName)?me:ve:Ce,de&&Ne.set(e,t),t}function a(e){return r(e)===me}function s(e){return r(e)===ve}function d(e){return r(e)===Ce}function l(e,t){var o=new n(t,q,s);return o.currentNode=e,o}function c(e,t){return e=l(e,t).previousNode(),e!==t?e:null}function h(e,t){return e=l(e,t).nextNode(),e!==t?e:null}function u(e){return!e.textContent&&!e.querySelector("IMG")}function f(e,t){return!i(e)&&e.nodeType===t.nodeType&&e.nodeName===t.nodeName&&"A"!==e.nodeName&&e.className===t.className&&(!e.style&&!t.style||e.style.cssText===t.style.cssText)}function p(e,t,n){if(e.nodeName!==t)return!1;for(var o in n)if(e.getAttribute(o)!==n[o])return!1;return!0}function g(e,t,n,o){for(;e&&e!==t;){if(p(e,n,o))return e;e=e.parentNode}return null}function m(e,t,n){for(;e&&e!==t;){if(n.test(e.nodeName))return e;e=e.parentNode}return null}function v(e,t){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}function C(e,t,n){var o,i,r,a,s,d="";return e&&e!==t&&(d=C(e.parentNode,t,n),e.nodeType===M&&(d+=(d?">":"")+e.nodeName,(o=e.id)&&(d+="#"+o),(i=e.className.trim())&&(r=i.split(/\s\s*/),r.sort(),d+=".",d+=r.join(".")),(a=e.dir)&&(d+="[dir="+a+"]"),r&&(s=n.classNames,ce.call(r,s.highlight)>-1&&(d+="[backgroundColor="+e.style.backgroundColor.replace(/ /g,"")+"]"),ce.call(r,s.colour)>-1&&(d+="[color="+e.style.color.replace(/ /g,"")+"]"),ce.call(r,s.fontFamily)>-1&&(d+="[fontFamily="+e.style.fontFamily.replace(/ /g,"")+"]"),ce.call(r,s.fontSize)>-1&&(d+="[fontSize="+e.style.fontSize+"]")))),d}function N(e){var t=e.nodeType;return t===M||t===z?e.childNodes.length:e.length||0}function _(e){var t=e.parentNode;return t&&t.removeChild(e),e}function S(e,t){var n=e.parentNode;n&&n.replaceChild(t,e)}function y(e){for(var t=e.ownerDocument.createDocumentFragment(),n=e.childNodes,o=n?n.length:0;o--;)t.appendChild(e.firstChild);return t}function T(e,n,o,i){var r,a,s,d=e.createElement(n);if(o instanceof Array&&(i=o,o=null),o)for(r in o)o[r]!==t&&d.setAttribute(r,o[r]);if(i)for(a=0,s=i.length;as?t.startOffset-=1:t.startOffset===s&&(t.startContainer=o,t.startOffset=N(o))),t.endContainer===e&&(t.endOffset>s?t.endOffset-=1:t.endOffset===s&&(t.endContainer=o,t.endOffset=N(o))),_(n),n.nodeType===H?o.appendData(n.data):d.push(y(n));else if(n.nodeType===M){for(i=d.length;i--;)n.appendChild(d.pop());x(n,t)}}function A(e,t){if(e.nodeType===H&&(e=e.parentNode),e.nodeType===M){var n={startContainer:t.startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset};x(e,n),t.setStart(n.startContainer,n.startOffset),t.setEnd(n.endContainer,n.endOffset)}}function L(e){var t=e.nodeName;return"TD"===t||"TH"===t||"TR"===t||"TBODY"===t||"THEAD"===t}function B(e,t,n,o){var i,r,a,s=t;if(!L(e)||!L(t)){for(;(i=s.parentNode)&&i!==o&&i.nodeType===M&&1===i.childNodes.length;)s=i;_(s),a=e.childNodes.length,r=e.lastChild,r&&"BR"===r.nodeName&&(e.removeChild(r),a-=1),e.appendChild(y(t)),n.setStart(e,a),n.collapse(!0),A(e,n),J&&(r=e.lastChild)&&"BR"===r.nodeName&&e.removeChild(r)}}function O(e,t){var n,o,i=e.previousSibling,r=e.firstChild,a=e.ownerDocument,s="LI"===e.nodeName;if((!s||r&&/^[OU]L$/.test(r.nodeName))&&!L(e))if(i&&f(i,e)&&i.isContentEditable&&e.isContentEditable){if(!d(i)){if(!s)return;o=T(a,"DIV"),o.appendChild(y(i)),i.appendChild(o)}_(e),n=!d(e),i.appendChild(y(e)),n&&b(i,t),r&&O(r,t)}else s&&(i=T(a,"DIV"),e.insertBefore(i,r),E(i,t))}function R(e){this.isShiftDown=e.shiftKey}function D(e,t,n){var o,i;if(e||(e={}),t)for(o in t)!n&&o in e||(i=t[o],e[o]=i&&i.constructor===Object?D(e[o],i,n):i);return e}function P(e,t){e.nodeType===W&&(e=e.body);var n,o=e.ownerDocument,i=o.defaultView;this._win=i,this._doc=o,this._root=e,this._events={},this._isFocused=!1,this._lastSelection=null,ae&&this.addEventListener("beforedeactivate",this.getSelection),this._hasZWS=!1,this._lastAnchorNode=null,this._lastFocusNode=null,this._path="",this._willUpdatePath=!1,"onselectionchange"in o?this.addEventListener("selectionchange",this._updatePathOnEvent):(this.addEventListener("keyup",this._updatePathOnEvent),this.addEventListener("mouseup",this._updatePathOnEvent)),this._undoIndex=-1,this._undoStack=[],this._undoStackLength=0,this._isInUndoState=!1,this._ignoreChange=!1,this._ignoreAllChanges=!1,se?(n=new MutationObserver(this._docWasChanged.bind(this)),n.observe(e,{childList:!0,attributes:!0,characterData:!0,subtree:!0}),this._mutation=n):this.addEventListener("keyup",this._keyUpDetectChange),this._restoreSelection=!1,this.addEventListener("blur",U),this.addEventListener("mousedown",I),this.addEventListener("touchstart",I),this.addEventListener("focus",w),this._awaitingPaste=!1,this.addEventListener(X?"beforecut":"cut",nt),this.addEventListener("copy",ot),this.addEventListener("keydown",R),this.addEventListener("keyup",R),this.addEventListener(X?"beforepaste":"paste",it),this.addEventListener("drop",rt),this.addEventListener(J?"keypress":"keydown",Ie),this._keyHandlers=Object.create(He),this.setConfig(t),X&&(i.Text.prototype.splitText=function(e){var t=this.ownerDocument.createTextNode(this.data.slice(e)),n=this.nextSibling,o=this.parentNode,i=this.length-e;return n?o.insertBefore(t,n):o.appendChild(t),i&&this.deleteData(e,i),t}),e.setAttribute("contenteditable","true");try{o.execCommand("enableObjectResizing",!1,"false"),o.execCommand("enableInlineTableEditing",!1,"false")}catch(e){}e.__squire__=this,this.setHTML("")}function U(){this._restoreSelection=!0}function I(){this._restoreSelection=!1}function w(){this._restoreSelection&&this.setSelection(this._lastSelection)}function F(e,t,n){var o,i;for(o=t.firstChild;o;o=i){if(i=o.nextSibling,a(o)){if(o.nodeType===H||"BR"===o.nodeName||"IMG"===o.nodeName){n.appendChild(o);continue}}else if(s(o)){n.appendChild(e.createDefaultBlock([F(e,o,e._doc.createDocumentFragment())]));continue}F(e,o,n)}return n}var M=1,H=3,W=9,z=11,q=1,K="​",G=e.defaultView,Z=navigator.userAgent,j=/Android/.test(Z),Q=/iP(?:ad|hone|od)/.test(Z),$=/Mac OS X/.test(Z),V=/Windows NT/.test(Z),Y=/Gecko\//.test(Z),X=/Trident\/[456]\./.test(Z),J=!!G.opera,ee=/Edge\//.test(Z),te=!ee&&/WebKit\//.test(Z),ne=/Trident\/[4567]\./.test(Z),oe=$?"meta-":"ctrl-",ie=X||J,re=X||te,ae=X,se="undefined"!=typeof MutationObserver,de="undefined"!=typeof WeakMap,le=/[^ \t\r\n]/,ce=Array.prototype.indexOf;Object.create||(Object.create=function(e){var t=function(){};return t.prototype=e,new t});var he={1:1,2:2,3:4,8:128,9:256,11:1024},ue=function(){return!0};n.prototype.nextNode=function(){for(var e,t=this.currentNode,n=this.root,o=this.nodeType,i=this.filter;;){for(e=t.firstChild;!e&&t&&t!==n;)(e=t.nextSibling)||(t=t.parentNode);if(!e)return null;if(he[e.nodeType]&o&&i(e))return this.currentNode=e,e;t=e}},n.prototype.previousNode=function(){for(var e,t=this.currentNode,n=this.root,o=this.nodeType,i=this.filter;;){if(t===n)return null;if(e=t.previousSibling)for(;t=e.lastChild;)e=t;else e=t.parentNode;if(!e)return null;if(he[e.nodeType]&o&&i(e))return this.currentNode=e,e;t=e}},n.prototype.previousPONode=function(){for(var e,t=this.currentNode,n=this.root,o=this.nodeType,i=this.filter;;){for(e=t.lastChild;!e&&t&&t!==n;)(e=t.previousSibling)||(t=t.parentNode);if(!e)return null;if(he[e.nodeType]&o&&i(e))return this.currentNode=e,e;t=e}};var fe=/^(?:#text|A(?:BBR|CRONYM)?|B(?:R|D[IO])?|C(?:ITE|ODE)|D(?:ATA|EL|FN)|EM|FONT|I(?:FRAME|MG|NPUT|NS)?|KBD|Q|R(?:P|T|UBY)|S(?:AMP|MALL|PAN|TR(?:IKE|ONG)|U[BP])?|TIME|U|VAR|WBR)$/,pe={BR:1,HR:1,IFRAME:1,IMG:1,INPUT:1},ge=0,me=1,ve=2,Ce=3,Ne=de?new WeakMap:null,_e=function(e,t){for(var n=e.childNodes;t&&e.nodeType===M;)e=n[t-1],n=e.childNodes,t=n.length;return e},Se=function(e,t){if(e.nodeType===M){var n=e.childNodes;if(t-1,r=e.compareBoundaryPoints(1,o)<1;return!i&&!r}var a=e.compareBoundaryPoints(0,o)<1,s=e.compareBoundaryPoints(2,o)>-1;return a&&s},xe=function(e){for(var t,n=e.startContainer,o=e.startOffset,r=e.endContainer,a=e.endOffset,s=!0;n.nodeType!==H&&(t=n.childNodes[o])&&!i(t);)n=t,o=0;if(a)for(;r.nodeType!==H;){if(!(t=r.childNodes[a-1])||i(t)){if(s&&t&&"BR"===t.nodeName){a-=1,s=!1;continue}break}r=t,a=N(r)}else for(;r.nodeType!==H&&(t=r.firstChild)&&!i(t);)r=t;e.collapsed?(e.setStart(r,a),e.setEnd(n,o)):(e.setStart(n,o),e.setEnd(r,a))},Ae=function(e,t,n,o){var i,r=e.startContainer,a=e.startOffset,s=e.endContainer,d=e.endOffset,l=!0;for(t||(t=e.commonAncestorContainer),n||(n=t);!a&&r!==t&&r!==o;)i=r.parentNode,a=ce.call(i.childNodes,r),r=i;for(;;){if(l&&s.nodeType!==H&&s.childNodes[d]&&"BR"===s.childNodes[d].nodeName&&(d+=1,l=!1),s===n||s===o||d!==N(s))break;i=s.parentNode,d=ce.call(i.childNodes,s)+1,s=i}e.setStart(r,a),e.setEnd(s,d)},Le=function(e,t){var n,o=e.startContainer;return a(o)?n=c(o,t):o!==t&&s(o)?n=o:(n=_e(o,e.startOffset),n=h(n,t)),n&&ke(e,n,!0)?n:null},Be=function(e,t){var n,o,i=e.endContainer;if(a(i))n=c(i,t);else if(i!==t&&s(i))n=i;else{if(!(n=Se(i,e.endOffset))||!v(t,n))for(n=t;o=n.lastChild;)n=o;n=c(n,t)}return n&&ke(e,n,!0)?n:null},Oe=new n(null,4|q,function(e){return e.nodeType===H?le.test(e.data):"IMG"===e.nodeName}),Re=function(e,t){var n,o=e.startContainer,i=e.startOffset;if(Oe.root=null,o.nodeType===H){if(i)return!1;n=o}else if(n=Se(o,i),n&&!v(t,n)&&(n=null),!n&&(n=_e(o,i),n.nodeType===H&&n.length))return!1;return Oe.currentNode=n,Oe.root=Le(e,t),!Oe.previousNode()},De=function(e,t){var n,o=e.endContainer,i=e.endOffset;if(Oe.root=null,o.nodeType===H){if((n=o.data.length)&&i-1||!Y&&ce.call(i,"text/plain")>-1&&ce.call(i,"text/rtf")<0))return e.preventDefault(),void(!d&&(r=a.getData("text/html"))?this.insertHTML(r,!0):((r=a.getData("text/plain"))||(r=a.getData("text/uri-list")))&&this.insertPlainText(r,!0));this._awaitingPaste=!0;var f=this._doc.body,p=this.getSelection(),g=p.startContainer,m=p.startOffset,v=p.endContainer,C=p.endOffset,N=this.createElement("DIV",{contenteditable:"true",style:"position:fixed; overflow:hidden; top:0; right:100%; width:1px; height:1px;"});f.appendChild(N),p.selectNodeContents(N),this.setSelection(p),setTimeout(function(){try{u._awaitingPaste=!1;for(var e,t,n="",o=N;N=o;)o=N.nextSibling,_(N),e=N.firstChild,e&&e===N.lastChild&&"DIV"===e.nodeName&&(N=e),n+=N.innerHTML;t=u.createRange(g,m,v,C),u.setSelection(t),n&&u.insertHTML(n,!0)}catch(e){u.didError(e)}},0)},rt=function(e){for(var t=e.dataTransfer.types,n=t.length,o=!1,i=!1;n--;)switch(t[n]){case"text/plain":o=!0;break;case"text/html":i=!0;break;default:return}(i||o)&&this.saveUndoState()},at=P.prototype,st=function(e,t,n){var o=n._doc,i=e?DOMPurify.sanitize(e,{ALLOW_UNKNOWN_PROTOCOLS:!0,WHOLE_DOCUMENT:!1,RETURN_DOM:!0,RETURN_DOM_FRAGMENT:!0}):null;return i?o.importNode(i,!0):o.createDocumentFragment()};at.setConfig=function(e){return e=D({blockTag:"DIV",blockAttributes:null,tagAttributes:{blockquote:null,ul:null,ol:null,li:null,a:null},classNames:{colour:"colour",fontFamily:"font",fontSize:"size",highlight:"highlight"},leafNodeNames:pe,undo:{documentSizeThreshold:-1,undoLimit:-1},isInsertedHTMLSanitized:!0,isSetHTMLSanitized:!0,sanitizeToDOMFragment:"undefined"!=typeof DOMPurify&&DOMPurify.isSupported?st:null,willCutCopy:null,allowedBlocks:[]},e,!0),e.blockTag=e.blockTag.toUpperCase(),this._config=e,this},at.createElement=function(e,t,n){return T(this._doc,e,t,n)},at.createDefaultBlock=function(e){var t=this._config;return E(this.createElement(t.blockTag,t.blockAttributes,e),this._root)},at.didError=function(e){console.log(e)},at.getDocument=function(){return this._doc},at.getRoot=function(){return this._root},at.modifyDocument=function(e){var t=this._mutation;t&&(t.takeRecords().length&&this._docWasChanged(),t.disconnect()),this._ignoreAllChanges=!0,e(),this._ignoreAllChanges=!1,t&&(t.observe(this._root,{childList:!0,attributes:!0,characterData:!0,subtree:!0}),this._ignoreChange=!1)};var dt={pathChange:1,select:1,input:1,undoStateChange:1};at.fireEvent=function(e,t){var n,o,i,r=this._events[e];if(/^(?:focus|blur)/.test(e))if(n=this._root===this._doc.activeElement,"focus"===e){if(!n||this._isFocused)return this;this._isFocused=!0}else{if(n||!this._isFocused)return this;this._isFocused=!1}if(r)for(t||(t={}),t.type!==e&&(t.type=e),r=r.slice(),o=r.length;o--;){i=r[o];try{i.handleEvent?i.handleEvent(t):i.call(this,t)}catch(t){t.details="Squire: fireEvent error. Event type: "+e,this.didError(t)}}return this},at.destroy=function(){var e,t=this._events;for(e in t)this.removeEventListener(e);this._mutation&&this._mutation.disconnect(),delete this._root.__squire__,this._undoIndex=-1,this._undoStack=[],this._undoStackLength=0},at.handleEvent=function(e){this.fireEvent(e.type,e)},at.addEventListener=function(e,t){var n=this._events[e],o=this._root;return t?(n||(n=this._events[e]=[],dt[e]||("selectionchange"===e&&(o=this._doc),o.addEventListener(e,this,!0))),n.push(t),this):(this.didError({name:"Squire: addEventListener with null or undefined fn",message:"Event type: "+e}),this)},at.removeEventListener=function(e,t){var n,o=this._events[e],i=this._root;if(o){if(t)for(n=o.length;n--;)o[n]===t&&o.splice(n,1);else o.length=0;o.length||(delete this._events[e],dt[e]||("selectionchange"===e&&(i=this._doc),i.removeEventListener(e,this,!0)))}return this},at.createRange=function(e,t,n,o){if(e instanceof this._win.Range)return e.cloneRange();var i=this._doc.createRange();return i.setStart(e,t),n?i.setEnd(n,o):i.setEnd(e,t),i},at.getCursorPosition=function(e){if(!e&&!(e=this.getSelection())||!e.getBoundingClientRect)return null;var t,n,o=e.getBoundingClientRect();return o&&!o.top&&(this._ignoreChange=!0,t=this._doc.createElement("SPAN"),t.textContent=K,ye(e,t),o=t.getBoundingClientRect(),n=t.parentNode,n.removeChild(t),A(n,e),this._ignoreChange=!1),o},at._moveCursorTo=function(e){var t=this._root,n=this.createRange(t,e?0:t.childNodes.length);return xe(n),this.setSelection(n),this},at.moveCursorToStart=function(){return this._moveCursorTo(!0)},at.moveCursorToEnd=function(){return this._moveCursorTo(!1)};var lt=function(e){return e._win.getSelection()||null};at.setSelection=function(e){if(e)if(this._lastSelection=e,this._isFocused)if(j&&!this._restoreSelection)U.call(this),this.blur(),this.focus();else{Q&&this._win.focus();var t=lt(this);t&&(t.removeAllRanges(),t.addRange(e))}else U.call(this);return this},at.getSelection=function(){var e,t,n,o,r=lt(this),a=this._root;return this._isFocused&&r&&r.rangeCount&&(e=r.getRangeAt(0).cloneRange(),t=e.startContainer,n=e.endContainer,t&&i(t)&&e.setStartBefore(t),n&&i(n)&&e.setEndBefore(n)),e&&v(a,e.commonAncestorContainer)?this._lastSelection=e:(e=this._lastSelection,o=e.commonAncestorContainer,v(o.ownerDocument,o)||(e=null)),e||(e=this.createRange(a.firstChild,0)),e},at.getSelectedText=function(){var e=this.getSelection();if(!e||e.collapsed)return"";var t,o=new n(e.commonAncestorContainer,4|q,function(t){return ke(e,t,!0)}),i=e.startContainer,r=e.endContainer,s=o.currentNode=i,d="",l=!1;for(o.filter(s)||(s=o.nextNode());s;)s.nodeType===H?(t=s.data)&&/\S/.test(t)&&(s===r&&(t=t.slice(0,e.endOffset)),s===i&&(t=t.slice(e.startOffset)),d+=t,l=!0):("BR"===s.nodeName||l&&!a(s))&&(d+="\n",l=!1),s=o.nextNode();return d},at.getPath=function(){return this._path};var ct=function(e,t){for(var o,i,r,s=new n(e,4);i=s.nextNode();)for(;(r=i.data.indexOf(K))>-1&&(!t||i.parentNode!==t);){if(1===i.length){do{o=i.parentNode,o.removeChild(i),i=o,s.currentNode=o}while(a(i)&&!N(i));break}i.deleteData(r,1)}};at._didAddZWS=function(){this._hasZWS=!0},at._removeZWS=function(){this._hasZWS&&(ct(this._root),this._hasZWS=!1)},at._updatePath=function(e,t){if(e){var n,o=e.startContainer,i=e.endContainer;(t||o!==this._lastAnchorNode||i!==this._lastFocusNode)&&(this._lastAnchorNode=o,this._lastFocusNode=i, -n=o&&i?o===i?C(i,this._root,this._config):"(selection)":"",this._path!==n&&(this._path=n,this.fireEvent("pathChange",{path:n}))),this.fireEvent(e.collapsed?"cursor":"select",{range:e})}},at._updatePathOnEvent=function(e){var t=this;t._isFocused&&!t._willUpdatePath&&(t._willUpdatePath=!0,setTimeout(function(){t._willUpdatePath=!1,t._updatePath(t.getSelection())},0))},at.focus=function(){if(ne){try{this._root.setActive()}catch(e){}this.fireEvent("focus")}else this._root.focus();return this},at.blur=function(){return this._root.blur(),ne&&this.fireEvent("blur"),this};var ht="squire-selection-end";at._saveRangeToBookmark=function(e){var t,n=this.createElement("INPUT",{id:"squire-selection-start",type:"hidden"}),o=this.createElement("INPUT",{id:ht,type:"hidden"});ye(e,n),e.collapse(!1),ye(e,o),2&n.compareDocumentPosition(o)&&(n.id=ht,o.id="squire-selection-start",t=n,n=o,o=t),e.setStartAfter(n),e.setEndBefore(o)},at._getRangeAndRemoveBookmark=function(e){var t=this._root,n=t.querySelector("#squire-selection-start"),o=t.querySelector("#"+ht);if(n&&o){var i=n.parentNode,r=o.parentNode,a=ce.call(i.childNodes,n),s=ce.call(r.childNodes,o);i===r&&(s-=1),_(n),_(o),e||(e=this._doc.createRange()),e.setStart(i,a),e.setEnd(r,s),A(i,e),i!==r&&A(r,e),e.collapsed&&(i=e.startContainer,i.nodeType===H&&(r=i.childNodes[e.startOffset],r&&r.nodeType===H||(r=i.childNodes[e.startOffset-1]),r&&r.nodeType===H&&(e.setStart(r,0),e.collapse(!0))))}return e||null},at._keyUpDetectChange=function(e){var t=e.keyCode;e.ctrlKey||e.metaKey||e.altKey||!(t<16||t>20)||!(t<33||t>45)||this._docWasChanged()},at._docWasChanged=function(){if(de&&(Ne=new WeakMap),!this._ignoreAllChanges){if(se&&this._ignoreChange)return void(this._ignoreChange=!1);this._isInUndoState&&(this._isInUndoState=!1,this.fireEvent("undoStateChange",{canUndo:!0,canRedo:!1})),this.fireEvent("input")}},at._recordUndoState=function(e,t){if(!this._isInUndoState||t){var n,o=this._undoIndex,i=this._undoStack,r=this._config.undo,a=r.documentSizeThreshold,s=r.undoLimit;t||(o+=1),o-1&&2*n.length>a&&s>-1&&o>s&&(i.splice(0,o-s),o=s,this._undoStackLength=s),i[o]=n,this._undoIndex=o,this._undoStackLength+=1,this._isInUndoState=!0}},at.saveUndoState=function(e){return e===t&&(e=this.getSelection()),this._recordUndoState(e,this._isInUndoState),this._getRangeAndRemoveBookmark(e),this},at.undo=function(){if(0!==this._undoIndex||!this._isInUndoState){this._recordUndoState(this.getSelection(),!1),this._undoIndex-=1,this._setHTML(this._undoStack[this._undoIndex]);var e=this._getRangeAndRemoveBookmark();e&&this.setSelection(e),this._isInUndoState=!0,this.fireEvent("undoStateChange",{canUndo:0!==this._undoIndex,canRedo:!0}),this.fireEvent("input")}return this},at.redo=function(){var e=this._undoIndex,t=this._undoStackLength;if(e+1c&&h.splitText(c),h===s&&l&&(h=h.splitText(l),d===s&&(d=h,c-=l),s=h,l=0),i=this.createElement(e,t),S(h,i),i.appendChild(h))}while(r.nextNode());d.nodeType!==H&&(h.nodeType===H?(d=h,c=h.length):(d=h.parentNode,c=1)),o=this.createRange(s,l,d,c)}return o},at._removeFormat=function(e,t,n,o){this._saveRangeToBookmark(n);var i,r=this._doc;n.collapsed&&(re?(i=r.createTextNode(K),this._didAddZWS()):i=r.createTextNode(""),ye(n,i));for(var s=n.commonAncestorContainer;a(s);)s=s.parentNode;var d=n.startContainer,l=n.startOffset,c=n.endContainer,h=n.endOffset,u=[],f=function(e,t){if(!ke(n,e,!1)){var o,i,r=e.nodeType===H;if(!ke(n,e,!0))return void("INPUT"===e.nodeName||r&&!e.data||u.push([t,e]));if(r)e===c&&h!==e.length&&u.push([t,e.splitText(h)]),e===d&&l&&(e.splitText(l),u.push([t,e]));else for(o=e.firstChild;o;o=i)i=o.nextSibling,f(o,t)}},g=Array.prototype.filter.call(s.getElementsByTagName(e),function(o){return ke(n,o,!0)&&p(o,e,t)});return o||g.forEach(function(e){f(e,e)}),u.forEach(function(e){var t=e[0].cloneNode(!1),n=e[1];S(n,t),t.appendChild(n)}),g.forEach(function(e){S(e,y(e))}),this._getRangeAndRemoveBookmark(n),i&&n.collapse(!1),A(s,n),n},at.changeFormat=function(e,t,n,o){return n||(n=this.getSelection())?(this.saveUndoState(n),t&&(n=this._removeFormat(t.tag.toUpperCase(),t.attributes||{},n,o)),e&&(n=this._addFormat(e.tag.toUpperCase(),e.attributes||{},n)),this.setSelection(n),this._updatePath(n,!0),se||this._docWasChanged(),this):this};var ut={DT:"DD",DD:"DT",LI:"LI",PRE:"PRE"},ft=function(e,t,n,o){var i=ut[t.nodeName],r=null,a=k(n,o,t.parentNode,e._root),s=e._config;return i||(i=s.blockTag,r=s.blockAttributes),p(a,i,r)||(t=T(a.ownerDocument,i,r),a.dir&&(t.dir=a.dir),S(a,t),t.appendChild(y(a)),a=t),a};at.forEachBlock=function(e,t,n){if(!n&&!(n=this.getSelection()))return this;t&&this.saveUndoState(n);var o=this._root,i=Le(n,o),r=Be(n,o);if(i&&r)do{if(e(i)||i===r)break}while(i=h(i,o));return t&&(this.setSelection(n),this._updatePath(n,!0),se||this._docWasChanged()),this},at.modifyBlocks=function(e,t){if(!t&&!(t=this.getSelection()))return this;this._recordUndoState(t,this._isInUndoState);var n,o=this._root;return Pe(t,o),Ae(t,o,o,o),n=Te(t,o,o),ye(t,e.call(this,n)),t.endOffset]+|\([^\s()<>]+\))+(?:\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))|([\w\-.%+]+@(?:[\w\-]+\.)+[A-Z]{2,}\b)(?:\?[^&?\s]+=[^&?\s]+(?:&[^&?\s]+=[^&?\s]+)*)?/i;var yt=function(e,t,o){var i,r,a,s,d,l,c,h=e.ownerDocument,u=new n(e,4,function(e){return!g(e,t,"A")}),f=o.linkRegExp,p=o._config.tagAttributes.a;if(f)for(;i=u.nextNode();)for(r=i.data,a=i.parentNode;s=f.exec(r);)d=s.index,l=d+s[0].length,d&&(c=h.createTextNode(r.slice(0,d)),a.insertBefore(c,i)),c=o.createElement("A",D({href:s[1]?/^(?:ht|f)tps?:/i.test(s[1])?s[1]:"http://"+s[1]:"mailto:"+s[0]},p,!1)),c.textContent=r.slice(d,l),a.insertBefore(c,i),i.data=r=r.slice(l)};at.insertHTML=function(e,t){var n,o,i,r,a,s,d,l=this._config,c=l.isInsertedHTMLSanitized?l.sanitizeToDOMFragment:null,u=this.getSelection(),f=this._doc;"function"==typeof c?r=c(e,t,this):(t&&(n=e.indexOf("\x3c!--StartFragment--\x3e"),o=e.lastIndexOf("\x3c!--EndFragment--\x3e"),n>-1&&o>-1&&(e=e.slice(n+20,o))),/<\/td>((?!<\/tr>)[\s\S])*$/i.test(e)&&(e="
"+e+""),/<\/tr>((?!<\/table>)[\s\S])*$/i.test(e)&&(e="
"+e+"
"),i=this.createElement("DIV"),i.innerHTML=e,r=f.createDocumentFragment(),r.appendChild(y(i))),this.saveUndoState(u);try{for(a=this._root,s=r,d={fragment:r,preventDefault:function(){this.defaultPrevented=!0},defaultPrevented:!1},yt(r,r,this),Ve(r,l),et(r,a,!1),Ye(r),r.normalize();s=h(s,r);)E(s,a);t&&this.fireEvent("willPaste",d),d.defaultPrevented||(be(u,d.fragment,a),se||this._docWasChanged(),u.collapse(!1),this._ensureBottomLine()),this.setSelection(u),this._updatePath(u,!0),t&&this.focus()}catch(e){this.didError(e)}return this};var Tt=function(e){return e.split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""")};at.insertPlainText=function(e,t){var n=this.getSelection();if(n.collapsed&&g(n.startContainer,this._root,"PRE")){var o,i,r=n.startContainer,a=n.startOffset;return r&&r.nodeType===H||(o=this._doc.createTextNode(""),r.insertBefore(o,r.childNodes[a]),r=o,a=0),i={text:e,preventDefault:function(){this.defaultPrevented=!0},defaultPrevented:!1},t&&this.fireEvent("willPaste",i),i.defaultPrevented||(e=i.text,r.insertData(a,e),n.setStart(r,a+e.length),n.collapse(!0)),this.setSelection(n),this}var s,d,l,c,h=e.split("\n"),u=this._config,f=u.blockTag,p=u.blockAttributes,m="",v="<"+f;for(s in p)v+=" "+s+'="'+Tt(p[s])+'"';for(v+=">",d=0,l=h.length;d")+m;return this.insertHTML(h.join(""),t)};var Et=function(e,t,n){return function(){return this[e](t,n),this.focus()}};at.addStyles=function(e){if(e){var t=this._doc.documentElement.firstChild,n=this.createElement("STYLE",{type:"text/css"});n.appendChild(this._doc.createTextNode(e)),t.appendChild(n)}return this},at.bold=Et("changeFormat",{tag:"B"}),at.italic=Et("changeFormat",{tag:"I"}),at.underline=Et("changeFormat",{tag:"U"}),at.strikethrough=Et("changeFormat",{tag:"S"}),at.subscript=Et("changeFormat",{tag:"SUB"},{tag:"SUP"}),at.superscript=Et("changeFormat",{tag:"SUP"},{tag:"SUB"}),at.removeBold=Et("changeFormat",null,{tag:"B"}),at.removeItalic=Et("changeFormat",null,{tag:"I"}),at.removeUnderline=Et("changeFormat",null,{tag:"U"}),at.removeStrikethrough=Et("changeFormat",null,{tag:"S"}),at.removeSubscript=Et("changeFormat",null,{tag:"SUB"}),at.removeSuperscript=Et("changeFormat",null,{tag:"SUP"}),at.makeLink=function(e,t){var n=this.getSelection();if(n.collapsed){var o=e.indexOf(":")+1;if(o)for(;"/"===e[o];)o+=1;ye(n,this._doc.createTextNode(e.slice(o)))}return t=D(D({href:e},t,!0),this._config.tagAttributes.a,!1),this.changeFormat({tag:"A",attributes:t},{tag:"A"},n),this.focus()},at.removeLink=function(){return this.changeFormat(null,{tag:"A"},this.getSelection(),!0),this.focus()},at.setFontFace=function(e){var t=this._config.classNames.fontFamily;return this.changeFormat(e?{tag:"SPAN",attributes:{class:t,style:"font-family: "+e+", sans-serif;"}}:null,{tag:"SPAN",attributes:{class:t}}),this.focus()},at.setFontSize=function(e){var t=this._config.classNames.fontSize;return this.changeFormat(e?{tag:"SPAN",attributes:{class:t,style:"font-size: "+("number"==typeof e?e+"px":e)}}:null,{tag:"SPAN",attributes:{class:t}}),this.focus()},at.setTextColour=function(e){var t=this._config.classNames.colour;return this.changeFormat(e?{tag:"SPAN",attributes:{class:t,style:"color:"+e}}:null,{tag:"SPAN",attributes:{class:t}}),this.focus()},at.setHighlightColour=function(e){var t=this._config.classNames.highlight;return this.changeFormat(e?{tag:"SPAN",attributes:{class:t,style:"background-color:"+e}}:e,{tag:"SPAN",attributes:{class:t}}),this.focus()},at.setTextAlignment=function(e){return this.forEachBlock(function(t){var n=t.className.split(/\s+/).filter(function(e){return!!e&&!/^align/.test(e)}).join(" ");e?(t.className=n+" align-"+e,t.style.textAlign=e):(t.className=n,t.style.textAlign="")},!0),this.focus()},at.setTextDirection=function(e){return this.forEachBlock(function(t){e?t.dir=e:t.removeAttribute("dir")},!0),this.focus()};var bt=function(e){for(var t,o=this._root,i=this._doc,r=i.createDocumentFragment(),a=l(e,o);t=a.nextNode();){var s,d,c=t.querySelectorAll("BR"),h=[],u=c.length;for(s=0;s-1;)a.appendChild(d.createTextNode(r.slice(0,s))),a.appendChild(d.createElement("BR")),r=r.slice(s+1);i.parentNode.insertBefore(a,i),i.data=r}b(t,l),S(t,y(t))}return e};at.code=function(){var e=this.getSelection();return e.collapsed||d(e.commonAncestorContainer)?this.modifyBlocks(bt,e):this.changeFormat({tag:"CODE",attributes:this._config.tagAttributes.code},null,e),this.focus()},at.removeCode=function(){var e=this.getSelection();return g(e.commonAncestorContainer,this._root,"PRE")?this.modifyBlocks(kt,e):this.changeFormat(null,{tag:"CODE"},e),this.focus()},at.toggleCode=function(){return this.hasFormat("PRE")||this.hasFormat("CODE")?this.removeCode():this.code(),this},at.removeAllFormatting=function(e){if(!e&&!(e=this.getSelection())||e.collapsed)return this;for(var t=this._root,n=e.commonAncestorContainer;n&&!s(n);)n=n.parentNode;if(n||(Pe(e,t),n=t),n.nodeType===H)return this;this.saveUndoState(e),Ae(e,n,n,t);for(var o,i,r=n.ownerDocument,a=e.startContainer,d=e.startOffset,l=e.endContainer,c=e.endOffset,h=r.createDocumentFragment(),u=r.createDocumentFragment(),f=k(l,c,n,t),p=k(a,d,n,t);p!==f;)o=p.nextSibling,h.appendChild(p),p=o;return F(this,h,u),u.normalize(),p=u.firstChild,o=u.lastChild,i=n.childNodes,p?(n.insertBefore(u,f),d=ce.call(i,p),c=ce.call(i,o)+1):(d=ce.call(i,f),c=d),e.setStart(n,d),e.setEnd(n,c),A(n,e),xe(e),this.setSelection(e),this._updatePath(e,!0),this.focus()},at.increaseQuoteLevel=Et("modifyBlocks",pt),at.decreaseQuoteLevel=Et("modifyBlocks",gt),at.makeUnorderedList=Et("modifyBlocks",Ct),at.makeOrderedList=Et("modifyBlocks",Nt),at.removeList=Et("modifyBlocks",_t),P.isInline=a,P.isBlock=s,P.isContainer=d,P.getBlockWalker=l,P.getPreviousBlock=c,P.getNextBlock=h,P.areAlike=f,P.hasTagAttributes=p,P.getNearest=g,P.isOrContains=v,P.detach=_,P.replaceWith=S,P.empty=y,P.getNodeBefore=_e,P.getNodeAfter=Se,P.insertNodeInRange=ye,P.extractContentsOfRange=Te,P.deleteContentsOfRange=Ee,P.insertTreeFragmentIntoRange=be,P.isNodeContainedInRange=ke,P.moveRangeBoundariesDownTree=xe,P.moveRangeBoundariesUpTree=Ae,P.getStartBlockOfRange=Le,P.getEndBlockOfRange=Be,P.contentWalker=Oe,P.rangeDoesStartAtBlockBoundary=Re,P.rangeDoesEndAtBlockBoundary=De,P.expandRangeToBlockBoundaries=Pe,P.onPaste=it,P.addLinks=yt,P.splitBlock=ft,P.startSelectionId="squire-selection-start",P.endSelectionId=ht, true?module.exports=P:undefined}(document); - -/***/ }), -/* 56 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview Check whether the given variable is a string or not. - * @author NHN FE Development Lab - */ - - - -/** - * Check whether the given variable is a boolean or not. - * If the given variable is a boolean, return true. - * @param {*} obj - Target for checking - * @returns {boolean} Is boolean? - * @memberof module:type - */ -function isBoolean(obj) { - return typeof obj === 'boolean' || obj instanceof Boolean; -} - -module.exports = isBoolean; - - -/***/ }), -/* 57 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) {/** - * A collection of shims that provide minimal functionality of the ES6 collections. - * - * These implementations are not meant to be used outside of the ResizeObserver - * modules as they cover only a limited range of use cases. - */ -/* eslint-disable require-jsdoc, valid-jsdoc */ -var MapShim = (function () { - if (typeof Map !== 'undefined') { - return Map; - } - /** - * Returns index in provided array that matches the specified key. - * - * @param {Array} arr - * @param {*} key - * @returns {number} - */ - function getIndex(arr, key) { - var result = -1; - arr.some(function (entry, index) { - if (entry[0] === key) { - result = index; - return true; - } - return false; - }); - return result; - } - return /** @class */ (function () { - function class_1() { - this.__entries__ = []; - } - Object.defineProperty(class_1.prototype, "size", { - /** - * @returns {boolean} - */ - get: function () { - return this.__entries__.length; - }, - enumerable: true, - configurable: true - }); - /** - * @param {*} key - * @returns {*} - */ - class_1.prototype.get = function (key) { - var index = getIndex(this.__entries__, key); - var entry = this.__entries__[index]; - return entry && entry[1]; - }; - /** - * @param {*} key - * @param {*} value - * @returns {void} - */ - class_1.prototype.set = function (key, value) { - var index = getIndex(this.__entries__, key); - if (~index) { - this.__entries__[index][1] = value; - } - else { - this.__entries__.push([key, value]); - } - }; - /** - * @param {*} key - * @returns {void} - */ - class_1.prototype.delete = function (key) { - var entries = this.__entries__; - var index = getIndex(entries, key); - if (~index) { - entries.splice(index, 1); - } - }; - /** - * @param {*} key - * @returns {void} - */ - class_1.prototype.has = function (key) { - return !!~getIndex(this.__entries__, key); - }; - /** - * @returns {void} - */ - class_1.prototype.clear = function () { - this.__entries__.splice(0); - }; - /** - * @param {Function} callback - * @param {*} [ctx=null] - * @returns {void} - */ - class_1.prototype.forEach = function (callback, ctx) { - if (ctx === void 0) { ctx = null; } - for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) { - var entry = _a[_i]; - callback.call(ctx, entry[1], entry[0]); - } - }; - return class_1; - }()); -})(); - -/** - * Detects whether window and document objects are available in current environment. - */ -var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document; - -// Returns global object of a current environment. -var global$1 = (function () { - if (typeof global !== 'undefined' && global.Math === Math) { - return global; - } - if (typeof self !== 'undefined' && self.Math === Math) { - return self; - } - if (typeof window !== 'undefined' && window.Math === Math) { - return window; - } - // eslint-disable-next-line no-new-func - return Function('return this')(); -})(); - -/** - * A shim for the requestAnimationFrame which falls back to the setTimeout if - * first one is not supported. - * - * @returns {number} Requests' identifier. - */ -var requestAnimationFrame$1 = (function () { - if (typeof requestAnimationFrame === 'function') { - // It's required to use a bounded function because IE sometimes throws - // an "Invalid calling object" error if rAF is invoked without the global - // object on the left hand side. - return requestAnimationFrame.bind(global$1); - } - return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); }; -})(); - -// Defines minimum timeout before adding a trailing call. -var trailingTimeout = 2; -/** - * Creates a wrapper function which ensures that provided callback will be - * invoked only once during the specified delay period. - * - * @param {Function} callback - Function to be invoked after the delay period. - * @param {number} delay - Delay after which to invoke callback. - * @returns {Function} - */ -function throttle (callback, delay) { - var leadingCall = false, trailingCall = false, lastCallTime = 0; - /** - * Invokes the original callback function and schedules new invocation if - * the "proxy" was called during current request. - * - * @returns {void} - */ - function resolvePending() { - if (leadingCall) { - leadingCall = false; - callback(); - } - if (trailingCall) { - proxy(); - } - } - /** - * Callback invoked after the specified delay. It will further postpone - * invocation of the original function delegating it to the - * requestAnimationFrame. - * - * @returns {void} - */ - function timeoutCallback() { - requestAnimationFrame$1(resolvePending); - } - /** - * Schedules invocation of the original function. - * - * @returns {void} - */ - function proxy() { - var timeStamp = Date.now(); - if (leadingCall) { - // Reject immediately following calls. - if (timeStamp - lastCallTime < trailingTimeout) { - return; - } - // Schedule new call to be in invoked when the pending one is resolved. - // This is important for "transitions" which never actually start - // immediately so there is a chance that we might miss one if change - // happens amids the pending invocation. - trailingCall = true; - } - else { - leadingCall = true; - trailingCall = false; - setTimeout(timeoutCallback, delay); - } - lastCallTime = timeStamp; - } - return proxy; -} - -// Minimum delay before invoking the update of observers. -var REFRESH_DELAY = 20; -// A list of substrings of CSS properties used to find transition events that -// might affect dimensions of observed elements. -var transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight']; -// Check if MutationObserver is available. -var mutationObserverSupported = typeof MutationObserver !== 'undefined'; -/** - * Singleton controller class which handles updates of ResizeObserver instances. - */ -var ResizeObserverController = /** @class */ (function () { - /** - * Creates a new instance of ResizeObserverController. - * - * @private - */ - function ResizeObserverController() { - /** - * Indicates whether DOM listeners have been added. - * - * @private {boolean} - */ - this.connected_ = false; - /** - * Tells that controller has subscribed for Mutation Events. - * - * @private {boolean} - */ - this.mutationEventsAdded_ = false; - /** - * Keeps reference to the instance of MutationObserver. - * - * @private {MutationObserver} - */ - this.mutationsObserver_ = null; - /** - * A list of connected observers. - * - * @private {Array} - */ - this.observers_ = []; - this.onTransitionEnd_ = this.onTransitionEnd_.bind(this); - this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY); - } - /** - * Adds observer to observers list. - * - * @param {ResizeObserverSPI} observer - Observer to be added. - * @returns {void} - */ - ResizeObserverController.prototype.addObserver = function (observer) { - if (!~this.observers_.indexOf(observer)) { - this.observers_.push(observer); - } - // Add listeners if they haven't been added yet. - if (!this.connected_) { - this.connect_(); - } - }; - /** - * Removes observer from observers list. - * - * @param {ResizeObserverSPI} observer - Observer to be removed. - * @returns {void} - */ - ResizeObserverController.prototype.removeObserver = function (observer) { - var observers = this.observers_; - var index = observers.indexOf(observer); - // Remove observer if it's present in registry. - if (~index) { - observers.splice(index, 1); - } - // Remove listeners if controller has no connected observers. - if (!observers.length && this.connected_) { - this.disconnect_(); - } - }; - /** - * Invokes the update of observers. It will continue running updates insofar - * it detects changes. - * - * @returns {void} - */ - ResizeObserverController.prototype.refresh = function () { - var changesDetected = this.updateObservers_(); - // Continue running updates if changes have been detected as there might - // be future ones caused by CSS transitions. - if (changesDetected) { - this.refresh(); - } - }; - /** - * Updates every observer from observers list and notifies them of queued - * entries. - * - * @private - * @returns {boolean} Returns "true" if any observer has detected changes in - * dimensions of it's elements. - */ - ResizeObserverController.prototype.updateObservers_ = function () { - // Collect observers that have active observations. - var activeObservers = this.observers_.filter(function (observer) { - return observer.gatherActive(), observer.hasActive(); - }); - // Deliver notifications in a separate cycle in order to avoid any - // collisions between observers, e.g. when multiple instances of - // ResizeObserver are tracking the same element and the callback of one - // of them changes content dimensions of the observed target. Sometimes - // this may result in notifications being blocked for the rest of observers. - activeObservers.forEach(function (observer) { return observer.broadcastActive(); }); - return activeObservers.length > 0; - }; - /** - * Initializes DOM listeners. - * - * @private - * @returns {void} - */ - ResizeObserverController.prototype.connect_ = function () { - // Do nothing if running in a non-browser environment or if listeners - // have been already added. - if (!isBrowser || this.connected_) { - return; - } - // Subscription to the "Transitionend" event is used as a workaround for - // delayed transitions. This way it's possible to capture at least the - // final state of an element. - document.addEventListener('transitionend', this.onTransitionEnd_); - window.addEventListener('resize', this.refresh); - if (mutationObserverSupported) { - this.mutationsObserver_ = new MutationObserver(this.refresh); - this.mutationsObserver_.observe(document, { - attributes: true, - childList: true, - characterData: true, - subtree: true - }); - } - else { - document.addEventListener('DOMSubtreeModified', this.refresh); - this.mutationEventsAdded_ = true; - } - this.connected_ = true; - }; - /** - * Removes DOM listeners. - * - * @private - * @returns {void} - */ - ResizeObserverController.prototype.disconnect_ = function () { - // Do nothing if running in a non-browser environment or if listeners - // have been already removed. - if (!isBrowser || !this.connected_) { - return; - } - document.removeEventListener('transitionend', this.onTransitionEnd_); - window.removeEventListener('resize', this.refresh); - if (this.mutationsObserver_) { - this.mutationsObserver_.disconnect(); - } - if (this.mutationEventsAdded_) { - document.removeEventListener('DOMSubtreeModified', this.refresh); - } - this.mutationsObserver_ = null; - this.mutationEventsAdded_ = false; - this.connected_ = false; - }; - /** - * "Transitionend" event handler. - * - * @private - * @param {TransitionEvent} event - * @returns {void} - */ - ResizeObserverController.prototype.onTransitionEnd_ = function (_a) { - var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b; - // Detect whether transition may affect dimensions of an element. - var isReflowProperty = transitionKeys.some(function (key) { - return !!~propertyName.indexOf(key); - }); - if (isReflowProperty) { - this.refresh(); - } - }; - /** - * Returns instance of the ResizeObserverController. - * - * @returns {ResizeObserverController} - */ - ResizeObserverController.getInstance = function () { - if (!this.instance_) { - this.instance_ = new ResizeObserverController(); - } - return this.instance_; - }; - /** - * Holds reference to the controller's instance. - * - * @private {ResizeObserverController} - */ - ResizeObserverController.instance_ = null; - return ResizeObserverController; -}()); - -/** - * Defines non-writable/enumerable properties of the provided target object. - * - * @param {Object} target - Object for which to define properties. - * @param {Object} props - Properties to be defined. - * @returns {Object} Target object. - */ -var defineConfigurable = (function (target, props) { - for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) { - var key = _a[_i]; - Object.defineProperty(target, key, { - value: props[key], - enumerable: false, - writable: false, - configurable: true - }); - } - return target; -}); - -/** - * Returns the global object associated with provided element. - * - * @param {Object} target - * @returns {Object} - */ -var getWindowOf = (function (target) { - // Assume that the element is an instance of Node, which means that it - // has the "ownerDocument" property from which we can retrieve a - // corresponding global object. - var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView; - // Return the local global object if it's not possible extract one from - // provided element. - return ownerGlobal || global$1; -}); - -// Placeholder of an empty content rectangle. -var emptyRect = createRectInit(0, 0, 0, 0); -/** - * Converts provided string to a number. - * - * @param {number|string} value - * @returns {number} - */ -function toFloat(value) { - return parseFloat(value) || 0; -} -/** - * Extracts borders size from provided styles. - * - * @param {CSSStyleDeclaration} styles - * @param {...string} positions - Borders positions (top, right, ...) - * @returns {number} - */ -function getBordersSize(styles) { - var positions = []; - for (var _i = 1; _i < arguments.length; _i++) { - positions[_i - 1] = arguments[_i]; - } - return positions.reduce(function (size, position) { - var value = styles['border-' + position + '-width']; - return size + toFloat(value); - }, 0); -} -/** - * Extracts paddings sizes from provided styles. - * - * @param {CSSStyleDeclaration} styles - * @returns {Object} Paddings box. - */ -function getPaddings(styles) { - var positions = ['top', 'right', 'bottom', 'left']; - var paddings = {}; - for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) { - var position = positions_1[_i]; - var value = styles['padding-' + position]; - paddings[position] = toFloat(value); - } - return paddings; -} -/** - * Calculates content rectangle of provided SVG element. - * - * @param {SVGGraphicsElement} target - Element content rectangle of which needs - * to be calculated. - * @returns {DOMRectInit} - */ -function getSVGContentRect(target) { - var bbox = target.getBBox(); - return createRectInit(0, 0, bbox.width, bbox.height); -} -/** - * Calculates content rectangle of provided HTMLElement. - * - * @param {HTMLElement} target - Element for which to calculate the content rectangle. - * @returns {DOMRectInit} - */ -function getHTMLElementContentRect(target) { - // Client width & height properties can't be - // used exclusively as they provide rounded values. - var clientWidth = target.clientWidth, clientHeight = target.clientHeight; - // By this condition we can catch all non-replaced inline, hidden and - // detached elements. Though elements with width & height properties less - // than 0.5 will be discarded as well. - // - // Without it we would need to implement separate methods for each of - // those cases and it's not possible to perform a precise and performance - // effective test for hidden elements. E.g. even jQuery's ':visible' filter - // gives wrong results for elements with width & height less than 0.5. - if (!clientWidth && !clientHeight) { - return emptyRect; - } - var styles = getWindowOf(target).getComputedStyle(target); - var paddings = getPaddings(styles); - var horizPad = paddings.left + paddings.right; - var vertPad = paddings.top + paddings.bottom; - // Computed styles of width & height are being used because they are the - // only dimensions available to JS that contain non-rounded values. It could - // be possible to utilize the getBoundingClientRect if only it's data wasn't - // affected by CSS transformations let alone paddings, borders and scroll bars. - var width = toFloat(styles.width), height = toFloat(styles.height); - // Width & height include paddings and borders when the 'border-box' box - // model is applied (except for IE). - if (styles.boxSizing === 'border-box') { - // Following conditions are required to handle Internet Explorer which - // doesn't include paddings and borders to computed CSS dimensions. - // - // We can say that if CSS dimensions + paddings are equal to the "client" - // properties then it's either IE, and thus we don't need to subtract - // anything, or an element merely doesn't have paddings/borders styles. - if (Math.round(width + horizPad) !== clientWidth) { - width -= getBordersSize(styles, 'left', 'right') + horizPad; - } - if (Math.round(height + vertPad) !== clientHeight) { - height -= getBordersSize(styles, 'top', 'bottom') + vertPad; - } - } - // Following steps can't be applied to the document's root element as its - // client[Width/Height] properties represent viewport area of the window. - // Besides, it's as well not necessary as the itself neither has - // rendered scroll bars nor it can be clipped. - if (!isDocumentElement(target)) { - // In some browsers (only in Firefox, actually) CSS width & height - // include scroll bars size which can be removed at this step as scroll - // bars are the only difference between rounded dimensions + paddings - // and "client" properties, though that is not always true in Chrome. - var vertScrollbar = Math.round(width + horizPad) - clientWidth; - var horizScrollbar = Math.round(height + vertPad) - clientHeight; - // Chrome has a rather weird rounding of "client" properties. - // E.g. for an element with content width of 314.2px it sometimes gives - // the client width of 315px and for the width of 314.7px it may give - // 314px. And it doesn't happen all the time. So just ignore this delta - // as a non-relevant. - if (Math.abs(vertScrollbar) !== 1) { - width -= vertScrollbar; - } - if (Math.abs(horizScrollbar) !== 1) { - height -= horizScrollbar; - } - } - return createRectInit(paddings.left, paddings.top, width, height); -} -/** - * Checks whether provided element is an instance of the SVGGraphicsElement. - * - * @param {Element} target - Element to be checked. - * @returns {boolean} - */ -var isSVGGraphicsElement = (function () { - // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement - // interface. - if (typeof SVGGraphicsElement !== 'undefined') { - return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; }; - } - // If it's so, then check that element is at least an instance of the - // SVGElement and that it has the "getBBox" method. - // eslint-disable-next-line no-extra-parens - return function (target) { return (target instanceof getWindowOf(target).SVGElement && - typeof target.getBBox === 'function'); }; -})(); -/** - * Checks whether provided element is a document element (). - * - * @param {Element} target - Element to be checked. - * @returns {boolean} - */ -function isDocumentElement(target) { - return target === getWindowOf(target).document.documentElement; -} -/** - * Calculates an appropriate content rectangle for provided html or svg element. - * - * @param {Element} target - Element content rectangle of which needs to be calculated. - * @returns {DOMRectInit} - */ -function getContentRect(target) { - if (!isBrowser) { - return emptyRect; - } - if (isSVGGraphicsElement(target)) { - return getSVGContentRect(target); - } - return getHTMLElementContentRect(target); -} -/** - * Creates rectangle with an interface of the DOMRectReadOnly. - * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly - * - * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions. - * @returns {DOMRectReadOnly} - */ -function createReadOnlyRect(_a) { - var x = _a.x, y = _a.y, width = _a.width, height = _a.height; - // If DOMRectReadOnly is available use it as a prototype for the rectangle. - var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object; - var rect = Object.create(Constr.prototype); - // Rectangle's properties are not writable and non-enumerable. - defineConfigurable(rect, { - x: x, y: y, width: width, height: height, - top: y, - right: x + width, - bottom: height + y, - left: x - }); - return rect; -} -/** - * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates. - * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit - * - * @param {number} x - X coordinate. - * @param {number} y - Y coordinate. - * @param {number} width - Rectangle's width. - * @param {number} height - Rectangle's height. - * @returns {DOMRectInit} - */ -function createRectInit(x, y, width, height) { - return { x: x, y: y, width: width, height: height }; -} - -/** - * Class that is responsible for computations of the content rectangle of - * provided DOM element and for keeping track of it's changes. - */ -var ResizeObservation = /** @class */ (function () { - /** - * Creates an instance of ResizeObservation. - * - * @param {Element} target - Element to be observed. - */ - function ResizeObservation(target) { - /** - * Broadcasted width of content rectangle. - * - * @type {number} - */ - this.broadcastWidth = 0; - /** - * Broadcasted height of content rectangle. - * - * @type {number} - */ - this.broadcastHeight = 0; - /** - * Reference to the last observed content rectangle. - * - * @private {DOMRectInit} - */ - this.contentRect_ = createRectInit(0, 0, 0, 0); - this.target = target; - } - /** - * Updates content rectangle and tells whether it's width or height properties - * have changed since the last broadcast. - * - * @returns {boolean} - */ - ResizeObservation.prototype.isActive = function () { - var rect = getContentRect(this.target); - this.contentRect_ = rect; - return (rect.width !== this.broadcastWidth || - rect.height !== this.broadcastHeight); - }; - /** - * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data - * from the corresponding properties of the last observed content rectangle. - * - * @returns {DOMRectInit} Last observed content rectangle. - */ - ResizeObservation.prototype.broadcastRect = function () { - var rect = this.contentRect_; - this.broadcastWidth = rect.width; - this.broadcastHeight = rect.height; - return rect; - }; - return ResizeObservation; -}()); - -var ResizeObserverEntry = /** @class */ (function () { - /** - * Creates an instance of ResizeObserverEntry. - * - * @param {Element} target - Element that is being observed. - * @param {DOMRectInit} rectInit - Data of the element's content rectangle. - */ - function ResizeObserverEntry(target, rectInit) { - var contentRect = createReadOnlyRect(rectInit); - // According to the specification following properties are not writable - // and are also not enumerable in the native implementation. - // - // Property accessors are not being used as they'd require to define a - // private WeakMap storage which may cause memory leaks in browsers that - // don't support this type of collections. - defineConfigurable(this, { target: target, contentRect: contentRect }); - } - return ResizeObserverEntry; -}()); - -var ResizeObserverSPI = /** @class */ (function () { - /** - * Creates a new instance of ResizeObserver. - * - * @param {ResizeObserverCallback} callback - Callback function that is invoked - * when one of the observed elements changes it's content dimensions. - * @param {ResizeObserverController} controller - Controller instance which - * is responsible for the updates of observer. - * @param {ResizeObserver} callbackCtx - Reference to the public - * ResizeObserver instance which will be passed to callback function. - */ - function ResizeObserverSPI(callback, controller, callbackCtx) { - /** - * Collection of resize observations that have detected changes in dimensions - * of elements. - * - * @private {Array} - */ - this.activeObservations_ = []; - /** - * Registry of the ResizeObservation instances. - * - * @private {Map} - */ - this.observations_ = new MapShim(); - if (typeof callback !== 'function') { - throw new TypeError('The callback provided as parameter 1 is not a function.'); - } - this.callback_ = callback; - this.controller_ = controller; - this.callbackCtx_ = callbackCtx; - } - /** - * Starts observing provided element. - * - * @param {Element} target - Element to be observed. - * @returns {void} - */ - ResizeObserverSPI.prototype.observe = function (target) { - if (!arguments.length) { - throw new TypeError('1 argument required, but only 0 present.'); - } - // Do nothing if current environment doesn't have the Element interface. - if (typeof Element === 'undefined' || !(Element instanceof Object)) { - return; - } - if (!(target instanceof getWindowOf(target).Element)) { - throw new TypeError('parameter 1 is not of type "Element".'); - } - var observations = this.observations_; - // Do nothing if element is already being observed. - if (observations.has(target)) { - return; - } - observations.set(target, new ResizeObservation(target)); - this.controller_.addObserver(this); - // Force the update of observations. - this.controller_.refresh(); - }; - /** - * Stops observing provided element. - * - * @param {Element} target - Element to stop observing. - * @returns {void} - */ - ResizeObserverSPI.prototype.unobserve = function (target) { - if (!arguments.length) { - throw new TypeError('1 argument required, but only 0 present.'); - } - // Do nothing if current environment doesn't have the Element interface. - if (typeof Element === 'undefined' || !(Element instanceof Object)) { - return; - } - if (!(target instanceof getWindowOf(target).Element)) { - throw new TypeError('parameter 1 is not of type "Element".'); - } - var observations = this.observations_; - // Do nothing if element is not being observed. - if (!observations.has(target)) { - return; - } - observations.delete(target); - if (!observations.size) { - this.controller_.removeObserver(this); - } - }; - /** - * Stops observing all elements. - * - * @returns {void} - */ - ResizeObserverSPI.prototype.disconnect = function () { - this.clearActive(); - this.observations_.clear(); - this.controller_.removeObserver(this); - }; - /** - * Collects observation instances the associated element of which has changed - * it's content rectangle. - * - * @returns {void} - */ - ResizeObserverSPI.prototype.gatherActive = function () { - var _this = this; - this.clearActive(); - this.observations_.forEach(function (observation) { - if (observation.isActive()) { - _this.activeObservations_.push(observation); - } - }); - }; - /** - * Invokes initial callback function with a list of ResizeObserverEntry - * instances collected from active resize observations. - * - * @returns {void} - */ - ResizeObserverSPI.prototype.broadcastActive = function () { - // Do nothing if observer doesn't have active observations. - if (!this.hasActive()) { - return; - } - var ctx = this.callbackCtx_; - // Create ResizeObserverEntry instance for every active observation. - var entries = this.activeObservations_.map(function (observation) { - return new ResizeObserverEntry(observation.target, observation.broadcastRect()); - }); - this.callback_.call(ctx, entries, ctx); - this.clearActive(); - }; - /** - * Clears the collection of active observations. - * - * @returns {void} - */ - ResizeObserverSPI.prototype.clearActive = function () { - this.activeObservations_.splice(0); - }; - /** - * Tells whether observer has active observations. - * - * @returns {boolean} - */ - ResizeObserverSPI.prototype.hasActive = function () { - return this.activeObservations_.length > 0; - }; - return ResizeObserverSPI; -}()); - -// Registry of internal observers. If WeakMap is not available use current shim -// for the Map collection as it has all required methods and because WeakMap -// can't be fully polyfilled anyway. -var observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim(); -/** - * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation - * exposing only those methods and properties that are defined in the spec. - */ -var ResizeObserver = /** @class */ (function () { - /** - * Creates a new instance of ResizeObserver. - * - * @param {ResizeObserverCallback} callback - Callback that is invoked when - * dimensions of the observed elements change. - */ - function ResizeObserver(callback) { - if (!(this instanceof ResizeObserver)) { - throw new TypeError('Cannot call a class as a function.'); - } - if (!arguments.length) { - throw new TypeError('1 argument required, but only 0 present.'); - } - var controller = ResizeObserverController.getInstance(); - var observer = new ResizeObserverSPI(callback, controller, this); - observers.set(this, observer); - } - return ResizeObserver; -}()); -// Expose public methods of ResizeObserver. -[ - 'observe', - 'unobserve', - 'disconnect' -].forEach(function (method) { - ResizeObserver.prototype[method] = function () { - var _a; - return (_a = observers.get(this))[method].apply(_a, arguments); - }; -}); - -var index = (function () { - // Export existing implementation if available. - if (typeof global$1.ResizeObserver !== 'undefined') { - return global$1.ResizeObserver; - } - return ResizeObserver; -})(); - -/* harmony default export */ __webpack_exports__["a"] = (index); - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(59))) - -/***/ }), -/* 58 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * @fileoverview This module provides some functions for custom events. And it is implemented in the observer design pattern. - * @author NHN FE Development Lab - */ - - - -var extend = __webpack_require__(7); -var isExisty = __webpack_require__(28); -var isString = __webpack_require__(9); -var isObject = __webpack_require__(54); -var isArray = __webpack_require__(17); -var isFunction = __webpack_require__(27); -var forEach = __webpack_require__(26); - -var R_EVENTNAME_SPLIT = /\s+/g; - -/** - * @class - * @example - * // node, commonjs - * var CustomEvents = require('tui-code-snippet/customEvents/customEvents'); - */ -function CustomEvents() { - /** - * @type {HandlerItem[]} - */ - this.events = null; - - /** - * only for checking specific context event was binded - * @type {object[]} - */ - this.contexts = null; -} - -/** - * Mixin custom events feature to specific constructor - * @param {function} func - constructor - * @example - * var CustomEvents = require('tui-code-snippet/customEvents/customEvents'); // node, commonjs - * - * var model; - * function Model() { - * this.name = ''; - * } - * CustomEvents.mixin(Model); - * - * model = new Model(); - * model.on('change', function() { this.name = 'model'; }, this); - * model.fire('change'); - * alert(model.name); // 'model'; - */ -CustomEvents.mixin = function(func) { - extend(func.prototype, CustomEvents.prototype); -}; - -/** - * Get HandlerItem object - * @param {function} handler - handler function - * @param {object} [context] - context for handler - * @returns {HandlerItem} HandlerItem object - * @private - */ -CustomEvents.prototype._getHandlerItem = function(handler, context) { - var item = {handler: handler}; - - if (context) { - item.context = context; - } - - return item; -}; - -/** - * Get event object safely - * @param {string} [eventName] - create sub event map if not exist. - * @returns {(object|array)} event object. if you supplied `eventName` - * parameter then make new array and return it - * @private - */ -CustomEvents.prototype._safeEvent = function(eventName) { - var events = this.events; - var byName; - - if (!events) { - events = this.events = {}; - } - - if (eventName) { - byName = events[eventName]; - - if (!byName) { - byName = []; - events[eventName] = byName; - } - - events = byName; - } - - return events; -}; - -/** - * Get context array safely - * @returns {array} context array - * @private - */ -CustomEvents.prototype._safeContext = function() { - var context = this.contexts; - - if (!context) { - context = this.contexts = []; - } - - return context; -}; - -/** - * Get index of context - * @param {object} ctx - context that used for bind custom event - * @returns {number} index of context - * @private - */ -CustomEvents.prototype._indexOfContext = function(ctx) { - var context = this._safeContext(); - var index = 0; - - while (context[index]) { - if (ctx === context[index][0]) { - return index; - } - - index += 1; - } - - return -1; -}; - -/** - * Memorize supplied context for recognize supplied object is context or - * name: handler pair object when off() - * @param {object} ctx - context object to memorize - * @private - */ -CustomEvents.prototype._memorizeContext = function(ctx) { - var context, index; - - if (!isExisty(ctx)) { - return; - } - - context = this._safeContext(); - index = this._indexOfContext(ctx); - - if (index > -1) { - context[index][1] += 1; - } else { - context.push([ctx, 1]); - } -}; - -/** - * Forget supplied context object - * @param {object} ctx - context object to forget - * @private - */ -CustomEvents.prototype._forgetContext = function(ctx) { - var context, contextIndex; - - if (!isExisty(ctx)) { - return; - } - - context = this._safeContext(); - contextIndex = this._indexOfContext(ctx); - - if (contextIndex > -1) { - context[contextIndex][1] -= 1; - - if (context[contextIndex][1] <= 0) { - context.splice(contextIndex, 1); - } - } -}; - -/** - * Bind event handler - * @param {(string|{name:string, handler:function})} eventName - custom - * event name or an object {eventName: handler} - * @param {(function|object)} [handler] - handler function or context - * @param {object} [context] - context for binding - * @private - */ -CustomEvents.prototype._bindEvent = function(eventName, handler, context) { - var events = this._safeEvent(eventName); - this._memorizeContext(context); - events.push(this._getHandlerItem(handler, context)); -}; - -/** - * Bind event handlers - * @param {(string|{name:string, handler:function})} eventName - custom - * event name or an object {eventName: handler} - * @param {(function|object)} [handler] - handler function or context - * @param {object} [context] - context for binding - * //-- #1. Get Module --// - * var CustomEvents = require('tui-code-snippet/customEvents/customEvents'); // node, commonjs - * - * //-- #2. Use method --// - * // # 2.1 Basic Usage - * CustomEvents.on('onload', handler); - * - * // # 2.2 With context - * CustomEvents.on('onload', handler, myObj); - * - * // # 2.3 Bind by object that name, handler pairs - * CustomEvents.on({ - * 'play': handler, - * 'pause': handler2 - * }); - * - * // # 2.4 Bind by object that name, handler pairs with context object - * CustomEvents.on({ - * 'play': handler - * }, myObj); - */ -CustomEvents.prototype.on = function(eventName, handler, context) { - var self = this; - - if (isString(eventName)) { - // [syntax 1, 2] - eventName = eventName.split(R_EVENTNAME_SPLIT); - forEach(eventName, function(name) { - self._bindEvent(name, handler, context); - }); - } else if (isObject(eventName)) { - // [syntax 3, 4] - context = handler; - forEach(eventName, function(func, name) { - self.on(name, func, context); - }); - } -}; - -/** - * Bind one-shot event handlers - * @param {(string|{name:string,handler:function})} eventName - custom - * event name or an object {eventName: handler} - * @param {function|object} [handler] - handler function or context - * @param {object} [context] - context for binding - */ -CustomEvents.prototype.once = function(eventName, handler, context) { - var self = this; - - if (isObject(eventName)) { - context = handler; - forEach(eventName, function(func, name) { - self.once(name, func, context); - }); - - return; - } - - function onceHandler() { // eslint-disable-line require-jsdoc - handler.apply(context, arguments); - self.off(eventName, onceHandler, context); - } - - this.on(eventName, onceHandler, context); -}; - -/** - * Splice supplied array by callback result - * @param {array} arr - array to splice - * @param {function} predicate - function return boolean - * @private - */ -CustomEvents.prototype._spliceMatches = function(arr, predicate) { - var i = 0; - var len; - - if (!isArray(arr)) { - return; - } - - for (len = arr.length; i < len; i += 1) { - if (predicate(arr[i]) === true) { - arr.splice(i, 1); - len -= 1; - i -= 1; - } - } -}; - -/** - * Get matcher for unbind specific handler events - * @param {function} handler - handler function - * @returns {function} handler matcher - * @private - */ -CustomEvents.prototype._matchHandler = function(handler) { - var self = this; - - return function(item) { - var needRemove = handler === item.handler; - - if (needRemove) { - self._forgetContext(item.context); - } - - return needRemove; - }; -}; - -/** - * Get matcher for unbind specific context events - * @param {object} context - context - * @returns {function} object matcher - * @private - */ -CustomEvents.prototype._matchContext = function(context) { - var self = this; - - return function(item) { - var needRemove = context === item.context; - - if (needRemove) { - self._forgetContext(item.context); - } - - return needRemove; - }; -}; - -/** - * Get matcher for unbind specific hander, context pair events - * @param {function} handler - handler function - * @param {object} context - context - * @returns {function} handler, context matcher - * @private - */ -CustomEvents.prototype._matchHandlerAndContext = function(handler, context) { - var self = this; - - return function(item) { - var matchHandler = (handler === item.handler); - var matchContext = (context === item.context); - var needRemove = (matchHandler && matchContext); - - if (needRemove) { - self._forgetContext(item.context); - } - - return needRemove; - }; -}; - -/** - * Unbind event by event name - * @param {string} eventName - custom event name to unbind - * @param {function} [handler] - handler function - * @private - */ -CustomEvents.prototype._offByEventName = function(eventName, handler) { - var self = this; - var andByHandler = isFunction(handler); - var matchHandler = self._matchHandler(handler); - - eventName = eventName.split(R_EVENTNAME_SPLIT); - - forEach(eventName, function(name) { - var handlerItems = self._safeEvent(name); - - if (andByHandler) { - self._spliceMatches(handlerItems, matchHandler); - } else { - forEach(handlerItems, function(item) { - self._forgetContext(item.context); - }); - - self.events[name] = []; - } - }); -}; - -/** - * Unbind event by handler function - * @param {function} handler - handler function - * @private - */ -CustomEvents.prototype._offByHandler = function(handler) { - var self = this; - var matchHandler = this._matchHandler(handler); - - forEach(this._safeEvent(), function(handlerItems) { - self._spliceMatches(handlerItems, matchHandler); - }); -}; - -/** - * Unbind event by object(name: handler pair object or context object) - * @param {object} obj - context or {name: handler} pair object - * @param {function} handler - handler function - * @private - */ -CustomEvents.prototype._offByObject = function(obj, handler) { - var self = this; - var matchFunc; - - if (this._indexOfContext(obj) < 0) { - forEach(obj, function(func, name) { - self.off(name, func); - }); - } else if (isString(handler)) { - matchFunc = this._matchContext(obj); - - self._spliceMatches(this._safeEvent(handler), matchFunc); - } else if (isFunction(handler)) { - matchFunc = this._matchHandlerAndContext(handler, obj); - - forEach(this._safeEvent(), function(handlerItems) { - self._spliceMatches(handlerItems, matchFunc); - }); - } else { - matchFunc = this._matchContext(obj); - - forEach(this._safeEvent(), function(handlerItems) { - self._spliceMatches(handlerItems, matchFunc); - }); - } -}; - -/** - * Unbind custom events - * @param {(string|object|function)} eventName - event name or context or - * {name: handler} pair object or handler function - * @param {(function)} handler - handler function - * @example - * //-- #1. Get Module --// - * var CustomEvents = require('tui-code-snippet/customEvents/customEvents'); // node, commonjs - * - * //-- #2. Use method --// - * // # 2.1 off by event name - * CustomEvents.off('onload'); - * - * // # 2.2 off by event name and handler - * CustomEvents.off('play', handler); - * - * // # 2.3 off by handler - * CustomEvents.off(handler); - * - * // # 2.4 off by context - * CustomEvents.off(myObj); - * - * // # 2.5 off by context and handler - * CustomEvents.off(myObj, handler); - * - * // # 2.6 off by context and event name - * CustomEvents.off(myObj, 'onload'); - * - * // # 2.7 off by an Object. that is {eventName: handler} - * CustomEvents.off({ - * 'play': handler, - * 'pause': handler2 - * }); - * - * // # 2.8 off the all events - * CustomEvents.off(); - */ -CustomEvents.prototype.off = function(eventName, handler) { - if (isString(eventName)) { - // [syntax 1, 2] - this._offByEventName(eventName, handler); - } else if (!arguments.length) { - // [syntax 8] - this.events = {}; - this.contexts = []; - } else if (isFunction(eventName)) { - // [syntax 3] - this._offByHandler(eventName); - } else if (isObject(eventName)) { - // [syntax 4, 5, 6] - this._offByObject(eventName, handler); - } -}; - -/** - * Fire custom event - * @param {string} eventName - name of custom event - */ -CustomEvents.prototype.fire = function(eventName) { // eslint-disable-line - this.invoke.apply(this, arguments); -}; - -/** - * Fire a event and returns the result of operation 'boolean AND' with all - * listener's results. - * - * So, It is different from {@link CustomEvents#fire}. - * - * In service code, use this as a before event in component level usually - * for notifying that the event is cancelable. - * @param {string} eventName - Custom event name - * @param {...*} data - Data for event - * @returns {boolean} The result of operation 'boolean AND' - * @example - * var map = new Map(); - * map.on({ - * 'beforeZoom': function() { - * // It should cancel the 'zoom' event by some conditions. - * if (that.disabled && this.getState()) { - * return false; - * } - * return true; - * } - * }); - * - * if (this.invoke('beforeZoom')) { // check the result of 'beforeZoom' - * // if true, - * // doSomething - * } - */ -CustomEvents.prototype.invoke = function(eventName) { - var events, args, index, item; - - if (!this.hasListener(eventName)) { - return true; - } - - events = this._safeEvent(eventName); - args = Array.prototype.slice.call(arguments, 1); - index = 0; - - while (events[index]) { - item = events[index]; - - if (item.handler.apply(item.context, args) === false) { - return false; - } - - index += 1; - } - - return true; -}; - -/** - * Return whether at least one of the handlers is registered in the given - * event name. - * @param {string} eventName - Custom event name - * @returns {boolean} Is there at least one handler in event name? - */ -CustomEvents.prototype.hasListener = function(eventName) { - return this.getListenerLength(eventName) > 0; -}; - -/** - * Return a count of events registered. - * @param {string} eventName - Custom event name - * @returns {number} number of event - */ -CustomEvents.prototype.getListenerLength = function(eventName) { - var events = this._safeEvent(eventName); - - return events.length; -}; - -module.exports = CustomEvents; - - -/***/ }), -/* 59 */ -/***/ (function(module, exports) { - -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || new Function("return this")(); -} catch (e) { - // This works if the window reference is available - if (typeof window === "object") g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; - - -/***/ }), -/* 60 */, -/* 61 */, -/* 62 */, -/* 63 */, -/* 64 */, -/* 65 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -// ESM COMPAT FLAG -__webpack_require__.r(__webpack_exports__); - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/collection/forEachOwnProperties.js -var forEachOwnProperties = __webpack_require__(10); -var forEachOwnProperties_default = /*#__PURE__*/__webpack_require__.n(forEachOwnProperties); - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/type/isExisty.js -var isExisty = __webpack_require__(28); -var isExisty_default = /*#__PURE__*/__webpack_require__.n(isExisty); - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/type/isNumber.js -var isNumber = __webpack_require__(34); -var isNumber_default = /*#__PURE__*/__webpack_require__.n(isNumber); - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/object/extend.js -var extend = __webpack_require__(7); -var extend_default = /*#__PURE__*/__webpack_require__.n(extend); - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/domUtil/css.js -var css = __webpack_require__(4); -var css_default = /*#__PURE__*/__webpack_require__.n(css); - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/domUtil/addClass.js -var addClass = __webpack_require__(5); -var addClass_default = /*#__PURE__*/__webpack_require__.n(addClass); - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/domUtil/removeClass.js -var removeClass = __webpack_require__(6); -var removeClass_default = /*#__PURE__*/__webpack_require__.n(removeClass); - -// EXTERNAL MODULE: /Users/nhn/project/tui.editor/libs/toastmark/dist/toastmark.js -var toastmark = __webpack_require__(22); - -// EXTERNAL MODULE: ./src/js/htmlRenderConvertors.js -var htmlRenderConvertors = __webpack_require__(29); - -// CONCATENATED MODULE: ./src/js/markdownToHTML.js - - -function createMarkdownToHTML(options) { - var extendedAutolinks = options.extendedAutolinks, - customHTMLRenderer = options.customHTMLRenderer, - referenceDefinition = options.referenceDefinition, - customParser = options.customParser, - frontMatter = options.frontMatter; - var parser = new toastmark["Parser"]({ - disallowedHtmlBlockTags: ['br'], - extendedAutolinks: extendedAutolinks, - referenceDefinition: referenceDefinition, - disallowDeepHeading: true, - customParser: customParser, - frontMatter: frontMatter - }); - var renderHTML = Object(toastmark["createRenderHTML"])({ - gfm: true, - convertors: Object(htmlRenderConvertors["a" /* getHTMLRenderConvertors */])(null, customHTMLRenderer) - }); - return function markdownToHTML(markdown) { - return renderHTML(parser.parse(markdown)); - }; -} -// EXTERNAL MODULE: ./src/js/utils/common.js -var utils_common = __webpack_require__(12); - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/type/isBoolean.js -var isBoolean = __webpack_require__(56); -var isBoolean_default = /*#__PURE__*/__webpack_require__.n(isBoolean); - -// EXTERNAL MODULE: external {"commonjs":"codemirror","commonjs2":"codemirror","amd":"codemirror","root":["CodeMirror"]} -var external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_ = __webpack_require__(15); -var external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_); - -// CONCATENATED MODULE: ./src/js/codemirror/fixOrderedListNumber.js -/** - * @fileoverview codemirror extension for fix ordered list number - * @author NHN FE Development Lab - */ - -var listRE = /^(\s*)((\d+)([.)]\s(?:\[(?:x|\s)\]\s)?))(.*)/; -/** - * simple wrapper for indentLess command - * to run fixOrderedListNumber on Shift-Tab - * @param {CodeMirror} cm - CodeMirror instance - * @returns {CodeMirror.Pass|null} - next command - * @ignore - */ - -external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.commands.indentLessOrderedList = function (cm) { - if (cm.getOption('disableInput')) { - return external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.Pass; - } - - cm.execCommand('indentLess'); - cm.execCommand('fixOrderedListNumber'); - return null; -}; -/** - * fix ordered list number - * @param {CodeMirror} cm - CodeMirror instance - * @returns {CodeMirror.Pass|null} - next command - * @ignore - */ - - -external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.commands.fixOrderedListNumber = function (cm) { - if (cm.getOption('disableInput') || !!cm.state.isCursorInCodeBlock) { - return external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.Pass; - } - - var ranges = cm.listSelections(); - - for (var i = 0; i < ranges.length; i += 1) { - var pos = ranges[i].head; - var lineNumber = findFirstListItem(pos.line, cm); - - if (lineNumber >= 0) { - var lineText = cm.getLine(lineNumber); - - var _listRE$exec = listRE.exec(lineText), - indent = _listRE$exec[1], - index = _listRE$exec[3]; - - fixNumber(lineNumber, indent.length, parseInt(index, 10), cm); - } - } - - return null; -}; -/** - * fix list numbers - * @param {number} lineNumber - line number of list item to be normalized - * @param {number} prevIndentLength - previous indent length - * @param {number} startIndex - start index - * @param {CodeMirror} cm - CodeMirror instance - * @returns {number} - next line number - * @ignore - */ - - -function fixNumber(lineNumber, prevIndentLength, startIndex, cm) { - var indent, delimiter, text, indentLength; - var index = startIndex; - var lineText = cm.getLine(lineNumber); - - do { - var _listRE$exec2 = listRE.exec(lineText); - - indent = _listRE$exec2[1]; - delimiter = _listRE$exec2[4]; - text = _listRE$exec2[5]; - indentLength = indent.length; - - if (indentLength === prevIndentLength) { - // fix number - cm.replaceRange("" + indent + index + delimiter + text, { - line: lineNumber, - ch: 0 - }, { - line: lineNumber, - ch: lineText.length - }); - index += 1; - lineNumber += 1; - } else if (indentLength > prevIndentLength) { - // nested list start - lineNumber = fixNumber(lineNumber, indentLength, 1, cm); - } else { - // nested list end - return lineNumber; - } - - lineText = cm.getLine(lineNumber); - } while (listRE.test(lineText)); - - return lineNumber; -} -/** - * find line number of list item which contains given lineNumber - * @param {number} lineNumber - line number of list item - * @param {CodeMirror} cm - CodeMirror instance - * @returns {number} - line number of first list item - * @ignore - */ - - -function findFirstListItem(lineNumber, cm) { - var nextLineNumber = lineNumber; - var lineText = cm.getLine(lineNumber); - - while (listRE.test(lineText)) { - nextLineNumber -= 1; - lineText = cm.getLine(nextLineNumber); - } - - if (lineNumber === nextLineNumber) { - nextLineNumber = -1; - } else { - nextLineNumber += 1; - } - - return nextLineNumber; -} -// CONCATENATED MODULE: ./src/js/codemirror/overlay.js -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE -// Utility function that allows modes to be combined. The mode given -// as the base argument takes care of most of the normal mode -// functionality, but a second (typically simple) mode is used, which -// can override the style of text. Both modes get to parse all of the -// text, but when both assign a non-null style to a piece of code, the -// overlay wins, unless the combine argument was true and not overridden, -// or state.overlay.combineTokens was true, in which case the styles are -// combined. - -/** - * @modifier NHN FE Development Lab - */ - -/*eslint-disable */ - -external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.overlayMode = function (base, overlay, combine) { - return { - startState: function startState() { - return { - base: external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.startState(base), - overlay: external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.startState(overlay), - basePos: 0, - baseCur: null, - overlayPos: 0, - overlayCur: null, - streamSeen: null - }; - }, - copyState: function copyState(state) { - return { - base: external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.copyState(base, state.base), - overlay: external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.copyState(overlay, state.overlay), - basePos: state.basePos, - baseCur: null, - overlayPos: state.overlayPos, - overlayCur: null - }; - }, - token: function token(stream, state) { - if (stream != state.streamSeen || Math.min(state.basePos, state.overlayPos) < stream.start) { - state.streamSeen = stream; - state.basePos = state.overlayPos = stream.start; - } - - if (stream.start == state.basePos) { - state.baseCur = base.token(stream, state.base); - state.basePos = stream.pos; - } - - if (stream.start == state.overlayPos) { - stream.pos = stream.start; - state.overlayCur = overlay.token(stream, state.overlay); - state.overlayPos = stream.pos; - } - - stream.pos = Math.min(state.basePos, state.overlayPos); // state.overlay.combineTokens always takes precedence over combine, - // unless set to null - - if (state.overlayCur == null) return state.baseCur;else if (state.baseCur != null && state.overlay.combineTokens || combine && state.overlay.combineTokens == null) return state.baseCur + ' ' + state.overlayCur;else return state.overlayCur; - }, - indent: base.indent && function (state, textAfter) { - return base.indent(state.base, textAfter); - }, - electricChars: base.electricChars, - innerMode: function innerMode(state) { - return { - state: state.base, - mode: base - }; - }, - blankLine: function blankLine(state) { - if (base.blankLine) base.blankLine(state.base); - if (overlay.blankLine) overlay.blankLine(state.overlay); - } - }; -}; -// CONCATENATED MODULE: ./src/js/codemirror/continuelist.js -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** - * @modifier NHN FE Development Lab - */ - -/*eslint-disable */ - -var continuelist_listRE = /^(\s*)(>[> ]*|[*+-] \[[x ]\]\s|[*+-]\s|(\d+)([.)]\s))(\s*)/, - emptyListRE = /^(\s*)(>[> ]*|[*+-] \[[x ]\]|[*+-]|(\d+)[.)])(\s*)$/, - unorderedListRE = /[*+-]\s/; - -external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.commands.indentOrderedList = function (cm) { - if (cm.getOption('disableInput')) return external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.Pass; - var ranges = cm.listSelections(); - - for (var i = 0; i < ranges.length; i++) { - var pos = ranges[i].head; - var line = cm.getLine(pos.line); - var cursorBeforeTextInline = line.substr(0, pos.ch); - - if (continuelist_listRE.test(cursorBeforeTextInline) || cm.somethingSelected()) { - cm.indentSelection('add'); - } else { - cm.execCommand('insertSoftTab'); - } - } - - cm.execCommand('fixOrderedListNumber'); -}; - -external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.commands.newlineAndIndentContinueMarkdownList = function (cm) { - if (cm.getOption('disableInput') || !!cm.state.isCursorInCodeBlock) { - cm.execCommand('newlineAndIndent'); - return; - } - - var ranges = cm.listSelections(), - replacements = []; - - for (var i = 0; i < ranges.length; i++) { - var pos = ranges[i].head; - var line = cm.getLine(pos.line), - match = continuelist_listRE.exec(line); - var cursorBeforeBullet = /^\s*$/.test(line.slice(0, pos.ch)); - - if (!ranges[i].empty() || !match || cursorBeforeBullet) { - cm.execCommand('newlineAndIndent'); - return; - } - - if (emptyListRE.test(line)) { - if (!/>\s*$/.test(line)) cm.replaceRange('', { - line: pos.line, - ch: 0 - }, { - line: pos.line, - ch: pos.ch + 1 - }); - replacements[i] = '\n'; - } else { - var indent = match[1], - after = match[5]; - var numbered = !(unorderedListRE.test(match[2]) || match[2].indexOf('>') >= 0); - var bullet = numbered ? parseInt(match[3], 10) + 1 + match[4] : match[2].replace('x', ' '); - replacements[i] = '\n' + indent + bullet + after; - if (numbered) incrementRemainingMarkdownListNumbers(cm, pos); - } - } - - cm.replaceSelections(replacements); -}; // Auto-updating Markdown list numbers when a new item is added to the -// middle of a list - - -function incrementRemainingMarkdownListNumbers(cm, pos) { - var startLine = pos.line, - lookAhead = 0, - skipCount = 0; - var startItem = continuelist_listRE.exec(cm.getLine(startLine)), - startIndent = startItem[1]; - - do { - lookAhead += 1; - var nextLineNumber = startLine + lookAhead; - var nextLine = cm.getLine(nextLineNumber), - nextItem = continuelist_listRE.exec(nextLine); - - if (nextItem) { - var nextIndent = nextItem[1]; - var newNumber = parseInt(startItem[3], 10) + lookAhead - skipCount; - var nextNumber = parseInt(nextItem[3], 10), - itemNumber = nextNumber; - - if (startIndent === nextIndent && !isNaN(nextNumber)) { - if (newNumber === nextNumber) itemNumber = nextNumber + 1; - if (newNumber > nextNumber) itemNumber = newNumber + 1; - cm.replaceRange(nextLine.replace(continuelist_listRE, nextIndent + itemNumber + nextItem[4] + nextItem[5]), { - line: nextLineNumber, - ch: 0 - }, { - line: nextLineNumber, - ch: nextLine.length - }); - } else { - if (startIndent.length > nextIndent.length) return; // This doesn't run if the next line immediatley indents, as it is - // not clear of the users intention (new indented item or same level) - - if (startIndent.length < nextIndent.length && lookAhead === 1) return; - skipCount += 1; - } - } - } while (nextItem); -} -// CONCATENATED MODULE: ./src/js/codemirror/arrowKeyFunction.js -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** - * @modifier NHN FE Development Lab - */ - -/*eslint-disable */ - -external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.commands.replaceLineTextToUpper = function (cm) { - if (cm.getOption('disableInput')) { - return external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.Pass; - } - - var ranges = cm.listSelections(); - var lineAdjustment = -1; - - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - var from = range.anchor; - var to = range.head; - - if (isSameLineSelection(range) && to.line > 0) { - replaceSingleLine(cm, from, to, lineAdjustment); - } else if (!isRangeCollapsed(range)) { - var topLine = from.line < to.line ? from.line : to.line; - - if (topLine > 0) { - var upper = from.line === topLine ? from : to; - var bottom = from.line === topLine ? to : from; - replaceMultiLine(cm, upper, bottom, lineAdjustment); - } - } - } -}; - -external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.commands.replaceLineTextToLower = function (cm) { - if (cm.getOption('disableInput')) { - return external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.Pass; - } - - var ranges = cm.listSelections(); - var lineAdjustment = 1; - - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - var from = range.anchor; - var to = range.head; - var isLastLine = to.line === cm.lastLine(); - - if (isSameLineSelection(range) && !isLastLine) { - replaceSingleLine(cm, from, to, lineAdjustment); - } else if (!isRangeCollapsed(range)) { - var topLine = from.line < to.line ? from.line : to.line; - var upper = from.line === topLine ? from : to; - var bottom = from.line === topLine ? to : from; - - if (bottom.line < cm.lastLine()) { - replaceMultiLine(cm, upper, bottom, lineAdjustment); - } - } - } -}; - -function isRangeCollapsed(range) { - return isSameLineSelection(range) && range.anchor.ch === range.head.ch; -} - -function isSameLineSelection(range) { - return range.anchor.line === range.head.line; -} - -function replaceSingleLine(cm, from, to, lineAdjustment) { - var currentLine = cm.getLine(to.line); - var replacement = cm.getLine(to.line + lineAdjustment); - var range = { - anchor: from, - head: to - }; - cm.replaceRange(replacement, { - line: to.line, - ch: 0 - }, { - line: to.line, - ch: currentLine.length - }, '+input'); - cm.replaceRange(currentLine, { - line: to.line + lineAdjustment, - ch: 0 - }, { - line: to.line + lineAdjustment, - ch: replacement.length - }, '+input'); - - if (isRangeCollapsed(range)) { - cm.setCursor({ - line: to.line + lineAdjustment, - ch: to.ch - }); - } else { - cm.setSelection({ - line: from.line + lineAdjustment, - ch: from.ch - }, { - line: to.line + lineAdjustment, - ch: to.ch - }); - } -} - -function replaceMultiLine(cm, upper, bottom, lineAdjustment) { - var rangeContent = cm.getRange({ - line: upper.line, - ch: 0 - }, { - line: bottom.line, - ch: cm.getLine(bottom.line).length - }); - var edgeLineOfConcern = lineAdjustment > 0 ? bottom : upper; - var replacement = cm.getLine(edgeLineOfConcern.line + lineAdjustment); - var targetLine; - - if (lineAdjustment > 0) { - targetLine = upper; - } else { - targetLine = bottom; - } - - cm.replaceRange(replacement, { - line: targetLine.line, - ch: 0 - }, { - line: targetLine.line, - ch: cm.getLine(targetLine.line).length - }, '+input'); - cm.replaceRange(rangeContent, { - line: upper.line + lineAdjustment, - ch: 0 - }, { - line: bottom.line + lineAdjustment, - ch: cm.getLine(bottom.line + lineAdjustment).length - }, '+input'); - cm.setSelection({ - line: upper.line + lineAdjustment, - ch: upper.ch - }, { - line: bottom.line + lineAdjustment, - ch: bottom.ch - }); -} -// CONCATENATED MODULE: ./src/js/codemirror/placeholder.js -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** - * @modifier NHN FE Development Lab - */ - -/* eslint-disable */ - -external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.defineOption('placeholder', '', function (cm, val, old) { - var prev = old && old != external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.Init; - - if (val && !prev) { - cm.on('blur', onBlur); - cm.on('change', onChange); - cm.on('swapDoc', onChange); - onChange(cm); - } else if (!val && prev) { - cm.off('blur', onBlur); - cm.off('change', onChange); - cm.off('swapDoc', onChange); - clearPlaceholder(cm); - var wrapper = cm.getWrapperElement(); - wrapper.className = wrapper.className.replace(' CodeMirror-empty', ''); - } - - if (val && !cm.hasFocus()) onBlur(cm); -}); - -function clearPlaceholder(cm) { - if (cm.state.placeholder) { - cm.state.placeholder.parentNode.removeChild(cm.state.placeholder); - cm.state.placeholder = null; - } -} - -function setPlaceholder(cm) { - clearPlaceholder(cm); - var elt = cm.state.placeholder = document.createElement('pre'); - elt.style.cssText = 'height: 0; overflow: visible'; - elt.className = 'CodeMirror-placeholder'; - var placeHolder = cm.getOption('placeholder'); - if (typeof placeHolder == 'string') placeHolder = document.createTextNode(placeHolder); - elt.appendChild(placeHolder); - cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild); -} - -function onBlur(cm) { - if (isEmpty(cm)) setPlaceholder(cm); -} - -function onChange(cm) { - var wrapper = cm.getWrapperElement(), - empty = isEmpty(cm); - wrapper.className = wrapper.className.replace(' CodeMirror-empty', '') + (empty ? ' CodeMirror-empty' : ''); - if (empty) setPlaceholder(cm);else clearPlaceholder(cm); -} - -function isEmpty(cm) { - return cm.lineCount() === 1 && cm.getLine(0) === ''; -} -// CONCATENATED MODULE: ./src/js/codeMirrorExt.js -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -/** - * @fileoverview Implements CodeBlockExt - * @author NHN FE Development Lab - */ - - - - - - - -/** - * Class CodeMirrorExt - * @param {HTMLElement} el - container jquery element - * @param {Object} [options={}] - codeMirror options - */ - -var codeMirrorExt_CodeMirrorExt = /*#__PURE__*/function () { - function CodeMirrorExt(el, options) { - if (options === void 0) { - options = {}; - } - - this.editorContainerEl = el; - /** - * CodeMirror instance - * @type {CodeMirror.EditorFromTextArea} - * @private - */ - - this.cm = null; - - this._init(options); - } - /** - * init - * @param {Object} options - codeMirror option - * @private - */ - - - var _proto = CodeMirrorExt.prototype; - - _proto._init = function _init(options) { - var cmTextarea = document.createElement('textarea'); - this.editorContainerEl.appendChild(cmTextarea); - options = _extends({}, options, { - lineWrapping: true, - theme: 'default', - extraKeys: _extends({ - 'Shift-Tab': 'indentLess', - 'Alt-Up': 'replaceLineTextToUpper', - 'Alt-Down': 'replaceLineTextToLower' - }, options.extraKeys), - indentUnit: 4, - cursorScrollMargin: 12, - specialCharPlaceholder: function specialCharPlaceholder() { - return document.createElement('span'); - } - }); - this.cm = external_commonjs_codemirror_commonjs2_codemirror_amd_codemirror_root_CodeMirror_default.a.fromTextArea(cmTextarea, options); - } - /** - * getCurrentRange - * @returns {Object} - selection range - */ - ; - - _proto.getCurrentRange = function getCurrentRange() { - var from = this.cm.getCursor('from'); - var to = this.cm.getCursor('to'); - return { - from: from, - to: to, - collapsed: from.line === to.line && from.ch === to.ch - }; - } - /** - * Set focus to current Editor - */ - ; - - _proto.focus = function focus() { - this.cm.focus(); - } - /** - * blur focus to current Editor - */ - ; - - _proto.blur = function blur() { - this.cm.getInputField().blur(); - } - /** - * Remove Editor from document - */ - ; - - _proto.remove = function remove() { - this.cm.toTextArea(); - } - /** - * Set Editor value - * @param {string} markdown - Markdown syntax text - * @param {boolean} [cursorToEnd=true] - move cursor to contents end - */ - ; - - _proto.setValue = function setValue(markdown, cursorToEnd) { - if (cursorToEnd === void 0) { - cursorToEnd = true; - } - - this.cm.setValue(markdown); - - if (cursorToEnd) { - this.moveCursorToEnd(); - } - - this.cm.doc.clearHistory(); - this.cm.refresh(); - } - /** - * Get editor value - * @returns {string} - codeMirror text value - */ - ; - - _proto.getValue = function getValue() { - return this.cm.getValue('\n'); - } - /** - * Get CodeMirror instance - * @returns {CodeMirror} - */ - ; - - _proto.getEditor = function getEditor() { - return this.cm; - } - /** - * Reset Editor - */ - ; - - _proto.reset = function reset() { - this.setValue(''); - } - /** - * Get current caret position - * @returns {{from: {line: number, ch: number}, to: {line: number, ch: number}}} - */ - ; - - _proto.getCaretPosition = function getCaretPosition() { - return this.cm.cursorCoords(); - } - /** - * Add widget - * @param {object} selection - Selection object - * @param {HTMLElement} node - Widget node - * @param {string} style - Adding style "over" or "bottom" - * @param {number} offset - Adding offset - */ - ; - - _proto.addWidget = function addWidget(selection, node, style, offset) { - if (offset) { - selection.ch += offset; - } - - this.cm.addWidget(selection.end, node, true, style); - } - /** - * Replace selection with given replacement content - * @param {string} content - Replacement content text - * @param {object} selection - Selection object - */ - ; - - _proto.replaceSelection = function replaceSelection(content, selection) { - if (selection) { - this.cm.setSelection(selection.from, selection.to); - } - - this.cm.replaceSelection(content); - this.focus(); - } - /** - * Replace selection with replacement content and offset - * @param {string} content - Replacement content text - * @param {number} offset - Offset - * @param {number} overwriteLength - Length to overwrite - */ - ; - - _proto.replaceRelativeOffset = function replaceRelativeOffset(content, offset, overwriteLength) { - var cursor = this.cm.getCursor(); - var selection = { - from: { - line: cursor.line, - ch: cursor.ch + offset - }, - to: { - line: cursor.line, - ch: cursor.ch + offset + overwriteLength - } - }; - this.replaceSelection(content, selection); - } - /** - * Set Editor height - * @param {number} height - Editor height - */ - ; - - _proto.setHeight = function setHeight(height) { - var contentWrapper = this.getWrapperElement(); - css_default()(contentWrapper, { - height: height + "px" - }); - } - /** - * set min height - * @param {number} minHeight - min height - */ - ; - - _proto.setMinHeight = function setMinHeight(minHeight) { - var contentWrapper = this.getWrapperElement(); - css_default()(contentWrapper, { - minHeight: minHeight + "px" - }); - } - /** - * Set the placeholder to CodeMirror - * @param {string} placeholder - placeholder to set - */ - ; - - _proto.setPlaceholder = function setPlaceholder(placeholder) { - if (placeholder) { - this.cm.setOption('placeholder', placeholder); - } - } - /** - * get code mirror wrapper element - * @returns {HTMLElement} - code mirror wrapper element - */ - ; - - _proto.getWrapperElement = function getWrapperElement() { - return this.cm.getWrapperElement(); - } - /** - * get code mirror cursor - * @param {string} [start='head'] - which end of the selection. 'from'|'to'|'head'|'anchor' - * @returns {Cursor} - code mirror cursor - */ - ; - - _proto.getCursor = function getCursor(start) { - return this.cm.getCursor(start); - } - /** - * Set cursor position to end - */ - ; - - _proto.moveCursorToEnd = function moveCursorToEnd() { - var doc = this.getEditor().getDoc(); - var lastLine = doc.lastLine(); - doc.setCursor(lastLine, doc.getLine(lastLine).length); - } - /** - * Set cursor position to start - */ - ; - - _proto.moveCursorToStart = function moveCursorToStart() { - var doc = this.getEditor().getDoc(); - var firstLine = doc.firstLine(); - doc.setCursor(firstLine, 0); - } - /** - * Scroll Editor content to Top - * @param {number} value - Scroll amount - * @returns {number} - changed scroll top - */ - ; - - _proto.scrollTop = function scrollTop(value) { - if (value) { - this.cm.scrollTo(0, value); - } - - return this.cm.getScrollInfo().top; - } - /** - * Get start, end position of current selection - * @returns {{start: {line: *, ch: *}, end: {line: *, ch: *}}} - */ - ; - - _proto.getRange = function getRange() { - var start = this.cm.getCursor('from'); - var end = this.cm.getCursor('to'); - return { - start: { - line: start.line, - ch: start.ch - }, - end: { - line: end.line, - ch: end.ch - } - }; - } - /** - * add codemirror event handler - * @param {string} type - event type - * @param {function} func - handler function - */ - ; - - _proto.on = function on(type, func) { - this.cm.on(type, func); - } - /** - * remove codemirror event handler - * @param {string} type - event type - * @param {function} func - handler function - */ - ; - - _proto.off = function off(type, func) { - this.cm.off(type, func); - }; - - return CodeMirrorExt; -}(); - -/* harmony default export */ var codeMirrorExt = (codeMirrorExt_CodeMirrorExt); -// CONCATENATED MODULE: ./src/js/keyMapper.js -/** - * @fileoverview Implements KeyMapper - * @author NHN FE Development Lab - */ - -/** - * Constant of key mapping - * @type {string[]} - * @ignore - */ -var KEYBOARD_MAP = ['', // [0] -'', // [1] -'', // [2] -'CANCEL', // [3] -'', // [4] -'', // [5] -'HELP', // [6] -'', // [7] -'BACK_SPACE', // [8] -'TAB', // [9] -'', // [10] -'', // [11] -'CLEAR', // [12] -'ENTER', // [13] -'ENTER_SPECIAL', // [14] -'', // [15] -'', // [16] SHIFT -'', // [17] CONTROL -'', // [18] ALT -'PAUSE', // [19] -'CAPS_LOCK', // [20] -'KANA', // [21] -'EISU', // [22] -'JUNJA', // [23] -'FINAL', // [24] -'HANJA', // [25] -'', // [26] -'ESCAPE', // [27] -'CONVERT', // [28] -'NONCONVERT', // [29] -'ACCEPT', // [30] -'MODECHANGE', // [31] -'SPACE', // [32] -'PAGE_UP', // [33] -'PAGE_DOWN', // [34] -'END', // [35] -'HOME', // [36] -'LEFT', // [37] -'UP', // [38] -'RIGHT', // [39] -'DOWN', // [40] -'SELECT', // [41] -'PRINT', // [42] -'EXECUTE', // [43] -'PRINTSCREEN', // [44] -'INSERT', // [45] -'DELETE', // [46] -'', // [47] -'0', // [48] -'1', // [49] -'2', // [50] -'3', // [51] -'4', // [52] -'5', // [53] -'6', // [54] -'7', // [55] -'8', // [56] -'9', // [57] -':', // [58] -';', // [59] -'<', // [60] -'=', // [61] -'>', // [62] -'?', // [63] -'AT', // [64] -'A', // [65] -'B', // [66] -'C', // [67] -'D', // [68] -'E', // [69] -'F', // [70] -'G', // [71] -'H', // [72] -'I', // [73] -'J', // [74] -'K', // [75] -'L', // [76] -'M', // [77] -'N', // [78] -'O', // [79] -'P', // [80] -'Q', // [81] -'R', // [82] -'S', // [83] -'T', // [84] -'U', // [85] -'V', // [86] -'W', // [87] -'X', // [88] -'Y', // [89] -'Z', // [90] -'', // [91] META -'', // [92] -'CONTEXT_MENU', // [93] -'', // [94] -'SLEEP', // [95] -'NUMPAD0', // [96] -'NUMPAD1', // [97] -'NUMPAD2', // [98] -'NUMPAD3', // [99] -'NUMPAD4', // [100] -'NUMPAD5', // [101] -'NUMPAD6', // [102] -'NUMPAD7', // [103] -'NUMPAD8', // [104] -'NUMPAD9', // [105] -'MULTIPLY', // [106] -'ADD', // [107] -'SEPARATOR', // [108] -'SUBTRACT', // [109] -'DECIMAL', // [110] -'DIVIDE', // [111] -'F1', // [112] -'F2', // [113] -'F3', // [114] -'F4', // [115] -'F5', // [116] -'F6', // [117] -'F7', // [118] -'F8', // [119] -'F9', // [120] -'F10', // [121] -'F11', // [122] -'F12', // [123] -'F13', // [124] -'F14', // [125] -'F15', // [126] -'F16', // [127] -'F17', // [128] -'F18', // [129] -'F19', // [130] -'F20', // [131] -'F21', // [132] -'F22', // [133] -'F23', // [134] -'F24', // [135] -'', // [136] -'', // [137] -'', // [138] -'', // [139] -'', // [140] -'', // [141] -'', // [142] -'', // [143] -'NUM_LOCK', // [144] -'SCROLL_LOCK', // [145] -'WIN_OEM_FJ_JISHO', // [146] -'WIN_OEM_FJ_MASSHOU', // [147] -'WIN_OEM_FJ_TOUROKU', // [148] -'WIN_OEM_FJ_LOYA', // [149] -'WIN_OEM_FJ_ROYA', // [150] -'', // [151] -'', // [152] -'', // [153] -'', // [154] -'', // [155] -'', // [156] -'', // [157] -'', // [158] -'', // [159] -'@', // [160] -'!', // [161] -'"', // [162] -'#', // [163] -'$', // [164] -'%', // [165] -'&', // [166] -'_', // [167] -'(', // [168] -')', // [169] -'*', // [170] -'+', // [171] -'|', // [172] -'-', // [173] -'{', // [174] -'}', // [175] -'~', // [176] -'', // [177] -'', // [178] -'', // [179] -'', // [180] -'VOLUME_MUTE', // [181] -'VOLUME_DOWN', // [182] -'VOLUME_UP', // [183] -'', // [184] -'', // [185] -';', // [186] -'=', // [187] -',', // [188] -'-', // [189] -'.', // [190] -'/', // [191] -'`', // [192] -'', // [193] -'', // [194] -'', // [195] -'', // [196] -'', // [197] -'', // [198] -'', // [199] -'', // [200] -'', // [201] -'', // [202] -'', // [203] -'', // [204] -'', // [205] -'', // [206] -'', // [207] -'', // [208] -'', // [209] -'', // [210] -'', // [211] -'', // [212] -'', // [213] -'', // [214] -'', // [215] -'', // [216] -'', // [217] -'', // [218] -'[', // [219] -'\\', // [220] -']', // [221] -"'", // [222] -'', // [223] -'META', // [224] -'ALTGR', // [225] -'', // [226] -'WIN_ICO_HELP', // [227] -'WIN_ICO_00', // [228] -'', // [229] -'WIN_ICO_CLEAR', // [230] -'', // [231] -'', // [232] -'WIN_OEM_RESET', // [233] -'WIN_OEM_JUMP', // [234] -'WIN_OEM_PA1', // [235] -'WIN_OEM_PA2', // [236] -'WIN_OEM_PA3', // [237] -'WIN_OEM_WSCTRL', // [238] -'WIN_OEM_CUSEL', // [239] -'WIN_OEM_ATTN', // [240] -'WIN_OEM_FINISH', // [241] -'WIN_OEM_COPY', // [242] -'WIN_OEM_AUTO', // [243] -'WIN_OEM_ENLW', // [244] -'WIN_OEM_BACKTAB', // [245] -'ATTN', // [246] -'CRSEL', // [247] -'EXSEL', // [248] -'EREOF', // [249] -'PLAY', // [250] -'ZOOM', // [251] -'', // [252] -'PA1', // [253] -'WIN_OEM_CLEAR', // [254] -'' // [255] -]; -var sharedInstance; -/** - * Class KeyMapper - * @param {object} [options] options - * @param {string} options.splitter splitter string default is + - * @ignore - */ - -var KeyMapper = /*#__PURE__*/function () { - function KeyMapper(options) { - this._setSplitter(options); - } - /** - * Set key splitter - * @param {object} options Option object - * @private - */ - - - var _proto = KeyMapper.prototype; - - _proto._setSplitter = function _setSplitter(options) { - var splitter = options ? options.splitter : '+'; - this._splitter = splitter; - } - /** - * Convert event to keyMap - * @param {event} event Event object - * @returns {string} - */ - ; - - _proto.convert = function convert(event) { - var keyMap = []; - - if (event.shiftKey) { - keyMap.push('SHIFT'); - } - - if (event.ctrlKey) { - keyMap.push('CTRL'); - } - - if (event.metaKey) { - keyMap.push('META'); - } - - if (event.altKey) { - keyMap.push('ALT'); - } - - var keyChar = this._getKeyCodeChar(event.keyCode); - - if (keyChar) { - keyMap.push(keyChar); - } - - return keyMap.join(this._splitter); - } - /** - * Get character from key code - * @param {number} keyCode Key code - * @returns {string} - * @private - */ - ; - - _proto._getKeyCodeChar = function _getKeyCodeChar(keyCode) { - var keyCodeCharacter = KEYBOARD_MAP[keyCode]; - return keyCodeCharacter; - } - /** - * Get sharedInstance - * @returns {KeyMapper} - */ - ; - - KeyMapper.getSharedInstance = function getSharedInstance() { - if (!sharedInstance) { - sharedInstance = new KeyMapper(); - } - - return sharedInstance; - } - /** - * get key code for a character - * @param {string} char - a character to be converted - * @returns {number} key code for the char - * @static - */ - ; - - KeyMapper.keyCode = function keyCode(char) { - return KEYBOARD_MAP.indexOf(char); - }; - - return KeyMapper; -}(); - -/* harmony default export */ var keyMapper = (KeyMapper); -// CONCATENATED MODULE: ./src/js/mdListManager.js -/** - * @fileoverview Implements markdown list manager - * @author NHN FE Development Lab - */ -var FIND_LIST_RX = /^[ \t]*([-*]|[\d]+\.)( \[[ xX]])? /; -var FIND_TASK_LIST_RX = /^[ \t]*([*-] |[\d]+\. )(\[[ xX]] )/; -var FIND_UL_RX = /^[ \t]*[-*] .*/; -var FIND_OL_TASK_RX = /^[ \t]*[\d]+\. \[[ xX]] .*/; -var LIST_SYNTAX_RX = /([*-] |[\d]+\. )/; -var TASK_SYNTAX_RX = /([-*] |[\d]+\. )(\[[ xX]] )/; -var LIST_OR_TASK_SYNTAX_RX = /([-*]|[\d]+\.)( \[[ xX]])? /; -var UL_TASK_SYNTAX_RX = /([-*])( \[[ xX]]) /; -var OL_SYNTAX_RX = /([\d])+\.( \[[ xX]])? /; -var FIND_TABLE_RX = /^\|([-\s\w\d\t<>?!@#$%^&*()_=+\\/'";: \r[\]]*\|+)+/i; -var FIND_HEADING_RX = /^#+\s/; -var FIND_BLOCK_RX = /^ {0,3}(```|\||>)/; -/** - * Class MdListManager - * @param {MarkdownEditor} mde - MarkdownEditor instance - * @ignore - */ - -var MdListManager = /*#__PURE__*/function () { - function MdListManager(mde) { - this.cm = mde.getEditor(); - this.doc = this.cm.getDoc(); - this.toastMark = mde.getToastMark(); - /** - * Name property - * @type {string} - */ - - this.name = 'list'; - } - /** - * Sort line number of selection descending - * @param {{from, to}} range start, end CodeMirror range information - * @returns {{start: {number}, end: {number}}} - * @private - */ - - - var _proto = MdListManager.prototype; - - _proto._createSortedLineRange = function _createSortedLineRange(range) { - var isReversed = range.from.line > range.to.line; - var rangeStart = { - line: isReversed ? range.to.line : range.from.line, - ch: 0 - }; - var rangeEnd = { - line: isReversed ? range.from.line : range.to.line, - ch: 0 - }; - return { - start: rangeStart.line, - end: rangeEnd.line - }; - } - /** - * For odering the ol list, search preivous lines and - * calculate ordinal number when find ol list - * @param {number} lineNumber lineNumber - * @returns {number} - * @private - */ - ; - - _proto._calculateOrdinalNumber = function _calculateOrdinalNumber(lineNumber) { - var ordinalNumber = 1; - - for (var i = lineNumber - 1; i >= 0; i -= 1) { - var depth = this._getListDepth(i); - - if (depth === 1 && OL_SYNTAX_RX.exec(this.doc.getLine(i))) { - ordinalNumber = parseInt(RegExp.$1, 10) + 1; - break; - } else if (depth === 0) { - break; - } - } - - return ordinalNumber; - }; - - _proto._isListLine = function _isListLine(lineNumber) { - return !!FIND_LIST_RX.exec(this.doc.getLine(lineNumber)); - } - /** - * If text already have sytax for heading, table and code block, - * can not change to list. - * @param {number} lineNumber lineNumber - * @returns {boolean} - * @private - */ - ; - - _proto._isCanBeList = function _isCanBeList(lineNumber) { - var line = this.doc.getLine(lineNumber); - return !FIND_BLOCK_RX.test(line) && !FIND_TABLE_RX.test(line) && !FIND_HEADING_RX.test(line); - } - /** - * Return a function for change according to type - * @param {string} type ol, ul, task - * @returns {Function} - * @private - */ - ; - - _proto._getChangeFn = function _getChangeFn(type) { - var _this = this; - - var fn; - - switch (type) { - case 'ol': - case 'ul': - fn = function fn(lineNumber) { - return _this._changeToList(lineNumber, type); - }; - - break; - - case 'task': - fn = function fn(lineNumber) { - return _this._changeToTask(lineNumber); - }; - - break; - - default: - break; - } - - return fn; - } - /** - * Change syntax by traversing each line selected. - * @param {{from, to}} range start, end CodeMirror range information - * @param {string} type ol, ul, task - */ - ; - - _proto.changeSyntax = function changeSyntax(range, type) { - var newListLine = []; - - var lineRange = this._createSortedLineRange(range); - - var startLineNumber = lineRange.start, - endLineNumber = lineRange.end; - - var changeFn = this._getChangeFn(type); - - for (var lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber += 1) { - if (!this._isCanBeList(lineNumber)) { - break; - } // If text of lineNumber is not list, cache for inserting blank line - - - if (!this._isListLine(lineNumber)) { - newListLine.push(lineNumber); - } - - changeFn(lineNumber); - } // Should insert blank line before and after new list - - - this._insertBlankLineForNewList(newListLine); - - this.cm.focus(); - }; - - _proto._replaceLineText = function _replaceLineText(text, lineNumber) { - this.doc.replaceRange(text, { - line: lineNumber, - ch: 0 - }); - } - /** - * change to list according to the type. - * @param {number} lineNumber line number - * @param {string} type ol, ul - * @private - */ - ; - - _proto._changeToList = function _changeToList(lineNumber, type) { - var _this2 = this; - - if (this._isListLine(lineNumber)) { - // If type is ol, need ordinal number. - this._changeSameDepthList(lineNumber, type === 'ol' ? function (lineNum, ordinalNumber) { - _this2._replaceListTypeToOL(lineNum, ordinalNumber); - } : function (lineNum) { - _this2._replaceListTypeToUL(lineNum); - }); - } else { - this._replaceLineText(type === 'ol' ? this._calculateOrdinalNumber(lineNumber) + ". " : '* ', lineNumber); - } - } - /** - * change to task list according - * @param {number} lineNumber line number - * @private - */ - ; - - _proto._changeToTask = function _changeToTask(lineNumber) { - if (FIND_TASK_LIST_RX.exec(this.doc.getLine(lineNumber))) { - this._replaceLineTextByRegexp(lineNumber, TASK_SYNTAX_RX, '$1'); - } else if (this._isListLine(lineNumber)) { - this._replaceLineTextByRegexp(lineNumber, LIST_SYNTAX_RX, '$1[ ] '); - } else { - this._replaceLineText('* [ ] ', lineNumber); - } - }; - - _proto._getListDepth = function _getListDepth(lineNumber) { - var depth = 0; - var text = this.doc.getLine(lineNumber); - - if (text) { - var mdNode = this.toastMark.findFirstNodeAtLine(lineNumber + 1); - - while (mdNode && mdNode.type !== 'document') { - if (mdNode.type === 'list') { - depth += 1; - } - - mdNode = mdNode.parent; - } - } - - return depth; - }; - - _proto._findSameDepthList = function _findSameDepthList(listNumber, depth, isIncrease) { - var lineCount = this.doc.lineCount(); - var result = []; - var i = listNumber; - var currentLineDepth; - - while (isIncrease ? i < lineCount - 1 : i > 0) { - i = isIncrease ? i + 1 : i - 1; - currentLineDepth = this._getListDepth(i); - - if (currentLineDepth === depth) { - result.push(i); - } else if (currentLineDepth < depth) { - break; - } - } - - return result; - } - /** - * Find Sampe depth list before and after the line number, - * and then same depth lines change using replacer function - * @param {number} lineNumber line number - * @param {Function} replacer The function should be called with line numbers and ordinal number as arguments. - * @private - */ - ; - - _proto._changeSameDepthList = function _changeSameDepthList(lineNumber, replacer) { - var depth = this._getListDepth(lineNumber); - - var backwardList = this._findSameDepthList(lineNumber, depth, false).reverse(); - - var forwardList = this._findSameDepthList(lineNumber, depth, true); - - var sameDepthList = backwardList.concat([lineNumber]).concat(forwardList); - sameDepthList.forEach(function (lineNum, i) { - replacer(lineNum, i + 1); - }); - } - /** - * Replace text using regular expression - * @param {number} lineNumber Line number - * @param {RegExp} regexp Regexp for find list syntax - * @param {string} replacePattern Replacement string - * @private - */ - ; - - _proto._replaceLineTextByRegexp = function _replaceLineTextByRegexp(lineNumber, regexp, replacePattern) { - var line = this.doc.getLine(lineNumber); - var currentLineStart = { - line: lineNumber, - ch: 0 - }; - var currentLineEnd = { - line: lineNumber, - ch: line.length - }; - line = line.replace(regexp, replacePattern); - this.doc.replaceRange(line, currentLineStart, currentLineEnd); - }; - - _proto._replaceListTypeToUL = function _replaceListTypeToUL(lineNumber) { - var lineText = this.doc.getLine(lineNumber); - - if (UL_TASK_SYNTAX_RX.exec(lineText)) { - this._replaceLineTextByRegexp(lineNumber, UL_TASK_SYNTAX_RX, '$1 '); - } else if (OL_SYNTAX_RX.exec(lineText)) { - this._replaceLineTextByRegexp(lineNumber, OL_SYNTAX_RX, '* '); - } - }; - - _proto._replaceListTypeToOL = function _replaceListTypeToOL(lineNumber, ordinalNumber) { - var lineText = this.doc.getLine(lineNumber); - - if (FIND_UL_RX.exec(lineText) || FIND_OL_TASK_RX.exec(lineText)) { - this._replaceLineTextByRegexp(lineNumber, LIST_OR_TASK_SYNTAX_RX, ordinalNumber + ". "); - } else if (OL_SYNTAX_RX.exec(lineText)) { - if (parseInt(RegExp.$1, 10) !== ordinalNumber) { - this._replaceLineTextByRegexp(lineNumber, OL_SYNTAX_RX, ordinalNumber + ". "); - } - } - } - /** - * The new list must have a blank line before and after. - * @param {Array} newListLines lines that changed to list - * @private - */ - ; - - _proto._insertBlankLineForNewList = function _insertBlankLineForNewList(newListLines) { - var length = newListLines.length; - - if (length) { - var startLineNumber = newListLines[0]; - var endLineNumber = newListLines[length - 1]; - - if (this._isNotBlankNotListLine(endLineNumber + 1)) { - this.doc.replaceRange('\n', { - line: endLineNumber, - ch: this.doc.getLine(endLineNumber).length - }); - } - - if (startLineNumber > 0 && this._isNotBlankNotListLine(startLineNumber - 1)) { - this.doc.replaceRange('\n', { - line: startLineNumber, - ch: 0 - }); - } - } - }; - - _proto._isNotBlankNotListLine = function _isNotBlankNotListLine(lineNumber) { - return !!this.doc.getLine(lineNumber) && !this._isListLine(lineNumber); - }; - - return MdListManager; -}(); - -/* harmony default export */ var mdListManager = (MdListManager); -// CONCATENATED MODULE: ./src/js/componentManager.js -/** - * @fileoverview Implements ComponentManager - * @author NHN FE Development Lab - */ - -/** - * Class ComponentManager - * @param {MarkdownEditor|WysiwygEditor} editor - Editor instance - * @ignore - */ -var ComponentManager = /*#__PURE__*/function () { - function ComponentManager(editor) { - /** - * private - * @type {object} - * @private - */ - this._managers = {}; - this._editor = editor; - } - /** - * addManager - * Add manager - * @param {string|function} nameOrConstructor Manager name or constructor - * @param {function} [ManagerConstructor] Constructor - */ - - - var _proto = ComponentManager.prototype; - - _proto.addManager = function addManager(nameOrConstructor, ManagerConstructor) { - if (!ManagerConstructor) { - ManagerConstructor = nameOrConstructor; - nameOrConstructor = null; - } - - var instance = new ManagerConstructor(this._editor); - this._managers[nameOrConstructor || instance.name] = instance; - } - /** - * getManager - * Get manager by manager name - * @param {string} name Manager name - * @returns {object} manager - */ - ; - - _proto.getManager = function getManager(name) { - return this._managers[name]; - } - /** - * Remove Manager. - * @param {string} name - manager name - */ - ; - - _proto.removeManager = function removeManager(name) { - var manager = this.getManager(name); - - if (!manager) { - return; - } - - if (manager.destroy) { - manager.destroy(); - } - - delete this._managers[name]; - }; - - return ComponentManager; -}(); - -/* harmony default export */ var componentManager = (ComponentManager); -// CONCATENATED MODULE: ./src/js/mdTextObject.js -/** - * @fileoverview Implements markdown textObject - * @author NHN FE Development Lab - */ - -/** - * Class Markdown textObject - * @param {MarkdownEditor} mde - MarkdownEditor instance - * @param {object} range - range - */ -var MdTextObject = /*#__PURE__*/function () { - function MdTextObject(mde, range) { - this._mde = mde; - this.setRange(range || mde.getRange()); - } - /** - * Set start - * @param {object} rangeStart Start of range - * @private - */ - - - var _proto = MdTextObject.prototype; - - _proto._setStart = function _setStart(rangeStart) { - this._start = rangeStart; - } - /** - * Set end - * @param {object} rangeEnd End of range - * @private - */ - ; - - _proto._setEnd = function _setEnd(rangeEnd) { - this._end = rangeEnd; - } - /** - * Set range to given range - * @param {object} range Range object - */ - ; - - _proto.setRange = function setRange(range) { - this._setStart(range.start); - - this._setEnd(range.end); - } - /** - * Set start to end - * @param {object} range Range object - */ - ; - - _proto.setEndBeforeRange = function setEndBeforeRange(range) { - this._setEnd(range.start); - } - /** - * Expand startOffset by 1 - */ - ; - - _proto.expandStartOffset = function expandStartOffset() { - var start = this._start; - - if (start.ch !== 0) { - start.ch -= 1; - } - } - /** - * Expand endOffset by 1 - */ - ; - - _proto.expandEndOffset = function expandEndOffset() { - var end = this._end; - - if (end.ch < this._mde.getEditor().getDoc().getLine(end.line).length) { - end.ch += 1; - } - } - /** - * Get current selection's text content - * @returns {{start: {line: number, ch: number}, end: {line: number, ch: number}}} - */ - ; - - _proto.getTextContent = function getTextContent() { - return this._mde.getEditor().getRange(this._start, this._end); - } - /** - * Replace current selection's content with given text content - * @param {string} content Replacement content - */ - ; - - _proto.replaceContent = function replaceContent(content) { - this._mde.getEditor().replaceRange(content, this._start, this._end, '+input'); - } - /** - * Delete current selection's content - */ - ; - - _proto.deleteContent = function deleteContent() { - this._mde.getEditor().replaceRange('', this._start, this._end, '+delete'); - } - /** - * peek StartBeforeOffset - * @param {number} offset Offset - * @returns {{start: {line: number, ch: number}, end: {line: number, ch: number}}} - */ - ; - - _proto.peekStartBeforeOffset = function peekStartBeforeOffset(offset) { - var peekStart = { - line: this._start.line, - ch: Math.max(this._start.ch - offset, 0) - }; - return this._mde.getEditor().getRange(peekStart, this._start); - }; - - return MdTextObject; -}(); - -/* harmony default export */ var mdTextObject = (MdTextObject); -// EXTERNAL MODULE: ./src/js/utils/markdown.js -var markdown = __webpack_require__(2); - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/type/isFunction.js -var isFunction = __webpack_require__(27); -var isFunction_default = /*#__PURE__*/__webpack_require__.n(isFunction); - -// CONCATENATED MODULE: ./src/js/markTextHelper.js -function markTextHelper_extends() { markTextHelper_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return markTextHelper_extends.apply(this, arguments); } - - - - -var CLS_PREFIX = 'tui-md-'; -var classNameMap = applyClsToValue({ - DELIM: 'delimiter', - META: 'meta', - TEXT: 'marked-text', - THEMATIC_BREAK: 'thematic-break', - CODE_BLOCK: 'code-block', - TABLE: 'table', - HTML: 'html' -}); -var delimSize = { - strong: 2, - emph: 1, - strike: 2 -}; - -function cls() { - for (var _len = arguments.length, names = new Array(_len), _key = 0; _key < _len; _key++) { - names[_key] = arguments[_key]; - } - - return names.map(function (className) { - return "" + CLS_PREFIX + className; - }).join(' '); -} - -function applyClsToValue(obj) { - forEachOwnProperties_default()(obj, function (value, key) { - obj[key] = cls(value); - }); - return obj; -} - -function markTextHelper_markInfo(start, end, className) { - return { - start: start, - end: end, - className: className - }; -} - -function heading(_ref, start, end) { - var level = _ref.level, - headingType = _ref.headingType; - var marks = [markTextHelper_markInfo(start, end, cls('heading', "heading" + level))]; - - if (headingType === 'atx') { - marks.push(markTextHelper_markInfo(start, Object(markdown["a" /* addChPos */])(start, level), classNameMap.DELIM)); - } else { - marks.push(markTextHelper_markInfo(Object(markdown["m" /* setChPos */])(end, 0), end, classNameMap.DELIM + " setext")); - } - - return { - marks: marks - }; -} - -function emphasisAndStrikethrough(_ref2, start, end) { - var type = _ref2.type; - return { - marks: [markTextHelper_markInfo(start, end, cls("" + type)), markTextHelper_markInfo(start, Object(markdown["a" /* addChPos */])(start, delimSize[type]), classNameMap.DELIM), markTextHelper_markInfo(Object(markdown["a" /* addChPos */])(end, -delimSize[type]), end, classNameMap.DELIM)] - }; -} - -function markLink(start, end, linkTextStart, lastChildCh) { - return [markTextHelper_markInfo(start, end, cls('link')), markTextHelper_markInfo(linkTextStart, Object(markdown["m" /* setChPos */])(end, lastChildCh), cls('link-desc')), markTextHelper_markInfo(Object(markdown["m" /* setChPos */])(start, linkTextStart.ch + 1), Object(markdown["m" /* setChPos */])(end, lastChildCh - 1), classNameMap.TEXT), markTextHelper_markInfo(Object(markdown["m" /* setChPos */])(end, lastChildCh), end, cls('link-url')), markTextHelper_markInfo(Object(markdown["m" /* setChPos */])(end, lastChildCh + 1), Object(markdown["a" /* addChPos */])(end, -1), classNameMap.TEXT)]; -} - -function markTextHelper_image(_ref3, start, end) { - var lastChild = _ref3.lastChild; - var lastChildCh = lastChild ? Object(markdown["c" /* getMdEndCh */])(lastChild) + 1 : 3; // 3: length of '![]' - - var linkTextEnd = Object(markdown["a" /* addChPos */])(start, 1); - return { - marks: [markTextHelper_markInfo(start, linkTextEnd, classNameMap.META)].concat(markLink(start, end, linkTextEnd, lastChildCh)) - }; -} - -function markTextHelper_link(_ref4, start, end) { - var lastChild = _ref4.lastChild, - extendedAutolink = _ref4.extendedAutolink; - var lastChildCh = lastChild ? Object(markdown["c" /* getMdEndCh */])(lastChild) + 1 : 2; // 2: length of '[]' - - var marks = extendedAutolink ? [markTextHelper_markInfo(start, end, cls('link', 'link-desc') + " " + classNameMap.TEXT)] : markLink(start, end, start, lastChildCh); - return { - marks: marks - }; -} - -function markTextHelper_code(_ref5, start, end) { - var tickCount = _ref5.tickCount; - var openDelimEnd = Object(markdown["a" /* addChPos */])(start, tickCount); - var closeDelimStart = Object(markdown["a" /* addChPos */])(end, -tickCount); - return { - marks: [markTextHelper_markInfo(start, end, cls('code')), markTextHelper_markInfo(start, openDelimEnd, classNameMap.DELIM + " start"), markTextHelper_markInfo(openDelimEnd, closeDelimStart, classNameMap.TEXT), markTextHelper_markInfo(closeDelimStart, end, classNameMap.DELIM + " end")] - }; -} - -function markTextHelper_codeBlock(node, start, end, endLine) { - var fenceOffset = node.fenceOffset, - fenceLength = node.fenceLength, - fenceChar = node.fenceChar, - info = node.info, - infoPadding = node.infoPadding, - parent = node.parent; - var fenceEnd = fenceOffset + fenceLength; - var marks = [markTextHelper_markInfo(Object(markdown["m" /* setChPos */])(start, 0), end, classNameMap.CODE_BLOCK)]; - - if (fenceChar) { - marks.push(markTextHelper_markInfo(start, Object(markdown["a" /* addChPos */])(start, fenceEnd), classNameMap.DELIM)); - } - - if (info) { - marks.push(markTextHelper_markInfo(Object(markdown["m" /* setChPos */])(start, fenceEnd), Object(markdown["m" /* setChPos */])(start, fenceEnd + infoPadding + info.length), classNameMap.META)); - } - - var codeBlockEnd = "^(\\s{0,3})(" + fenceChar + "{" + fenceLength + ",})"; - var CLOSED_RX = new RegExp(codeBlockEnd); - - if (CLOSED_RX.test(endLine)) { - marks.push(markTextHelper_markInfo(Object(markdown["m" /* setChPos */])(end, 0), end, classNameMap.DELIM)); - } - - var lineBackground = parent.type !== 'item' && parent.type !== 'blockQuote' ? { - start: start.line, - end: end.line, - className: classNameMap.CODE_BLOCK - } : null; - return { - marks: marks, - lineBackground: markTextHelper_extends({}, lineBackground) - }; -} - -function markListItemChildren(node, className) { - var marks = []; - - while (node) { - var _node = node, - type = _node.type; - - if (type === 'paragraph' || type === 'codeBlock') { - marks.push(markTextHelper_markInfo({ - line: Object(markdown["f" /* getMdStartLine */])(node) - 1, - ch: Object(markdown["e" /* getMdStartCh */])(node) - 1 - }, { - line: Object(markdown["d" /* getMdEndLine */])(node) - 1, - ch: Object(markdown["c" /* getMdEndCh */])(node) - }, className)); - } - - node = node.next; - } - - return marks; -} - -function markParagraphInBlockQuote(node) { - var marks = []; - - while (node) { - marks.push(markTextHelper_markInfo({ - line: Object(markdown["f" /* getMdStartLine */])(node) - 1, - ch: Object(markdown["e" /* getMdStartCh */])(node) - 1 - }, { - line: Object(markdown["d" /* getMdEndLine */])(node) - 1, - ch: Object(markdown["c" /* getMdEndCh */])(node) - }, classNameMap.TEXT)); - node = node.next; - } - - return marks; -} - -function blockQuote(node, start, end) { - var marks = node.parent && node.parent.type !== 'blockQuote' ? [markTextHelper_markInfo(start, end, cls('block-quote'))] : []; - - if (node.firstChild) { - var childMarks = []; - - if (node.firstChild.type === 'paragraph') { - childMarks = markParagraphInBlockQuote(node.firstChild.firstChild, classNameMap.TEXT); - } else if (node.firstChild.type === 'list') { - childMarks = markListItemChildren(node.firstChild, classNameMap.TEXT); - } - - marks = [].concat(marks, childMarks); - } - - return { - marks: marks - }; -} - -function getClassNameOfListItem(node) { - var depth = 0; - - while (node.parent.parent && node.parent.parent.type === 'item') { - node = node.parent.parent; - depth += 1; - } - - var newClassName = ['list-item-odd', 'list-item-even'][depth % 2]; // @TODO remove it in the next major version - // these class names are for the legacy style 'old.css' - - var oldClassName = ['fisrt', 'second', 'third'][depth % 3]; - return cls('list-item', "" + newClassName) + " " + oldClassName; -} - -function markTextHelper_item(node, start) { - var itemClassName = getClassNameOfListItem(node); - var _node$listData = node.listData, - padding = _node$listData.padding, - task = _node$listData.task; - return { - marks: [markTextHelper_markInfo(start, Object(markdown["a" /* addChPos */])(start, padding), itemClassName + " " + cls('list-item-bullet'))].concat(task ? [markTextHelper_markInfo(Object(markdown["a" /* addChPos */])(start, padding), Object(markdown["a" /* addChPos */])(start, padding + 3), itemClassName + " " + classNameMap.DELIM), markTextHelper_markInfo(Object(markdown["a" /* addChPos */])(start, padding + 1), Object(markdown["a" /* addChPos */])(start, padding + 2), classNameMap.META)] : [], markListItemChildren(node.firstChild, itemClassName + " " + classNameMap.TEXT)) - }; -} - -var markNodeFuncMap = { - heading: heading, - strong: emphasisAndStrikethrough, - emph: emphasisAndStrikethrough, - strike: emphasisAndStrikethrough, - link: markTextHelper_link, - image: markTextHelper_image, - code: markTextHelper_code, - codeBlock: markTextHelper_codeBlock, - blockQuote: blockQuote, - item: markTextHelper_item -}; -var simpleMarkClassNameMap = { - thematicBreak: classNameMap.THEMATIC_BREAK, - table: classNameMap.TABLE, - tableCell: classNameMap.TEXT, - htmlInline: classNameMap.HTML -}; -/** - * Gets mark information to the markdown node. - * @param {Object} node - node returned from ToastMark - * @param {Object} start - start node's data - * @param {Object} end - end node's data - * @param {Object} endLine - end line's data - * @returns {?Object} mark information - * @ignore - */ - -function getMarkInfo(node, start, end, endLine) { - var type = node.type; - - if (isFunction_default()(markNodeFuncMap[type])) { - return markNodeFuncMap[type](node, start, end, endLine); - } - - if (simpleMarkClassNameMap[type]) { - return { - marks: [markTextHelper_markInfo(start, end, simpleMarkClassNameMap[type])] - }; - } - - return null; -} -// CONCATENATED MODULE: ./src/js/markdownEditor.js -function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } it = o[Symbol.iterator](); return it.next.bind(it); } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -function markdownEditor_extends() { markdownEditor_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return markdownEditor_extends.apply(this, arguments); } - -/** - * @fileoverview Implements markdown editor - * @author NHN FE Development Lab - */ - - - - - - - - -var markdownEditor_keyMapper = keyMapper.getSharedInstance(); -var defaultToolbarState = { - strong: false, - emph: false, - strike: false, - thematicBreak: false, - blockQuote: false, - code: false, - codeBlock: false, - list: false, - taskList: false, - orderedList: false, - heading: false, - table: false -}; - -function getToolbarStateType(_ref) { - var type = _ref.type, - listData = _ref.listData; - - if (type === 'list' || type === 'item') { - if (listData.task) { - return 'taskList'; - } - - return listData.type === 'ordered' ? 'orderedList' : 'list'; - } - - if (type.indexOf('table') !== -1) { - return 'table'; - } - - return type; -} - -function getToolbarState(targetNode, ch, mdLine, mdCh) { - var state = markdownEditor_extends({}, defaultToolbarState); - - var listEnabled = false; - Object(markdown["n" /* traverseParentNodes */])(targetNode, function (mdNode) { - var type = getToolbarStateType(mdNode); - - if (!isBoolean_default()(state[type])) { - return; - } - - if (type === 'list' || type === 'orderedList') { - if (!listEnabled) { - state[type] = true; - listEnabled = true; - } - } else { - state[type] = true; - } - }); // if position is matched to start, end position of inline node, highlighting is ignored - - if (Object(markdown["k" /* isStyledTextNode */])(targetNode) && (mdCh === ch && Object(markdown["d" /* getMdEndLine */])(targetNode) === mdLine || mdCh === Object(markdown["c" /* getMdEndCh */])(targetNode) + 1 && mdLine === Object(markdown["d" /* getMdEndLine */])(targetNode) || mdCh === Object(markdown["e" /* getMdStartCh */])(targetNode) && mdLine === Object(markdown["f" /* getMdStartLine */])(targetNode))) { - state[targetNode.type] = false; - } - - return state; -} -/** - * Return whether state changed or not - * @param {object} previousState - Previous state - * @param {object} currentState - Current state - * @returns {boolean} - changed state - * @private - */ - - -function isToolbarStateChanged(previousState, currentState) { - if (!previousState && !currentState) { - return false; - } - - if (!previousState && currentState || previousState && !currentState) { - return true; - } - - return Object.keys(currentState).some(function (type) { - return previousState[type] !== currentState[type]; - }); -} - -var ATTR_NAME_MARK = 'data-tui-mark'; -var TASK_MARKER_KEY_RX = /x|backspace/i; -/** - * Class MarkdownEditor - * @param {HTMLElement} el - container element - * @param {EventManager} eventManager - event manager - * @param {Object} options - options of editor - */ - -var markdownEditor_MarkdownEditor = /*#__PURE__*/function (_CodeMirrorExt) { - _inheritsLoose(MarkdownEditor, _CodeMirrorExt); - - function MarkdownEditor(el, eventManager, toastMark, options) { - var _this; - - _this = _CodeMirrorExt.call(this, el, { - dragDrop: true, - allowDropFileTypes: ['image'], - extraKeys: { - Enter: function Enter() { - return _this.eventManager.emit('command', 'AddLine'); - }, - Tab: function Tab() { - return _this.eventManager.emit('command', 'MoveNextCursorOrIndent'); - }, - 'Shift-Tab': function ShiftTab() { - return _this.eventManager.emit('command', 'MovePrevCursorOrOutdent'); - }, - 'Shift-Ctrl-X': function ShiftCtrlX() { - return _this.eventManager.emit('command', 'ToggleTaskMarker'); - } - }, - viewportMargin: options && options.height === 'auto' ? Infinity : 10 - }) || this; - _this.eventManager = eventManager; - _this.componentManager = new componentManager(_assertThisInitialized(_this)); - _this.toastMark = toastMark; - - _this.componentManager.addManager(mdListManager); - /** - * latest state info - * @type {object} - * @private - */ - - - _this._latestState = null; - /** - * map of marked lines - * @type {Object. - */ - - - - - - - -var DEFAULT_COLOR = 'rgb(34, 34, 34)'; -/** - * Class WwPasteContentHelper - * @param {WysiwygEditor} wwe - wysiwygEditor instance - * @ignore - */ - -var wwPasteContentHelper_WwPasteContentHelper = /*#__PURE__*/function () { - function WwPasteContentHelper(wwe) { - this.wwe = wwe; - } - /** - * Process paste data before paste - * @param {HTMLElement} container - clipboard container - */ - - - var _proto = WwPasteContentHelper.prototype; - - _proto.preparePaste = function preparePaste(container) { - var range = this.wwe.getEditor().getSelection().cloneRange(); - var wwCodeblockManager = this.wwe.componentManager.getManager('codeblock'); - var firstBlockIsTaken = false; - var tempContainer = document.createElement('div'); - var nodeName, node, isPastingList; - - this._pasteFirstAid(container); - - var childNodes = toArray_default()(container.childNodes); - - while (childNodes.length) { - node = childNodes[0]; - nodeName = dom["a" /* default */].getNodeName(node); - isPastingList = nodeName === 'LI' || nodeName === 'UL' || nodeName === 'OL'; - - if (wwCodeblockManager.isInCodeBlock(range)) { - dom["a" /* default */].append(tempContainer, wwCodeblockManager.prepareToPasteOnCodeblock(childNodes)); - } else if (isPastingList) { - dom["a" /* default */].append(tempContainer, this._prepareToPasteList(childNodes, range, firstBlockIsTaken)); - firstBlockIsTaken = true; - } else { - dom["a" /* default */].append(tempContainer, childNodes.shift()); - } - } - - container.innerHTML = tempContainer.innerHTML; - } - /** - * Wrap orphan node(inline, text) with div element - * @param {HTMLElement} container - clipboard container - * @returns {DocumentFragment} - * @private - */ - ; - - _proto._wrapOrphanNodeWithDiv = function _wrapOrphanNodeWithDiv(container) { - var tempContainer = document.createElement('div'); - var currentDiv; - toArray_default()(container.childNodes).forEach(function (node) { - var isTextNode = node.nodeType === 3; - /* eslint-disable max-len */ - - var isInlineNode = /^(SPAN|A|CODE|EM|I|STRONG|B|S|U|ABBR|ACRONYM|CITE|DFN|KBD|SAMP|VAR|BDO|Q|SUB|SUP)$/gi.test(node.tagName); - var isBR = node.nodeName === 'BR'; - /* eslint-enable max-len */ - - if (isTextNode || isInlineNode || isBR) { - if (!currentDiv) { - currentDiv = document.createElement('div'); - tempContainer.appendChild(currentDiv); - } - - currentDiv.appendChild(node); - - if (isBR) { - currentDiv = null; - } - } else { - if (currentDiv && currentDiv.lastChild.tagName !== 'BR') { - currentDiv.appendChild(document.createElement('br')); - } - - currentDiv = null; - tempContainer.appendChild(node); - } - }); - return tempContainer.innerHTML; - } - /** - * Sanitize content of element - * @param {HTMLElement} container - root element of content to sanitize - * @private - */ - ; - - _proto._sanitizeHtml = function _sanitizeHtml(container) { - var sanitizer = this.wwe.getSanitizer(); - var html = Object(htmlSanitizer["a" /* default */])(container.innerHTML, true); - - if (sanitizer && sanitizer !== htmlSanitizer["a" /* default */]) { - html = sanitizer(html); - } - - container.innerHTML = html; - } - /** - * Processing paste data after paste - * @param {HTMLElement} container - clipboard container - * @private - */ - ; - - _proto._pasteFirstAid = function _pasteFirstAid(container) { - var _this = this; - - this._sanitizeHtml(container); - - dom["a" /* default */].findAll(container, '*').forEach(function (node) { - _this._removeStyles(node); - }); - var blockTags = 'div, section, article, aside, nav, menus, p'; - - this._unwrapIfNonBlockElementHasBr(container); - - this._unwrapNestedBlocks(container, blockTags); - - this._removeUnnecessaryBlocks(container, blockTags); - - container.innerHTML = this._wrapOrphanNodeWithDiv(container); - - this._preprocessPreElement(container); - - this._preprocessListElement(container); - - this._preprocessTableElement(container); - - toArray_default()(container.children).forEach(function (childNode) { - if (dom["a" /* default */].getNodeName(childNode) === 'BR') { - dom["a" /* default */].remove(childNode); - } - }); - }; - - _proto._preprocessListElement = function _preprocessListElement(container) { - var wwListManager = this.wwe.componentManager.getManager('list'); - container.innerHTML = wwListManager.convertToArbitraryNestingList(container.innerHTML); - } - /** - * PRE tag formatting - * @param {HTMLElement} container - clipboard container - * @private - */ - ; - - _proto._preprocessPreElement = function _preprocessPreElement(container) { - var wwCodeblockManager = this.wwe.componentManager.getManager('codeblock'); - wwCodeblockManager.modifyCodeBlockForWysiwyg(container); - } - /** - * Unwrap span children of document fragment with div element - * @param {HTMLElement} container - clipboard container - * @private - */ - ; - - _proto._unwrapIfNonBlockElementHasBr = function _unwrapIfNonBlockElementHasBr(container) { - var nonBlockElements = dom["a" /* default */].findAll(container, 'span, a, b, em, i, s'); - nonBlockElements.forEach(function (node) { - var brChildren = dom["a" /* default */].children(node, 'br'); - - if (brChildren.length && node.nodeName !== 'LI' && node.nodeName !== 'UL') { - dom["a" /* default */].unwrap(node); - } - }); - } - /** - * Unwrap nested block elements - * @param {HTMLElement} container - clipboard container - * @param {string} blockTags - Tag names of block tag - * @private - */ - ; - - _proto._unwrapNestedBlocks = function _unwrapNestedBlocks(container, blockTags) { - var leafElements = dom["a" /* default */].findAll(container, '*').filter(function (node) { - return !matches_default()(node, 'b,s,i,em,code,span,hr') && !node.firstChild; - }); - leafElements.forEach(function (node) { - var leafElement = node.nodeName === 'BR' ? node.parentNode : node; - - while (dom["a" /* default */].parents(leafElement, blockTags).length) { - var parent = dom["a" /* default */].parent(leafElement, blockTags); - - if (parent && parent !== container) { - dom["a" /* default */].unwrap(parent); - } else { - leafElement = leafElement.parentElement; - } - } - }); - } - /** - * Remove unnecessary block element in pasting data - * @param {HTMLElement} container - clipboard container - * @param {string} blockTags - Tag names of block tag - * @private - */ - ; - - _proto._removeUnnecessaryBlocks = function _removeUnnecessaryBlocks(container, blockTags) { - dom["a" /* default */].findAll(container, blockTags).forEach(function (blockElement) { - var tagName = blockElement.tagName; - var isDivElement = tagName === 'DIV'; - var isInListItem = !!dom["a" /* default */].parent(blockElement, 'li'); - var isInBlockquote = !!dom["a" /* default */].parent(blockElement, 'blockquote'); - var hasBlockChildElement = !!dom["a" /* default */].children(blockElement, blockTags).length; - - if (isDivElement && (isInListItem || isInBlockquote || !hasBlockChildElement)) { - return; - } - - if (blockElement.lastChild && blockElement.lastChild.nodeName !== 'BR') { - blockElement.appendChild(document.createElement('br')); - } - - dom["a" /* default */].replaceWith(blockElement, blockElement.innerHTML); - }); - } - /** - * Remove inline style - * @param {Node} node Node for remove style attribute - * @private - */ - ; - - _proto._removeStyles = function _removeStyles(node) { - var colorValue; - - if (dom["a" /* default */].getNodeName(node) !== 'SPAN') { - node.removeAttribute('style'); - } else { - // Most browser return computed color value even if without style attribute - if (node.getAttribute('style')) { - colorValue = node.style.color; - } - - node.removeAttribute('style'); - - if (colorValue && colorValue !== DEFAULT_COLOR) { - css_default()(node, { - color: colorValue - }); - } else { - dom["a" /* default */].unwrap(node); - } - } - } - /** - * Processing before paste list - * @param {Array.} nodes Pasting data - * @param {object} rangeInfo Range information - * @param {boolean} firstBlockIsTaken Whether first block element taken or not - * @returns {DocumentFragment} - * @private - */ - ; - - _proto._prepareToPasteList = function _prepareToPasteList(nodes, rangeInfo, firstBlockIsTaken) { - var nodeName = dom["a" /* default */].getNodeName(nodes[0]); - var node = nodes.shift(); - var newFragment = this.wwe.getEditor().getDocument().createDocumentFragment(); // IE somethimes returns ul without li - - if (nodeName !== 'LI' && nodes.length && nodes[0].tagName === 'LI') { - nodeName = 'LI'; - node = this._makeNodeAndAppend({ - tagName: nodeName - }, node); - } // pasting list into list, we should care indentation - - - if (nodeName === 'OL' || nodeName === 'UL') { - // ignore cursor if pasting data has block - if (!firstBlockIsTaken && this.wwe.getEditor().hasFormat('LI')) { - dom["a" /* default */].append(newFragment, this._wrapCurrentFormat(node)); - } else { - newFragment.appendChild(node); - } - } else if (nodeName === 'LI') { - // handle list group - var listGroup = this.wwe.getEditor().getDocument().createDocumentFragment(); - listGroup.appendChild(node); - - while (nodes.length && nodes[0].tagName === 'LI') { - listGroup.appendChild(nodes.shift()); - } // pasting list into list, we should care indentation - // ignore cursor if pasting data has block - - - if (!firstBlockIsTaken && this.wwe.getEditor().hasFormat('LI')) { - dom["a" /* default */].append(newFragment, this._wrapCurrentFormat(listGroup)); - } else if (rangeInfo && (rangeInfo.commonAncestorName === 'UL' || rangeInfo.commonAncestorName === 'OL')) { - dom["a" /* default */].append(newFragment, this._makeNodeAndAppend({ - tagName: rangeInfo.commonAncestorName - }, listGroup)); // list from outside - } else { - dom["a" /* default */].append(newFragment, this._makeNodeAndAppend({ - tagName: 'UL' - }, listGroup)); - } - } - - return this._getResolvePastedListDepthToCurrentDepth(rangeInfo.startContainer, node, newFragment); - } - /** - * Unwrap fragment first child for pasting node inline - * @param {Node} node Pasting DocumentFragment - * @returns {NodeList} - * @private - */ - ; - - _proto._unwrapFragmentFirstChildForPasteAsInline = function _unwrapFragmentFirstChildForPasteAsInline(node) { - dom["a" /* default */].findAll(node, 'br').forEach(function (br) { - return dom["a" /* default */].remove(br); - }); - return node.childNodes; - } - /** - * Wrap nodes with current format - * @param {DocumentFragment} nodes P - * @returns {HTMLElement} - * @private - */ - ; - - _proto._wrapCurrentFormat = function _wrapCurrentFormat(nodes) { - var _this2 = this; - - var currentTagName; // expand to pasting area - - this._eachCurrentPath(function (path) { - if (path.tagName !== 'DIV') { - if (dom["a" /* default */].isElemNode(nodes)) { - currentTagName = nodes.tagName; - } else { - currentTagName = nodes.firstChild.tagName; - } - - if (path.tagName !== currentTagName) { - nodes = _this2._makeNodeAndAppend(path, nodes); - } - } - }); - - return nodes; - }; - - _proto._eachCurrentPath = function _eachCurrentPath(iteratee) { - var paths = dom["a" /* default */].getPath(this.wwe.getEditor().getSelection().startContainer, this.wwe.getBody()); - - for (var i = paths.length - 1; i > -1; i -= 1) { - iteratee(paths[i]); - } - } - /** _makeNodeAndAppend - * make node and append their own children - * @param {HTMLElement} pathInfo HTMLElement to make - * @param {HTMLElement} content Nodes to append - * @returns {HTMLElement} node - * @private - */ - ; - - _proto._makeNodeAndAppend = function _makeNodeAndAppend(pathInfo, content) { - var node = document.createElement("" + pathInfo.tagName); - node.appendChild(content); - - if (pathInfo.id) { - node.setAttribute('id', pathInfo.id); - } - - if (pathInfo.className) { - addClass_default()(node, pathInfo.className); - } - - return node; - } - /** - * Pasting table element pre-process - * @param {HTMLElement} container - clipboard container - * @private - */ - ; - - _proto._preprocessTableElement = function _preprocessTableElement(container) { - this._removeColgroup(container); - - this._completeTableIfNeed(container); - - this._updateTableIDClassName(container); - } - /** - * Remove colgroup tag - * @param {HTMLElement} container - clipboard container - * @private - **/ - ; - - _proto._removeColgroup = function _removeColgroup(container) { - var colgroup = container.querySelector('colgroup'); - - if (colgroup) { - dom["a" /* default */].remove(colgroup); - } - } - /** - * Complete and append table to fragment - * @param {HTMLElement} container - clipboard container - * @private - */ - ; - - _proto._completeTableIfNeed = function _completeTableIfNeed(container) { - var tableManager = this.wwe.componentManager.getManager('table'); - var wrapperTr = tableManager.wrapDanglingTableCellsIntoTrIfNeed(container); - - if (wrapperTr) { - dom["a" /* default */].append(container, wrapperTr); - } - - var wrapperTbody = tableManager.wrapTrsIntoTbodyIfNeed(container); - - if (wrapperTbody) { - dom["a" /* default */].append(container, wrapperTbody); - } - - var wrapperTable = tableManager.wrapTheadAndTbodyIntoTableIfNeed(container); - - if (wrapperTable) { - dom["a" /* default */].append(container, wrapperTable); - } - } - /** - * Update table ID class name in fragment - * @param {HTMLElement} container - clipboard container - * @private - */ - ; - - _proto._updateTableIDClassName = function _updateTableIDClassName(container) { - var tableManager = this.wwe.componentManager.getManager('table'); - var tables = dom["a" /* default */].findAll(container, 'table'); - tables.forEach(function (table) { - var foundClassName = table.className.match(/.*\s*(te-content-table-\d+)\s*.*/); - - if (foundClassName) { - removeClass_default()(table, foundClassName[0]); - } - }); - tables.forEach(function (table) { - addClass_default()(table, tableManager.getTableIDClassName()); - }); - } - /** - * get the list resolved the depth to current list depth - * @param {HTMLElement} currentEl - current list element - * @param {HTMLElement} orgPastedNode - original pasted data - * @param {DocumentFragment} fragment - preprocessed data - * @returns {HTMLElement} resolved element - * @private - */ - ; - - _proto._getResolvePastedListDepthToCurrentDepth = function _getResolvePastedListDepthToCurrentDepth(currentEl, orgPastedNode, fragment) { - var currentListDepth = this._getListDepth(currentEl); - - var continuousDepth = this._getContinuousDepth(orgPastedNode); - - fragment = this._getRemovedUnnecessaryListWrapper(fragment, orgPastedNode); // If the depth of the pasted data is greater than current depth, get child element for resolving the depth. - // For example, If 2-depth list is pasted to 1-depth list element, 2-depth list should be changed to 1-depth. - - while (currentListDepth < continuousDepth) { - if (fragment.firstChild.tagName !== 'UL' && fragment.firstChild.tagName !== 'OL') { - break; - } - - var childNodes = toArray_default()(fragment.childNodes); - fragment = fragment.firstChild; - /* eslint-disable no-loop-func */ - - childNodes.filter(function (node) { - return node !== fragment; - }).forEach(function (node) { - fragment.insertAdjacentElement('beforeend', node); - }); - /* eslint-enable no-loop-func */ - - continuousDepth -= 1; - } // If the depth of the pasted data is less than current depth, wrap the list element for resolving the depth. - // For example, If 1-depth list is pasted to 2-depth list element, 1-depth list should be changed to 2-depth. - - - while (currentListDepth && currentListDepth > continuousDepth) { - var rootList = fragment.firstChild.parentElement; - var list = document.createElement(rootList.tagName); - list.appendChild(rootList); - fragment = list; - continuousDepth += 1; - } - - if (currentListDepth && !currentEl.textContent) { - dom["a" /* default */].remove(currentEl); - } - - return fragment; - } - /** - * get the depth of the list item element - * @param {HTMLElement} el - target element - * @returns {number} depth - * @private - */ - ; - - _proto._getListDepth = function _getListDepth(el) { - var depth = 0; // Since the list outside the editor can be found, - // so make sure to traverse only the editor's container. - - var root = this.wwe.getBody(); - - while (el && el !== root) { - if (el.tagName === 'UL' || el.tagName === 'OL') { - depth += 1; - } - - el = el.parentNode; - } - - return depth; - } - /** - * get the continuous depth of the list. - * the continuous depth of below example is 2 - *
    - *
  • - *
      - *
    • ...
    • - *
        ...
      - *
    - *
  • - *
- * - * @param {HTMLElement} el - target element - * @returns {number} depth - * @private - */ - ; - - _proto._getContinuousDepth = function _getContinuousDepth(el) { - var depth = 0; - - while (el && (el.tagName === 'UL' || el.tagName === 'OL')) { - depth += 1; - - if (el.childNodes.length > 1) { - break; - } - - el = el.firstChild; - } - - return depth; - } - /** - * get the element which is removed unnecessay list wrapper element - * @param {HTMLElement} el - target element - * @param {HTMLElement} orgEl - target element - * @returns {HTMLElement} el - * @private - */ - ; - - _proto._getRemovedUnnecessaryListWrapper = function _getRemovedUnnecessaryListWrapper(el, orgEl) { - while (el.querySelectorAll('ul,ol').length > orgEl.querySelectorAll('ul,ol').length) { - el = el.firstChild; - } - - return el; - }; - - return WwPasteContentHelper; -}(); - -/* harmony default export */ var wwPasteContentHelper = (wwPasteContentHelper_WwPasteContentHelper); -// CONCATENATED MODULE: ./src/js/wwTablePasteHelper.js -/** - * @fileoverview Paste helper when past to table - * @author NHN FE Development Lab - */ - - - - -/** - * Class WwTablePasteHelper - * @param {WysiwygEditor} wwe - WysiwygEditor instance - * @ignore - */ - -var wwTablePasteHelper_WwTablePasteHelper = /*#__PURE__*/function () { - function WwTablePasteHelper(wwe) { - this.wwe = wwe; - } - /** - * Prossse paste clipboardEvent - * @param {ClipboardEvent} ev - ClipboardEvent - */ - - - var _proto = WwTablePasteHelper.prototype; - - _proto.pasteClipboard = function pasteClipboard(ev) { - var cbData = ev.clipboardData || window.clipboardData; - var items = cbData && cbData.items; - - if (items) { - this._pasteClipboardItem(items); - - ev.preventDefault(); - } else { - this._pasteClipboardUsingPasteArea(); - - ev.squirePrevented = true; - } - } - /** - * ClipboardEvent is not supported in IE. - * To get clipboard, create temporay element and then paste into that element. - * After end of paste, can get clipboard from that temporary element. - * @param {ClipboardEvent} ev - ClipboardEvent - * @private - */ - ; - - _proto._pasteClipboardUsingPasteArea = function _pasteClipboardUsingPasteArea() { - var _this = this; - - var sq = this.wwe.getEditor(); - var range = sq.getSelection(); - var startContainer = range.startContainer, - startOffset = range.startOffset, - endContainer = range.endContainer, - endOffset = range.endOffset; - var pasteArea = document.createElement('div'); - var _document = document, - body = _document.body; - pasteArea.setAttribute('contenteditable', true); - pasteArea.setAttribute('style', 'position:fixed; overflow:hidden; top:0; right:100%; width:1px; height:1px;'); - body.appendChild(pasteArea); - range.selectNodeContents(pasteArea); - sq.setSelection(range); - setTimeout(function () { - var clipboard = body.removeChild(pasteArea); - range.setStart(startContainer, startOffset); - range.setEnd(endContainer, endOffset); - sq.focus(); - sq.setSelection(range); - - _this._pasteClipboardHtml(clipboard.innerHTML); - }); - } - /** - * Paste items of clipboard data - * @param {DataTransfer.items} items - items of clipboarddata - * @private - */ - ; - - _proto._pasteClipboardItem = function _pasteClipboardItem(items) { - var _this2 = this; - - var textItem = null; - var htmlItem = null; - toArray_default()(items).forEach(function (item) { - if (item.type === 'text/html') { - htmlItem = item; - } else if (item.type === 'text/plain') { - textItem = item; - } - }); - - if (htmlItem) { - htmlItem.getAsString(function (html) { - _this2._pasteClipboardHtml(html); - }); - } else if (textItem) { - textItem.getAsString(function (text) { - var fragment = dom["a" /* default */].getFragmentReplacedByNewlineToBr(text); - - _this2._pasteClipboardContainer(fragment); - }); - } - } - /** - * Get sanitized html as dom fragment - * @param {string} html - html string to sanitize - * @returns {DocumentFragment} sanitized html - * @private - */ - ; - - _proto._getSanitizedHtml = function _getSanitizedHtml(html) { - var sanitizer = this.wwe.getSanitizer(); - html = Object(htmlSanitizer["a" /* default */])(html, true); - - if (sanitizer && sanitizer !== htmlSanitizer["a" /* default */]) { - html = sanitizer(html); - } - - var container = document.createElement('div'); - container.innerHTML = html; - return dom["a" /* default */].finalizeHtml(container); - }; - - _proto._convertToMsoList = function _convertToMsoList(html) { - var container = document.createElement('div'); - container.innerHTML = html; - convertMsoParagraphsToList(container); - return container.innerHTML; - } - /** - * Paste html of clipboard - * @param {string} html - html - * @private - */ - ; - - _proto._pasteClipboardHtml = function _pasteClipboardHtml(html) { - var container = document.createDocumentFragment(); - var startFramgmentStr = ''; - var endFragmentStr = ''; - var startFragmentIndex = html.indexOf(startFramgmentStr); - var endFragmentIndex = html.lastIndexOf(endFragmentStr); - - if (startFragmentIndex > -1 && endFragmentIndex > -1) { - html = html.slice(startFragmentIndex + startFramgmentStr.length, endFragmentIndex); - } // Wrap with if html contains dangling tags - // Dangling tag is that tag does not have as parent node. - - - if (/<\/td>((?!<\/tr>)[\s\S])*$/i.test(html)) { - html = "" + html + ""; - } // Wrap with if html contains dangling tags - // Dangling tag is that tag does not have
as parent node. - - - if (/<\/tr>((?!<\/table>)[\s\S])*$/i.test(html)) { - html = "
" + html + "
"; - } - - if (isFromMso(html)) { - html = this._convertToMsoList(html); - } - - container.appendChild(this._getSanitizedHtml(html)); - - this._pasteClipboardContainer(container); - } - /** - * Paste container of clipboard - * @param {DocumentFragment} clipboardContainer - clipboard - * @private - */ - ; - - _proto._pasteClipboardContainer = function _pasteClipboardContainer(clipboardContainer) { - var sq = this.wwe.getEditor(); - var childNodes = clipboardContainer.childNodes; - var containsOneTableOnly = childNodes.length === 1 && childNodes[0].nodeName === 'TABLE'; - - if (containsOneTableOnly) { - var tableManager = this.wwe.componentManager.getManager('table'); - tableManager.pasteTableData(clipboardContainer); - } else { - var range = sq.getSelection().cloneRange(); - - var fragment = this._preparePasteDocumentFragment(clipboardContainer); - - sq.saveUndoState(range); - - if (!range.collapsed) { - this._deleteContentsRange(range); - } - - if (dom["a" /* default */].isTextNode(range.startContainer)) { - this._pasteIntoTextNode(range, fragment); - } else { - this._pasteIntoElements(range, fragment); - } - - sq.setSelection(range); - } - } - /** - * Prepare clipboard for paste to table - * @param {DocumentFragment} clipboardContainer - clipboard - * @returns {DocumentFragment} processed result - * @private - */ - ; - - _proto._preparePasteDocumentFragment = function _preparePasteDocumentFragment(clipboardContainer) { - var childNodes = clipboardContainer.childNodes; - var fragment = document.createDocumentFragment(); - - if (childNodes.length) { - fragment.appendChild(this._unwrapBlock(clipboardContainer)); - } else if (this._isPossibleInsertToTable(clipboardContainer)) { - fragment.appendChild(clipboardContainer); - } - - return fragment; - } - /** - * unwrap block node - * @param {Node} node - target node - * @returns {DocumentFragment} processed result - * @private - */ - ; - - _proto._unwrapBlock = function _unwrapBlock(node) { - var fragment = document.createDocumentFragment(); - var childNodes = toArray_default()(node.childNodes); - - while (childNodes.length) { - var child = childNodes.shift(); - - if (this._isPossibleInsertToTable(child)) { - fragment.appendChild(child); - } else { - fragment.appendChild(this._unwrapBlock(child)); // If current child is last or fragment already has last br, - // appending br would create unintended line break. - - var lastChild = fragment.lastChild; - - if (childNodes.length && lastChild && lastChild.nodeName !== 'BR') { - fragment.appendChild(document.createElement('br')); - } - } - } - - return fragment; - }; - - _proto._isPossibleInsertToTable = function _isPossibleInsertToTable(node) { - var nodeName = node.nodeName; - var isChildlessCode = nodeName === 'CODE' && node.childNodes.length > 1; - var isList = nodeName === 'UL' || nodeName === 'OL'; - return !isChildlessCode && (isList || dom["a" /* default */].isMDSupportInlineNode(node) || dom["a" /* default */].isTextNode(node)); - } - /** - * paste fragment to offset of range.startContainer - * @param {Range} range - selection range - * @param {DocumentFragment} fragment - paste data - * @private - */ - ; - - _proto._pasteIntoElements = function _pasteIntoElements(range, fragment) { - var container = range.startContainer, - offset = range.startOffset; - var node = dom["a" /* default */].getChildNodeByOffset(container, offset); - - if (!node) { - // For example when container is br, br don't have child, so node is null - if (container.nodeName === 'TD') { - container.appendChild(fragment); - range.setStart(container, container.childNodes.length); - } else { - var parentNode = container.parentNode, - nextSibling = container.nextSibling; - parentNode.insertBefore(fragment, nextSibling); - - if (nextSibling) { - range.setStart(nextSibling, 0); - } else { - range.setStartAfter(parentNode.lastChild); - } - } - } else { - container.insertBefore(fragment, node); - range.setStart(node, 0); - } - - range.collapse(true); - } - /** - * paste fragment to offset of text node - * @param {Range} range - selection range - * @param {DocumentFragment} fragment - paste data - * @private - */ - ; - - _proto._pasteIntoTextNode = function _pasteIntoTextNode(range, fragment) { - var container = range.startContainer, - offset = range.startOffset; - var parentNode = container.parentNode, - textContent = container.textContent; - var prevText = textContent.slice(0, offset); - var postText = textContent.slice(offset, textContent.length); - var fragmentChildNodes = fragment.childNodes; - var firstChild = fragmentChildNodes[0]; - var isFragmenthasOneTextNode = fragmentChildNodes.length === 1 && dom["a" /* default */].isTextNode(firstChild); - - if (!prevText) { - parentNode.insertBefore(fragment, container); - range.setStart(container, 0); - } else if (!postText) { - var nextSibling = container.nextSibling; - parentNode.insertBefore(fragment, nextSibling); - range.setStartAfter(nextSibling); - } else if (isFragmenthasOneTextNode) { - var firstChildText = firstChild.textContent; - container.textContent = "" + prevText + firstChildText + postText; - range.setStart(container, prevText.length + firstChildText.length); - } else { - var resultFragment = document.createDocumentFragment(); - resultFragment.appendChild(document.createTextNode(prevText)); - resultFragment.appendChild(fragment); - resultFragment.appendChild(document.createTextNode(postText)); - parentNode.replaceChild(resultFragment, container); - var childNodesArray = toArray_default()(parentNode.childNodes); - var index = 0; - childNodesArray.forEach(function (child, i) { - if (child.textContent === postText) { - index = i; - } - }); - range.setStart(parentNode.childNodes[index], 0); - } - - range.collapse(true); - } - /** - * delete contents of range that is not collapse - * @param {Range} range - range is not collapse - * @private - */ - ; - - _proto._deleteContentsRange = function _deleteContentsRange(range) { - var startContainer = range.startContainer, - startOffset = range.startOffset, - endContainer = range.endContainer, - endOffset = range.endOffset; - - if (startContainer === endContainer) { - this._deleteContentsByOffset(startContainer, startOffset, endOffset); - - range.setStart(startContainer, startOffset); - range.collapse(true); - } else { - this._deleteNotCollapsedRangeContents(range); - } - }; - - _proto._deleteNotCollapsedRangeContents = function _deleteNotCollapsedRangeContents(range) { - var startContainer = range.startContainer, - startOffset = range.startOffset, - endContainer = range.endContainer, - endOffset = range.endOffset; - var common = range.commonAncestorContainer; - - var startBlock = this._getBlock(startContainer, common, startOffset); - - var endBlock = this._getBlock(endContainer, common, endOffset - 1); - - if (startBlock === endBlock) { - this._removeInSameBlock(startBlock, startContainer, endContainer, startOffset, endOffset); // When endContainer is not same endBlock, endBlock is removed. - // For example, aaa| <- this is cursor. - // When cursor is last, endContainer would be 'TD' and endBlock is text node - // In this case, remove all 'aaa' so endBlock should be null. - - - endBlock = endContainer !== endBlock ? null : endBlock; - } else { - var nextOfstartBlock = startBlock.nextSibling; - - if (startContainer.nodeName === 'TD') { - nextOfstartBlock = this._removeOneLine(startBlock); - } else { - // Remove child nodes from node of startOffset in startContainer. - this._deleteContentsByOffset(startContainer, startOffset, dom["a" /* default */].getOffsetLength(startContainer)); // Remove nodes from startContainer in startBlock - - - dom["a" /* default */].removeNodesByDirection(startBlock, startContainer, false); - } - - if (endContainer.nodeName === 'TD') { - endBlock = this._removeOneLine(endBlock); - } else { - // Remove child nodes until node of endOffset in endContainer. - this._deleteContentsByOffset(endContainer, 0, endOffset); // Remove nodes until endContainer in endBlock - - - dom["a" /* default */].removeNodesByDirection(endBlock, endContainer, true); - } // Remove nodes between startBlock and endBlock - - - dom["a" /* default */].removeChildFromStartToEndNode(common, nextOfstartBlock, endBlock); - } - - if (endBlock) { - range.setStart(endBlock, 0); - } else { - range.setStartAfter(startBlock); - } - - range.collapse(true); - }; - - _proto._removeInSameBlock = function _removeInSameBlock(block, startContainer, endContainer, startOffset, endOffset) { - var start = startContainer === block ? startOffset : 0; - var end = endContainer === block ? endOffset : dom["a" /* default */].getOffsetLength(block); - - this._deleteContentsByOffset(block, start, end); - }; - - _proto._removeOneLine = function _removeOneLine(node) { - var nextSibling = node.nextSibling, - parentNode = node.parentNode; - var next = nextSibling; - parentNode.removeChild(node); - - if (nextSibling && nextSibling.nodeName === 'BR') { - next = nextSibling.nextSibling; - parentNode.removeChild(nextSibling); - } - - return next; - } - /** - * Find parent block node of startContainer and endContainer - * If startContainer or endContainer is same commonAncestor, - * find node at offset of startContainer and endContainer. - * @param {Node} node - startContainer or endContainer - * @param {Node} parent - commonAncestor - * @param {Number} offset - startOffset or endOffset-1 - * @returns {Node} block node - * @private - */ - ; - - _proto._getBlock = function _getBlock(node, parent, offset) { - return dom["a" /* default */].getParentUntil(node, parent) || dom["a" /* default */].getChildNodeByOffset(node, offset); - } - /** - * delete contents from start offset to end offset - * @param {Node} container - container - * @param {Number} startOffset - start offset - * @param {Number} endOffset - end offset - * @private - */ - ; - - _proto._deleteContentsByOffset = function _deleteContentsByOffset(container, startOffset, endOffset) { - if (dom["a" /* default */].isTextNode(container)) { - var textContent = container.textContent; - var prevText = textContent.slice(0, startOffset); - var postText = textContent.slice(endOffset, textContent.length); - container.textContent = "" + prevText + postText; - } else { - var startNode = dom["a" /* default */].getChildNodeByOffset(container, startOffset); - var endNode = dom["a" /* default */].getChildNodeByOffset(container, endOffset); - - if (startNode) { - dom["a" /* default */].removeChildFromStartToEndNode(container, startNode, endNode || null); - } - } - }; - - return WwTablePasteHelper; -}(); - -/* harmony default export */ var wwTablePasteHelper = (wwTablePasteHelper_WwTablePasteHelper); -// CONCATENATED MODULE: ./src/js/wwClipboardManager.js -/** - * @fileoverview Implements wysiwyg editor clipboard manager - * @author NHN FE Development Lab - */ - - - - - - - - - -var PASTE_TABLE_BOOKMARK = 'tui-paste-table-bookmark'; -var PASTE_TABLE_CELL_BOOKMARK = 'tui-paste-table-cell-bookmark'; -/** - * Class WwClipboardManager - * @param {WysiwygEditor} wwe - WysiwygEditor instance - * @ignore - */ - -var wwClipboardManager_WwClipboardManager = /*#__PURE__*/function () { - function WwClipboardManager(wwe) { - this.wwe = wwe; - this._pch = new wwPasteContentHelper(this.wwe); - this._tablePasteHelper = new wwTablePasteHelper(this.wwe); - this._selectedSellCount = 0; - this._clipboardArea = null; - } - /** - * initialize - */ - - - var _proto = WwClipboardManager.prototype; - - _proto.init = function init() { - var _this = this; - - this.wwe.eventManager.listen('willPaste', function (ev) { - return _this._executeHandler(_this._onWillPaste.bind(_this), ev); - }); - this.wwe.eventManager.listen('copy', function (ev) { - return _this._executeHandler(_this._onCopyCut.bind(_this), ev); - }); - this.wwe.eventManager.listen('copyAfter', function (ev) { - return _this._executeHandler(_this._onCopyAfter.bind(_this), ev); - }); - this.wwe.eventManager.listen('cut', function (ev) { - return _this._executeHandler(_this._onCopyCut.bind(_this), ev); - }); - this.wwe.eventManager.listen('cutAfter', function (ev) { - return _this._executeHandler(_this._onCutAfter.bind(_this), ev); - }); - this.wwe.eventManager.listen('paste', function (ev) { - return _this._executeHandler(_this._onPasteIntoTable.bind(_this), ev); - }); - }; - - _proto._executeHandler = function _executeHandler(handler, event) { - if (event.source === 'wysiwyg') { - handler(event); - } - }; - - _proto._onCopyCut = function _onCopyCut(event) { - var tableManager = this.wwe.componentManager.getManager('tableSelection'); - var selectedCellCount = tableManager.getSelectedCells().length; - - if (!selectedCellCount) { - // preserve selection range in a cell, let squire do the job - return; - } - - if (!tableManager.mergedTableSelectionManager) { - // set selection range to all contents in selected cells, then squire - tableManager.createRangeBySelectedCells(); - return; - } - - var editor = this.wwe.getEditor(); - var clipboardEvent = event.data; - var range = editor.getSelection().cloneRange(); - var clipboardContainer = document.createElement('div'); - - this._extendRange(range); - - clipboardContainer.innerHTML = range.cloneContents(); - - this._updateCopyDataForListTypeIfNeed(range, clipboardContainer); - - this.wwe.eventManager.emit('copyBefore', { - source: 'wysiwyg', - clipboardContainer: clipboardContainer - }); - - this._setClipboardData(clipboardEvent, clipboardContainer.innerHTML, clipboardContainer.textContent); - }; - - _proto._clearClipboardArea = function _clearClipboardArea() { - if (this._clipboardArea) { - dom["a" /* default */].remove(this._clipboardArea); - this._clipboardArea = null; - } - }; - - _proto._onCopyAfter = function _onCopyAfter() { - this.wwe.getEditor().getBody().focus(); - - this._clearClipboardArea(); - }; - - _proto._onCutAfter = function _onCutAfter() { - var range = this.wwe.getEditor().getSelection(); - range.deleteContents(); - this.wwe.getEditor().focus(); - - this._clearClipboardArea(); - } - /** - * Process paste event when occured in table - * @param {{source: string, data: event}} event - event - * @private - */ - ; - - _proto._onPasteIntoTable = function _onPasteIntoTable(event) { - var ev = event.data; - var range = this.wwe.getEditor().getSelection(); - - if (this.wwe.isInTable(range) && this._isSingleCellSelected(range)) { - this._tablePasteHelper.pasteClipboard(ev); - } - }; - - _proto._isSingleCellSelected = function _isSingleCellSelected(range) { - var startContainer = range.startContainer, - endContainer = range.endContainer; - return this._getCell(startContainer) === this._getCell(endContainer); - }; - - _proto._getCell = function _getCell(node) { - return node.nodeName === 'TD' ? node : dom["a" /* default */].getParentUntil(node, 'TR'); - }; - - _proto._replaceNewLineToBr = function _replaceNewLineToBr(node) { - var textNodes = dom["a" /* default */].getAllTextNode(node); - textNodes.forEach(function (textNode) { - if (/\n/.test(textNode.nodeValue)) { - textNode.parentNode.innerHTML = textNode.nodeValue.replace(/\n/g, '
'); - } - }); - }; - - _proto._onWillPaste = function _onWillPaste(event) { - var _this2 = this; - - var pasteData = event.data; - var clipboardContainer = document.createElement('div'); - clipboardContainer.appendChild(pasteData.fragment.cloneNode(true)); - - this._preparePaste(clipboardContainer); - - this._setTableBookmark(clipboardContainer); - - pasteData.fragment = document.createDocumentFragment(); - toArray_default()(clipboardContainer.childNodes).forEach(function (element) { - if (dom["a" /* default */].getNodeName(element) === 'DIV') { - _this2._replaceNewLineToBr(element); - } - - pasteData.fragment.appendChild(element); - }); // once right after the squire insertHTML DOM. - - var handler = function handler() { - _this2.wwe.getEditor().removeEventListener('input', handler); - - _this2.wwe.eventManager.emit('wysiwygRangeChangeAfter', _this2); - - _this2._focusTableBookmark(); - }; - - this.wwe.getEditor().addEventListener('input', handler); - }; - - _proto._setClipboardData = function _setClipboardData(clipboardEvent, htmlContent, textContent) { - if (browser_default.a.msie) { - clipboardEvent.squirePrevented = true; - this._clipboardArea = this._createClipboardArea(); - this._clipboardArea.innerHTML = htmlContent; - - this._clipboardArea.focus(); - - window.getSelection().selectAllChildren(this._clipboardArea); - } else { - clipboardEvent.preventDefault(); - clipboardEvent.stopPropagation(); - clipboardEvent.clipboardData.setData('text/html', htmlContent); - clipboardEvent.clipboardData.setData('text/plain', textContent); - } - }; - - _proto._createClipboardArea = function _createClipboardArea() { - var element = document.createElement('div'); - element.setAttribute('contenteditable', true); - css_default()(element, { - position: 'fixed', - overflow: 'hidden', - top: 0, - right: '100%', - width: '1px', - height: '1px' - }); - document.body.appendChild(element); - return element; - } - /** - * Update copy data, when commonAncestorContainer nodeName is list type like UL or OL. - * @param {object} range - text range - * @param {HTMLElement} clipboardContainer - clibpard container element - * @private - */ - ; - - _proto._updateCopyDataForListTypeIfNeed = function _updateCopyDataForListTypeIfNeed(range, clipboardContainer) { - var commonAncestorNodeName = range.commonAncestorContainer.nodeName; - - if (commonAncestorNodeName !== 'UL' && commonAncestorNodeName !== 'OL') { - return; - } - - var newParent = document.createElement(commonAncestorNodeName); - newParent.appendChild(clipboardContainer); - clipboardContainer.innerHTML = ''; - clipboardContainer.appendChild(newParent); - } - /** - * Remove empty font elements. - * @param {HTMLElement} clipboardContainer - cliboard container - * @private - */ - ; - - _proto._removeEmptyFontElement = function _removeEmptyFontElement(clipboardContainer) { - // clipboard data from ms word tend to have unneccesary font tags - var children = dom["a" /* default */].children(clipboardContainer, 'font'); - children.forEach(function (element) { - if (!element.textContent.trim()) { - dom["a" /* default */].remove(element); - } - }); - } - /** - * P tags append 'BR' to make blank line. - * Our viewer renders new line as P tag with margin. - * When pasting text from viewer, insert BR between P tags. - * @param {Node} node - node - * @private - */ - ; - - _proto._preProcessPtag = function _preProcessPtag(node) { - dom["a" /* default */].findAll(node, 'p').forEach(function (pTag) { - if (pTag.lastChild && pTag.lastChild.nodeName !== 'BR') { - pTag.appendChild(document.createElement('br')); - } - - pTag.appendChild(document.createElement('br')); - }); - } - /** - * Prepare paste. - * @param {HTMLElement} clipboardContainer - temporary container for clipboard contents - * @private - */ - ; - - _proto._preparePaste = function _preparePaste(clipboardContainer) { - if (isFromMso(clipboardContainer.innerHTML)) { - convertMsoParagraphsToList(clipboardContainer); - } else { - // When pasting text, the empty line processing differ our viewer and MS Office. - // In our viewer case,

aaa

bbb

have empty line becuase P tags have margin. - // In MS Office case,

aaa

bbb

do not have empty line becuase P tags means just one line. - this._preProcessPtag(clipboardContainer); - } - - this._removeEmptyFontElement(clipboardContainer); - - this._pch.preparePaste(clipboardContainer); - - this.wwe.eventManager.emit('pasteBefore', { - source: 'wysiwyg', - clipboardContainer: clipboardContainer - }); - } - /** - * set table bookmark which will gain focus after document modification ends. - * @param {HTMLElement} clipboardContainer - clipboard container - * @private - */ - ; - - _proto._setTableBookmark = function _setTableBookmark(clipboardContainer) { - var lastNode = clipboardContainer.lastChild; - var isLastNodeTable = lastNode && lastNode.nodeName === 'TABLE'; - - if (isLastNodeTable) { - addClass_default()(lastNode, PASTE_TABLE_BOOKMARK); - } - } - /** - * Focus to table after document modification. - * @param {object} sq - squire editor instance - * @private - */ - ; - - _proto._focusTableBookmark = function _focusTableBookmark() { - var sq = this.wwe.getEditor(); - var range = sq.getSelection().cloneRange(); - var bookmarkedTable = sq.getBody().querySelector("." + PASTE_TABLE_BOOKMARK); - var bookmarkedCell = sq.getBody().querySelector("." + PASTE_TABLE_CELL_BOOKMARK); - - if (bookmarkedTable) { - removeClass_default()(bookmarkedTable, PASTE_TABLE_BOOKMARK); - range.setEndAfter(bookmarkedTable); - range.collapse(false); - sq.setSelection(range); - } - - if (bookmarkedCell) { - removeClass_default()(bookmarkedCell, PASTE_TABLE_CELL_BOOKMARK); - range.selectNodeContents(bookmarkedCell); - range.collapse(false); - sq.setSelection(range); - } - } - /** - * extend range if need - * @param {Range} range to extend - * @private - */ - ; - - _proto._extendRange = function _extendRange(range) { - // non-text node && not selected whole area, then expand the range - if (dom["a" /* default */].isTextNode(range.commonAncestorContainer) && (range.startOffset !== 0 || range.commonAncestorContainer.textContent.length !== range.endOffset) && range.commonAncestorContainer.nodeName !== 'TD') { - return; - } - - if (range.startOffset === 0) { - range = this._extendStartRange(range); - } - - if (range.endOffset === dom["a" /* default */].getOffsetLength(range.endContainer)) { - range = this._extendEndRange(range); - } // commonAncestor if all of it's children has been selected - - - if (this._isWholeCommonAncestorContainerSelected(range)) { - range.selectNode(range.commonAncestorContainer); - } - - this.wwe.getEditor().setSelection(range); - } - /** - * Extends current range's startContainer - * @param {Range} range Range object - * @returns {Range} - * @private - */ - ; - - _proto._extendStartRange = function _extendStartRange(range) { - var newBound = range.startContainer; // expand range - - while (newBound.parentNode !== range.commonAncestorContainer && newBound.parentNode !== this.wwe.getBody() && !newBound.previousSibling) { - newBound = newBound.parentNode; - } // expand range - - - range.setStart(newBound.parentNode, dom["a" /* default */].getNodeOffsetOfParent(newBound)); - return range; - } - /** - * Extends current range's endContainer - * @param {Range} range Range object - * @returns {Range} - * @private - */ - ; - - _proto._extendEndRange = function _extendEndRange(range) { - var newBound = range.endContainer; - var boundNext = newBound.nextSibling; // expand range - - while (newBound.parentNode !== range.commonAncestorContainer && newBound.parentNode !== this.wwe.getBody() && (!boundNext || dom["a" /* default */].getNodeName(boundNext) === 'BR' && newBound.parentNode.lastChild === boundNext)) { - newBound = newBound.parentNode; - boundNext = newBound.nextSibling; - } // expand range level - - - range.setEnd(newBound.parentNode, dom["a" /* default */].getNodeOffsetOfParent(newBound) + 1); - return range; - } - /** - * Check whether whole commonAncestorContainter textContent selected or not - * @param {Range} range Range object - * @returns {boolean} result - * @private - */ - ; - - _proto._isWholeCommonAncestorContainerSelected = function _isWholeCommonAncestorContainerSelected(range) { - return range.commonAncestorContainer.nodeType === Node.ELEMENT_NODE && range.commonAncestorContainer !== this.wwe.getBody() && range.startOffset === 0 && range.endOffset === range.commonAncestorContainer.childNodes.length && range.commonAncestorContainer === range.startContainer && range.commonAncestorContainer === range.endContainer; - }; - - return WwClipboardManager; -}(); - -/* harmony default export */ var wwClipboardManager = (wwClipboardManager_WwClipboardManager); -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/domUtil/hasClass.js -var hasClass = __webpack_require__(16); -var hasClass_default = /*#__PURE__*/__webpack_require__.n(hasClass); - -// CONCATENATED MODULE: ./src/js/wwLinkManager.js -/** - * @fileoverview Implements wysiwyg link manager - * @author NHN FE Development Lab - */ - - - -var CLASS_NAME_IMAGE_LINK = 'image-link'; -/** - * Class WwLinkManager - * @param {WysiwygEditor} wwe - WysiwygEditor instance - * @ignore - */ - -var wwLinkManager_WwLinkManager = /*#__PURE__*/function () { - function WwLinkManager(wwe) { - this.wwe = wwe; - this.eventManager = wwe.eventManager; - /** - * Name property - * @type {string} - */ - - this.name = 'link'; - - this._init(); - } - - var _proto = WwLinkManager.prototype; - - _proto._init = function _init() { - var _this = this; - - this.eventManager.listen('wysiwygSetValueAfter', function () { - _this._addClassNameToAllImageLinks(); - }); - this.wwe.getEditor().addEventListener('click', function (ev) { - var target = ev.target, - offsetX = ev.offsetX, - offsetY = ev.offsetY; - var popupButton = getComputedStyle(target, ':before'); - - if (hasClass_default()(target, CLASS_NAME_IMAGE_LINK) && dom["a" /* default */].isInsideButtonBox(popupButton, offsetX, offsetY)) { - _this._selectImageLink(target.parentNode); - - _this.eventManager.emit('openPopupAddLink', { - url: target.getAttribute('href') - }); - } - }); - }; - - _proto._selectImageLink = function _selectImageLink(imageLink) { - var range = this.wwe.getEditor().getSelection().cloneRange(); - range.selectNode(imageLink); - this.wwe.getEditor().setSelection(range); - }; - - _proto._addClassNameToImageLinks = function _addClassNameToImageLinks(links) { - links.forEach(function (link) { - if (link.firstChild && link.firstChild.nodeName === 'IMG') { - addClass_default()(link, CLASS_NAME_IMAGE_LINK); - } - }); - }; - - _proto._addClassNameToAllImageLinks = function _addClassNameToAllImageLinks() { - var links = dom["a" /* default */].findAll(this.wwe.getBody(), 'a'); - - this._addClassNameToImageLinks(links); - } - /** - * Add class name on all link including image in selection - */ - ; - - _proto.addClassNameToImageLinksInSelection = function addClassNameToImageLinksInSelection() { - var sq = this.wwe.getEditor(); - - var _sq$getSelection = sq.getSelection(), - container = _sq$getSelection.commonAncestorContainer; - - if (dom["a" /* default */].isElemNode(container)) { - var links; - - if (container.nodeName === 'A') { - links = [container]; - } else { - links = dom["a" /* default */].findAll(container, 'a'); - } - - this._addClassNameToImageLinks(links); - } - }; - - return WwLinkManager; -}(); - - -// CONCATENATED MODULE: ./src/js/wwListManager.js -/** - * @fileoverview Implements wysiwyg list manager - * @author NHN FE Development Lab - */ - - - -var FIND_LI_ELEMENT = /
  • ]*>)(.*?)(<\/(?:th|td)>)/g; -var FIND_LIST_OR_LIST_ITEM_TAG_RX = /<(ul|ol|li)([^>]*)>/g; -/** - * Class WwListManager - * @param {WysiwygEditor} wwe - WysiwygEditor instance - * @ignore - */ - -var wwListManager_WwListManager = /*#__PURE__*/function () { - function WwListManager(wwe) { - this.wwe = wwe; - this.eventManager = wwe.eventManager; - /** - * Name property - * @type {string} - */ - - this.name = 'list'; - - this._init(); - } - /** - * Initialize - * @private - */ - - - var _proto = WwListManager.prototype; - - _proto._init = function _init() { - this._initEvent(); - - this._initKeyHandler(); - } - /** - * Initialize event - * @private - */ - ; - - _proto._initEvent = function _initEvent() { - var _this = this; - - this.eventManager.listen('wysiwygSetValueBefore', function (html) { - return _this.convertToArbitraryNestingList(html); - }); - this.eventManager.listen('wysiwygRangeChangeAfter', function () { - _this._findAndRemoveEmptyList(); - - _this._removeBranchListAll(); - }); - this.eventManager.listen('wysiwygSetValueAfter', function () { - _this._removeBranchListAll(); - }); - this.eventManager.listen('wysiwygProcessHTMLText', function (html) { - html = _this._convertFromArbitraryNestingList(html); - return html; - }); - this.eventManager.listen('convertorBeforeHtmlToMarkdownConverted', function (html) { - return _this._insertDataToMarkPassForListInTable(html); - }); - }; - - _proto._initKeyHandler = function _initKeyHandler() { - var _this2 = this; - - this.wwe.addKeyEventHandler(['TAB', 'CTRL+]', 'META+]'], function (ev) { - var isNeedNext; - - if (_this2.wwe.getEditor().hasFormat('LI')) { - ev.preventDefault(); - - _this2.eventManager.emit('command', 'Indent'); - - isNeedNext = false; - } - - return isNeedNext; - }); - this.wwe.addKeyEventHandler(['SHIFT+TAB', 'CTRL+[', 'META+['], function (ev, range) { - var isNeedNext; - - if (_this2.wwe.getEditor().hasFormat('LI')) { - ev.preventDefault(); - var ul = dom["a" /* default */].children(dom["a" /* default */].closest(range.startContainer, 'li'), UL_OR_OL); - - _this2.eventManager.emit('command', 'Outdent'); - - if (ul.length && !ul.previousSibling) { - _this2._removeBranchList(ul); - } - - isNeedNext = false; - } - - return isNeedNext; - }); - this.wwe.addKeyEventHandler('ENTER', function (ev, range) { - if (range.collapsed) { - if (_this2.wwe.getEditor().hasFormat('LI')) { - _this2.wwe.defer(function () { - var afterRange = _this2.wwe.getRange(); - - var _domUtils$parents = dom["a" /* default */].parents(afterRange.startContainer, 'li'), - li = _domUtils$parents[0]; - - _this2._removeBranchListAll(li); - }); - } - } - }); - this.wwe.addKeyEventHandler('BACK_SPACE', function (ev, range) { - if (range.collapsed) { - if (_this2.wwe.getEditor().hasFormat('LI')) { - _this2.wwe.defer(function () { - _this2._removeBranchListAll(); - }); - } - } - }); - } - /** - * Find empty list for whole container and remove it. - * @private - */ - ; - - _proto._findAndRemoveEmptyList = function _findAndRemoveEmptyList() { - dom["a" /* default */].findAll(this.wwe.getBody(), UL_OR_OL).forEach(function (node) { - if (!FIND_LI_ELEMENT.test(node.innerHTML)) { - dom["a" /* default */].remove(node); - } - }); - } - /** - * Remove branch lists all from body - * @param {HTMLElement} root root to remove branch list - * @private - */ - ; - - _proto._removeBranchListAll = function _removeBranchListAll(root) { - var _this3 = this; - - root = !root ? this.wwe.getBody() : root; - dom["a" /* default */].findAll(root, 'li > ul, li > ol').forEach(function (node) { - if (!node || node.previousSibling) { - return; - } - - _this3._removeBranchList(node); - }); - } - /** - * Remove branch list of passed list(ul, ol) - * @param {HTMLElement} list list - * @private - */ - ; - - _proto._removeBranchList = function _removeBranchList(list) { - var branchRoot = list; - - while (!branchRoot.previousSibling && branchRoot.parentElement.tagName.match(/UL|OL|LI/g)) { - branchRoot = branchRoot.parentElement; - } - - var _domUtils$children = dom["a" /* default */].children(branchRoot, 'li'), - firstLi = _domUtils$children[0]; - - var unwrappedLIs = dom["a" /* default */].unwrap(list); - dom["a" /* default */].prepend(branchRoot, unwrappedLIs); - dom["a" /* default */].remove(firstLi); - } - /** - * make arbitrary nesting list out of standard list - * `
    • text
      • text2
    ` to - * `
    • text
      • text2
    ` - * @param {string} html string to convert - * @returns {string} converted HTML text - */ - ; - - _proto.convertToArbitraryNestingList = function convertToArbitraryNestingList(html) { - var NESTED_LIST_QUERY = 'li > ul, li > ol'; - var wrapper = dom["a" /* default */].createElementWith("
    " + html + "
    "); - var nestedList = wrapper.querySelector(NESTED_LIST_QUERY); - - while (nestedList !== null) { - var parentLI = nestedList.parentNode; - var parentList = parentLI.parentNode; - parentList.insertBefore(nestedList, parentLI.nextElementSibling); - nestedList = wrapper.querySelector(NESTED_LIST_QUERY); - } - - return wrapper.innerHTML; - } - /** - * make standard list out of arbitrary nesting list - * `
    • text
      • text2
    ` from - * `
    • text
      • text2
    ` - * @param {string} html string to convert - * @returns {string} converted HTML text - * @private - */ - ; - - _proto._convertFromArbitraryNestingList = function _convertFromArbitraryNestingList(html) { - var NESTED_LIST_QUERY = 'ol > ol, ol > ul, ul > ol, ul > ul'; - var wrapperDiv = dom["a" /* default */].createElementWith("
    " + html + "
    "); - var nestedList = wrapperDiv.querySelector(NESTED_LIST_QUERY); - - while (nestedList !== null) { - var prevLI = nestedList.previousElementSibling; - - while (prevLI && prevLI.tagName !== 'LI') { - prevLI = prevLI.previousElementSibling; - } - - if (prevLI) { - prevLI.appendChild(nestedList); - } else { - this._unwrap(nestedList); - } - - nestedList = wrapperDiv.querySelector(NESTED_LIST_QUERY); - } - - return wrapperDiv.innerHTML; - } - /** - * unwrap nesting list - * @param {Node} nestedList - nested list to unwrap - * @private - */ - ; - - _proto._unwrap = function _unwrap(nestedList) { - var fragment = document.createDocumentFragment(); - - while (nestedList.firstChild) { - fragment.appendChild(nestedList.firstChild); - } - - nestedList.parentNode.replaceChild(fragment, nestedList); - }; - - _proto._insertDataToMarkPassForListInTable = function _insertDataToMarkPassForListInTable(html) { - var replacedHtml = html.replace(FIND_CELL_TAG_RX, function (match, tdStart, tdContent, tdEnd) { - var content = tdContent.replace(FIND_LIST_OR_LIST_ITEM_TAG_RX, '<$1 data-tomark-pass $2>'); - return "" + tdStart + content + tdEnd; - }); - return replacedHtml; - } - /** - * Return lines in selection - * @param {Node} start Start element - * @param {Node} end End element - * @param {HTMLElement} body Editor body element - * @returns {Array.} - * @private - */ - ; - - _proto.getLinesOfSelection = function getLinesOfSelection(start, end) { - var lines = []; - var isLastLine = false; - var needNext = true; - var nextLine; - - if (dom["a" /* default */].isTextNode(start)) { - var _domUtils$parents2 = dom["a" /* default */].parents(start, DIV_OR_LI); - - start = _domUtils$parents2[0]; - } - - if (dom["a" /* default */].isTextNode(end)) { - var _domUtils$parents3 = dom["a" /* default */].parents(end, DIV_OR_LI); - - end = _domUtils$parents3[0]; - } - - for (var line = start; needNext; line = nextLine) { - if (matches_default()(line, DIV_OR_LI)) { - lines.push(line); - - if (line === end) { - isLastLine = true; - } else { - nextLine = this._getNextLine(line, end); - } - } else { - break; - } - - needNext = nextLine && !isLastLine; - } - - return lines; - } - /** - * get next line - * @param {Node} currentLine - current line node - * @param {Node} end - last node in selection - * @returns {Node} - next line node - * @private - */ - ; - - _proto._getNextLine = function _getNextLine(currentLine, end) { - var nextLine = currentLine.nextElementSibling; - - if (!nextLine) { - // current line was the last line in ul/ol - // while we have lines those has not been processed yet. - nextLine = currentLine.parentNode.nextElementSibling; - } else if (matches_default()(nextLine, UL_OR_OL)) { - // we don't sure firstChild is LI. arbtrary list can have another ol/ul - nextLine = nextLine.querySelector('li'); - } - - if (matches_default()(nextLine, DIV_OR_LI) || nextLine === end) { - return nextLine; - } - - return this._getNextLine(nextLine); - } - /** - * merge to previous list - * consider remove this function when https://github.com/neilj/Squire/issues/294 resolved - * @param {HTMLLIElement} currentLine - current li element - */ - ; - - _proto.mergeList = function mergeList(currentLine) { - var currentList = currentLine.parentNode; - var prevList = currentList.previousElementSibling; - var nextList = currentList.nextElementSibling; - - if (currentList.firstElementChild === currentLine) { - if (prevList && matches_default()(prevList, UL_OR_OL)) { - this._mergeList(currentList, prevList); - - currentList = prevList; - } - } - - if (currentList.lastElementChild === currentLine) { - if (nextList && matches_default()(nextList, UL_OR_OL)) { - this._mergeList(nextList, currentList); - } - } - } - /** - * merge list to targetList - * @param {HTMLOListElement|HTMLUListElement} list - list to merge - * @param {HTMLOListElement|HTMLUListElement} targetList - target list - * @private - */ - ; - - _proto._mergeList = function _mergeList(list, targetList) { - var listItem = list.firstElementChild; - - if (targetList && matches_default()(targetList, UL_OR_OL)) { - while (listItem) { - var temp = listItem.nextElementSibling; - targetList.appendChild(listItem); - listItem = temp; - } - - list.parentNode.removeChild(list); - } - } - /** - * Check whether is available to make List in table. - * @returns {boolean} - li element - */ - ; - - _proto.isAvailableMakeListInTable = function isAvailableMakeListInTable() { - var selectionManager = this.wwe.componentManager.getManager('tableSelection'); - var selectedCells = selectionManager.getSelectedCells(); - var sq = this.wwe.getEditor(); - return selectedCells && sq.hasFormat('table') && !sq.hasFormat('OL') && !sq.hasFormat('UL'); - } - /** - * Find parent node before TD - * @param {Node} node - startContainer or endContainer of range - * @param {Number} offset - offset - * @returns {Node} - parent node before TD - * @private - */ - ; - - _proto._getParentNodeBeforeTD = function _getParentNodeBeforeTD(node, offset) { - var parentNode = dom["a" /* default */].getParentUntil(node, 'TD'); - - if (!parentNode) { - var childNodes = node.childNodes; - var length = childNodes ? childNodes.length : 0; - var newOffset = offset > 0 && offset === length ? offset - 1 : offset; - parentNode = dom["a" /* default */].getChildNodeByOffset(node, newOffset); - } - - return parentNode; - } - /** - * Find LI node inside cell (TH, TD) - * If target node is not li and parents of taget node is not li, return null. - * @param {Node} targetNode - startContainer or endContainer of range - * @param {Number} offset - offset - * @returns {Node} - LI node or null - * @private - */ - ; - - _proto._findLINodeInsideCell = function _findLINodeInsideCell(targetNode, offset) { - var liNode = null; - - if (targetNode && dom["a" /* default */].isCellNode(targetNode)) { - targetNode = targetNode.firstChild; - } - - var liParent = dom["a" /* default */].getParentUntilBy(targetNode, function (parentNode) { - return parentNode && dom["a" /* default */].isListNode(parentNode); - }, function (parentNode) { - return parentNode && dom["a" /* default */].isCellNode(parentNode); - }); - - if (liParent) { - liNode = liParent; - } else if (targetNode.nodeName === 'LI') { - liNode = targetNode; - } else if (dom["a" /* default */].isListNode(targetNode)) { - var childLength = targetNode.childNodes.length; - liNode = targetNode.childNodes[offset >= childLength ? childLength - 1 : offset]; - } - - return liNode; - } - /** - * Get first node on the line where range start. - * @param {Node} targetNode - startContainer - * @param {Number} offset - startOffset - * @returns {Node} - first node where range start - * @private - */ - ; - - _proto._getFirstNodeInLineOfTable = function _getFirstNodeInLineOfTable(targetNode, offset) { - var startNode = this._findLINodeInsideCell(targetNode, offset); - - if (!startNode) { - startNode = this._getParentNodeBeforeTD(targetNode, offset); - var _startNode = startNode, - previousSibling = _startNode.previousSibling; - - while (previousSibling && previousSibling.nodeName !== 'BR' && !dom["a" /* default */].isListNode(previousSibling)) { - startNode = previousSibling; - previousSibling = startNode.previousSibling; - } - } - - return startNode; - } - /** - * Get last node on the line where range end. - * @param {Node} targetNode - endContainer - * @param {Number} offset - endOffset - * @returns {Node} - last node where range end - * @private - */ - ; - - _proto._getLastNodeInLineOfTable = function _getLastNodeInLineOfTable(targetNode, offset) { - var endNode = this._findLINodeInsideCell(targetNode, offset); - - if (!endNode) { - endNode = this._getParentNodeBeforeTD(targetNode, offset); - - while (endNode.nextSibling) { - if (endNode.nodeName === 'BR' || dom["a" /* default */].isListNode(endNode)) { - break; - } - - endNode = endNode.nextSibling; - } - } - - return endNode; - } - /** - * Check whether node is last node in the line of table - * If the node is li or br, the node is last node in the line of table. - * @param {node} node - node - * @returns {boolean} - whether node is last node in line of table - * @private - */ - ; - - _proto._isLastNodeInLineOfTable = function _isLastNodeInLineOfTable(node) { - var nodeName = node.nodeName; - return nodeName === 'LI' || nodeName === 'BR'; - } - /** - * Get next node in the line of table - * If current node is li node and nextSibling is not existing, next node is parent's nextSibling. - * If nextSibiling of node is a list node (UL or OL), next node is first child of the list node. - * @param {node} node - node - * @returns {node} - next node - * @private - */ - ; - - _proto._getNextNodeInLineOfTable = function _getNextNodeInLineOfTable(node) { - var nextSibling = node.nextSibling; - - if (node.nodeName === 'LI' && !nextSibling) { - var parentNode = node.parentNode; - - while (!dom["a" /* default */].isCellNode(parentNode)) { - if (parentNode.nextSibling) { - nextSibling = parentNode.nextSibling; - break; - } - - parentNode = parentNode.parentNode; - } - } else if (dom["a" /* default */].isListNode(nextSibling)) { - nextSibling = nextSibling.firstChild; - } - - return nextSibling; - } - /** - * get nodes in each lines of table - * @param {range} range - range - * @returns {array} - each nodes in line - * @private - */ - ; - - _proto._getLinesOfSelectionInTable = function _getLinesOfSelectionInTable(range) { - var startContainer = range.startContainer, - endContainer = range.endContainer, - startOffset = range.startOffset, - endOffset = range.endOffset; - - var firstNode = this._getFirstNodeInLineOfTable(startContainer, startOffset); - - var lastNode = this._getLastNodeInLineOfTable(endContainer, endOffset); - - var lines = []; - var oneLine = []; - - while (firstNode) { - oneLine.push(firstNode); - - if (this._isLastNodeInLineOfTable(firstNode)) { - lines.push(oneLine); - oneLine = []; - } - - if (firstNode === lastNode) { - if (oneLine.length) { - lines.push(oneLine); - } - - break; - } - - firstNode = this._getNextNodeInLineOfTable(firstNode); - } - - return lines; - } - /** - * create OL or UL element - * @param {string} listType - OL, UL or TASK - * @returns {Node} - OL or UL element - * @private - */ - ; - - _proto._createListElement = function _createListElement(listType) { - return document.createElement(listType === 'TASK' ? 'UL' : listType); - } - /** - * create li element - * @param {array} oneLineNodes - node array - * @param {string} listType - OL, UL or TASK - * @returns {Node} - li element - * @private - */ - ; - - _proto._createListItemElement = function _createListItemElement(oneLineNodes, listType) { - var liNode = document.createElement('li'); - oneLineNodes.forEach(function (node) { - liNode.appendChild(node); - }); - - if (listType === 'TASK') { - var taskManager = this.wwe.componentManager.getManager('task'); - taskManager.formatTask(liNode); - } - - return liNode; - }; - - _proto._mergeListWithPreviousSibiling = function _mergeListWithPreviousSibiling(node) { - var previousSibling = node.previousSibling; - var result = node; - - if (previousSibling && node.nodeName === previousSibling.nodeName) { - this._mergeList(node, previousSibling); - - result = previousSibling; - } - - return result; - }; - - _proto._mergeListWithNextSibiling = function _mergeListWithNextSibiling(node) { - var nextSibling = node.nextSibling; - - if (nextSibling && node.nodeName === nextSibling.nodeName) { - this._mergeList(nextSibling, node); - } - - return node; - } - /** - * make listNode (OL or UL) - * @param {range} range - range - * @param {staring} listType - UL, OL, TASK - * @returns {array} childNodes of list node (OL/UL) - */ - ; - - _proto.createListInTable = function createListInTable(range, listType) { - var _this4 = this; - - var lines = this._getLinesOfSelectionInTable(range); - - var lastLine = lines[lines.length - 1]; - var lastNode = lastLine[lastLine.length - 1]; - var nextNode = lastNode.nextSibling; - var parentNode = lastNode.parentNode; - - var listNode = this._createListElement(listType); - - var _listNode = listNode, - listNodeName = _listNode.nodeName; - var newLIs = []; - lines.forEach(function (oneLineNodes) { - var oneLineFirstNode = oneLineNodes[0]; - var liElement; // oneLineFirstNode was already a list item in the table - - if (oneLineFirstNode.nodeName === 'LI') { - var existingListNode = oneLineFirstNode.parentNode; - liElement = oneLineFirstNode; // If the existing list that is already in table is not same the list to be created, - // change the existing list to the list to be created - - if (existingListNode.nodeName !== listNodeName) { - var childNodes = existingListNode.childNodes; - toArray_default()(childNodes).forEach(function () { - listNode.appendChild(existingListNode.firstChild); - }); - existingListNode.parentNode.replaceChild(listNode, existingListNode); - } - - listNode = liElement.parentNode; - } else { - liElement = _this4._createListItemElement(oneLineNodes, listType); - listNode.appendChild(liElement); - } - - newLIs.push(liElement); - }); - - if (!listNode.parentNode) { - parentNode.insertBefore(listNode, nextNode); - } - - listNode = this._mergeListWithPreviousSibiling(listNode); - - this._mergeListWithNextSibiling(listNode); - - return newLIs; - } - /** - * adjust range for list node (OL/UL) - * according to origin startContainer and endContainer - * @param {node} startContainer - startContainer - * @param {node} endContainer - endContainer - * @param {number} startOffset - startOffset - * @param {number} endOffset - endOffset - * @param {array} listNode - node array - */ - ; - - _proto.adjustRange = function adjustRange(startContainer, endContainer, startOffset, endOffset, listNode) { - var newStartContainer = dom["a" /* default */].containsNode(listNode[0], startContainer) ? startContainer : listNode[0]; - var newEndContainer = dom["a" /* default */].containsNode(listNode[listNode.length - 1], endContainer) ? endContainer : listNode[listNode.length - 1]; - var newStartOffset = startContainer.nodeName === 'TD' ? 0 : startOffset; - var newEndOffset = endContainer.nodeName === 'TD' ? 0 : endOffset; - this.wwe.setSelectionByContainerAndOffset(newStartContainer, newStartOffset, newEndContainer, newEndOffset); - }; - - return WwListManager; -}(); - -/* harmony default export */ var wwListManager = (wwListManager_WwListManager); -// CONCATENATED MODULE: ./src/js/wwTaskManager.js -/** - * @fileoverview Implements wysiwyg task manager - * @author NHN FE Development Lab - */ - - - - -var TASK_CLASS_NAME = 'task-list-item'; -var TASK_ATTR_NAME = 'data-te-task'; -var TASK_CHECKED_CLASS_NAME = 'checked'; -/** - * Class WwTaskManager - * @param {WysiwygEditor} wwe - WysiwygEditor instance - * @ignore - */ - -var wwTaskManager_WwTaskManager = /*#__PURE__*/function () { - function WwTaskManager(wwe) { - this.wwe = wwe; - this.eventManager = wwe.eventManager; - /** - * Name property - * @type {string} - */ - - this.name = 'task'; - - this._init(); - } - /** - * Init - * @private - */ - - - var _proto = WwTaskManager.prototype; - - _proto._init = function _init() { - this._initKeyHandler(); - - this._initEvent(); - - this.wwe.getEditor().addEventListener('mousedown', function (ev) { - var style = getComputedStyle(ev.target, ':before'); - - if (ev.target.hasAttribute(TASK_ATTR_NAME) && dom["a" /* default */].isInsideButtonBox(style, ev.offsetX, ev.offsetY)) { - // Prevent cursor focusing - ev.preventDefault(); - dom["a" /* default */].toggleClass(ev.target, TASK_CHECKED_CLASS_NAME); - } - }); - } - /** - * Initialize event - * @private - */ - ; - - _proto._initEvent = function _initEvent() { - var _this = this; - - this.eventManager.listen('wysiwygSetValueAfter', function () { - _this._removeTaskListClass(); - }); - } - /** - * Initialize key event handler - * @private - */ - ; - - _proto._initKeyHandler = function _initKeyHandler() { - var _this2 = this; - - this.wwe.addKeyEventHandler('ENTER', function (ev, range) { - if (_this2.isInTaskList(range)) { - _this2.wwe.defer(function () { - var newRange = _this2.wwe.getRange(); - - var li = dom["a" /* default */].closest(newRange.startContainer, 'li'); - - if (li) { - removeClass_default()(li, TASK_CHECKED_CLASS_NAME); - } - }); - } - }); - } - /** - * Check whether passed range is in task list or not - * @param {Range} range range - * @returns {boolean} result - */ - ; - - _proto.isInTaskList = function isInTaskList(range) { - var li; - - if (!range) { - range = this.wwe.getEditor().getSelection().cloneRange(); - } - - if (range.startContainer.nodeType === Node.ELEMENT_NODE && range.startContainer.tagName === 'LI') { - li = range.startContainer; - } else { - var _domUtils$parents = dom["a" /* default */].parents(range.startContainer, 'li'); - - li = _domUtils$parents[0]; - } - - return !!li && hasClass_default()(li, TASK_CLASS_NAME); - } - /** - * Unforamt task - * @param {Node} node target - */ - ; - - _proto.unformatTask = function unformatTask(node) { - var li = dom["a" /* default */].closest(node, 'li'); - removeClass_default()(li, TASK_CLASS_NAME); - removeClass_default()(li, TASK_CHECKED_CLASS_NAME); - li.removeAttribute(TASK_ATTR_NAME); - - if (!li.getAttribute('class')) { - li.removeAttribute('class'); - } - } - /** - * Format task - * @param {Node} node target - */ - ; - - _proto.formatTask = function formatTask(node) { - var li = dom["a" /* default */].closest(node, 'li'); - addClass_default()(li, TASK_CLASS_NAME); - li.setAttribute(TASK_ATTR_NAME, ''); - } - /** - * Format task if current range has task class name - * @private - */ - ; - - _proto._formatTaskIfNeed = function _formatTaskIfNeed() { - var range = this.wwe.getEditor().getSelection().cloneRange(); - - if (this.isInTaskList(range)) { - this.formatTask(range.startContainer); - } - } - /** - * Remove tasklist class - * @private - */ - ; - - _proto._removeTaskListClass = function _removeTaskListClass() { - // because task-list class is block merge normal list and task list - dom["a" /* default */].findAll(this.wwe.getBody(), '.task-list').forEach(function (node) { - removeClass_default()(node, 'task-list'); - }); - }; - - return WwTaskManager; -}(); - -/* harmony default export */ var wwTaskManager = (wwTaskManager_WwTaskManager); -// CONCATENATED MODULE: ./src/js/wwTableManager.js -/** - * @fileoverview Implements wysiwyg table manager - * @author NHN FE Development Lab - */ - - - - - - -var isIE10 = browser_default.a.msie && browser_default.a.version === 10; -var TABLE_CLASS_PREFIX = 'te-content-table-'; -var isIE10And11 = browser_default.a.msie && (browser_default.a.version === 10 || browser_default.a.version === 11); -var BASIC_CELL_CONTENT = browser_default.a.msie ? '' : '
    '; -var TABLE_CELL_SELECTED_CLASS_NAME = 'te-cell-selected'; -/** - * Class WwTableManager - * @param {WysiwygEditor} wwe - WysiwygEditor instance - * @ignore - */ - -var wwTableManager_WwTableManager = /*#__PURE__*/function () { - function WwTableManager(wwe) { - this.wwe = wwe; - this.eventManager = wwe.eventManager; - /** - * Name property - * @type {string} - */ - - this.name = 'table'; - this._lastCellNode = null; - - this._init(); - } - /** - * Initialize - * @private - */ - - - var _proto = WwTableManager.prototype; - - _proto._init = function _init() { - this._initKeyHandler(); - - this._initEvent(); - - this.tableID = 0; - } - /** - * Initialize event - * @private - */ - ; - - _proto._initEvent = function _initEvent() { - var _this = this; - - this.eventManager.listen('wysiwygRangeChangeAfter.table', function () { - var range = _this.wwe.getEditor().getSelection(); - - var isRangeInTable = _this.wwe.isInTable(range); - - _this._unwrapBlockInTable(); - - _this._completeTableIfNeed(); - - if (!isRangeInTable) { - var selectionManager = _this.wwe.componentManager.getManager('tableSelection'); - - selectionManager.removeClassAttrbuteFromAllCellsIfNeed(); - } - - _this._insertDefaultBlockBetweenTable(); - }); - this.eventManager.listen('wysiwygSetValueAfter.table', function () { - _this._unwrapBlockInTable(); - - _this._insertDefaultBlockBetweenTable(); - }); // remove last br in td or th - - this.eventManager.listen('wysiwygProcessHTMLText.table', function (html) { - return html.replace(/
    (<\/td>|<\/th>)/g, '$1'); - }); - this.eventManager.listen('cut.table', function () { - var selectionManager = _this.wwe.componentManager.getManager('tableSelection'); - - var selectedCells = selectionManager.getSelectedCells(); - - if (selectedCells.length) { - selectedCells.forEach(function (cell) { - cell.innerHTML = BASIC_CELL_CONTENT; - }); - } - - selectionManager.removeClassAttrbuteFromAllCellsIfNeed(); - }); - this.eventManager.listen('copyBefore.table', function (_ref) { - var clipboardContainer = _ref.clipboardContainer; - return _this.updateTableHtmlOfClipboardIfNeed(clipboardContainer); - }); - } - /** - * Update table html of clipboard data, if has selected cells. - * @param {HTMLElement} clipboardContainer - clipboard element - */ - ; - - _proto.updateTableHtmlOfClipboardIfNeed = function updateTableHtmlOfClipboardIfNeed(clipboardContainer) { - var _this2 = this; - - var selectionManager = this.wwe.componentManager.getManager('tableSelection'); - var selectedCells = selectionManager.getSelectedCells(); - - if (selectedCells.length) { - selectionManager.createRangeBySelectedCells(); - var fragment = this.wwe.getEditor().getSelection().cloneContents(); - toArray_default()(fragment.children).forEach(function (node) { - if (!_this2.isTableOrSubTableElement(node.nodeName)) { - return; - } - - if (node.nodeName === 'TABLE' && node.querySelector('thead') && node.querySelector('tbody')) { - dom["a" /* default */].remove(node); - } else if (node.previousSibling && node.previousSibling.nodeName === 'TABLE') { - node.previousSibling.appendChild(node); - } else { - _this2._completeIncompleteTable(node); - - if (node.nodeName !== 'TABLE' && node.nodeName !== 'THEAD') { - var thead = dom["a" /* default */].closest(node, 'table').querySelector('thead'); - dom["a" /* default */].remove(thead); - } - } - }); - clipboardContainer.appendChild(fragment); - dom["a" /* default */].findAll(clipboardContainer, "." + TABLE_CELL_SELECTED_CLASS_NAME).forEach(function (cell) { - removeClass_default()(cell, TABLE_CELL_SELECTED_CLASS_NAME); - }); - } - } - /** - * Paste clibpard data that contains only table. - * @param {Node} clipboardTable - table element of clipboard - */ - ; - - _proto.pasteTableData = function pasteTableData(clipboardTable) { - this._expandTableIfNeed(clipboardTable); - - this._pasteDataIntoTable(clipboardTable); - } - /** - * Initialize key event handler - * @private - */ - ; - - _proto._initKeyHandler = function _initKeyHandler() { - var _this3 = this; - - this.keyEventHandlers = { - DEFAULT: function DEFAULT(ev, range, keymap) { - var isRangeInTable = _this3.wwe.isInTable(range); - - if (isRangeInTable && !_this3._isModifierKey(keymap)) { - _this3._recordUndoStateIfNeed(range); - - _this3._removeContentsAndChangeSelectionIfNeed(range, keymap, ev); - } else if (!isRangeInTable && _this3._lastCellNode) { - _this3._recordUndoStateAndResetCellNode(range); - } - - if (isRangeInTable && !_this3._isModifierKeyPushed(ev)) { - _this3.wwe.getEditor().modifyDocument(function () { - var selectionManager = _this3.wwe.componentManager.getManager('tableSelection'); - - selectionManager.removeClassAttrbuteFromAllCellsIfNeed(); - }); - } - }, - ENTER: function ENTER(ev, range) { - var isNeedNext; - - if (_this3._isAfterTable(range)) { - ev.preventDefault(); - range.setStart(range.startContainer, range.startOffset - 1); - - _this3.wwe.breakToNewDefaultBlock(range); - - isNeedNext = false; - } else if (_this3._isBeforeTable(range)) { - ev.preventDefault(); - - _this3.wwe.breakToNewDefaultBlock(range, 'before'); - - isNeedNext = false; - } else if (_this3.wwe.isInTable(range)) { - if (!_this3._isInList(range.startContainer) && _this3._isInStyledText(range)) { - _this3.wwe.defer(function () { - _this3._removeBRinStyleText(); - }); - } else if (_this3._isEmptyFirstLevelLI(range)) { - _this3.wwe.defer(function () { - // Squire make div when LI level is decreased in first level so should replace div to br - var afterRange = _this3.wwe.getRange().cloneRange(); - - var div = afterRange.startContainer; - var br = document.createElement('br'); - div.parentNode.replaceChild(br, div); - afterRange.setStartBefore(br); - afterRange.collapse(true); - - _this3.wwe.getEditor().setSelection(afterRange); - }); - } - - _this3._appendBrIfTdOrThNotHaveAsLastChild(range); - - isNeedNext = false; - } - - return isNeedNext; - }, - BACK_SPACE: function BACK_SPACE(ev, range, keymap) { - return _this3._handleBackspaceAndDeleteKeyEvent(ev, range, keymap); - }, - DELETE: function DELETE(ev, range, keymap) { - return _this3._handleBackspaceAndDeleteKeyEvent(ev, range, keymap); - }, - TAB: function TAB() { - return _this3._moveCursorTo('next', 'cell'); - }, - 'SHIFT+TAB': function SHIFTTAB(ev) { - return _this3._moveCursorTo('previous', 'cell', ev); - }, - UP: function UP(ev) { - return _this3._moveCursorTo('previous', 'row', ev); - }, - DOWN: function DOWN(ev) { - return _this3._moveCursorTo('next', 'row', ev); - } - }; - forEachOwnProperties_default()(this.keyEventHandlers, function (handler, key) { - return _this3.wwe.addKeyEventHandler(key, handler); - }); - } - /** - * Check whether node is li and empty - * @param {node} node node - * @returns {boolean} whether node is li and empty - * @private - */ - ; - - _proto._isEmptyListItem = function _isEmptyListItem(node) { - var childNodes = node.childNodes, - nodeName = node.nodeName; - return nodeName === 'LI' && childNodes.length === 1 && childNodes[0].nodeName === 'BR'; - } - /** - * Check whether range is in empty LI that is first level - * @param {range} range range - * @returns {boolean} whether range is in empty LI that is first level - * @private - */ - ; - - _proto._isEmptyFirstLevelLI = function _isEmptyFirstLevelLI(range) { - var collapsed = range.collapsed, - startContainer = range.startContainer, - startOffset = range.startOffset; - return collapsed && startOffset === 0 && this._isEmptyListItem(startContainer) && dom["a" /* default */].isFirstLevelListItem(startContainer); - } - /** - * Check whether range is in style tag that is like 'B', 'I', 'S', 'SPAN', 'CODE' - * Those tag is supported in Wysiwyg. - * @param {Range} range range - * @returns {Boolean} range is in the style tag - * @private - */ - ; - - _proto._isInStyledText = function _isInStyledText(range) { - var startContainer = range.startContainer; - var node; - - if (dom["a" /* default */].isTextNode(startContainer)) { - node = startContainer.parentNode; - } else { - node = startContainer; - } - - return range.collapsed && dom["a" /* default */].isStyledNode(node); - } - /** - * When enter key occur in the styled text, 'br' tag insert in the style tag like 'b', 'i' etc. - * So in thoes case, 'br' tag would be pulled out in this logic. - * @private - */ - ; - - _proto._removeBRinStyleText = function _removeBRinStyleText() { - var afterRange = this.wwe.getRange(); - var startContainer = afterRange.startContainer, - startOffset = afterRange.startOffset; - var styleNode; - - if (startContainer.nodeName === 'TD') { - // This case is TEST
    |
    - styleNode = dom["a" /* default */].getChildNodeByOffset(startContainer, startOffset - 1); - } else { - styleNode = dom["a" /* default */].getParentUntil(startContainer, 'TD'); - } - - var brNode = styleNode.querySelector('br'); - - if (!brNode) { - return; - } - - var _styleNode = styleNode, - tdNode = _styleNode.parentNode, - nodeName = _styleNode.nodeName; - - if (nodeName === 'CODE' && !brNode.previousSibling) { - // cursor is located in the start of text - // Before Enter : |TEST - // After Enter :
    |TEST
    - // TO BE :
    |TEST - tdNode.insertBefore(brNode, styleNode); - afterRange.setStart(styleNode, 0); - } else if (nodeName === 'CODE' && !brNode.nextSibling) { - // cursor is located in the end of text - // Before Enter : TEST| - // After Enter : TEST
    |
    - // TO BE : TEST
    | - tdNode.insertBefore(brNode, styleNode.nextSibling); - afterRange.setStart(tdNode, dom["a" /* default */].getNodeOffsetOfParent(brNode) + 1); - } else { - // [Case 1] cursor is located in the middle of text - // Before Enter : TE|ST - // After Enter : TE
    |ST
    - // TO BE : TE
    |ST - // [Case 2] cursor is located in the start of text - // Before Enter : |TEST - // After Enter :
    |TEST
    - // TO BE : |
    TEST - // [Case 3] cursor is located in the end of text - // Before Enter : TEST| - // After Enter : TEST
    |
    - // TO BE : TEST
    | - var newNode = this._splitByBR(styleNode, brNode); - - afterRange.setStart(newNode, 0); - } - - afterRange.collapse(true); - this.wwe.getEditor().setSelection(afterRange); - } - /** - * When container node have br node, split container base on br node and pull out BR. - * After Enter : TE
    ST
    - * TO BE : TE
    ST - * @param {Node} container container - * @param {Node} brNode container - * @returns {Node} node for positioning of cursor - * @private - */ - ; - - _proto._splitByBR = function _splitByBR(container, brNode) { - var cloneStyleNode = container.cloneNode(true); - var newBR = document.createElement('br'); - var parentNode = container.parentNode; // Origin style node should be removed the back nodes of br node. - - dom["a" /* default */].removeNodesByDirection(container, brNode, false); - brNode.parentNode.removeChild(brNode); // Cloned style node should be removed the front nodes of br node - - var clonedBR = cloneStyleNode.querySelector('br'); - dom["a" /* default */].removeNodesByDirection(cloneStyleNode, clonedBR, true); - clonedBR.parentNode.removeChild(clonedBR); - parentNode.insertBefore(cloneStyleNode, container.nextSibling); - parentNode.insertBefore(newBR, cloneStyleNode); - var leafNode = dom["a" /* default */].getLeafNode(cloneStyleNode); - - if (!dom["a" /* default */].getTextLength(leafNode)) { - leafNode.textContent = "\u200B"; - } - - return leafNode; - } - /** - * Check whether passed range is right before table or not - * @param {Range} range range - * @returns {boolean} result - * @private - */ - ; - - _proto._isBeforeTable = function _isBeforeTable(range) { - return dom["a" /* default */].getNodeName(dom["a" /* default */].getChildNodeByOffset(range.startContainer, range.startOffset)) === 'TABLE'; - } - /** - * Check whether passed range is right after table or not - * @param {Range} range range - * @returns {boolean} result - * @private - */ - ; - - _proto._isAfterTable = function _isAfterTable(range) { - var prevElem = dom["a" /* default */].getPrevOffsetNodeUntil(range.startContainer, range.startOffset); - return dom["a" /* default */].getNodeName(prevElem) === 'TABLE' && range.commonAncestorContainer === this.wwe.getBody(); - } - /** - * Handle backspace and delete key event - * @param {object} ev - Event object - * @param {Range} range - Range Object - * @param {string} keymap - keymap - * @returns {boolean} - need next - * @private - */ - ; - - _proto._handleBackspaceAndDeleteKeyEvent = function _handleBackspaceAndDeleteKeyEvent(ev, range, keymap) { - var isBackspace = keymap === 'BACK_SPACE'; - var selectionManager = this.wwe.componentManager.getManager('tableSelection'); - var selectedCells = selectionManager.getSelectedCells(); - var isNeedNext = true; - - if (range.collapsed) { - if (this.wwe.isInTable(range)) { - if (isBackspace) { - this._tableHandlerOnBackspace(range, ev); - } else { - this._tableHandlerOnDelete(range, ev); - } - - this._removeContentsAndChangeSelectionIfNeed(range, keymap, ev); - - isNeedNext = false; - } else if (!isBackspace && this._isBeforeTable(range) || isBackspace && this._isAfterTable(range)) { - ev.preventDefault(); - var startOffset = isBackspace ? range.startOffset - 1 : range.startOffset; - - this._removeTable(range, dom["a" /* default */].getChildNodeByOffset(range.startContainer, startOffset)); - - isNeedNext = false; - } - } else if (this.wwe.isInTable(range)) { - if (selectedCells.length > 0) { - var removed = this._removeContentsAndChangeSelectionIfNeed(range, keymap, ev); - - if (removed) { - ev.preventDefault(); - isNeedNext = false; - } - } - } - - return isNeedNext; - } - /** - * Move Li node to previous node that is previous node of list node. - * @param {node} liNode li node - * @param {range} range range - * @private - */ - ; - - _proto._moveListItemToPreviousOfList = function _moveListItemToPreviousOfList(liNode, range) { - var listNode = liNode.parentNode, - firstChild = liNode.firstChild; - var fragment = document.createDocumentFragment(); - dom["a" /* default */].mergeNode(liNode, fragment); - listNode.parentNode.insertBefore(fragment, listNode); - range.setStart(firstChild, 0); - range.collapse(true); - this.wwe.getEditor().setSelection(range); - - if (!listNode.hasChildNodes()) { - listNode.parentNode.removeChild(listNode); - } - }; - - _proto._isInList = function _isInList(targetNode) { - return dom["a" /* default */].getParentUntilBy(targetNode, function (node) { - return node && (dom["a" /* default */].isListNode(node) || node.nodeName === 'LI'); - }, function (node) { - return node && (node.nodeName === 'TD' || node.nodeName === 'TH'); - }); - } - /** - * Find LI node while search parentNode inside TD - * @param {node} startContainer startContainer - * @returns {node} liNode or null - * @private - */ - ; - - _proto._findListItem = function _findListItem(startContainer) { - return dom["a" /* default */].getParentUntilBy(startContainer, function (node) { - return node && dom["a" /* default */].isListNode(node); - }, function (node) { - return node && (node.nodeName === 'TD' || node.nodeName === 'TH'); - }); - } - /** - * Backspace handler in table - * @param {Range} range range - * @param {Event} event event - * @private - */ - ; - - _proto._tableHandlerOnBackspace = function _tableHandlerOnBackspace(range, event) { - var startContainer = range.startContainer, - startOffset = range.startOffset; - - var liNode = this._findListItem(startContainer); - - if (liNode && startOffset === 0 && dom["a" /* default */].isFirstListItem(liNode) && dom["a" /* default */].isFirstLevelListItem(liNode)) { - this.wwe.getEditor().saveUndoState(range); - - this._moveListItemToPreviousOfList(liNode, range); - - event.preventDefault(); - } else { - var prevNode = dom["a" /* default */].getPrevOffsetNodeUntil(startContainer, startOffset, 'TR'); - var prevNodeName = dom["a" /* default */].getNodeName(prevNode); - - if (prevNodeName === 'BR' && prevNode.parentNode.childNodes.length !== 1) { - event.preventDefault(); - dom["a" /* default */].remove(prevNode); - } - } - } - /** - * Return whether delete br in the br - * @param {Range} range Range object - * @returns {boolean} - * @private - */ - ; - - _proto._isDeletingBR = function _isDeletingBR(range) { - var currentNode = this._getCurrentNodeInCell(range); - - var nextSibling = currentNode && currentNode.nextSibling; - return dom["a" /* default */].getNodeName(currentNode) === 'BR' && !!nextSibling && dom["a" /* default */].getNodeName(nextSibling) === 'BR'; - }; - - _proto._getCurrentNodeInCell = function _getCurrentNodeInCell(range) { - var startContainer = range.startContainer, - startOffset = range.startOffset; - var currentNode; - - if (dom["a" /* default */].getNodeName(startContainer) === 'TD') { - currentNode = dom["a" /* default */].getChildNodeByOffset(startContainer, startOffset); - } else if (dom["a" /* default */].getParentUntil(startContainer, 'TD')) { - currentNode = startContainer; - } - - return currentNode; - } - /** - * Check whether range is located in end of the list - * @param {Node} liNode liNode - * @param {Range} range range - * @returns {Boolean} whether range is located in end of the list - * @private - */ - ; - - _proto._isEndOfList = function _isEndOfList(liNode, range) { - var startContainer = range.startContainer, - startOffset = range.startOffset; - var result = false; - - if (!liNode.nextSibling) { - if (liNode === startContainer) { - var liNodeOffset = dom["a" /* default */].getOffsetLength(liNode); - - if (liNode.lastChild.nodeName === 'BR') { - liNodeOffset -= 1; - } - - result = liNodeOffset === startOffset; - } else { - var parentNode = dom["a" /* default */].getParentUntil(startContainer, 'li') || startContainer; - var startContainerOffset = dom["a" /* default */].getOffsetLength(startContainer); - var lastChild = liNode.lastChild; - - if (lastChild.nodeName === 'BR') { - lastChild = lastChild.previousSibling; - } - - result = lastChild === parentNode && startContainerOffset === startOffset; - } - } - - return result; - } - /** - * Get next line nodes from target node - * @param {Node} node target node - * @returns {DocumentFragment} next line nodes - * @private - */ - ; - - _proto._getNextLineNode = function _getNextLineNode(node) { - var fragment = document.createDocumentFragment(); - var parentNode = dom["a" /* default */].getParentUntil(node, 'TD'); - var nextSibling = parentNode.nextSibling; - - while (nextSibling) { - var _nextSibling = nextSibling, - next = _nextSibling.nextSibling; - fragment.appendChild(nextSibling); - - if (nextSibling.nodeName === 'BR') { - break; - } - - nextSibling = next; - } - - return fragment; - } - /** - * Delete handler in table - * @param {Range} range range - * @param {Event} event event - * @private - */ - ; - - _proto._tableHandlerOnDelete = function _tableHandlerOnDelete(range, event) { - var liNode = this._findListItem(range.startContainer); - - if (liNode && this._isEndOfList(liNode, range)) { - this.wwe.getEditor().saveUndoState(range); - - if (liNode.lastChild.nodeName === 'BR') { - liNode.removeChild(liNode.lastChild); - } - - dom["a" /* default */].mergeNode(this._getNextLineNode(liNode), liNode); - event.preventDefault(); - } else if (this._isDeletingBR(range)) { - var currentNode = this._getCurrentNodeInCell(range); - - currentNode.parentNode.removeChild(currentNode.nextSibling); - event.preventDefault(); - } - } - /** - * Append br if td or th doesn't have br as last child - * @param {Range} range range - * @private - */ - ; - - _proto._appendBrIfTdOrThNotHaveAsLastChild = function _appendBrIfTdOrThNotHaveAsLastChild(range) { - var startContainerNodeName = dom["a" /* default */].getNodeName(range.startContainer); - var tdOrTh; - - if (startContainerNodeName === 'TD' || startContainerNodeName === 'TH') { - tdOrTh = range.startContainer; - } else { - var paths = dom["a" /* default */].parentsUntil(range.startContainer, 'tr'); - tdOrTh = paths[paths.length - 1]; - } - - var nodeName = dom["a" /* default */].getNodeName(tdOrTh.lastChild); - - if (nodeName !== 'BR' && nodeName !== 'DIV' && nodeName !== 'UL' && nodeName !== 'OL' && !isIE10And11) { - dom["a" /* default */].append(tdOrTh, '
    '); - } - } - /** - * Unwrap default block tag in table - * For Squire default action making abnormal behavior, remove default blocks in Table after setValue() called - * @private - */ - ; - - _proto._unwrapBlockInTable = function _unwrapBlockInTable() { - var blocks = dom["a" /* default */].findAll(this.wwe.getBody(), 'td div,th div,tr>br,td>br,th>br'); - blocks.forEach(function (node) { - if (dom["a" /* default */].getNodeName(node) === 'BR') { - var parentNodeName = dom["a" /* default */].getNodeName(node.parentNode); - var isInTableCell = /TD|TH/.test(parentNodeName); - var isEmptyTableCell = node.parentNode.textContent.length === 0; - var isLastBR = node.parentNode.lastChild === node; - - if (parentNodeName === 'TR' || isInTableCell && !isEmptyTableCell && isLastBR) { - dom["a" /* default */].remove(node); - } - } else { - dom["a" /* default */].unwrap(node); - } - }); - } - /** - * Insert default block between table element - * @private - */ - ; - - _proto._insertDefaultBlockBetweenTable = function _insertDefaultBlockBetweenTable() { - var tables = dom["a" /* default */].findAll(this.wwe.getBody(), 'table'); - tables.forEach(function (node) { - if (node.nextElementSibling && node.nextElementSibling.nodeName === 'TABLE') { - var insertedElement = document.createElement('div'); - insertedElement.appendChild(document.createElement('br')); - dom["a" /* default */].insertAfter(insertedElement, node); - } - }); - } - /** - * Remove table - * @param {Range} range range - * @param {Node} table table - * @private - */ - ; - - _proto._removeTable = function _removeTable(range, table) { - if (table.tagName === 'TABLE') { - this.wwe.getEditor().saveUndoState(range); - this.wwe.saveSelection(range); - dom["a" /* default */].remove(table); - this.wwe.restoreSavedSelection(); - } - } - /** - * record undo state if need - * @param {Range} range range - * @private - */ - ; - - _proto._recordUndoStateIfNeed = function _recordUndoStateIfNeed(range) { - var currentCellNode = dom["a" /* default */].getParentUntil(range.startContainer, 'TR'); - - if (range.collapsed && currentCellNode && this._lastCellNode !== currentCellNode) { - this.wwe.getEditor().saveUndoState(range); - this._lastCellNode = currentCellNode; - } - } - /** - * record undo state and reset last cell node - * @param {Range} range range - * @private - */ - ; - - _proto._recordUndoStateAndResetCellNode = function _recordUndoStateAndResetCellNode(range) { - this.wwe.getEditor().saveUndoState(range); - this.resetLastCellNode(); - } - /** - * Paste table data into table element - * @param {DocumentFragment} fragment Fragment of table element within - * @private - */ - ; - - _proto._pasteDataIntoTable = function _pasteDataIntoTable(fragment) { - var _this$wwe$getEditor$g = this.wwe.getEditor().getSelection(), - startContainer = _this$wwe$getEditor$g.startContainer; - - var tableData = this._getTableDataFromTable(fragment); - - var isTableCell = startContainer.nodeName === 'TD' || startContainer.nodeName === 'TH'; - var brString = isIE10 ? '' : '
    '; - var anchorElement, td, tr, tdContent; - - if (isTableCell) { - anchorElement = startContainer; - } else { - anchorElement = dom["a" /* default */].getParentUntilBy(startContainer, function (node) { - return node && (node.nodeName === 'TD' || node.nodeName === 'TH'); - }, function (node) { - return !!dom["a" /* default */].closest(node, 'table'); - }); - anchorElement = anchorElement ? anchorElement.parentNode : null; - } - - anchorElement = anchorElement ? anchorElement : startContainer.querySelector('th,td'); - td = anchorElement; - - while (tableData.length) { - tr = tableData.shift(); - - while (td && tr.length) { - tdContent = tr.shift(); - - if (tdContent.length) { - td.textContent = tdContent; - } else { - td.innerHTML = brString; - } - - td = dom["a" /* default */].getTableCellByDirection(td, 'next'); - } - - td = dom["a" /* default */].getSiblingRowCellByDirection(anchorElement, 'next', false); - anchorElement = td; - } - } - /** - * Get array data from table element - * @param {DocumentFragment} fragment table element - * @returns {Array} - * @private - */ - ; - - _proto._getTableDataFromTable = function _getTableDataFromTable(fragment) { - var tableData = []; - dom["a" /* default */].findAll(fragment, 'tr').forEach(function (tr) { - var trData = []; - toArray_default()(tr.children).forEach(function (cell) { - trData.push(cell.textContent); - }); - - if (trData.length) { - tableData.push(trData); - } - }); - return tableData; - } - /** - * Remove selected table contents - * @param {HTMLElement} selectedCells Selected cells - * @private - */ - ; - - _proto._removeTableContents = function _removeTableContents(selectedCells) { - this.wwe.getEditor().saveUndoState(); - toArray_default()(selectedCells).forEach(function (cell) { - var brHTMLString = isIE10 ? '' : '
    '; - cell.innerHTML = brHTMLString; - }); - } - /** - * Wrap dangling table cells with new TR - * @param {HTMLElement} container - clipboard container - * @returns {HTMLElement|null} - */ - ; - - _proto.wrapDanglingTableCellsIntoTrIfNeed = function wrapDanglingTableCellsIntoTrIfNeed(container) { - var danglingTableCells = dom["a" /* default */].children(container, 'td,th'); - var tr; - - if (danglingTableCells.length) { - var wrapperTr = document.createElement('tr'); - toArray_default()(danglingTableCells).forEach(function (cell) { - dom["a" /* default */].append(wrapperTr, cell); - }); - tr = wrapperTr; - } - - return tr; - } - /** - * Wrap TRs with new TBODY - * @param {HTMLElement} container - clipboard container - * @returns {HTMLElement|null} - */ - ; - - _proto.wrapTrsIntoTbodyIfNeed = function wrapTrsIntoTbodyIfNeed(container) { - var danglingTrs = dom["a" /* default */].children(container, 'tr'); - var ths = []; - toArray_default()(danglingTrs).forEach(function (tr) { - ths = ths.concat(tr.querySelectorAll('th')); - }); - var tbody; - - if (ths.length) { - toArray_default()(ths).forEach(function (node) { - var td = document.createElement('td'); - td.innerHTML = node.innerHTML; - dom["a" /* default */].insertBefore(node, td); - dom["a" /* default */].remove(node); - }); - } - - if (danglingTrs.length) { - var wrapperTableBody = document.createElement('tbody'); - toArray_default()(danglingTrs).forEach(function (tr) { - dom["a" /* default */].append(wrapperTableBody, tr); - }); - tbody = wrapperTableBody; - } - - return tbody; - } - /** - * Wrap THEAD followed by TBODY both into Table - * @param {HTMLElement} container - clipboard container - * @returns {HTMLElement|null} - */ - ; - - _proto.wrapTheadAndTbodyIntoTableIfNeed = function wrapTheadAndTbodyIntoTableIfNeed(container) { - var danglingThead = dom["a" /* default */].children(container, 'thead'); - var danglingTbody = dom["a" /* default */].children(container, 'tbody'); - var wrapperTable = document.createElement('table'); - var table; - - if (!danglingTbody.length && danglingThead.length) { - dom["a" /* default */].append(wrapperTable, danglingThead[0]); - dom["a" /* default */].append(wrapperTable, this._createTheadOrTboday('tbody')); - table = wrapperTable; - } else if (danglingTbody.length && !danglingThead.length) { - dom["a" /* default */].append(wrapperTable, this._createTheadOrTboday('thead')); - dom["a" /* default */].append(wrapperTable, danglingTbody[0]); - table = wrapperTable; - } else if (danglingTbody.length && danglingThead.length) { - dom["a" /* default */].append(wrapperTable, danglingThead[0]); - dom["a" /* default */].append(wrapperTable, danglingTbody[0]); - table = wrapperTable; - } - - return table; - } - /** - * Whether pasting element is table element - * @param {string} pastingNodeName Pasting node name - * @returns {boolean} - */ - ; - - _proto.isTableOrSubTableElement = function isTableOrSubTableElement(pastingNodeName) { - return pastingNodeName === 'TABLE' || pastingNodeName === 'TBODY' || pastingNodeName === 'THEAD' || pastingNodeName === 'TR' || pastingNodeName === 'TD'; - }; - - _proto._createTheadOrTboday = function _createTheadOrTboday(type) { - var theadOrTbody = document.createElement(type); - var tr = document.createElement('tr'); - theadOrTbody.appendChild(tr); - return theadOrTbody; - } - /** - * Stuff table cells into incomplete rows - * @param {HTMLElement} trs HTMLElement wrapped TRs - * @param {number} maximumCellLength maximum cell length of table - * @private - */ - ; - - _proto._stuffTableCellsIntoIncompleteRow = function _stuffTableCellsIntoIncompleteRow(trs, maximumCellLength) { - toArray_default()(trs).forEach(function (row) { - var tableCells = row.querySelectorAll('th,td'); - var parentNodeName = dom["a" /* default */].getNodeName(row.parentNode); - var cellTagName = parentNodeName === 'THEAD' ? 'th' : 'td'; - - for (var cellLength = tableCells.length; cellLength < maximumCellLength; cellLength += 1) { - dom["a" /* default */].append(row, tableCellGenerator(1, cellTagName)); - } - }); - } - /** - * Prepare to table cell stuffing - * @param {HTMLElement} trs wrapped TRs - * @returns {{maximumCellLength: *, needTableCellStuffingAid: boolean}} - */ - ; - - _proto.prepareToTableCellStuffing = function prepareToTableCellStuffing(trs) { - var maximumCellLength = trs[0].querySelectorAll('th,td').length; - var needTableCellStuffingAid = false; - toArray_default()(trs).forEach(function (row) { - var cellCount = row.querySelectorAll('th,td').length; - - if (maximumCellLength !== cellCount) { - needTableCellStuffingAid = true; - - if (maximumCellLength < cellCount) { - maximumCellLength = cellCount; - } - } - }); - return { - maximumCellLength: maximumCellLength, - needTableCellStuffingAid: needTableCellStuffingAid - }; - } - /** - * Add TBODY or THEAD if need - * @param {HTMLElement} table - Table HTMLElement element - * @private - */ - ; - - _proto._addTbodyOrTheadIfNeed = function _addTbodyOrTheadIfNeed(table) { - var isTheadNotExists = !table.querySelector('thead'); - var isTbodyNotExists = !table.querySelector('tbody'); - - if (isTheadNotExists) { - dom["a" /* default */].prepend(table, ''); - } else if (isTbodyNotExists) { - dom["a" /* default */].append(table, ''); - } - } - /** - * Append table cells - * @param {HTMLElement} table Table element - */ - ; - - _proto.tableCellAppendAidForTableElement = function tableCellAppendAidForTableElement(table) { - this._addTbodyOrTheadIfNeed(table); - - this._addTrIntoContainerIfNeed(table); - - var trs = table.querySelectorAll('tr'); - var tableAidInformation = this.prepareToTableCellStuffing(trs); - var maximumCellLength = tableAidInformation.maximumCellLength, - needTableCellStuffingAid = tableAidInformation.needTableCellStuffingAid; - - if (needTableCellStuffingAid) { - this._stuffTableCellsIntoIncompleteRow(trs, maximumCellLength); - } - } - /** - * Generate THEAD and append TDs with same amount of given TBODY - * @param {HTMLElement} node TR element - * @returns {{thead: HTMLElement, tbody: HTMLElement}} - * @private - */ - ; - - _proto._generateTheadAndTbodyFromTbody = function _generateTheadAndTbodyFromTbody(node) { - var tr = document.createElement('tr'); - var thead = document.createElement('thead'); - dom["a" /* default */].append(tr, tableCellGenerator(node.querySelector('tr > td').length, 'th')); - dom["a" /* default */].append(thead, tr); - return { - thead: thead, - tbody: node - }; - } - /** - * Generate TBODY and append TDs with same amount of given THEAD - * @param {HTMLElement} node TR element - * @returns {{thead: HTMLElement, tbody: HTMLElement}} - * @private - */ - ; - - _proto._generateTheadAndTbodyFromThead = function _generateTheadAndTbodyFromThead(node) { - var tr = document.createElement('tr'); - var tbody = document.createElement('tbody'); - dom["a" /* default */].append(tr, tableCellGenerator(node.querySelectorAll('th').length, 'td')); - dom["a" /* default */].append(tbody, tr); - return { - thead: node, - tbody: tbody - }; - } - /** - * Generate THEAD and TBODY and append given TR within - * @param {HTMLElement} node TR element - * @returns {{thead: HTMLElement, tbody: HTMLElement}} - * @private - */ - ; - - _proto._generateTheadAndTbodyFromTr = function _generateTheadAndTbodyFromTr(node) { - var thead = document.createElement('thead'); - var tbody = document.createElement('tbody'); - var theadRow, tbodyRow; - - if (node.children[0].tagName === 'TH') { - theadRow = node; - tbodyRow = dom["a" /* default */].createElementWith("" + tableCellGenerator(node.querySelectorAll('th').length, 'td') + ""); - } else { - theadRow = dom["a" /* default */].createElementWith("" + tableCellGenerator(node.querySelectorAll('td').length, 'th') + ""); - tbodyRow = node; - } - - dom["a" /* default */].append(thead, theadRow); - dom["a" /* default */].append(tbody, tbodyRow); - return { - thead: thead, - tbody: tbody - }; - } - /** - * Complete passed table - * @param {HTMLElement} node - Table inner element - * @private - */ - ; - - _proto._completeIncompleteTable = function _completeIncompleteTable(node) { - var nodeName = node.tagName; - var table, completedTableContents; - - if (nodeName === 'TABLE') { - table = node; - } else { - table = document.createElement('table'); - node.parentNode.insertBefore(table, node.nextSibling); - - if (nodeName === 'TBODY') { - completedTableContents = this._generateTheadAndTbodyFromTbody(node); - } else if (nodeName === 'THEAD') { - completedTableContents = this._generateTheadAndTbodyFromThead(node); - } else if (nodeName === 'TR') { - completedTableContents = this._generateTheadAndTbodyFromTr(node); - } - - table.appendChild(completedTableContents.thead); - table.appendChild(completedTableContents.tbody); - } - - this._removeEmptyRows(table); - - this.tableCellAppendAidForTableElement(table); - }; - - _proto._removeEmptyRows = function _removeEmptyRows(table) { - dom["a" /* default */].findAll(table, 'tr').forEach(function (tr) { - if (!tr.cells.length) { - tr.parentNode.removeChild(tr); - } - }); - } - /** - * Whole editor body searching incomplete table completion - * @private - */ - ; - - _proto._completeTableIfNeed = function _completeTableIfNeed() { - var _this4 = this; - - var body = this.wwe.getEditor().getBody(); - toArray_default()(body.children).forEach(function (node) { - if (!_this4.isTableOrSubTableElement(node.nodeName)) { - return; - } - - if (node.nodeName === 'TABLE' && !node.querySelector('tbody')) { - dom["a" /* default */].remove(node); - } else { - _this4._completeIncompleteTable(node); - } - }); - } - /** - * Reset _lastCellNode to null - */ - ; - - _proto.resetLastCellNode = function resetLastCellNode() { - this._lastCellNode = null; - } - /** - * Set _lastCellNode to given node - * @param {HTMLElement} node Table cell - */ - ; - - _proto.setLastCellNode = function setLastCellNode(node) { - this._lastCellNode = node; - } - /** - * Return whether only modifier key pressed or not - * @param {string} keymap Pressed keymap string - * @returns {boolean} - * @private - */ - ; - - _proto._isModifierKey = function _isModifierKey(keymap) { - return /((META|SHIFT|ALT|CONTROL)\+?)/g.test(keymap); - } - /** - * Return whether modifier keys pressed or not - * @param {object} ev keyboard event object - * @returns {boolean} - * @private - */ - ; - - _proto._isModifierKeyPushed = function _isModifierKeyPushed(ev) { - return ev.metaKey || ev.ctrlKey || ev.altKey || ev.shiftKey; - } - /** - * Add one row into empty TBODY - * @param {HTMLElement} table Currently processing table - * @private - */ - ; - - _proto._addTrIntoContainerIfNeed = function _addTrIntoContainerIfNeed(table) { - toArray_default()(table.children).forEach(function (container) { - var hasNoRows = container.querySelectorAll('tr').length === 0; - - if (hasNoRows) { - dom["a" /* default */].append(container, ''); - } - }); - }; - - _proto._expandTableIfNeed = function _expandTableIfNeed(fragment) { - var range = this.wwe.getEditor().getSelection().cloneRange(); - - var _domUtils$parents = dom["a" /* default */].parents(range.startContainer, 'table'), - table = _domUtils$parents[0]; - - var difference = this._getColumnAndRowDifference(fragment, range); - - if (difference.column < 0) { - this._appendCellForAllRow(table, difference.column); - } - - if (difference.row < 0) { - this._appendRow(table, difference.row); - } - }; - - _proto._getColumnAndRowDifference = function _getColumnAndRowDifference(fragment, range) { - var tableData = this._getTableDataFromTable(fragment); - - var rowLength = tableData.length; - var columnLength = tableData[0].length; - var currentCell = dom["a" /* default */].closest(range.startContainer, 'th,td'); - var currentRow = currentCell.parentNode; - var currentColumnIndex = dom["a" /* default */].getNodeOffsetOfParent(currentCell); - var currentRowIndex = dom["a" /* default */].getNodeOffsetOfParent(currentCell.parentNode); - - var _domUtils$parents2 = dom["a" /* default */].parents(currentRow, 'table'), - table = _domUtils$parents2[0]; - - var tableColumnLength = table.querySelector('tr').children.length; - var tableRowLength = table.querySelectorAll('tr').length; - var isInTbody = !!dom["a" /* default */].parents(currentRow, 'tbody').length; - - if (isInTbody) { - currentRowIndex += 1; - } - - return { - row: tableRowLength - (currentRowIndex + rowLength), - column: tableColumnLength - (currentColumnIndex + columnLength) - }; - }; - - _proto._appendCellForAllRow = function _appendCellForAllRow(table, columnDifference) { - var brString = isIE10 ? '' : '
    '; - dom["a" /* default */].findAll(table, 'tr').forEach(function (row, i) { - var tagName; - - for (var index = columnDifference; index < 0; index += 1) { - if (i === 0) { - tagName = 'th'; - } else { - tagName = 'td'; - } - - dom["a" /* default */].append(row, "<" + tagName + ">" + brString + ""); - } - }); - }; - - _proto._appendRow = function _appendRow(table, rowDifference) { - var trs = table.querySelectorAll('tr'); - var newRow = trs[trs.length - 1].cloneNode(true); - var brHTMLSting = isIE10 ? '' : '
    '; - dom["a" /* default */].findAll(newRow, 'td').forEach(function (td) { - td.innerHTML = brHTMLSting; - }); - - for (; rowDifference < 0; rowDifference += 1) { - dom["a" /* default */].append(table.querySelector('tbody'), newRow.cloneNode(true)); - } - } - /** - * Change selection to sibling cell - * @param {HTMLElement} currentCell current TD or TH - * @param {Range} range Range object - * @param {string} direction 'next' or 'previous' - * @param {string} scale 'row' or 'cell' - * @private - */ - ; - - _proto._changeSelectionToTargetCell = function _changeSelectionToTargetCell(currentCell, range, direction, scale) { - var isNext = direction === 'next'; - var isRow = scale === 'row'; - var target; - - if (isRow) { - target = dom["a" /* default */].getSiblingRowCellByDirection(currentCell, direction, false); - } else { - target = dom["a" /* default */].getTableCellByDirection(currentCell, direction); - - if (!target) { - target = dom["a" /* default */].getSiblingRowCellByDirection(currentCell, direction, true); - } - } - - if (target) { - if (isRow && !isNext) { - this._moveToCursorEndOfCell(target, range); - } else { - range.setStart(target, 0); - } - - range.collapse(true); - } else { - var _domUtils$parents3 = dom["a" /* default */].parents(currentCell, 'table'); - - target = _domUtils$parents3[0]; - - if (isNext) { - range.setStart(target.nextElementSibling, 0); - } else if (target.previousElementSibling && target.previousElementSibling.nodeName !== 'TABLE') { - range.setStart(target.previousElementSibling, 1); - } else { - range.setStartBefore(target); - } - - range.collapse(true); - } - }; - - _proto._moveToCursorEndOfCell = function _moveToCursorEndOfCell(cell, range) { - var lastListItem; - - if (dom["a" /* default */].isListNode(cell.lastChild)) { - lastListItem = dom["a" /* default */].getLastNodeBy(cell.lastChild, function (lastNode) { - return lastNode.nodeName !== 'LI' || lastNode.nextSibling !== null; - }); - } - - var lastText = dom["a" /* default */].getLastNodeBy(lastListItem || cell, function (node) { - return !dom["a" /* default */].isTextNode(node); - }); - var lastNode = lastText || lastListItem || cell; - var offset = lastText ? lastText.length : lastNode.childNodes.length - 1; - range.setStart(lastNode, offset); - } - /** - * Move cursor to given direction by interval formatter - * @param {string} direction 'next' or 'previous' - * @param {string} interval 'row' or 'cell' - * @param {object} [ev] Event object - * @returns {boolean | null} - * @private - */ - ; - - _proto._moveCursorTo = function _moveCursorTo(direction, interval, ev) { - var sq = this.wwe.getEditor(); - var range = sq.getSelection().cloneRange(); - var currentCell = dom["a" /* default */].closest(range.startContainer, 'td,th'); - var isNeedNext; - - if (range.collapsed && this.wwe.isInTable(range) && currentCell) { - if (interval === 'row' && !this._isMovedCursorToRow(range, direction)) { - return isNeedNext; - } - - if ((direction === 'previous' || interval === 'row') && !isUndefined_default()(ev)) { - ev.preventDefault(); - } - - this._changeSelectionToTargetCell(currentCell, range, direction, interval); - - sq.setSelection(range); - isNeedNext = false; - } - - return isNeedNext; - }; - - _proto._isMovedCursorToRow = function _isMovedCursorToRow(range, direction) { - var startContainer = range.startContainer; - - if (this._isInList(startContainer)) { - return this._isMovedCursorFromListToRow(startContainer, direction); - } - - return this._isMovedCursorFromTextToRow(range, direction); - }; - - _proto._isMovedCursorFromListToRow = function _isMovedCursorFromListToRow(startContainer, direction) { - var directionKey = direction + "Sibling"; - - var listItem = this._findListItem(startContainer); - - var parentOfListItem = dom["a" /* default */].getParentNodeBy(listItem, function (parentNode, currentNode) { - var firstOrLastItem = currentNode[directionKey] === null && parentNode[directionKey] === null; - return !dom["a" /* default */].isCellNode(parentNode) && firstOrLastItem; - }); - var firstOrLastList = dom["a" /* default */].isListNode(parentOfListItem) && parentOfListItem[directionKey] === null; - return dom["a" /* default */].isCellNode(parentOfListItem.parentNode) && firstOrLastList; - }; - - _proto._isMovedCursorFromTextToRow = function _isMovedCursorFromTextToRow(range, direction) { - var startContainer = range.startContainer, - startOffset = range.startOffset; - var text = dom["a" /* default */].isCellNode(startContainer) ? startContainer.childNodes[startOffset] : startContainer; - var parentOfStyledText = dom["a" /* default */].getParentNodeBy(text, function (parentNode) { - return !dom["a" /* default */].isCellNode(parentNode) && !dom["a" /* default */].isTextNode(parentNode); - }); - var foundSiblingNode = dom["a" /* default */].getSiblingNodeBy(parentOfStyledText, direction, function (siblingNode) { - return siblingNode !== null && siblingNode.nodeName !== 'BR'; - }); - return foundSiblingNode && foundSiblingNode[direction + "Sibling"] === null; - } - /** - * Remove contents and change selection if need - * @param {Range} range - Range object - * @param {string} keymap - keymap - * @param {object} ev - Event object - * @returns {boolean} - true if contents has been removed - * @private - */ - ; - - _proto._removeContentsAndChangeSelectionIfNeed = function _removeContentsAndChangeSelectionIfNeed(range, keymap, ev) { - var isTextInput = keymap.length <= 1; - var isDeleteOperation = keymap === 'BACK_SPACE' || keymap === 'DELETE'; - var selectedCells = this.wwe.componentManager.getManager('tableSelection').getSelectedCells(); - var firstSelectedCell = selectedCells[0]; - var processed = false; - - if ((isTextInput || isDeleteOperation) && !this._isModifierKeyPushed(ev) && selectedCells.length) { - if (isDeleteOperation) { - this._recordUndoStateIfNeed(range); - } - - this._removeTableContents(selectedCells); - - this._lastCellNode = firstSelectedCell; - range.setStart(firstSelectedCell, 0); - range.collapse(true); - this.wwe.getEditor().setSelection(range); - processed = true; - } - - return processed; - } - /** - * Return new table ID class name string - * @returns {string} - */ - ; - - _proto.getTableIDClassName = function getTableIDClassName() { - var tableClassName = TABLE_CLASS_PREFIX + this.tableID; - this.tableID += 1; - return tableClassName; - } - /** - * Destroy. - */ - ; - - _proto.destroy = function destroy() { - var _this5 = this; - - this.eventManager.removeEventHandler('wysiwygRangeChangeAfter.table'); - this.eventManager.removeEventHandler('wysiwygSetValueAfter.table'); - this.eventManager.removeEventHandler('wysiwygProcessHTMLText.table'); - this.eventManager.removeEventHandler('cut.table'); - this.eventManager.removeEventHandler('copyBefore.table'); - forEachOwnProperties_default()(this.keyEventHandlers, function (handler, key) { - return _this5.wwe.removeKeyEventHandler(key, handler); - }); - }; - - return WwTableManager; -}(); -/** - * Generate table cell HTML text - * @param {number} amount Amount of cells - * @param {string} tagName Tag name of cell 'td' or 'th' - * @private - * @returns {string} - */ - - -function tableCellGenerator(amount, tagName) { - var brHTMLString = '
    '; - var cellString = "<" + tagName + ">" + brHTMLString + ""; - var tdString = ''; - - for (var i = 0; i < amount; i += 1) { - tdString = tdString + cellString; - } - - return tdString; -} - -/* harmony default export */ var wwTableManager = (wwTableManager_WwTableManager); -// CONCATENATED MODULE: ./src/js/wwTableSelectionManager.js -/** - * @fileoverview Implements wysiwyg table selection manager - * @author NHN FE Development Lab - */ - - - - - -var wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME = 'te-cell-selected'; -/** - * Class WwTableSelectionManager - * @param {WysiwygEditor} wwe - WysiwygEditor instance - * @ignore - */ - -var wwTableSelectionManager_WwTableSelectionManager = /*#__PURE__*/function () { - function WwTableSelectionManager(wwe) { - this.wwe = wwe; - this.eventManager = wwe.eventManager; - /** - * Name property - * @type {string} - */ - - this.name = 'tableSelection'; - - this._init(); - } - /** - * Initialize - * @private - */ - - - var _proto = WwTableSelectionManager.prototype; - - _proto._init = function _init() { - this._initEvent(); // For disable firefox's table tool UI and table resize handler - - - if (browser_default.a.firefox) { - document.execCommand('enableObjectResizing', false, 'false'); - document.execCommand('enableInlineTableEditing', false, 'false'); - } - } - /** - * Initialize event - * @private - */ - ; - - _proto._initEvent = function _initEvent() { - var _this = this; - - var selectionStart, selectionEnd, validSelectionEnd; - /** - * Start table selection timer - * @type {object} - * @private - */ - - this._tableSelectionTimer = null; - /** - * Remove selection timer for Firefox table selection - * @type {object} - * @private - */ - - this._removeSelectionTimer = null; - /** - * Boolean value for whether selection started - * @type {boolean} - * @private - */ - - this._isSelectionStarted = false; - - var onMouseover = function onMouseover(ev) { - selectionEnd = dom["a" /* default */].closest(ev.data.target, '[contenteditable=true] td,th'); - - var range = _this.wwe.getEditor().getSelection(); - - var isEndsInTable = dom["a" /* default */].parents(selectionEnd, '[contenteditable=true] table'); - var isSameCell = selectionStart === selectionEnd; - var isTextSelect = _this._isTextSelect(range, isSameCell) && !hasClass_default()(selectionStart, wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME); - - if (_this._isSelectionStarted && isEndsInTable && !isTextSelect) { - window.getSelection().removeAllRanges(); // For disable firefox's native table cell selection - - if (browser_default.a.firefox && !_this._removeSelectionTimer) { - _this._removeSelectionTimer = setInterval(function () { - window.getSelection().removeAllRanges(); - }, 10); - } - - if (selectionStart && selectionEnd) { - _this.highlightTableCellsBy(selectionStart, selectionEnd); - - validSelectionEnd = selectionEnd; - } - } - }; - - var finishSelection = function finishSelection() { - if (_this._isSelectionStarted) { - _this._isSelectionStarted = false; - - _this.eventManager.removeEventHandler('mouseover.tableSelection'); - - _this.eventManager.removeEventHandler('mouseup.tableSelection'); - } - }; - - var onMouseup = function onMouseup(ev) { - selectionEnd = dom["a" /* default */].closest(ev.data.target, '[contenteditable=true] td,th'); - - var range = _this.wwe.getEditor().getSelection(); - - var isSameCell = selectionStart === selectionEnd; - var isTextSelect = _this._isTextSelect(range, isSameCell) && !hasClass_default()(selectionStart, wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME); - - _this._clearTableSelectionTimerIfNeed(); - - if (_this._isSelectionStarted) { - if (isTextSelect || _this._isListSelect(range)) { - _this.removeClassAttrbuteFromAllCellsIfNeed(); - } else { - _this.wwe.componentManager.getManager('table').resetLastCellNode(); - - selectionEnd = selectionEnd || validSelectionEnd; - range = _this.wwe.getEditor().getSelection(); - range.setStart(selectionEnd, 0); // IE wont fire copy/cut event if there is no selected range. - // trick IE to fire the event - - if (browser_default.a.msie) { - range.setEnd(selectionEnd, 1); - } else { - range.setEnd(selectionEnd, 0); - range.collapse(false); - } - - _this.wwe.getEditor().setSelection(range); - } - - if (_this.onDragEnd) { - _this.onDragEnd(); - } - } - - finishSelection(); - }; - - var onMousedown = function onMousedown(ev) { - var MOUSE_RIGHT_BUTTON = 2; - selectionStart = dom["a" /* default */].closest(ev.data.target, '[contenteditable=true] td,th'); - var isSelectedCell = !!selectionStart && hasClass_default()(selectionStart, wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME); - selectionEnd = null; - - if (!isSelectedCell || isSelectedCell && ev.data.button !== MOUSE_RIGHT_BUTTON) { - _this.removeClassAttrbuteFromAllCellsIfNeed(); - - if (selectionStart) { - _this.setTableSelectionTimerIfNeed(selectionStart); - - _this.eventManager.listen('mouseover.tableSelection', onMouseover); - - _this.eventManager.listen('mouseup.tableSelection', onMouseup); - - if (_this.onDragStart) { - _this.onDragStart(selectionStart); - } - } - } else if (ev.data.button === MOUSE_RIGHT_BUTTON) { - finishSelection(); - } - }; - - this.eventManager.listen('mousedown.tableSelection', onMousedown); - this.eventManager.listen('copyBefore.tableSelection', finishSelection); - this.eventManager.listen('pasteBefore.tableSelection', finishSelection); - } - /** - * Return whether single cell text selection or not - * @param {Range} range Range object - * @param {boolean} isSameCell Boolean value for same cell selection - * @returns {boolean} - * @private - */ - ; - - _proto._isTextSelect = function _isTextSelect(range, isSameCell) { - return /TD|TH|TEXT/i.test(range.commonAncestorContainer.nodeName) && isSameCell; - } - /** - * Return whether list selection or not - * @param {Range} range Range object - * @returns {boolean} - * @private - */ - ; - - _proto._isListSelect = function _isListSelect(range) { - return /UL|OL|LI/i.test(range.commonAncestorContainer.nodeName); - } - /** - * Set setTimeout and setInterval timer execution if table selecting situation - * @param {HTMLElement} selectionStart Start element - */ - ; - - _proto.setTableSelectionTimerIfNeed = function setTableSelectionTimerIfNeed(selectionStart) { - var isTableSelecting = dom["a" /* default */].parents(selectionStart, '[contenteditable=true] table').length; - - if (isTableSelecting) { - this._isSelectionStarted = true; - } - } - /** - * Clear setTimeout and setInterval timer execution - * @private - */ - ; - - _proto._clearTableSelectionTimerIfNeed = function _clearTableSelectionTimerIfNeed() { - clearTimeout(this._tableSelectionTimer); // For disable firefox's native table selection - - if (browser_default.a.firefox && this._removeSelectionTimer) { - clearTimeout(this._removeSelectionTimer); - this._removeSelectionTimer = null; - } - } - /** - * Re arrange selection when table does not include both start and end selection element - * @param {HTMLElement} selectionStart Start element of selection - * @param {HTMLElement} selectionEnd End element of selection - * @returns {{startContainer: HTMLElement, endContainer: HTMLElement}} - * @private - */ - ; - - _proto._reArrangeSelectionIfneed = function _reArrangeSelectionIfneed(selectionStart, selectionEnd) { - var isRangeStartInTable = dom["a" /* default */].parents(selectionStart, '[contenteditable=true] table').length; - var isRangeEndInTable = dom["a" /* default */].parents(selectionEnd, '[contenteditable=true] table').length; - var isStartRangeOut = isRangeEndInTable && !isRangeStartInTable; - var isEndRangeOut = !isRangeEndInTable && isRangeStartInTable; - var table; - - if (isStartRangeOut) { - var _domUtils$parents = dom["a" /* default */].parents(selectionEnd, '[contenteditable=true] table'); - - table = _domUtils$parents[0]; - - var _table$querySelectorA = table.querySelectorAll('th'); - - selectionStart = _table$querySelectorA[0]; - } else if (isEndRangeOut) { - var _domUtils$parents2 = dom["a" /* default */].parents(selectionStart, '[contenteditable=true] table'); - - table = _domUtils$parents2[0]; - var tds = table.querySelectorAll('td'); - selectionEnd = tds[tds.length - 1]; - } - - return { - startContainer: selectionStart, - endContainer: selectionEnd - }; - } - /** - * Apply select direction to editor - * @param {{startContainer: HTMLElement, endContainer: HTMLElement}} selectionInformation - * Selection start and end element - * @param {Range} range Range object - * @returns {Range} - * @private - */ - ; - - _proto._applySelectionDirection = function _applySelectionDirection(selectionInformation, range) { - var nodeOffsetOfParent = dom["a" /* default */].getNodeOffsetOfParent; - var selectionStart = selectionInformation.startContainer; - var selectionEnd = selectionInformation.endContainer; - var rowDirection = nodeOffsetOfParent(dom["a" /* default */].closest(selectionStart, '[contenteditable=true] tr')) - nodeOffsetOfParent(dom["a" /* default */].closest(selectionEnd, '[contenteditable=true] tr')); - var cellDirection = nodeOffsetOfParent(selectionStart) - nodeOffsetOfParent(selectionEnd); - var isSameRow = rowDirection === 0; - var isRowIncreases = rowDirection < 0; - var isColumnIncreases = cellDirection > 0; - - if (isSameRow) { - if (isColumnIncreases) { - range.setStart(selectionEnd, 0); - range.setEnd(selectionStart, 1); - } else { - range.setStart(selectionStart, 0); - range.setEnd(selectionEnd, 1); - } - } else if (isRowIncreases) { - range.setStart(selectionStart, 0); - range.setEnd(selectionEnd, 1); - } else { - range.setStart(selectionEnd, 0); - range.setEnd(selectionStart, 1); - } - - return range; - } - /** - * Get selection coordinate by current selection - * @param {HTMLElement} selectionStart start element - * @param {HTMLElement} selectionEnd end element - * @returns {{from: {row: number, cell: number}, to: {row: number, cell: number}}} - */ - ; - - _proto.getSelectionRangeFromTable = function getSelectionRangeFromTable(selectionStart, selectionEnd) { - var nodeOffsetOfParent = dom["a" /* default */].getNodeOffsetOfParent; - var startRowOffset = nodeOffsetOfParent(selectionStart.parentNode); - var endRowOffset = nodeOffsetOfParent(selectionEnd.parentNode); - var startCellOffset = nodeOffsetOfParent(selectionStart); - var endCellOffset = nodeOffsetOfParent(selectionEnd); - var startCellContainer = dom["a" /* default */].getParentUntil(selectionStart, 'TABLE'); - var endCellContainer = dom["a" /* default */].getParentUntil(selectionEnd, 'TABLE'); - var isReversedTheadAndTbodySelect = dom["a" /* default */].getNodeName(startCellContainer) === 'TBODY' && dom["a" /* default */].getNodeName(endCellContainer) === 'THEAD'; - var isTheadAndTbodySelect = startCellContainer !== endCellContainer; - var isBothInTbody = !!dom["a" /* default */].parents(selectionStart, 'tbody').length && !!dom["a" /* default */].parents(selectionEnd, 'tbody').length; - var start = { - row: startRowOffset, - cell: startCellOffset - }; - var end = { - row: endRowOffset, - cell: endCellOffset - }; - var from, to; - - if (isReversedTheadAndTbodySelect) { - start.row += 1; - } else if (isTheadAndTbodySelect) { - end.row += 1; - } else if (isBothInTbody) { - start.row += 1; - end.row += 1; - } - - if (startRowOffset > endRowOffset || startRowOffset === endRowOffset && startCellOffset > endCellOffset) { - from = end; - to = start; - } else { - from = start; - to = end; - } - - return { - from: from, - to: to - }; - } - /** - * Highlight selected table cells - * @param {HTMLElement} selectionStart start element - * @param {HTMLElement} selectionEnd end element - */ - ; - - _proto.highlightTableCellsBy = function highlightTableCellsBy(selectionStart, selectionEnd) { - var trs = dom["a" /* default */].findAll(dom["a" /* default */].parents(selectionStart, '[contenteditable=true] table')[0], 'tr'); - var selection = this.getSelectionRangeFromTable(selectionStart, selectionEnd); - var rowFrom = selection.from.row; - var cellFrom = selection.from.cell; - var rowTo = selection.to.row; - var cellTo = selection.to.cell; - trs.forEach(function (row, rowIndex) { - dom["a" /* default */].findAll(row, 'td,th').forEach(function (cell, cellIndex) { - var isFromRow = rowIndex === rowFrom; - var isToRow = rowIndex === rowTo; - - if (isFromRow && cellIndex < cellFrom || isToRow && cellIndex > cellTo || rowIndex < rowFrom || rowIndex > rowTo) { - removeClass_default()(cell, wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME); - } else { - addClass_default()(cell, wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME); - } - }); - }); - } - /** - * Remove '.te-cell-selected' class from all of table Cell - */ - ; - - _proto.removeClassAttrbuteFromAllCellsIfNeed = function removeClassAttrbuteFromAllCellsIfNeed() { - var cells = dom["a" /* default */].findAll(this.wwe.getBody(), "td." + wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME + ",th." + wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME); - cells.forEach(function (node) { - removeClass_default()(node, wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME); - - if (!node.getAttribute('class')) { - node.removeAttribute('class'); - } - }); - } - /** - * gets selected cells - * @returns {HTMLElement} selected cells - */ - ; - - _proto.getSelectedCells = function getSelectedCells() { - return this.wwe.getBody().querySelectorAll("." + wwTableSelectionManager_TABLE_CELL_SELECTED_CLASS_NAME); - } - /** - * Create selection by selected cells and collapse that selection to end - */ - ; - - _proto.createRangeBySelectedCells = function createRangeBySelectedCells() { - var sq = this.wwe.getEditor(); - var range = sq.getSelection().cloneRange(); - var selectedCells = this.getSelectedCells(); - var firstSelectedCell = selectedCells[0]; - var lastSelectedCell = selectedCells[selectedCells.length - 1]; - - if (selectedCells.length && this.wwe.isInTable(range)) { - range.setStart(firstSelectedCell, 0); - range.setEnd(lastSelectedCell, lastSelectedCell.childNodes.length); - sq.setSelection(range); - } - } - /** - * Style to selected cells. - * @param {function} onStyle - function for styling - * @param {Object} [options] - options to be passed into onStyle - */ - ; - - _proto.styleToSelectedCells = function styleToSelectedCells(onStyle, options) { - this.createRangeBySelectedCells(); - onStyle(this.wwe.getEditor(), options); - } - /** - * Destroy. - */ - ; - - _proto.destroy = function destroy() { - this.eventManager.removeEventHandler('mousedown.tableSelection'); - this.eventManager.removeEventHandler('mouseover.tableSelection'); - this.eventManager.removeEventHandler('mouseup.tableSelection'); - this.eventManager.removeEventHandler('copyBefore.tableSelection'); - this.eventManager.removeEventHandler('pasteBefore.tableSelection'); - }; - - return WwTableSelectionManager; -}(); - -/* harmony default export */ var wwTableSelectionManager = (wwTableSelectionManager_WwTableSelectionManager); -// CONCATENATED MODULE: ./src/js/wwHrManager.js -/** - * @fileoverview Implements wysiwyg hr manager - * @author NHN FE Development Lab - */ - -/** - * Class WwHrManager - * @param {WysiwygEditor} wwe - WysiwygEditor instance - * @ignore - */ - -var wwHrManager_WwHrManager = /*#__PURE__*/function () { - function WwHrManager(wwe) { - this.wwe = wwe; - this.eventManager = wwe.eventManager; - /** - * Name property - * @type {string} - */ - - this.name = 'hr'; - - this._init(); - } - /** - * Initialize - * @private - */ - - - var _proto = WwHrManager.prototype; - - _proto._init = function _init() { - this._initEvent(); - } - /** - * Initialize eventmanager event - * @private - */ - ; - - _proto._initEvent = function _initEvent() { - var _this = this; - - this.eventManager.listen('wysiwygSetValueAfter', function () { - _this._insertEmptyLineIfNeed(); - - _this._changeHRForWysiwyg(); - }); - } - /** - * If
    is frist or last child of root, insert empty line before or after HR - * @private - */ - ; - - _proto._insertEmptyLineIfNeed = function _insertEmptyLineIfNeed() { - var editorContentBody = this.wwe.getBody(); - var firstChild = editorContentBody.firstChild, - lastChild = editorContentBody.lastChild; - - if (firstChild && firstChild.nodeName === 'HR') { - editorContentBody.insertBefore(dom["a" /* default */].createEmptyLine(), firstChild); - } else if (lastChild && lastChild.nodeName === 'HR') { - editorContentBody.appendChild(dom["a" /* default */].createEmptyLine()); - } - } - /** - *
    is set contenteditable to false with wrapping div like below. - *

    - * @private - */ - ; - - _proto._changeHRForWysiwyg = function _changeHRForWysiwyg() { - var editorContentBody = this.wwe.getBody(); - dom["a" /* default */].findAll(editorContentBody, 'hr').forEach(function (hrNode) { - var parentNode = hrNode.parentNode; - parentNode.replaceChild(dom["a" /* default */].createHorizontalRule(), hrNode); - }); - }; - - return WwHrManager; -}(); - -/* harmony default export */ var wwHrManager = (wwHrManager_WwHrManager); -// CONCATENATED MODULE: ./src/js/wwPManager.js -/** - * @fileoverview Implements wysiwyg p tag manager - * @author NHN FE Development Lab - */ - - -/** - * Class WwPManager - * @param {WysiwygEditor} wwe - wysiwygEditor instance - * @ignore - */ - -var wwPManager_WwPManager = /*#__PURE__*/function () { - function WwPManager(wwe) { - this.wwe = wwe; - this.eventManager = wwe.eventManager; - /** - * Name property - * @type {string} - */ - - this.name = 'p'; - - this._initEvent(); - } - /** - * Initialize event - * @private - */ - - - var _proto = WwPManager.prototype; - - _proto._initEvent = function _initEvent() { - var _this = this; - - this.eventManager.listen('wysiwygSetValueBefore', function (html) { - return _this._splitPtagContentLines(html); - }); - this.eventManager.listen('wysiwygSetValueAfter', function () { - _this._ensurePtagContentWrappedWithDiv(); - - _this._unwrapPtags(); - }); - } - /** - * Split multiple line content of p tags - * @param {string} html html text - * @returns {string} result - * @private - */ - ; - - _proto._splitPtagContentLines = function _splitPtagContentLines(html) { - if (html) { - var wrapper = dom["a" /* default */].createElementWith("
    " + html + "
    "); - dom["a" /* default */].findAll(wrapper, 'p').forEach(function (para) { - var attributes = para.attributes, - nextElementSibling = para.nextElementSibling; - var content = para.innerHTML; - var lines = content.split(/
    /gi); - var lastIndex = lines.length - 1; - var splitedContent = ''; - splitedContent = lines.map(function (line, index) { - if (index > 0 && index < lastIndex) { - line = line ? line : '
    '; - } - - if (line) { - var block = document.createElement('div'); - Object.keys(attributes).forEach(function (key) { - var _attributes$key = attributes[key], - name = _attributes$key.name, - value = _attributes$key.value; - block.setAttribute(name, value); - }); - block.innerHTML = line; - return block.outerHTML; - } - - return ''; - }); // For paragraph, we add empty line - - if (nextElementSibling && nextElementSibling.nodeName === 'P' || para.getAttribute('contenteditable') === 'false') { - splitedContent.push('

    '); - } - - dom["a" /* default */].replaceWith(para, splitedContent.join('')); - }); - html = wrapper.innerHTML; - } - - return html; - } - /** - * Wrap new line inside P tag to DIV, and additional empty line added within too - * @private - */ - ; - - _proto._ensurePtagContentWrappedWithDiv = function _ensurePtagContentWrappedWithDiv() { - var _this2 = this; - - dom["a" /* default */].findAll(this.wwe.getBody(), 'p').forEach(function (node) { - if (!node.querySelectorAll('div').length) { - dom["a" /* default */].wrapInner(node, 'div'); - } - - if (_this2._findNextParagraph(node, 'p')) { - dom["a" /* default */].append(node, '

    '); - } - }); - } - /** - * Unwrap P tag - * @private - */ - ; - - _proto._unwrapPtags = function _unwrapPtags() { - dom["a" /* default */].findAll(this.wwe.getBody(), 'div').forEach(function (node) { - var parent = node.parentNode; - - if (parent.tagName === 'P') { - dom["a" /* default */].unwrap(parent); - } - }); - }; - - _proto._findNextParagraph = function _findNextParagraph(node, selector) { - var nextElementSibling = node.nextElementSibling; - - if (selector) { - return nextElementSibling && matches_default()(nextElementSibling, selector) ? nextElementSibling : null; - } - - return nextElementSibling; - }; - - return WwPManager; -}(); - -/* harmony default export */ var wwPManager = (wwPManager_WwPManager); -// CONCATENATED MODULE: ./src/js/wwHeadingManager.js -/** - * @fileoverview Implements wysiwyg heading manager - * @author NHN FE Development Lab - */ - - -var wwHeadingManager_FIND_HEADING_RX = /h[\d]/i; -var wwHeadingManager_isIE10 = browser_default.a.msie && browser_default.a.version === 10; -/** - * Class WwHeadingManager - * @param {WysiwygEditor} wwe - WysiwygEditor instance - * @ignore - */ - -var wwHeadingManager_WwHeadingManager = /*#__PURE__*/function () { - function WwHeadingManager(wwe) { - this.wwe = wwe; - this.eventManager = wwe.eventManager; - /** - * Name property - * @type {string} - */ - - this.name = 'heading'; - - this._init(); - } - /** - * Initialize - * @private - */ - - - var _proto = WwHeadingManager.prototype; - - _proto._init = function _init() { - this._initEvent(); - - this._initKeyHandler(); - }; - - _proto._initEvent = function _initEvent() { - var _this = this; - - this.eventManager.listen('wysiwygSetValueAfter', function () { - _this._wrapDefaultBlockToHeadingInner(); - }); - } - /** - * Initialize key event handler - * @private - */ - ; - - _proto._initKeyHandler = function _initKeyHandler() { - var _this2 = this; - - this.wwe.addKeyEventHandler('ENTER', function (ev, range) { - if (_this2.wwe.hasFormatWithRx(wwHeadingManager_FIND_HEADING_RX)) { - _this2._onEnter(ev, range); - - return false; - } - - return true; - }); - this.wwe.addKeyEventHandler('BACK_SPACE', function (ev, range) { - if (_this2.wwe.hasFormatWithRx(wwHeadingManager_FIND_HEADING_RX)) { - _this2._addBrToEmptyBlock(range); - - _this2._removePrevTopNodeIfNeed(ev, range); - - return false; - } - - return true; - }); - } - /** - * Wrap default block to heading inner contents - * @private - */ - ; - - _proto._wrapDefaultBlockToHeadingInner = function _wrapDefaultBlockToHeadingInner() { - var headingTags = dom["a" /* default */].findAll(this.wwe.getBody(), 'h1, h2, h3, h4, h5, h6'); - headingTags.forEach(function (headingTag) { - var exceptedForWrapping = !dom["a" /* default */].children(headingTag, 'div, p').length; - - if (exceptedForWrapping) { - dom["a" /* default */].wrapInner(headingTag, 'div'); - } - }); - } - /** - * Unwrap heading - * @private - */ - ; - - _proto._unwrapHeading = function _unwrapHeading() { - this.wwe.unwrapBlockTag(function (node) { - return wwHeadingManager_FIND_HEADING_RX.test(node); - }); - } - /** - * Enter key handler - * @param {Event} event event object - * @param {Range} range range - * @private - */ - ; - - _proto._onEnter = function _onEnter(event, range) { - var _this3 = this; - - if (range.startOffset > 0) { - // I hate this but there's no way - this.wwe.defer(function (wwe) { - _this3._unwrapHeading(); - - wwe.getEditor().removeLastUndoStack(); - }); - } else { - event.preventDefault(); - - this._insertEmptyBlockToPrevious(range); - } - } - /** - * Insert empty block to previous of passed range - * @param {Range} range range - * @private - */ - ; - - _proto._insertEmptyBlockToPrevious = function _insertEmptyBlockToPrevious(range) { - this.wwe.getEditor().saveUndoState(range); - var element = dom["a" /* default */].createElementWith('

    '); - dom["a" /* default */].insertBefore(element, dom["a" /* default */].getParentUntil(range.startContainer, this.wwe.getBody())); - } - /** - * Remove previous top node if need - * @param {Event} event event object - * @param {Range} range range - * @returns {Boolean} whether needed or not - * @private - */ - ; - - _proto._removePrevTopNodeIfNeed = function _removePrevTopNodeIfNeed(event, range) { - var isHandled = false; - - if (range.collapsed && range.startOffset === 0) { - var startContainer = range.startContainer; - var prevTopNode = dom["a" /* default */].getTopPrevNodeUnder(startContainer, this.wwe.getBody()); - var isPrevTopNodeEmpty = prevTopNode && prevTopNode.textContent.length === 0; - var sq = this.wwe.getEditor(); - - if (startContainer.textContent.length === 0) { - isHandled = this._removeHedingAndChangeSelection(event, range, prevTopNode); - } else if (isPrevTopNodeEmpty) { - event.preventDefault(); - sq.saveUndoState(range); - dom["a" /* default */].remove(prevTopNode); - isHandled = true; - } - } - - return isHandled; - }; - - _proto._getHeadingElement = function _getHeadingElement(element) { - var isHeading = wwHeadingManager_FIND_HEADING_RX.test(dom["a" /* default */].getNodeName(element)); - return isHeading ? element : dom["a" /* default */].parents(element, 'h1,h2,h3,h4,h5,h6')[0]; - }; - - _proto._addBrToEmptyBlock = function _addBrToEmptyBlock(range) { - var collapsed = range.collapsed, - startOffset = range.startOffset, - startContainer = range.startContainer; - - if (collapsed && startOffset === 1) { - var headingElement = this._getHeadingElement(startContainer); - - var brs = dom["a" /* default */].children(headingElement.firstChild, 'br'); - - if (!wwHeadingManager_isIE10 && !brs.length) { - var br = document.createElement('br'); - startContainer.parentNode.appendChild(br); - } - } - } - /** - * Remove heading and change selection - * @param {object} event Event object - * @param {Range} range Range object - * @param {HTMLElement} prevTopNode Previous top node - * @returns {boolean} - * @private - */ - ; - - _proto._removeHedingAndChangeSelection = function _removeHedingAndChangeSelection(event, range, prevTopNode) { - var startContainer = range.startContainer; - var sq = this.wwe.getEditor(); - var body = this.wwe.getBody(); - - var headingElement = this._getHeadingElement(startContainer); - - var targetNode = prevTopNode; - var offset = 1; - - if (!event.defaultPrevented) { - event.preventDefault(); - sq.saveUndoState(range); - } - - dom["a" /* default */].remove(headingElement); - - if (!prevTopNode) { - var _domUtils$children = dom["a" /* default */].children(body, 'div'); - - targetNode = _domUtils$children[0]; - offset = 0; - } - - range.setStart(targetNode, offset); - range.collapse(true); - sq.setSelection(range); - return true; - }; - - return WwHeadingManager; -}(); - -/* harmony default export */ var wwHeadingManager = (wwHeadingManager_WwHeadingManager); -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/type/isTruthy.js -var isTruthy = __webpack_require__(42); -var isTruthy_default = /*#__PURE__*/__webpack_require__.n(isTruthy); - -// CONCATENATED MODULE: ./src/js/wwCodeBlockManager.js -/** - * @fileoverview Implements wysiwyg code block manager - * @author NHN FE Development Lab - */ - - - - - - -var wwCodeBlockManager_isIE10 = browser_default.a.msie && browser_default.a.version === 10; -var wwCodeBlockManager_brString = wwCodeBlockManager_isIE10 ? '' : '
    '; -var tagEntities = { - '&': '&', - '<': '<', - '>': '>' -}; -var FIND_ZWS_RX = /\u200B/g; -var CODEBLOCK_ATTR_NAME = 'data-te-codeblock'; -/** - * Class WwCodeBlockManager - * @param {WysiwygEditor} wwe - wysiwygEditor instance - * @ignore - */ - -var wwCodeBlockManager_WwCodeBlockManager = /*#__PURE__*/function () { - function WwCodeBlockManager(wwe) { - this.wwe = wwe; - this.eventManager = wwe.eventManager; - /** - * Name property - * @type {string} - */ - - this.name = 'codeblock'; - - this._init(); - } - /** - * Initialize - * @private - */ - - - var _proto = WwCodeBlockManager.prototype; - - _proto._init = function _init() { - this._initKeyHandler(); - - this._initEvent(); - } - /** - * Initialize key event handler - * @private - */ - ; - - _proto._initKeyHandler = function _initKeyHandler() { - var _this = this; - - this._keyEventHandlers = { - BACK_SPACE: this._onBackspaceKeyEventHandler.bind(this), - ENTER: function ENTER(ev, range) { - if (!_this.wwe.isInTable(range) && _this.wwe.getEditor().hasFormat('CODE')) { - _this.wwe.defer(function () { - var _this$wwe$getRange = _this.wwe.getRange(), - startContainer = _this$wwe$getRange.startContainer; - - var codeNode = _this._getCodeNode(startContainer); - - if (codeNode && !dom["a" /* default */].getTextLength(codeNode)) { - codeNode.parentNode.removeChild(codeNode); - } - }); - } - } - }; - forEachOwnProperties_default()(this._keyEventHandlers, function (handler, key) { - return _this.wwe.addKeyEventHandler(key, handler); - }); - }; - - _proto._getCodeNode = function _getCodeNode(node) { - var result; - - if (node.nodeName === 'CODE') { - result = node; - } else if (node.parentNode.nodeName === 'CODE') { - result = node.parentNode; - } - - return result; - } - /** - * Initialize eventmanager event - * @private - */ - ; - - _proto._initEvent = function _initEvent() { - var _this2 = this; - - this.eventManager.listen('wysiwygSetValueAfter.codeblock', function () { - _this2.modifyCodeBlockForWysiwyg(); - }); - this.eventManager.listen('wysiwygProcessHTMLText.codeblock', function (html) { - return _this2._changePreToPreCode(html); - }); - } - /** - * Prepare nodes for pasting to code block - * @param {Array.} nodes Node array - * @returns {DocumentFragment} - */ - ; - - _proto.prepareToPasteOnCodeblock = function prepareToPasteOnCodeblock(nodes) { - var frag = this.wwe.getEditor().getDocument().createDocumentFragment(); - var text = this.convertNodesToText(nodes); - text = text.replace(/\n$/, ''); - frag.appendChild(document.createTextNode(text)); - return frag; - } - /** - * Convert nodes to text for pasting to code block - * @param {Array.} nodes Node array - * @returns {string} coverted string - */ - ; - - _proto.convertNodesToText = function convertNodesToText(nodes) { - var str = ''; - var node = nodes.shift(); - - while (isTruthy_default()(node)) { - var _node = node, - childNodes = _node.childNodes; - - if (childNodes && dom["a" /* default */].isBlockNode(node)) { - str += this.convertNodesToText(toArray_default()(node.childNodes)); - } else if (node.nodeName === 'BR') { - str += '\n'; - } else { - str += node.textContent; - } - - node = nodes.shift(); - } - - return str; - } - /** - * Copy content with code block style from code block selection - * @param {HTMLElement} element Copied element - * @param {Range} range Range object - * @returns {HTMLElement} - * @private - */ - ; - - _proto._copyCodeblockTypeFromRangeCodeblock = function _copyCodeblockTypeFromRangeCodeblock(element, range) { - var blockNode = dom["a" /* default */].getParentUntil(range.commonAncestorContainer, this.wwe.getBody()); - - if (dom["a" /* default */].getNodeName(blockNode) === 'PRE') { - var attrs = blockNode.attributes; - forEachOwnProperties_default()(attrs, function (attr) { - element.setAttribute(attr.name, attr.value); - }); - } - - return element; - } - /** - * Change pre tag to pre and code - * @param {string} html HTML string - * @returns {string} - * @private - */ - ; - - _proto._changePreToPreCode = function _changePreToPreCode(html) { - return html.replace(/((.|\n)*?)<\/pre>/g, function (match, codeAttr, code) { - return "
    " + code + "
    "; - }); - } - /** - * Modify Code Block for Wysiwyg - * @param {HTMLElement} node root node to find pre - */ - ; - - _proto.modifyCodeBlockForWysiwyg = function modifyCodeBlockForWysiwyg(node) { - if (!node) { - node = this.wwe.getBody(); - } - - dom["a" /* default */].findAll(node, 'pre').forEach(function (pre) { - var codeTag = pre.querySelector('code'); - var lang, numberOfBackticks; - - if (codeTag) { - lang = codeTag.getAttribute('data-language'); - numberOfBackticks = codeTag.getAttribute('data-backticks'); - } // if this pre can have lines - - - if (pre.children.length > 1) { - toArray_default()(pre.children).forEach(function (childNode) { - if ((childNode.nodeName === 'DIV' || childNode.nodeName === 'P') && !childNode.querySelectorAll('br').length) { - childNode.innerHTML += childNode.innerHTML + "\n"; - } - }); - } - - var brs = pre.querySelectorAll('br'); - - if (brs.length) { - dom["a" /* default */].replaceWith(brs, '\n'); - } - - var resultText = pre.textContent.replace(/\s+$/, ''); - dom["a" /* default */].empty(pre); - pre.innerHTML = resultText ? sanitizeHtmlCode(resultText) : wwCodeBlockManager_brString; - - if (lang) { - pre.setAttribute('data-language', lang); - addClass_default()(pre, "lang-" + lang); - } - - if (numberOfBackticks) { - pre.setAttribute('data-backticks', numberOfBackticks); - } - - pre.setAttribute(CODEBLOCK_ATTR_NAME, ''); - }); - } - /** - * Remove codeblock of first line when press backspace in first line - * @param {Event} ev Event object - * @param {Range} range Range object - * @returns {boolean} - * @private - */ - ; - - _proto._onBackspaceKeyEventHandler = function _onBackspaceKeyEventHandler(ev, range) { - var isNeedNext = true; - var sq = this.wwe.getEditor(); - var container = range.commonAncestorContainer; - - if (this._isCodeBlockFirstLine(range) && !this._isFrontCodeblock(range)) { - this._removeCodeblockFirstLine(container); - - range.collapse(true); - isNeedNext = false; - } else if (range.collapsed && this._isEmptyLine(container) && this._isBetweenSameCodeblocks(container)) { - var previousSibling = container.previousSibling, - nextSibling = container.nextSibling; - var prevTextLength = previousSibling.textContent.length; - sq.saveUndoState(range); - container.parentNode.removeChild(container); - - this._mergeCodeblocks(previousSibling, nextSibling); - - range.setStart(previousSibling.childNodes[0], prevTextLength); - range.collapse(true); - isNeedNext = false; - } - - if (!isNeedNext) { - sq.setSelection(range); - ev.preventDefault(); - } - - return isNeedNext; - } - /** - * Check node is empty line - * @param {Node} node node - * @returns {boolean} - * @private - */ - ; - - _proto._isEmptyLine = function _isEmptyLine(node) { - var nodeName = node.nodeName, - childNodes = node.childNodes; - var isEmpty = wwCodeBlockManager_isIE10 ? node.textContent === '' : childNodes.length === 1 && childNodes[0].nodeName === 'BR'; - return nodeName === 'DIV' && isEmpty; - } - /** - * Check whether node is between same codeblocks - * @param {Node} node Node - * @returns {boolean} - * @private - */ - ; - - _proto._isBetweenSameCodeblocks = function _isBetweenSameCodeblocks(node) { - var previousSibling = node.previousSibling, - nextSibling = node.nextSibling; - return dom["a" /* default */].getNodeName(previousSibling) === 'PRE' && dom["a" /* default */].getNodeName(nextSibling) === 'PRE' && previousSibling.getAttribute('data-language') === nextSibling.getAttribute('data-language'); - }; - - _proto._mergeCodeblocks = function _mergeCodeblocks(frontCodeblock, backCodeblock) { - var postText = backCodeblock.textContent; - frontCodeblock.childNodes[0].textContent += "\n" + postText; - backCodeblock.parentNode.removeChild(backCodeblock); - } - /** - * Check whether range is first line of code block - * @param {Range} range Range object - * @returns {boolean} - * @private - */ - ; - - _proto._isCodeBlockFirstLine = function _isCodeBlockFirstLine(range) { - return this.isInCodeBlock(range) && range.collapsed && range.startOffset === 0; - } - /** - * Check whether front block of range is code block - * @param {Range} range Range object - * @returns {boolean} - * @private - */ - ; - - _proto._isFrontCodeblock = function _isFrontCodeblock(range) { - var block = dom["a" /* default */].getParentUntil(range.startContainer, this.wwe.getEditor().getRoot()); - var previousSibling = block.previousSibling; - return previousSibling && previousSibling.nodeName === 'PRE'; - } - /** - * Remove codeblock first line of codeblock - * @param {Node} node Pre Node - * @private - */ - ; - - _proto._removeCodeblockFirstLine = function _removeCodeblockFirstLine(node) { - var sq = this.wwe.getEditor(); - var preNode = node.nodeName === 'PRE' ? node : node.parentNode; - var codeContent = preNode.textContent.replace(FIND_ZWS_RX, ''); - sq.modifyBlocks(function () { - var newFrag = sq.getDocument().createDocumentFragment(); - var strArray = codeContent.split('\n'); - var firstDiv = document.createElement('div'); - var firstLine = strArray.shift(); - firstDiv.innerHTML = "" + sanitizeHtmlCode(firstLine) + wwCodeBlockManager_brString; - newFrag.appendChild(firstDiv); - - if (strArray.length) { - var newPreNode = preNode.cloneNode(); - newPreNode.textContent = strArray.join('\n'); - newFrag.appendChild(newPreNode); - } - - return newFrag; - }); - } - /** - * Return boolean value of whether current range is in the code block - * @param {Range} range Range object - * @returns {boolean} - */ - ; - - _proto.isInCodeBlock = function isInCodeBlock(range) { - var target; - - if (range.collapsed) { - target = range.startContainer; - } else { - target = range.commonAncestorContainer; - } - - return !!dom["a" /* default */].closest(target, 'pre'); - } - /** - * Destroy - */ - ; - - _proto.destroy = function destroy() { - var _this3 = this; - - this.eventManager.removeEventHandler('wysiwygSetValueAfter.codeblock'); - this.eventManager.removeEventHandler('wysiwygProcessHTMLText.codeblock'); - forEachOwnProperties_default()(this._keyEventHandlers, function (handler, key) { - return _this3.wwe.removeKeyEventHandler(key, handler); - }); - }; - - return WwCodeBlockManager; -}(); -/** - * Sanitize HTML code - * @param {string} code code string - * @returns {string} - * @ignore - */ - - -function sanitizeHtmlCode(code) { - return code ? code.replace(/[<>&]/g, function (tag) { - return tagEntities[tag] || tag; - }) : ''; -} - -/* harmony default export */ var wwCodeBlockManager = (wwCodeBlockManager_WwCodeBlockManager); -// EXTERNAL MODULE: /Users/nhn/project/tui.editor/libs/squire/build/squire.js -var build_squire = __webpack_require__(55); -var squire_default = /*#__PURE__*/__webpack_require__.n(build_squire); - -// CONCATENATED MODULE: ./src/js/squireExt.js -function squireExt_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -/** - * @fileoverview Implements squire extension - * @author NHN FE Development Lab - */ - - - - - - -var FIND_BLOCK_TAGNAME_RX = /\b(H[\d]|LI|P|BLOCKQUOTE|TD)\b/; -var isIElt11 = /Trident\/[456]\./.test(navigator.userAgent); -/** - * Class SquireExt - * @params {Squire} ...args - */ - -var squireExt_SquireExt = /*#__PURE__*/function (_Squire) { - squireExt_inheritsLoose(SquireExt, _Squire); - - function SquireExt() { - var _this; - - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _this = _Squire.call.apply(_Squire, [this].concat(args)) || this; - - _this._decorateHandlerToCancelable('copy'); - - _this._decorateHandlerToCancelable(isIElt11 ? 'beforecut' : 'cut'); - - _this._decorateHandlerToCancelable(isIElt11 ? 'beforepaste' : 'paste'); - - _this.getBody = function () { - _this.body = _this.body || _this.getRoot(); - return _this.body; - }; - - return _this; - } - /** - * Decorate squire handler to cancelable cuz sometimes, we dont need squire handler process - * event.preventDefault() will cancel squire and browser default behavior - * event.squirePrevented = true will cancel squire but allow browser default behavior - * @param {string} eventName event name - * @private - */ - - - var _proto = SquireExt.prototype; - - _proto._decorateHandlerToCancelable = function _decorateHandlerToCancelable(eventName) { - var handlers = this._events[eventName]; - - if (handlers.length > 1) { - throw new Error("too many" + eventName + "handlers in squire"); - } - - var handler = handlers[0].bind(this); - - handlers[0] = function (event) { - if (!event.defaultPrevented && !event.squirePrevented) { - handler(event); - } - }; - }; - - _proto.changeBlockFormat = function changeBlockFormat(srcCondition, targetTagName) { - var _this2 = this; - - this.modifyBlocks(function (frag) { - var current, newFrag, newBlock, nextBlock, tagName, lastNodeOfNextBlock, appendChidToNextBlock; // HR is non-block element, so frag don't have it - // make a default block - - if (frag.childNodes.length) { - current = frag.childNodes.item(0); - } else { - current = _this2.createDefaultBlock(); - frag.appendChild(current); - } - - if (srcCondition) { - // find last depth - while (current.firstChild) { - current = current.firstChild; - } - - appendChidToNextBlock = function appendChidToNextBlock(node) { - nextBlock.appendChild(node); - }; // find tag - - - while (current !== frag) { - var _current = current; - tagName = _current.tagName; - - if (isFunction_default()(srcCondition) ? srcCondition(tagName) : tagName === srcCondition) { - nextBlock = current.childNodes.item(0); // there is no next blocktag - // eslint-disable-next-line max-depth - - if (!dom["a" /* default */].isElemNode(nextBlock) || current.childNodes.length > 1) { - nextBlock = _this2.createDefaultBlock(); - toArray_default()(current.childNodes).forEach(appendChidToNextBlock); - lastNodeOfNextBlock = nextBlock.lastChild; // remove unneccesary br - // eslint-disable-next-line max-depth - - if (lastNodeOfNextBlock && dom["a" /* default */].getNodeName(lastNodeOfNextBlock) === 'BR') { - nextBlock.removeChild(lastNodeOfNextBlock); - } - } // eslint-disable-next-line max-depth - - - if (targetTagName) { - newBlock = _this2.createElement(targetTagName, [nextBlock]); - } else { - newBlock = nextBlock; - } - - newFrag = _this2.getDocument().createDocumentFragment(); - newFrag.appendChild(newBlock); - frag = newFrag; - break; - } - - current = current.parentNode; - } - } // if source condition node is not founded, we wrap current div node with node named targetTagName - - - if ((!newFrag || !srcCondition) && targetTagName && dom["a" /* default */].getNodeName(frag.childNodes[0]) === 'DIV') { - frag = _this2.createElement(targetTagName, [frag.childNodes[0]]); - } - - return frag; - }); - }; - - _proto.changeBlockFormatTo = function changeBlockFormatTo(targetTagName) { - this.changeBlockFormat(function (tagName) { - return FIND_BLOCK_TAGNAME_RX.test(tagName); - }, targetTagName); - }; - - _proto.getCaretPosition = function getCaretPosition() { - return this.getCursorPosition(); - }; - - _proto.replaceSelection = function replaceSelection(content, selection) { - if (selection) { - this.setSelection(selection); - } - - this._ignoreChange = true; - this.insertHTML(content); - }; - - _proto.replaceRelativeOffset = function replaceRelativeOffset(content, offset, overwriteLength) { - var selection = this.getSelection().cloneRange(); - - this._replaceRelativeOffsetOfSelection(content, offset, overwriteLength, selection); - }; - - _proto._replaceRelativeOffsetOfSelection = function _replaceRelativeOffsetOfSelection(content, offset, overwriteLength, selection) { - var startSelectionInfo, endSelectionInfo, finalOffset; - var endOffsetNode = selection.endContainer; - var endTextOffset = selection.endOffset; - - if (dom["a" /* default */].getNodeName(endOffsetNode) !== 'TEXT') { - endOffsetNode = this._getClosestTextNode(endOffsetNode, endTextOffset); - - if (endOffsetNode) { - if (dom["a" /* default */].isTextNode(endOffsetNode)) { - endTextOffset = endOffsetNode.nodeValue.length; - } else { - endTextOffset = endOffsetNode.textContent.length; - } - } - } - - if (endOffsetNode) { - startSelectionInfo = this.getSelectionInfoByOffset(endOffsetNode, endTextOffset + offset); - selection.setStart(startSelectionInfo.element, startSelectionInfo.offset); - finalOffset = endTextOffset + (offset + overwriteLength); - endSelectionInfo = this.getSelectionInfoByOffset(endOffsetNode, finalOffset); - selection.setEnd(endSelectionInfo.element, endSelectionInfo.offset); - this.replaceSelection(content, selection); - } else { - this.replaceSelection(content); - } - }; - - _proto._getClosestTextNode = function _getClosestTextNode(node, offset) { - var foundNode = dom["a" /* default */].getChildNodeByOffset(node, offset - 1); - - if (dom["a" /* default */].getNodeName(foundNode) !== 'TEXT') { - foundNode = foundNode.previousSibling; - } - - return foundNode; - }; - - _proto.getSelectionInfoByOffset = function getSelectionInfoByOffset(anchorElement, offset) { - var traceElement, traceElementLength, traceOffset, stepLength; - var direction = offset >= 0 ? 'next' : 'previous'; - var offsetAbs = Math.abs(offset); - var latestAvailableElement = traceElement; - - if (direction === 'next') { - traceElement = anchorElement; - } else { - traceElement = anchorElement.previousSibling; - } - - traceOffset = offsetAbs; - stepLength = 0; - - while (traceElement) { - if (dom["a" /* default */].isTextNode(traceElement)) { - traceElementLength = traceElement.nodeValue.length; - } else { - traceElementLength = traceElement.textContent.length; - } - - stepLength += traceElementLength; - - if (offsetAbs <= stepLength) { - break; - } - - traceOffset -= traceElementLength; - - if (dom["a" /* default */].getTextLength(traceElement) > 0) { - latestAvailableElement = traceElement; - } - - traceElement = traceElement[direction + "Sibling"]; - } - - if (!traceElement) { - traceElement = latestAvailableElement; - traceOffset = dom["a" /* default */].getTextLength(traceElement); - } - - if (direction === 'previous') { - traceOffset = dom["a" /* default */].getTextLength(traceElement) - traceOffset; - } - - return { - element: traceElement, - offset: traceOffset - }; - }; - - _proto.getSelectionPosition = function getSelectionPosition(selection, style, offset) { - var marker = this.createElement('INPUT'); - var range = selection.cloneRange(); - var endSelectionInfo = this.getSelectionInfoByOffset(selection.endContainer, selection.endOffset + (offset || 0)); - range.setStart(range.startContainer, range.startOffset); - range.setEnd(endSelectionInfo.element, endSelectionInfo.offset); // to prevent squire input event fire - - this._ignoreChange = true; - this.insertElement(marker, range); - var pos = dom["a" /* default */].getOffset(marker); - - if (style !== 'over') { - pos.top += marker.offsetHeight; - } - - marker.parentNode.removeChild(marker); - selection.setStart(selection.endContainer, selection.endOffset); - selection.collapse(true); - this.setSelection(selection); - return pos; - }; - - _proto.removeLastUndoStack = function removeLastUndoStack() { - if (this._undoStack.length) { - this._undoStackLength -= 1; - this._undoIndex -= 1; - - this._undoStack.pop(); - - this._isInUndoState = false; - } - }; - - _proto.replaceParent = function replaceParent(node, from, to) { - var target = dom["a" /* default */].closest(node, from, this.getBody()); - - if (target) { - dom["a" /* default */].wrapInner(target, to); - dom["a" /* default */].unwrap(target); - } - }; - - _proto.preserveLastLine = function preserveLastLine() { - var blocks = this.getBody().children; - var lastBlock = blocks[blocks.length - 1]; - - if (lastBlock && dom["a" /* default */].getNodeName(lastBlock) !== 'DIV') { - this._ignoreChange = true; - dom["a" /* default */].insertAfter(this.createDefaultBlock(), lastBlock); - } - }; - - _proto.scrollTop = function scrollTop(top) { - if (!isUndefined_default()(top)) { - this.getBody().scrollTop = top; - } - - return this.getBody().scrollTop; - }; - - _proto.isIgnoreChange = function isIgnoreChange() { - return this._ignoreChange; - }; - - _proto.focus = function focus() { - squire_default.a.prototype.focus.call(this); - }; - - _proto.blockCommandShortcuts = function blockCommandShortcuts() { - var _this3 = this; - - var meta = utils_common["b" /* isMac */] ? 'meta' : 'ctrl'; - var keys = ['b', 'i', 'u', 'shift-7', 'shift-5', 'shift-6', 'shift-8', 'shift-9', '[', ']', 'd']; - keys.forEach(function (key) { - _this3.setKeyHandler(meta + "-" + key, function (editor, keyboardEvent) { - keyboardEvent.preventDefault(); - }); - }); - }; - - return SquireExt; -}(squire_default.a); - -/* harmony default export */ var squireExt = (squireExt_SquireExt); -// CONCATENATED MODULE: ./src/js/wwTextObject.js -/** - * @fileoverview Implements WwTextObject - * @author NHN FE Development Lab - */ - - -var isIE11 = browser_default.a.msie && browser_default.a.version === 11; -var isWindowChrome = navigator.appVersion.indexOf('Win') !== -1 && browser_default.a.chrome; -var isWindows10 = /Windows (NT )?10/g.test(navigator.appVersion); -var isNeedOffsetFix = isIE11 || isWindowChrome && !isWindows10; -/** - * Class WwTextObject - * @param {WysiwygEditor} wwe - wysiwygEditor - * @param {Range} range - Range object - */ - -var wwTextObject_WwTextObject = /*#__PURE__*/function () { - function WwTextObject(wwe, range) { - this._wwe = wwe; // msie11 and window chrome can't make start offset of range api correctly when compositing korean. - // so we need fix this when compositing korean.(and maybe other languages that needs composition.) - - if (isNeedOffsetFix) { - this.isComposition = false; - - this._initCompositionEvent(); - } - - this.setRange(range || this._wwe.getRange()); - } - /** - * Initialize composition event - * @private - */ - - - var _proto = WwTextObject.prototype; - - _proto._initCompositionEvent = function _initCompositionEvent() { - var _this = this; - - this._wwe.getEditor().addEventListener('compositionstart', function () { - _this.isComposition = true; - }); - - this._wwe.getEditor().addEventListener('compositionend', function () { - _this.isComposition = false; - }); - } - /** - * Set _range object to given range object - * @param {Range} range Range object - */ - ; - - _proto.setRange = function setRange(range) { - if (this._range) { - this._range.detach(); - } - - this._range = range; - } - /** - * Expand start offset by one - */ - ; - - _proto.expandStartOffset = function expandStartOffset() { - var range = this._range; - - if (dom["a" /* default */].isTextNode(range.startContainer) && range.startOffset > 0) { - range.setStart(range.startContainer, range.startOffset - 1); - } - } - /** - * Expand end offset by one - */ - ; - - _proto.expandEndOffset = function expandEndOffset() { - var range = this._range; - - if (dom["a" /* default */].isTextNode(range.endContainer) && range.endOffset < range.endContainer.nodeValue.length) { - range.setEnd(range.endContainer, range.endOffset + 1); - } - } - /** - * setEnd range on start - * @param {Range} range Range object - */ - ; - - _proto.setEndBeforeRange = function setEndBeforeRange(range) { - var offset = range.startOffset; - - if (this.isComposition) { - offset += 1; - } - - this._range.setEnd(range.startContainer, offset); - } - /** - * Get text content - * @returns {string} - */ - ; - - _proto.getTextContent = function getTextContent() { - return this._range.cloneContents().textContent; - } - /** - * Replace current selection content to given text - * @param {string} content Text content - */ - ; - - _proto.replaceContent = function replaceContent(content) { - this._wwe.getEditor().setSelection(this._range); - - this._wwe.getEditor().insertHTML(content); // When range is in table, 'insertHTML' makes div in table. - // So after 'insertHTML', div in table should be unwrap. - // 'wysiwygRangeChangeAfter' event let wwTableManager call '_unwrapBlockInTable' - - - if (this._wwe.isInTable(this._range)) { - this._wwe.eventManager.emit('wysiwygRangeChangeAfter', this._wwe); - } - - this._range = this._wwe.getRange(); - } - /** - * Delete current selection content - */ - ; - - _proto.deleteContent = function deleteContent() { - this._wwe.getEditor().setSelection(this._range); - - this._wwe.getEditor().insertHTML(''); - - this._range = this._wwe.getRange(); - } - /** - * Peek previous element's content - * @param {number} offset Offset to peek - * @returns {string} - */ - ; - - _proto.peekStartBeforeOffset = function peekStartBeforeOffset(offset) { - var range = this._range.cloneRange(); - - range.setStart(range.startContainer, Math.max(range.startOffset - offset, 0)); - range.setEnd(this._range.startContainer, this._range.startOffset); - return range.cloneContents().textContent; - }; - - return WwTextObject; -}(); - -/* harmony default export */ var wwTextObject = (wwTextObject_WwTextObject); -// CONCATENATED MODULE: ./src/js/ui/blockOverlay.js -/** - * @fileoverview Implements UI block overlay - * @author NHN FE Development Lab - */ - - -/** - * Class BlockOverlay - * @param {Object} options - options - * @param {EventManager} options.eventManager - event manager instance - * @param {HTMLElement} options.container - container element - * @param {string} options.attachedSelector - selector string to find attached element - * @ignore - */ - -var blockOverlay_BlockOverlay = /*#__PURE__*/function () { - function BlockOverlay(_ref) { - var eventManager = _ref.eventManager, - container = _ref.container, - attachedSelector = _ref.attachedSelector; - this._eventManager = eventManager; - this._attachedSelector = "[contenteditable=true] " + attachedSelector; - this._container = container; - this._attachedElement = null; - /** - * is activated. - * if this blockOverlay is active, It always be visible unconditionally. - * @type {boolean} - * @private - */ - - this.active = false; - - this._createElement(); - - this._initEvent(); - } - - var _proto = BlockOverlay.prototype; - - _proto._createElement = function _createElement() { - this.el = dom["a" /* default */].createElementWith('
    '); - css_default()(this.el, { - position: 'absolute', - display: 'none', - zIndex: 1 - }); - dom["a" /* default */].append(this._container, this.el); - }; - - _proto._initEvent = function _initEvent() { - var _this = this; - - this._eventManager.listen('change', this._onChange.bind(this)); - - this._eventManager.listen('mouseover', this._onMouseOver.bind(this)); - - this._eventManager.listen('focus', function () { - _this.setVisibility(false); - }); - - this._eventManager.listen('mousedown', function () { - _this.setVisibility(false); - }); - }; - - _proto._onChange = function _onChange() { - if (this._attachedElement && dom["a" /* default */].isContain(document.body, this._attachedElement)) { - this.syncLayout(); - } else { - this.setVisibility(false); - } - }; - - _proto._onMouseOver = function _onMouseOver(ev) { - var originalEvent = ev.data; - var eventTarget = originalEvent.target; - var attachedElement = dom["a" /* default */].closest(eventTarget, this._attachedSelector); - - if (attachedElement) { - this._attachedElement = attachedElement; - this.setVisibility(true); - } else if (dom["a" /* default */].closest(eventTarget, this.el)) { - this.setVisibility(true); - } else if (!this.active) { - this.setVisibility(false); - } - } - /** - * update blockOverlay position & size update to attached element - * you may want to override this to adjust position & size - * @protected - */ - ; - - _proto.syncLayout = function syncLayout() { - var offset = dom["a" /* default */].getOffset(this._attachedElement); - var outerWidth = dom["a" /* default */].getOuterWidth(this._attachedElement); - var outerHeight = dom["a" /* default */].getOuterHeight(this._attachedElement); - dom["a" /* default */].setOffset(this.el, offset); - css_default()(this.el, { - width: outerWidth + "px" - }); - css_default()(this.el, { - height: outerHeight + "px" - }); - } - /** - * attached element - * @protected - * @returns {HTMLElement} - attached element - */ - ; - - _proto.getAttachedElement = function getAttachedElement() { - return this._attachedElement || null; - } - /** - * visibility - * @protected - * @returns {boolean} visibility - */ - ; - - _proto.getVisibility = function getVisibility() { - return this.el.style.display === 'block'; - } - /** - * visibility - * @param {boolean} visibility - is visible - * @protected - */ - ; - - _proto.setVisibility = function setVisibility(visibility) { - if (visibility && this._attachedElement) { - if (!this.getVisibility()) { - css_default()(this.el, { - display: 'block' - }); - this.syncLayout(); - this.onShow(); - } - } else if (!visibility) { - if (this.getVisibility()) { - css_default()(this.el, { - display: 'none' - }); - this.onHide(); - } - } - } - /** - * called on show. you may want to override to get the event - * @protected - * @abstract - */ - ; - - _proto.onShow = function onShow() {} - /** - * called on hide. you may want to override to get the event - * @protected - */ - ; - - _proto.onHide = function onHide() { - this.active = false; - this._attachedElement = null; - }; - - return BlockOverlay; -}(); - -/* harmony default export */ var blockOverlay = (blockOverlay_BlockOverlay); -// CONCATENATED MODULE: ./src/js/ui/codeBlockGadget.js -function codeBlockGadget_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -/** - * @fileoverview Implements UI code block gadget - * @author NHN FE Development Lab - */ - - - - - - -var GADGET_RIGHT = 26; -var GADGET_WIDTH = 250; -var GADGET_HEIGHT = 30; -/** - * Class CodeBlockGadget - * @param {Object} options - options - * @param {EventManager} options.eventManager - event manager instance - * @param {HTMLElement} options.container - container element - * @param {WysiwygEditor} options.wysiwygEditor - wysiwyg editor instance - * @ignore - */ - -var codeBlockGadget_CodeBlockGadget = /*#__PURE__*/function (_BlockOverlay) { - codeBlockGadget_inheritsLoose(CodeBlockGadget, _BlockOverlay); - - function CodeBlockGadget(_ref) { - var _this; - - var eventManager = _ref.eventManager, - container = _ref.container, - wysiwygEditor = _ref.wysiwygEditor; - _this = _BlockOverlay.call(this, { - eventManager: eventManager, - container: container, - attachedSelector: 'pre' - }) || this; - _this._wysiwygEditor = wysiwygEditor; - _this._popupCodeBlockLanguages = null; - - _this._initDOM(); - - _this._initDOMEvent(); - - return _this; - } - - var _proto = CodeBlockGadget.prototype; - - _proto._initDOM = function _initDOM() { - var _this2 = this; - - addClass_default()(this.el, 'code-block-header'); - this._languageLabel = dom["a" /* default */].createElementWith('text'); - dom["a" /* default */].append(this.el, this._languageLabel); - this._buttonOpenModalEditor = dom["a" /* default */].createElementWith(""); - dom["a" /* default */].append(this.el, this._buttonOpenModalEditor); - - this._eventManager.emit('removeEditor', function () { - off_default()(_this2._buttonOpenModalEditor, 'click'); - _this2._buttonOpenModalEditor = null; - }); - }; - - _proto._initDOMEvent = function _initDOMEvent() { - var _this3 = this; - - on_default()(this._buttonOpenModalEditor, 'click', function () { - return _this3._openPopupCodeBlockEditor(); - }); - }; - - _proto._openPopupCodeBlockEditor = function _openPopupCodeBlockEditor() { - this._eventManager.emit('openPopupCodeBlockEditor', this.getAttachedElement()); - }; - - _proto._updateLanguage = function _updateLanguage() { - var attachedElement = this.getAttachedElement(); - var language = attachedElement ? attachedElement.getAttribute('data-language') : null; - this._languageLabel.textContent = language || 'text'; - } - /** - * update gadget position - * @protected - * @override - */ - ; - - _proto.syncLayout = function syncLayout() { - var attachedElement = this.getAttachedElement(); - - var _domUtils$getOffset = dom["a" /* default */].getOffset(attachedElement, '.te-editor'), - top = _domUtils$getOffset.top; - - css_default()(this.el, { - top: top + "px", - right: GADGET_RIGHT + "px", - width: GADGET_WIDTH + "px", - height: GADGET_HEIGHT + "px" - }); - } - /** - * on show - * @protected - * @override - */ - ; - - _proto.onShow = function onShow() { - var _this4 = this; - - _BlockOverlay.prototype.onShow.call(this); - - this._onAttachedElementChange = function () { - return _this4._updateLanguage(); - }; - - this._eventManager.listen('changeLanguage', this._onAttachedElementChange); - - this._updateLanguage(); - } - /** - * on hide - * @protected - * @override - */ - ; - - _proto.onHide = function onHide() { - this._eventManager.removeEventHandler('changeLanguage', this._onAttachedElementChange); - - _BlockOverlay.prototype.onHide.call(this); - }; - - return CodeBlockGadget; -}(blockOverlay); - -/* harmony default export */ var codeBlockGadget = (codeBlockGadget_CodeBlockGadget); -// CONCATENATED MODULE: ./src/js/wysiwygEditor.js -/** - * @fileoverview Implments wysiwygEditor - * @author NHN FE Development Lab - */ - - - - - - - - - - - - - - - - - - - - - - - - - - - -var wysiwygEditor_keyMapper = keyMapper.getSharedInstance(); -var FIND_EMPTY_LINE = /<([a-z]+|h\d)>(
    |
    )<\/\1>/gi; -var FIND_UNNECESSARY_BR = /(?:
    |
    )<\/(.+?)>/gi; -var wysiwygEditor_FIND_BLOCK_TAGNAME_RX = /\b(H[\d]|LI|P|BLOCKQUOTE|TD|PRE)\b/; -var FIND_OPENING_SPAN_WITH_SPACE = /]*)>[\u0020]/g; -var FIND_CLOSING_SPAN_WITH_SPACE = /[\u0020]<\/span>/g; -var FIND_TABLE_AND_HEADING_RX = /^(TABLE|H[1-6])$/; -var EDITOR_CONTENT_CSS_CLASSNAME = 'tui-editor-contents'; -var PLACEHOLDER_CSS_CLASSNAME = 'tui-editor-contents-placeholder'; -var canObserveMutations = typeof MutationObserver !== 'undefined'; -/** - * Class WysiwygEditor - * @param {HTMLElement} el - element to insert editor - * @param {EventManager} eventManager - EventManager instance - */ - -var wysiwygEditor_WysiwygEditor = /*#__PURE__*/function () { - function WysiwygEditor(el, eventManager, options) { - var _this = this; - - if (options === void 0) { - options = {}; - } - - this.componentManager = new componentManager(this); - this.eventManager = eventManager; - this.editorContainerEl = el; - this._height = 0; - this._silentChange = false; - this._keyEventHandlers = {}; - this._managers = {}; - this._linkAttribute = options.linkAttribute || {}; - this._sanitizer = options.sanitizer; - - this._initEvent(); - - this._initDefaultKeyEventHandler(); - - this.debouncedPostProcessForChange = debounce_default()(function () { - return _this.postProcessForChange(); - }, 0); - } - /** - * init - */ - - - var _proto = WysiwygEditor.prototype; - - _proto.init = function init() { - var editorBody = document.createElement('div'); - this.editorContainerEl.appendChild(editorBody); - this.editor = new squireExt(editorBody, { - blockTag: 'DIV', - leafNodeNames: { - HR: false - }, - allowedBlocks: this._sanitizer ? [] : ['details', 'summary'] - }); - this.editor.blockCommandShortcuts(); - this._clipboardManager = new wwClipboardManager(this); - - this._initSquireEvent(); - - this._clipboardManager.init(); - - addClass_default()(this.getBody(), EDITOR_CONTENT_CSS_CLASSNAME); - css_default()(this.editorContainerEl, 'position', 'relative'); - - this._togglePlaceholder(); - - this.codeBlockGadget = new codeBlockGadget({ - eventManager: this.eventManager, - container: this.editorContainerEl, - wysiwygEditor: this - }); - } - /** - * Initialize EventManager event handler - * @private - */ - ; - - _proto._initEvent = function _initEvent() { - var _this2 = this; - - this.eventManager.listen('wysiwygKeyEvent', function (ev) { - return _this2._runKeyEventHandlers(ev.data, ev.keyMap); - }); - this.eventManager.listen('wysiwygRangeChangeAfter', function () { - return _this2.scrollIntoCursor(); - }); - this.eventManager.listen('contentChangedFromWysiwyg', function () { - _this2._togglePlaceholder(); - }); - } - /** - * Add key event handler - * @param {string|Array.} keyMap - keyMap string or array of string - * @param {function} handler handler - */ - ; - - _proto.addKeyEventHandler = function addKeyEventHandler(keyMap, handler) { - var _this3 = this; - - if (!handler) { - handler = keyMap; - keyMap = 'DEFAULT'; - } - - if (!isArray_default()(keyMap)) { - keyMap = [keyMap]; - } - - keyMap.forEach(function (key) { - if (!_this3._keyEventHandlers[key]) { - _this3._keyEventHandlers[key] = []; - } - - _this3._keyEventHandlers[key].push(handler); - }); - } - /** - * Remove key event handler. - * @param {string} keyMap keyMap string - * @param {function} handler handler - */ - ; - - _proto.removeKeyEventHandler = function removeKeyEventHandler(keyMap, handler) { - if (!handler) { - handler = keyMap; - keyMap = 'DEFAULT'; - } - - var handlers = this._keyEventHandlers[keyMap]; - - if (handlers) { - this._keyEventHandlers[keyMap] = handlers.filter(function (_handler) { - return _handler !== handler; - }); - } - } - /** - * Run key event handler - * @param {Event} event event object - * @param {string} keyMap keyMapString - * @private - */ - ; - - _proto._runKeyEventHandlers = function _runKeyEventHandlers(event, keyMap) { - var range = this.getRange(); - var handlers, isNeedNext; - handlers = this._keyEventHandlers.DEFAULT; - - if (handlers) { - forEachArray_default()(handlers, function (handler) { - isNeedNext = handler(event, range, keyMap); - return isNeedNext; - }); - } - - handlers = this._keyEventHandlers[keyMap]; - - if (handlers && isNeedNext !== false) { - forEachArray_default()(handlers, function (handler) { - return handler(event, range, keyMap); - }); - } - } - /** - * Initialize squire event - * @private - */ - ; - - _proto._initSquireEvent = function _initSquireEvent() { - var _this4 = this; - - var squire = this.getEditor(); - var isNeedFirePostProcessForRangeChange = false; - squire.addEventListener('copy', function (clipboardEvent) { - _this4.eventManager.emit('copy', { - source: 'wysiwyg', - data: clipboardEvent - }); - - debounce_default()(function () { - if (!_this4.isEditorValid()) { - return; - } - - _this4.eventManager.emit('copyAfter', { - source: 'wysiwyg', - data: clipboardEvent - }); - })(); - }); - squire.addEventListener(browser_default.a.msie ? 'beforecut' : 'cut', function (clipboardEvent) { - _this4.eventManager.emit('cut', { - source: 'wysiwyg', - data: clipboardEvent - }); - - debounce_default()(function () { - if (!_this4.isEditorValid()) { - return; - } - - _this4.eventManager.emit('cutAfter', { - source: 'wysiwyg', - data: clipboardEvent - }); - })(); - }); - squire.addEventListener(browser_default.a.msie ? 'beforepaste' : 'paste', function (clipboardEvent) { - _this4.eventManager.emit('paste', { - source: 'wysiwyg', - data: clipboardEvent - }); - }); - squire.addEventListener('dragover', function (ev) { - ev.preventDefault(); - return false; - }); - squire.addEventListener('drop', function (ev) { - ev.preventDefault(); - - _this4.eventManager.emit('drop', { - source: 'wysiwyg', - data: ev - }); - - return false; - }); // change event will fired after range has been updated - - squire.addEventListener('input', debounce_default()(function () { - if (!_this4.isEditorValid()) { - return; - } - - if (!_this4._silentChange) { - var eventObj = { - source: 'wysiwyg' - }; - - _this4.eventManager.emit('changeFromWysiwyg', eventObj); - - _this4.eventManager.emit('change', eventObj); - - _this4.eventManager.emit('contentChangedFromWysiwyg', _this4); - } else { - _this4._silentChange = false; - } - - _this4.getEditor().preserveLastLine(); - }, 0)); - squire.addEventListener('keydown', function (keyboardEvent) { - var range = _this4.getEditor().getSelection(); - - if (!range.collapsed) { - isNeedFirePostProcessForRangeChange = true; - } - - _this4.eventManager.emit('keydown', { - source: 'wysiwyg', - data: keyboardEvent - }); - - _this4._onKeyDown(keyboardEvent); - }); - - if (browser_default.a.firefox) { - squire.addEventListener('keypress', function (keyboardEvent) { - var keyCode = keyboardEvent.keyCode; - - if (keyCode === 13 || keyCode === 9) { - var range = _this4.getEditor().getSelection(); - - if (!range.collapsed) { - isNeedFirePostProcessForRangeChange = true; - } - - _this4.eventManager.emit('keydown', { - source: 'wysiwyg', - data: keyboardEvent - }); - - _this4._onKeyDown(keyboardEvent); - } - }); // firefox produces shattered text nodes - - squire.addEventListener('keyup', function () { - var range = _this4.getRange(); - - if (dom["a" /* default */].isTextNode(range.commonAncestorContainer) && dom["a" /* default */].isTextNode(range.commonAncestorContainer.previousSibling)) { - var prevLen = range.commonAncestorContainer.previousSibling.length; - var curEl = range.commonAncestorContainer; - range.commonAncestorContainer.previousSibling.appendData(range.commonAncestorContainer.data); - range.setStart(range.commonAncestorContainer.previousSibling, prevLen + range.startOffset); - range.collapse(true); - dom["a" /* default */].remove(curEl); - - _this4.setRange(range); - - range.detach(); - } - }); - } - - squire.addEventListener('keyup', function (keyboardEvent) { - if (isNeedFirePostProcessForRangeChange) { - _this4.debouncedPostProcessForChange(); - - isNeedFirePostProcessForRangeChange = false; - } - - _this4.eventManager.emit('keyup', { - source: 'wysiwyg', - data: keyboardEvent - }); - }); - on_default()(this.editorContainerEl, 'scroll', function (ev) { - _this4.eventManager.emit('scroll', { - source: 'wysiwyg', - data: ev - }); - }); - squire.addEventListener('click', function (ev) { - _this4.eventManager.emit('click', { - source: 'wysiwyg', - data: ev - }); - }); - squire.addEventListener('mousedown', function (ev) { - _this4.eventManager.emit('mousedown', { - source: 'wysiwyg', - data: ev - }); - }); - squire.addEventListener('mouseover', function (ev) { - _this4.eventManager.emit('mouseover', { - source: 'wysiwyg', - data: ev - }); - }); - squire.addEventListener('mouseout', function (ev) { - _this4.eventManager.emit('mouseout', { - source: 'wysiwyg', - data: ev - }); - }); - squire.addEventListener('mouseup', function (ev) { - _this4.eventManager.emit('mouseup', { - source: 'wysiwyg', - data: ev - }); - }); - squire.addEventListener('contextmenu', function (ev) { - _this4.eventManager.emit('contextmenu', { - source: 'wysiwyg', - data: ev - }); - }); - squire.addEventListener('focus', function () { - _this4.eventManager.emit('focus', { - source: 'wysiwyg' - }); - }); - squire.addEventListener('blur', function () { - _this4.fixIMERange(); - - _this4.eventManager.emit('blur', { - source: 'wysiwyg' - }); - }); // Toolbar status active/inactive - - squire.addEventListener('pathChange', function (data) { - var state = { - strong: /(^B>|>B$|>B>|^B$|STRONG)/.test(data.path), - emph: /(>I|>EM|^I$|^EM$)/.test(data.path), - strike: /(^S>|>S$|>S>|^S$|DEL)/.test(data.path), - code: /CODE/.test(data.path), - codeBlock: /PRE/.test(data.path), - blockQuote: /BLOCKQUOTE/.test(data.path), - table: /TABLE/.test(data.path), - heading: /H[1-6]/.test(data.path), - list: /UL>LI(?!.task-list-item)/.test(data.path), - orderedList: /OL>LI(?!.task-list-item)/.test(data.path), - taskList: /[UL|OL]>LI.task-list-item/.test(data.path), - source: 'wysiwyg' - }; - - _this4.eventManager.emit('stateChange', state); - }); - squire.addEventListener('willPaste', function (ev) { - // ev has 'fragment' when event occurs from 'insertHTML' of squire - // ev has 'text' when event occurs from 'insertPlainText' of squire - if (ev.fragment) { - _this4.eventManager.emit('willPaste', { - source: 'wysiwyg', - data: ev - }); - } - }); - }; - - _proto._togglePlaceholder = function _togglePlaceholder() { - var squire = this.getEditor(); - squire.modifyDocument(function () { - var root = squire.getRoot(); - - if (root.textContent || root.childNodes.length > 1) { - root.classList.remove(PLACEHOLDER_CSS_CLASSNAME); - } else { - root.classList.add(PLACEHOLDER_CSS_CLASSNAME); - } - }); - } - /** - * Handler of keydown event - * @param {object} keyboardEvent Event object - * @private - */ - ; - - _proto._onKeyDown = function _onKeyDown(keyboardEvent) { - var keyMap = wysiwygEditor_keyMapper.convert(keyboardEvent); // to avoid duplicate event firing in firefox - - if (keyboardEvent.keyCode) { - this.eventManager.emit('keyMap', { - source: 'wysiwyg', - keyMap: keyMap, - data: keyboardEvent - }); - - if (!keyboardEvent.defaultPrevented) { - this.eventManager.emit('wysiwygKeyEvent', { - keyMap: keyMap, - data: keyboardEvent - }); - } - } - } - /** - * Initialize default event handler - * @private - */ - ; - - _proto._initDefaultKeyEventHandler = function _initDefaultKeyEventHandler() { - var _this5 = this; - - this.addKeyEventHandler('ENTER', function (ev, range) { - if (_this5._isInOrphanText(range)) { - // We need this cuz input text right after table make orphan text in webkit - _this5.defer(function () { - _this5._wrapDefaultBlockToOrphanTexts(); - - _this5.breakToNewDefaultBlock(range, 'before'); - }); - } - - _this5.defer(function () { - return _this5.scrollIntoCursor(); - }); - }); - this.addKeyEventHandler('TAB', function (ev) { - var sq = _this5.getEditor(); - - var range = sq.getSelection(); - - var isAbleToInput4Spaces = range.collapsed && _this5._isCursorNotInRestrictedAreaOfTabAction(sq); - - var isTextSelection = !range.collapsed && dom["a" /* default */].isTextNode(range.commonAncestorContainer); - ev.preventDefault(); - - if (isAbleToInput4Spaces || isTextSelection) { - sq.insertPlainText("\xA0\xA0\xA0\xA0"); - return false; - } - - return true; - }); - this.addKeyEventHandler('BACK_SPACE', function (ev, range, keymap) { - return _this5._handleRemoveKeyEvent(ev, range, keymap); - }); - this.addKeyEventHandler('DELETE', function (ev, range, keymap) { - return _this5._handleRemoveKeyEvent(ev, range, keymap); - }); - }; - - _proto._handleRemoveKeyEvent = function _handleRemoveKeyEvent(ev, range, keyMap) { - var sq = this.getEditor(); - - if (this._isStartHeadingOrTableAndContainsThem(range)) { - var keyStr = keyMap === 'BACK_SPACE' ? 'backspace' : 'delete'; - sq.removeAllFormatting(); - - sq._keyHandlers[keyStr](sq, ev, sq.getSelection()); - - sq.removeLastUndoStack(); - return false; - } - - return true; - }; - - _proto._isStartHeadingOrTableAndContainsThem = function _isStartHeadingOrTableAndContainsThem(range) { - var startContainer = range.startContainer, - startOffset = range.startOffset, - commonAncestorContainer = range.commonAncestorContainer, - collapsed = range.collapsed; - var root = this.getEditor().getRoot(); - var result = false; - - if (!collapsed && commonAncestorContainer === root) { - if (startContainer === root) { - result = FIND_TABLE_AND_HEADING_RX.test(dom["a" /* default */].getChildNodeByOffset(startContainer, startOffset).nodeName); - } else if (startOffset === 0) { - result = FIND_TABLE_AND_HEADING_RX.test(dom["a" /* default */].getParentUntil(startContainer, root).nodeName); - } - } - - return result; - }; - - _proto._wrapDefaultBlockToOrphanTexts = function _wrapDefaultBlockToOrphanTexts() { - var textNodes = toArray_default()(this.getBody().childNodes).filter(function (node) { - return dom["a" /* default */].isTextNode(node); - }); - dom["a" /* default */].getAllTextNode(this.getBody()); - textNodes.forEach(function (node) { - if (node.nextSibling && node.nextSibling.tagName === 'BR') { - dom["a" /* default */].remove(node.nextSibling); - } - - dom["a" /* default */].wrap(node, document.createElement('div')); - }); - } - /** - * check if range is orphan text - * @param {Range} range range - * @returns {boolean} result - * @private - */ - ; - - _proto._isInOrphanText = function _isInOrphanText(range) { - return range.startContainer.nodeType === Node.TEXT_NODE && range.startContainer.parentNode === this.getBody(); - } - /** - * Wrap default block to passed range - * @param {Range} range range - * @private - */ - ; - - _proto._wrapDefaultBlockTo = function _wrapDefaultBlockTo(range) { - this.saveSelection(range); - - this._joinSplitedTextNodes(); - - this.restoreSavedSelection(); - range = this.getRange(); - var textElem = range.startContainer; - var cursorOffset = range.startOffset; // after code below, range range is arranged by body - - var block = this.getEditor().createDefaultBlock([range.startContainer]); // range for insert block - - var insertTargetNode = dom["a" /* default */].getChildNodeByOffset(range.startContainer, range.startOffset); - - if (insertTargetNode) { - range.setStartBefore(insertTargetNode); - } else { - // only child in container - range.selectNodeContents(range.startContainer); - } - - range.collapse(true); - range.insertNode(block); // revert range to original node - - range.setStart(textElem, cursorOffset); - range.collapse(true); - this.setRange(range); - } - /** - * Join spliated text nodes - * @private - */ - ; - - _proto._joinSplitedTextNodes = function _joinSplitedTextNodes() { - var prevNode, lastGroup; - var nodesToRemove = []; - var textNodes = toArray_default()(this.getBody().childNodes).filter(function (node) { - return dom["a" /* default */].isTextNode(node); - }); - textNodes.forEach(function (node) { - if (prevNode === node.previousSibling) { - lastGroup.nodeValue += node.nodeValue; - nodesToRemove.push(node); - } else { - lastGroup = node; - } - - prevNode = node; - }); - dom["a" /* default */].remove(nodesToRemove); - } - /** - * Save current selection before modification - * @param {Range} range Range object - */ - ; - - _proto.saveSelection = function saveSelection(range) { - if (!range) { - range = this.getRange(); - } - - this.getEditor()._saveRangeToBookmark(range); - } - /** - * set selection by start/end container/offset - * @param {HTMLNode} startContainer - start container - * @param {Number} startOffset - start offset - * @param {HTMLNode} endContainer - end container - * @param {Number} endOffset - end offset - * @returns {Range} - range instance - */ - ; - - _proto.setSelectionByContainerAndOffset = function setSelectionByContainerAndOffset(startContainer, startOffset, endContainer, endOffset) { - var sq = this.getEditor(); - var range = sq.getSelection(); - range.setStart(startContainer, startOffset); - range.setEnd(endContainer, endOffset); - sq.setSelection(range); - return range; - } - /** - * Restore saved selection - */ - ; - - _proto.restoreSavedSelection = function restoreSavedSelection() { - this.setRange(this.getEditor()._getRangeAndRemoveBookmark()); - } - /** - * Reset wysiwyg editor - */ - ; - - _proto.reset = function reset() { - this.setValue(''); - } - /** - * Change current range block format to passed tag - * @param {string} targetTagName Target element tag name - */ - ; - - _proto.changeBlockFormatTo = function changeBlockFormatTo(targetTagName) { - this.getEditor().changeBlockFormatTo(targetTagName); - this.eventManager.emit('wysiwygRangeChangeAfter', this); - } - /** - * Make empty block to current selection - */ - ; - - _proto.makeEmptyBlockCurrentSelection = function makeEmptyBlockCurrentSelection() { - var _this6 = this; - - this.getEditor().modifyBlocks(function (frag) { - if (!frag.textContent) { - frag = _this6.getEditor().createDefaultBlock(); - } - - return frag; - }); - } - /** - * Focus to editor - */ - ; - - _proto.focus = function focus() { - var scrollTop = this.scrollTop(); - this.editor.focus(); // In webkit, if contenteditable element focus method have been invoked when another input element has focus, - // contenteditable scroll to top automatically so we need scroll it back - - if (scrollTop !== this.scrollTop()) { - this.scrollTop(scrollTop); - } - } - /** - * Remove focus of editor - */ - ; - - _proto.blur = function blur() { - this.editor.blur(); - } - /** - * Remove wysiwyg editor - */ - ; - - _proto.remove = function remove() { - off_default()(this.editorContainerEl, 'scroll'); - this.getEditor().destroy(); - this.editor = null; - this.body = null; - this.eventManager = null; - } - /** - * Set editor height - * @param {number|string} height pixel of height or "auto" - */ - ; - - _proto.setHeight = function setHeight(height) { - this._height = height; - css_default()(this.editorContainerEl, { - overflow: 'auto', - height: '100%' - }); - css_default()(this.editorContainerEl.parentNode, { - height: isNumber_default()(height) ? height + "px" : height - }); - var containerStyles = this.editorContainerEl.style; - var bodyStyles = this.getBody().style; - var paddingHeight = parseInt(containerStyles.paddingTop, 10) - parseInt(containerStyles.paddingBottom, 10); - var marginHeight = parseInt(bodyStyles.marginTop, 10) - parseInt(bodyStyles.marginBottom, 10); - css_default()(this.getBody(), { - minHeight: height - marginHeight - paddingHeight + "px" - }); - } - /** - * Set min height - * @param {number} minHeight - min height in px - */ - ; - - _proto.setMinHeight = function setMinHeight(minHeight) { - var editorBody = this.getBody(); - css_default()(editorBody, 'minHeight', minHeight + "px"); - } - /** - * Set the placeholder to wysiwyg editor - * @param {string} placeholder - placeholder to set - */ - ; - - _proto.setPlaceholder = function setPlaceholder(placeholder) { - if (placeholder) { - this.getEditor().getRoot().setAttribute('data-placeholder', placeholder); - } - } - /** - * Get attribute of link for wysiwyg - * @returns {object} attribute - attribute of anchor tag - */ - ; - - _proto.getLinkAttribute = function getLinkAttribute() { - return this._linkAttribute; - } - /** - * Set value to wysiwyg editor - * @param {string} html - HTML text - * @param {boolean} [cursorToEnd=true] - move cursor to contents end - */ - ; - - _proto.setValue = function setValue(html, cursorToEnd) { - if (cursorToEnd === void 0) { - cursorToEnd = true; - } - - html = this.eventManager.emitReduce('wysiwygSetValueBefore', html); - this.editor.setHTML(html); - this.eventManager.emit('wysiwygSetValueAfter', this); - this.eventManager.emit('contentChangedFromWysiwyg', this); - - if (cursorToEnd) { - this.moveCursorToEnd(); - } - - this.getEditor().preserveLastLine(); - this.getEditor().removeLastUndoStack(); - this.getEditor().saveUndoState(); - } - /** - * Insert given text to cursor position or selected area - * @param {string} text - text string to insert - */ - ; - - _proto.insertText = function insertText(text) { - this.editor.insertPlainText(text); - } - /** - * Get value of wysiwyg editor - * @returns {string} html - */ - ; - - _proto.getValue = function getValue() { - this._prepareGetHTML(); - - var html = this.editor.getHTML(); // empty line replace to br - - html = html.replace(FIND_EMPTY_LINE, function (match, tag) { - var result; // we maintain empty list - - if (tag === 'li') { - result = match; // we maintain empty table - } else if (tag === 'td' || tag === 'th') { - result = "<" + tag + ">"; - } else { - result = '
    '; - } - - return result; - }); // replace a space of the first and end in span tag to  . - - html = html.replace(FIND_OPENING_SPAN_WITH_SPACE, ' '); - html = html.replace(FIND_CLOSING_SPAN_WITH_SPACE, ' '); // remove unnecessary brs - - html = html.replace(FIND_UNNECESSARY_BR, ''); // remove contenteditable block, in this case div - - html = html.replace(/]*>/g, ''); - html = html.replace(/<\/div>/g, '
    '); - html = this.eventManager.emitReduce('wysiwygProcessHTMLText', html); - return html; - } - /** - * Prepare before get html - * @private - */ - ; - - _proto._prepareGetHTML = function _prepareGetHTML() { - var _this7 = this; - - this.getEditor().modifyDocument(function () { - _this7._joinSplitedTextNodes(); - - _this7.eventManager.emit('wysiwygGetValueBefore', _this7); - }); - } - /** - * postProcessForChange - */ - ; - - _proto.postProcessForChange = function postProcessForChange() { - var _this8 = this; - - if (!this.isEditorValid()) { - return; - } - - this.getEditor().modifyDocument(function () { - _this8.eventManager.emit('wysiwygRangeChangeAfter', _this8); - }); - } - /** - * Ready to silent change - */ - ; - - _proto.readySilentChange = function readySilentChange() { - if (canObserveMutations && !this.getEditor().isIgnoreChange()) { - this._silentChange = true; - } - } - /** - * Get squire - * @returns {SquireExt} squire - */ - ; - - _proto.getEditor = function getEditor() { - return this.editor; - } - /** - * Replace text of passed range - * @param {string} content Content for change current selection - * @param {Range} range range - */ - ; - - _proto.replaceSelection = function replaceSelection(content, range) { - this.getEditor().replaceSelection(content, range); - } - /** - * Replace content by relative offset - * @param {string} content Content for change current selection - * @param {number} offset Offset of current range - * @param {number} overwriteLength Length to overwrite content - */ - ; - - _proto.replaceRelativeOffset = function replaceRelativeOffset(content, offset, overwriteLength) { - this.getEditor().replaceRelativeOffset(content, offset, overwriteLength); - } - /** - * Add widget to selection - * @param {Range} range Range object - * @param {Node} node Widget node - * @param {string} style Adding style "over" or "bottom" - * @param {number} [offset] Offset to adjust position - */ - ; - - _proto.addWidget = function addWidget(range, node, style, offset) { - var pos = this.getEditor().getSelectionPosition(range, style, offset); - var editorContainerPos = dom["a" /* default */].getOffset(this.editorContainerEl); - this.editorContainerEl.appendChild(node); - css_default()(node, { - position: 'absolute', - top: pos.top - editorContainerPos.top + "px", - left: pos.left - editorContainerPos.left + "px" - }); - } - /** - * Get body container of Squire - * @returns {HTMLElement} body element - */ - ; - - _proto.getBody = function getBody() { - return this.getEditor().getBody(); - } - /** - * Check with given regexp whether current path has some format or not - * @param {RegExp} rx Regexp - * @returns {boolean} Match result - */ - ; - - _proto.hasFormatWithRx = function hasFormatWithRx(rx) { - return this.getEditor().getPath().match(rx); - } - /** - * Break line to new default block from passed range - * @param {Range} range Range object - * @param {string} [where] "before" or not - */ - ; - - _proto.breakToNewDefaultBlock = function breakToNewDefaultBlock(range, where) { - var div = this.editor.createDefaultBlock(); - var currentNode = dom["a" /* default */].getChildNodeByOffset(range.startContainer, range.startOffset) || dom["a" /* default */].getChildNodeByOffset(range.startContainer, range.startOffset - 1); - var appendBefore = dom["a" /* default */].getParentUntil(currentNode, this.getBody()); - - if (where === 'before') { - dom["a" /* default */].insertBefore(div, appendBefore); - } else { - dom["a" /* default */].insertAfter(div, appendBefore); - } - - range.setStart(div, 0); - range.collapse(true); - this.setRange(range); - } - /** - * Replace textContet of node - * @param {Node} container Container node - * @param {string} from Target text to change - * @param {string} to Replacement text - */ - ; - - _proto.replaceContentText = function replaceContentText(container, from, to) { - var beforeText = container.innerHTML; - container.innerHTML = beforeText.replace(from, to); - } - /** - * Unwrap Block tag of current range - * @param {function} [condition] iterate with tagName - */ - ; - - _proto.unwrapBlockTag = function unwrapBlockTag(condition) { - if (!condition) { - condition = function condition(tagName) { - return wysiwygEditor_FIND_BLOCK_TAGNAME_RX.test(tagName); - }; - } - - this.getEditor().changeBlockFormat(condition); - this.eventManager.emit('wysiwygRangeChangeAfter', this); - } - /** - * move scroll to cursor - * scrollIntoView browser function may cause scrolling on document. - * this function aims to replace scrollIntoView function to prevent that. - * it will move the scroll of squire only. - */ - ; - - _proto.scrollIntoCursor = function scrollIntoCursor() { - var scrollTop = this.scrollTop(); - - var _this$getEditor$getCu = this.getEditor().getCursorPosition(), - cursorTop = _this$getEditor$getCu.top, - cursorHeight = _this$getEditor$getCu.height; - - var _this$editorContainer = this.editorContainerEl.getBoundingClientRect(), - editorTop = _this$editorContainer.top, - editorHeight = _this$editorContainer.height; - - var cursorAboveEditor = cursorTop - editorTop; - var cursorBelowEditor = cursorTop + cursorHeight - (editorTop + editorHeight); - - if (cursorAboveEditor < 0) { - this.scrollTop(scrollTop + cursorAboveEditor); - } else if (cursorBelowEditor > 0) { - this.scrollTop(Math.ceil(scrollTop + cursorBelowEditor)); - } - } - /** - * Set cursor position to end - */ - ; - - _proto.moveCursorToEnd = function moveCursorToEnd() { - this.getEditor().moveCursorToEnd(); - this.scrollIntoCursor(); - - this._correctRangeAfterMoveCursor('end'); - } - /** - * Set cursor position to start - */ - ; - - _proto.moveCursorToStart = function moveCursorToStart() { - this.getEditor().moveCursorToStart(); - this.scrollTop(0); - } - /** - * Set cursor position to start - * @param {number} value Scroll amount - * @returns {number} value of scrollTop - */ - ; - - _proto.scrollTop = function scrollTop(value) { - if (!isUndefined_default()(value)) { - this.editorContainerEl.scrollTop = value; - } - - return this.editorContainerEl.scrollTop; - } - /** - * For arrange Range after moveCursorToEnd api invocation. Squire has bug in Firefox, IE. - * @param {string} direction Direction of cursor move - * @private - */ - ; - - _proto._correctRangeAfterMoveCursor = function _correctRangeAfterMoveCursor(direction) { - var range = this.getRange(); - var cursorContainer = this.getBody(); - - if (direction === 'start') { - while (cursorContainer.firstChild) { - cursorContainer = cursorContainer.firstChild; - } - } else { - while (cursorContainer.lastChild) { - cursorContainer = cursorContainer.lastChild; - } - } // IE have problem with cursor after br - - - if (cursorContainer.tagName === 'BR') { - range.setStartBefore(cursorContainer); - } else { - range.setStartAfter(cursorContainer); - } - - range.collapse(true); - this.setRange(range); - } - /** - * Get current Range object - * @returns {Range} - */ - ; - - _proto.getRange = function getRange() { - return this.getEditor().getSelection().cloneRange(); - } - /** - * get IME range - * cjk composition causes wrong caret position. - * it returns fixed IME composition range - * @returns {Range} - */ - ; - - _proto.getIMERange = function getIMERange() { - var range; - var selection = getSelection(); - - if (selection && selection.rangeCount) { - range = selection.getRangeAt(0).cloneRange(); - } - - return range; - } - /** - * get IME range - * cjk composition causes wrong caret position. - * it sets fixed IME composition range - */ - ; - - _proto.fixIMERange = function fixIMERange() { - var range = this.getIMERange(); // range exists and it's an WYSIWYG editor content - - if (range) { - var contentElement = dom["a" /* default */].getParentUntil(range.commonAncestorContainer, this.editorContainerEl); - var foundEditorElement = !!(contentElement && contentElement.parentNode); - - if (foundEditorElement) { - this.setRange(range); - } - } - } - /** - * set range - * @param {Range} range - range to set - */ - ; - - _proto.setRange = function setRange(range) { - this.getEditor().setSelection(range); - } - /** - * Check whether passed range is in table or not - * @param {Range} range range - * @returns {boolean} result - */ - ; - - _proto.isInTable = function isInTable(range) { - var target = range.collapsed ? range.startContainer : range.commonAncestorContainer; - return !!dom["a" /* default */].closest(target, '[contenteditable=true] table'); - } - /** - * Get text object of current range - * @param {Range} range Range object - * @returns {WwTextObject} - */ - ; - - _proto.getTextObject = function getTextObject(range) { - return new wwTextObject(this, range); - }; - - _proto.defer = function defer(callback, delayOffset) { - var _this9 = this; - - var delay = delayOffset ? delayOffset : 0; - setTimeout(function () { - if (_this9.isEditorValid()) { - callback(_this9); - } - }, delay); - }; - - _proto.isEditorValid = function isEditorValid() { - return this.getEditor() && dom["a" /* default */].isContain(document.body, this.editorContainerEl); - }; - - _proto._isCursorNotInRestrictedAreaOfTabAction = function _isCursorNotInRestrictedAreaOfTabAction(editor) { - return !editor.hasFormat('li') && !editor.hasFormat('blockquote') && !editor.hasFormat('table'); - }; - - _proto.getSanitizer = function getSanitizer() { - return this._sanitizer; - } - /** - * WysiwygEditor factory method - * @param {HTMLElement} el Container element for editor - * @param {EventManager} eventManager EventManager instance - * @param {object} [options={}] - option object - * @returns {WysiwygEditor} wysiwygEditor - * @ignore - */ - ; - - WysiwygEditor.factory = function factory(el, eventManager, options) { - var wwe = new WysiwygEditor(el, eventManager, options); - wwe.init(); - wwe.componentManager.addManager(wwLinkManager_WwLinkManager); - wwe.componentManager.addManager(wwListManager); - wwe.componentManager.addManager(wwTaskManager); - wwe.componentManager.addManager(wwTableSelectionManager); - wwe.componentManager.addManager(wwTableManager); - wwe.componentManager.addManager(wwHrManager); - wwe.componentManager.addManager(wwPManager); - wwe.componentManager.addManager(wwHeadingManager); - wwe.componentManager.addManager(wwCodeBlockManager); - return wwe; - }; - - return WysiwygEditor; -}(); - -/* harmony default export */ var wysiwygEditor = (wysiwygEditor_WysiwygEditor); -// CONCATENATED MODULE: ./src/js/layout.js -/** - * @fileoverview editor layout - * @author NHN FE Development Lab - */ - - - - -/** - * Editor container template - * @type {string} - * @ignore - */ - -var containerTmpl = ['
    ', '
    ', '
    ', '
    ', '
    ', '
    ', '
    ', '
    ', '
    ', '
    '].join(''); -/** - * Class Layout - * @param {object} options - Option object - * @param {EventManager} eventManager - Event manager instance - * @ignore - */ - -var layout_Layout = /*#__PURE__*/function () { - function Layout(options, eventManager) { - this.el = options.el; - this.height = options.height; - this.type = options.initialEditType; - this.eventManager = eventManager; - this.init(); - - this._initEvent(); - } - /** - * Initializer - * @protected - */ - - - var _proto = Layout.prototype; - - _proto.init = function init() { - this._renderLayout(); - - this._initMarkdownAndPreviewSection(); - - this._initWysiwygSection(); - } - /** - * Initialize show and hide event - * @private - */ - ; - - _proto._initEvent = function _initEvent() { - this.eventManager.listen('hide', this.hide.bind(this)); - this.eventManager.listen('show', this.show.bind(this)); - } - /** - * Create editor container with template - * @private - */ - ; - - _proto._renderLayout = function _renderLayout() { - css_default()(this.el, { - boxSizing: 'border-box' - }); - this.containerEl = dom["a" /* default */].createElementWith(containerTmpl, this.el); - } - /** - * Switch editor mode to WYSIWYG - */ - ; - - _proto.switchToWYSIWYG = function switchToWYSIWYG() { - removeClass_default()(this.containerEl, 'te-md-mode'); - addClass_default()(this.containerEl, 'te-ww-mode'); - } - /** - * Switch editor mode to Markdown - */ - ; - - _proto.switchToMarkdown = function switchToMarkdown() { - removeClass_default()(this.containerEl, 'te-ww-mode'); - addClass_default()(this.containerEl, 'te-md-mode'); - } - /** - * Initialize editor to Markdown and set preview section - * @private - */ - ; - - _proto._initMarkdownAndPreviewSection = function _initMarkdownAndPreviewSection() { - this.mdEditorContainerEl = this.containerEl.querySelector('.te-md-container .te-editor'); - this.previewEl = this.containerEl.querySelector('.te-md-container .te-preview'); - } - /** - * Initialize editor to WYSIWYG - * @private - */ - ; - - _proto._initWysiwygSection = function _initWysiwygSection() { - this.wwEditorContainerEl = this.containerEl.querySelector('.te-ww-container .te-editor'); - } - /** - * Set preview to vertical split style - * @private - */ - ; - - _proto._verticalSplitStyle = function _verticalSplitStyle() { - var mdContainer = this.containerEl.querySelector('.te-md-container'); - removeClass_default()(mdContainer, 'te-preview-style-tab'); - addClass_default()(mdContainer, 'te-preview-style-vertical'); - } - /** - * Set tab style preview mode - * @private - */ - ; - - _proto._tabStyle = function _tabStyle() { - var mdContainer = this.containerEl.querySelector('.te-md-container'); - removeClass_default()(mdContainer, 'te-preview-style-vertical'); - addClass_default()(mdContainer, 'te-preview-style-tab'); - } - /** - * Toggle preview style between tab and vertical split - * @param {string} style Preview style ('tab' or 'vertical') - */ - ; - - _proto.changePreviewStyle = function changePreviewStyle(style) { - if (style === 'tab') { - this._tabStyle(); - } else if (style === 'vertical') { - this._verticalSplitStyle(); - } - } - /** - * Hide Editor - */ - ; - - _proto.hide = function hide() { - addClass_default()(this.el.querySelector('.tui-editor'), 'te-hide'); - } - /** - * Show Editor - */ - ; - - _proto.show = function show() { - removeClass_default()(this.el.querySelector('.tui-editor'), 'te-hide'); - } - /** - * Remove Editor - */ - ; - - _proto.remove = function remove() { - dom["a" /* default */].remove(this.el.querySelector('.tui-editor')); - } - /** - * Get wrapped editor container element - * @returns {HTMLElement} - */ - ; - - _proto.getEditorEl = function getEditorEl() { - return this.containerEl; - } - /** - * Get wrapped preview element - * @returns {HTMLElement} - */ - ; - - _proto.getPreviewEl = function getPreviewEl() { - return this.previewEl; - } - /** - * Get wrapped Markdown editor element - * @returns {HTMLElement} - */ - ; - - _proto.getMdEditorContainerEl = function getMdEditorContainerEl() { - return this.mdEditorContainerEl; - } - /** - * Get wrapped WYSIWYG editor element - * @returns {HTMLElement} - */ - ; - - _proto.getWwEditorContainerEl = function getWwEditorContainerEl() { - return this.wwEditorContainerEl; - }; - - return Layout; -}(); - -/* harmony default export */ var js_layout = (layout_Layout); -// EXTERNAL MODULE: ./src/js/eventManager.js -var js_eventManager = __webpack_require__(36); - -// EXTERNAL MODULE: ./src/js/commandManager.js + 1 modules -var commandManager = __webpack_require__(1); - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/array/inArray.js -var inArray = __webpack_require__(14); -var inArray_default = /*#__PURE__*/__webpack_require__.n(inArray); - -// CONCATENATED MODULE: ./src/js/importManager.js -/** - * @fileoverview Implement Module for managing import external data such as image - * @author NHN FE Development Lab - */ - - -var URLRegex = /^(https?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})(\/([^\s]*))?$/g; -/** - * Class ImportManager - * @param {EventManager} eventManager - eventManager - * @ignore - */ - -var importManager_ImportManager = /*#__PURE__*/function () { - function ImportManager(eventManager) { - this.eventManager = eventManager; - - this._initEvent(); - - this._initDefaultImageImporter(); - } - /** - * graceful decode uri component - * @param {string} originalURI - string to be decoded - * @returns {string} decoded string - * @static - */ - - - ImportManager.decodeURIGraceful = function decodeURIGraceful(originalURI) { - var uris = originalURI.split(' '); - var decodedURIs = []; - var decodedURI; - forEachArray_default()(uris, function (uri) { - try { - decodedURI = decodeURIComponent(uri); - decodedURI = decodedURI.replace(/ /g, '%20'); - } catch (e) { - decodedURI = uri; - } - - return decodedURIs.push(decodedURI); - }); - return decodedURIs.join(' '); - } - /** - * encode markdown critical characters - * @param {string} text - string to encode - * @returns {string} - markdown character encoded string - * @static - */ - ; - - ImportManager.encodeMarkdownCharacters = function encodeMarkdownCharacters(text) { - return text.replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\[/g, '%5B').replace(/\]/g, '%5D').replace(//g, '%3E'); - } - /** - * escape markdown critical characters - * @param {string} text - string to escape - * @returns {string} - markdown character escaped string - * @static - */ - ; - - ImportManager.escapeMarkdownCharacters = function escapeMarkdownCharacters(text) { - return text.replace(/\(/g, '\\(').replace(/\)/g, '\\)').replace(/\[/g, '\\[').replace(/\]/g, '\\]').replace(//g, '\\>'); - } - /** - * Initialize event handler - * @private - */ - ; - - var _proto = ImportManager.prototype; - - _proto._initEvent = function _initEvent() { - var _this = this; - - this.eventManager.listen('drop', function (ev) { - var items = ev.data.dataTransfer && ev.data.dataTransfer.files; - - _this._processBlobItems(items, ev.data); - }); - this.eventManager.listen('willPaste', function (ev) { - // IE has no interface to handle clipboard image. #976 - var fragment = ev.data.fragment; - var descendant = fragment.querySelectorAll('*'); // only if paste event data has one img element and the element has base64 encoded image - - if (descendant.length !== 1 || descendant[0].tagName !== 'IMG' || !/^data:image/.test(descendant[0].src)) { - return; - } - - ev.data.preventDefault(); - var blob = dataURItoBlob(descendant[0].src); - - _this._emitAddImageBlobHook(blob, 'paste'); - }); - this.eventManager.listen('paste', function (ev) { - _this._processClipboard(ev.data); - }); - this.eventManager.listen('pasteBefore', function (ev) { - _this._decodeURL(ev); - }); - } - /** - * Initialize default image importer - * @private - */ - ; - - _proto._initDefaultImageImporter = function _initDefaultImageImporter() { - this.eventManager.listen('addImageBlobHook', function (blob, callback) { - var reader = new FileReader(); - - reader.onload = function (event) { - callback(event.target.result); - }; - - reader.readAsDataURL(blob); - }); - } - /** - * Emit add image blob hook - * @param {object} blob - blob or file - * @param {string} type - type of an event the item belongs to. paste or drop - * @private - */ - ; - - _proto._emitAddImageBlobHook = function _emitAddImageBlobHook(blob, type) { - var _this2 = this; - - this.eventManager.emit('addImageBlobHook', blob, function (imageUrl, altText) { - _this2.eventManager.emit('command', 'AddImage', { - imageUrl: imageUrl, - altText: altText || blob.name || 'image' - }); - }, type); - } - /** - * Decode url when paste link - * @param {object} ev - event object - * @private - */ - ; - - _proto._decodeURL = function _decodeURL(ev) { - var decodeURIGraceful = ImportManager.decodeURIGraceful, - encodeMarkdownCharacters = ImportManager.encodeMarkdownCharacters; - - if (ev.source === 'markdown' && ev.data.text) { - var texts = ev.data.text; - var text = texts[0]; - - if (texts.length === 1 && text.match(URLRegex)) { - text = decodeURIGraceful(text); - text = encodeMarkdownCharacters(text); - ev.data.update(null, null, [text]); - } - } else if (ev.source === 'wysiwyg') { - var container = ev.clipboardContainer; - var _container$childNodes = container.childNodes, - firstChild = _container$childNodes[0]; - var _text = firstChild.innerText; - - if (container.childNodes.length === 1 && firstChild.tagName === 'A' && _text.match(URLRegex)) { - firstChild.innerText = decodeURIGraceful(_text); - firstChild.href = encodeMarkdownCharacters(firstChild.href); - } - } - } - /** - * Get blob or excel data from clipboard - * @param {object} evData Clipboard data - * @private - */ - ; - - _proto._processClipboard = function _processClipboard(evData) { - var cbData = evData.clipboardData || window.clipboardData; - var blobItems = cbData && cbData.items; - var types = cbData.types; - - if (blobItems && types && types.length === 1 && inArray_default()('Files', [].slice.call(types)) !== -1) { - this._processBlobItems(blobItems, evData); - } - } - /** - * Process for blob item - * @param {Array.} items Item array - * @param {object} evData Event data - * @private - */ - ; - - _proto._processBlobItems = function _processBlobItems(items, evData) { - var _this3 = this; - - if (items) { - forEachArray_default()(items, function (item) { - if (item.type.indexOf('image') !== -1) { - evData.preventDefault(); - evData.stopPropagation(); - evData.codemirrorIgnore = true; - var blob = item.name ? item : item.getAsFile(); // Blob or File - - _this3._emitAddImageBlobHook(blob, evData.type); - - return false; - } - - return true; - }); - } - }; - - return ImportManager; -}(); -/** - * data URI to Blob - * @param {string} dataURI - data URI string - * @returns {Blob} - blob data - * @ignore - */ - - -function dataURItoBlob(dataURI) { - var byteString = atob(dataURI.split(',')[1]); - var ab = new ArrayBuffer(byteString.length); - var ia = new Uint8Array(ab); - - for (var i = 0; i < byteString.length; i += 1) { - ia[i] = byteString.charCodeAt(i); - } - - var _dataURI$split = dataURI.split(','), - mimeString = _dataURI$split[0]; - - var blob = new Blob([ab], { - type: mimeString.split(':')[1].split(';')[0] - }); - return blob; -} - -/* harmony default export */ var importManager = (importManager_ImportManager); -// EXTERNAL MODULE: ./src/js/convertor.js -var convertor = __webpack_require__(37); - -// EXTERNAL MODULE: ./src/js/viewer.js -var viewer = __webpack_require__(46); - -// EXTERNAL MODULE: ./src/js/utils/map.js -var map = __webpack_require__(23); - -// CONCATENATED MODULE: ./src/js/i18n.js -/** - * @fileoverview Implements i18n - * @author NHN FE Development Lab - */ - - -var DEFAULT_CODE = 'en-US'; -/** - * Class I18n - * @ignore - */ - -var i18n_I18n = /*#__PURE__*/function () { - function I18n() { - this._code = DEFAULT_CODE; - this._langs = new map["a" /* default */](); - } - /** - * Set locale code - * @param {string} code locale code - */ - - - var _proto = I18n.prototype; - - _proto.setCode = function setCode(code) { - this._code = code; - } - /** - * Set language set - * @param {string|string[]} codes locale code - * @param {object} data language set - */ - ; - - _proto.setLanguage = function setLanguage(codes, data) { - var _this = this; - - codes = [].concat(codes); - codes.forEach(function (code) { - if (!_this._langs.has(code)) { - _this._langs.set(code, data); - } else { - var langData = _this._langs.get(code); - - _this._langs.set(code, extend_default()(langData, data)); - } - }); - } - /** - * Get text of key - * @param {string} key key of text - * @param {string} code locale code - * @returns {string} - */ - ; - - _proto.get = function get(key, code) { - if (!code) { - code = this._code; - } - - var langSet = this._langs.get(code); - - if (!langSet) { - langSet = this._langs.get(DEFAULT_CODE); - } - - var text = langSet[key]; - - if (!text) { - throw new Error("There is no text key \"" + key + "\" in " + code); - } - - return text; - }; - - return I18n; -}(); - - -/* harmony default export */ var i18n = (new i18n_I18n()); -// EXTERNAL MODULE: ./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js -var ResizeObserver_es = __webpack_require__(57); - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/type/isString.js -var isString = __webpack_require__(9); -var isString_default = /*#__PURE__*/__webpack_require__.n(isString); - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/type/isObject.js -var isObject = __webpack_require__(54); -var isObject_default = /*#__PURE__*/__webpack_require__.n(isObject); - -// EXTERNAL MODULE: ./node_modules/tui-code-snippet/customEvents/customEvents.js -var customEvents = __webpack_require__(58); -var customEvents_default = /*#__PURE__*/__webpack_require__.n(customEvents); - -// CONCATENATED MODULE: ./src/js/ui/uicontroller.js -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/** - * @fileoverview Implements ui controller - * @author NHN FE Development Lab - */ - - - - - - - - -var DOM_EVENTS = ['click', 'mousedown', 'mousemove', 'mouseup', 'mouseover', 'mouseout', 'scroll']; - -var _uiInstanceId = -1; -/** - * get ui instance id - * @returns {number} - new instance id - * @ignore - */ - - -function makeUIInstanceId() { - _uiInstanceId += 1; - return _uiInstanceId; -} -/** - * Class UIController - * @param {Object} [options] - options - * @param {HTMLElement} [options.rootElement] - root element - * @param {string} [options.tagName] - tag name - * @param {string} [options.className] - class name - */ - - -var uicontroller_UIController = /*#__PURE__*/function () { - /** - * tag name - * @type {string} - */ - - /** - * ui controller class name - * @type {string} - */ - - /** - * UI element - * @type {Object} - */ - - /** - * UI Id - * @type {number} - * @private - */ - function UIController(options) { - if (options === void 0) { - options = {}; - } - - _defineProperty(this, "tagName", void 0); - - _defineProperty(this, "className", void 0); - - _defineProperty(this, "el", void 0); - - _defineProperty(this, "_id", void 0); - - options = extend_default()({ - tagName: 'div' - }, options); - this.tagName = options.tagName; - this.className = options.className; - this._id = makeUIInstanceId(); - this.customEventManager = new customEvents_default.a(); - - this._setRootElement(options.rootElement); - } - /** - * @param {string|object} aType - event name and selector string - * @param {function} aFn - event handler - */ - - - var _proto = UIController.prototype; - - _proto.on = function on(aType, aFn) { - var _this = this; - - if (isObject_default()(aType)) { - forEachOwnProperties_default()(aType, function (fn, type) { - _this._addEvent(type, fn); - }); - } else { - this._addEvent(aType, aFn); - } - }; - - _proto._bindDomEvent = function _bindDomEvent(event, selector, fn) { - if (selector) { - dom["a" /* default */].findAll(this.el, selector).forEach(function (el) { - on_default()(el, event, fn); - }); - } else { - on_default()(this.el, event, fn); - } - } - /** - * bind event - * @param {string} type - event name and selector - * @param {function} fn - handler function - * @private - */ - ; - - _proto._addEvent = function _addEvent(type, fn) { - var _this$_parseEventType = this._parseEventType(type), - event = _this$_parseEventType.event, - selector = _this$_parseEventType.selector; - - if (inArray_default()(event, DOM_EVENTS) > -1) { - this._bindDomEvent(event, selector, fn); - } else { - this.customEventManager.on(event, fn); - } - }; - - _proto._unbindDomEvent = function _unbindDomEvent(event, selector, fn) { - if (selector) { - dom["a" /* default */].findAll(this.el, selector).forEach(function (el) { - off_default()(el, event, fn); - }); - } else { - off_default()(this.el, event, fn); - } - } - /** - * unbind event handler - * @param {string} type - event name and selector - * @param {function} fn - handler function - */ - ; - - _proto.off = function off(type, fn) { - var _this$_parseEventType2 = this._parseEventType(type), - event = _this$_parseEventType2.event, - selector = _this$_parseEventType2.selector; - - if (inArray_default()(event, DOM_EVENTS) > -1) { - this._unbindDomEvent(event, selector, fn); - } else { - this.customEventManager.off(event, fn); - } - } - /** - * parse string into event name & selector - * 'click td' => ['click', 'td'] - * @param {string} type - string to be parsed - * @returns {Object} event, selector - * @private - */ - ; - - _proto._parseEventType = function _parseEventType(type) { - var splitType = type.split(' '); - var event = splitType.shift(); - var selector = splitType.join(' '); - return { - event: event, - selector: selector - }; - } - /** - * set root element - * @param {HTMLElement} el - root element - * @private - */ - ; - - _proto._setRootElement = function _setRootElement(el) { - if (!el) { - var tagName = this.tagName; - el = document.createElement(tagName); - el.className = this.className || "uic" + this._id; - } - - this.el = el; - } - /** - * trigger event - * @param {string} eventName - event name - * @param {*} eventData - event data - */ - ; - - _proto.trigger = function trigger(eventName, eventData) { - this.customEventManager.fire(eventName, eventData); - } - /** - * remove - */ - ; - - _proto.remove = function remove() { - if (this.el) { - dom["a" /* default */].remove(this.el); - } - } - /** - * destroy - */ - ; - - _proto.destroy = function destroy() { - var _this2 = this; - - this.remove(); - forEachOwnProperties_default()(this, function (value, key) { - _this2[key] = null; - }); - }; - - return UIController; -}(); - -/* harmony default export */ var uicontroller = (uicontroller_UIController); -// CONCATENATED MODULE: ./src/js/ui/toolbarItem.js -function toolbarItem_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -function toolbarItem_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/** - * @fileoverview Implements Toolbar Item - * @author NHN FE Development Lab - */ - - -/** - * Class ToolbarItem - * @param {Object} [options={name: 'toolbar-item'}] [description] - */ - -var toolbarItem_ToolbarItem = /*#__PURE__*/function (_UIController) { - toolbarItem_inheritsLoose(ToolbarItem, _UIController); - - /** - * item name - * @type {String} - * @static - * @private - */ - - /** - * toolbar item class name - * @type {String} - * @static - * @private - */ - function ToolbarItem(options) { - var _this; - - if (options === void 0) { - options = { - name: ToolbarItem.name - }; - } - - _this = _UIController.call(this, extend_default()({ - className: ToolbarItem.className - }, options)) || this; - _this._name = options.name; - return _this; - } - /** - * get the name of the toolbar item - * @returns {string} - the name of the toolbar item - */ - - - var _proto = ToolbarItem.prototype; - - _proto.getName = function getName() { - return this._name; - }; - - return ToolbarItem; -}(uicontroller); - -toolbarItem_defineProperty(toolbarItem_ToolbarItem, "name", 'item'); - -toolbarItem_defineProperty(toolbarItem_ToolbarItem, "className", 'tui-toolbar-item'); - -/* harmony default export */ var ui_toolbarItem = (toolbarItem_ToolbarItem); -// CONCATENATED MODULE: ./src/js/ui/tooltip.js -/** - * @fileoverview Implements tooltip - * @author NHN FE Development Lab - */ - - -var TOOLTIP_CONTENT = '
    '; -var TOOLTIP_TOP_INDENT = 7; -/** - * Class Tooltip - * @ignore - */ - -var tooltip_Tooltip = /*#__PURE__*/function () { - function Tooltip() { - this.el = dom["a" /* default */].createElementWith("
    " + TOOLTIP_CONTENT + "
    "); - document.body.appendChild(this.el); - this.hide(); - } - /** - * show tooltop - * @param {HTMLElement} target - target element to bind - * @param {String} text - text to show - */ - - - var _proto = Tooltip.prototype; - - _proto.show = function show(target, text) { - var targetRect = target.getBoundingClientRect(); - var left = targetRect.left + window.pageXOffset; - var top = targetRect.top + window.pageYOffset; - css_default()(this.el, { - top: top + target.clientHeight + TOOLTIP_TOP_INDENT + "px", - left: left + 3 + "px" - }); - this.el.querySelector('.text').innerHTML = text; - css_default()(this.el, { - display: 'block' - }); - }; - - _proto.hide = function hide() { - css_default()(this.el, { - display: 'none' - }); - }; - - _proto.remove = function remove() { - dom["a" /* default */].remove(this.el); - }; - - return Tooltip; -}(); - -/* harmony default export */ var tooltip = (new tooltip_Tooltip()); -// CONCATENATED MODULE: ./src/js/ui/toolbarButton.js -function toolbarButton_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function toolbarButton_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -function toolbarButton_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/** - * @fileoverview Implements UI ToolbarButton - * @author NHN FE Development Lab - */ - - -/** - * @typedef {object} toolbarItemsValue - * @property {string} type - type of toolbar item (default value is 'button') - * @property {toolbarButtonOptions} options - options of toolbar item - */ - -/** - * @typedef {object} toolbarButtonOptions - * @property {HTMLElement} el - target element - * @property {string} className - button's class name - * @property {string} command - command name to execute on click - * @property {string} event - event name to trigger on click - * @property {string} text - text on button - * @property {string} tooltip - text on tooltip - * @property {string} style - button's style - * @property {string} state - button's state - */ - -/** - * Class ToolbarButton UI - * @param {toolbarButtonOptions} options - button options - * @ignore - */ - -var toolbarButton_ToolbarButton = /*#__PURE__*/function (_ToolbarItem) { - toolbarButton_inheritsLoose(ToolbarButton, _ToolbarItem); - - /** - * item name - * @type {String} - * @static - */ - - /** - * ToolbarItem className - * @type {String} - * @static - */ - function ToolbarButton(options) { - var _this; - - if (options === void 0) { - options = { - tagName: 'button', - name: ToolbarButton.name - }; - } - - _this = _ToolbarItem.call(this, { - name: options.name, - tagName: 'button', - className: options.className + " " + ToolbarButton.className, - rootElement: options.el - }) || this; - - _this._setOptions(options); - - _this._render(); - - _this.on('click', _this._onClick.bind(toolbarButton_assertThisInitialized(_this))); - - if (options.tooltip) { - _this.on('mouseover', _this._onOver.bind(toolbarButton_assertThisInitialized(_this))); - - _this.on('mouseout', _this._onOut.bind(toolbarButton_assertThisInitialized(_this))); - } - - return _this; - } - /** - * set tooltip text - * @param {string} text - tooltip text to show - */ - - - var _proto = ToolbarButton.prototype; - - _proto.setTooltip = function setTooltip(text) { - this._tooltip = text; - }; - - _proto._setOptions = function _setOptions(options) { - this._command = options.command; - this._event = options.event; - this._text = options.text; - this._tooltip = options.tooltip; - this._style = options.style; - this._state = options.state; - }; - - _proto._render = function _render() { - var text = document.createTextNode(this._text || ''); - this.el.appendChild(text); - this.el.setAttribute('type', 'button'); - - if (this._style) { - this.el.setAttribute('style', this._style); - } - }; - - _proto._onClick = function _onClick() { - if (!this.isEnabled()) { - return; - } - - if (this._command) { - this.trigger('command', this._command); - } else if (this._event) { - this.trigger('event', this._event); - } - - this.trigger('clicked'); - }; - - _proto._onOver = function _onOver() { - if (!this.isEnabled()) { - return; - } - - tooltip.show(this.el, this._tooltip); - }; - - _proto._onOut = function _onOut() { - tooltip.hide(); - } - /** - * enable button - */ - ; - - _proto.enable = function enable() { - this.el.disabled = false; - } - /** - * disable button - */ - ; - - _proto.disable = function disable() { - this.el.disabled = true; - } - /** - * check whether this button is enabled - * @returns {Boolean} - true for enabled - */ - ; - - _proto.isEnabled = function isEnabled() { - return !this.el.disabled; - }; - - return ToolbarButton; -}(ui_toolbarItem); - -toolbarButton_defineProperty(toolbarButton_ToolbarButton, "name", 'button'); - -toolbarButton_defineProperty(toolbarButton_ToolbarButton, "className", 'tui-toolbar-icons'); - -/* harmony default export */ var toolbarButton = (toolbarButton_ToolbarButton); -// CONCATENATED MODULE: ./src/js/ui/toolbarDivider.js -function toolbarDivider_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -function toolbarDivider_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/** - * @fileoverview Implements Toolbar Divider - * @author NHN FE Development Lab - */ - -/** - * Class ToolbarDivider - * @ignore - */ - -var ToolbarDivider = /*#__PURE__*/function (_ToolbarItem) { - toolbarDivider_inheritsLoose(ToolbarDivider, _ToolbarItem); - - /** - * item name - * @type {String} - * @static - */ - - /** - * item class name - * @type {String} - * @static - */ - function ToolbarDivider() { - return _ToolbarItem.call(this, { - name: ToolbarDivider.name, - tagName: 'div', - className: ToolbarDivider.className - }) || this; - } - - return ToolbarDivider; -}(ui_toolbarItem); - -toolbarDivider_defineProperty(ToolbarDivider, "name", 'divider'); - -toolbarDivider_defineProperty(ToolbarDivider, "className", 'tui-toolbar-divider'); - -/* harmony default export */ var toolbarDivider = (ToolbarDivider); -// CONCATENATED MODULE: ./src/js/ui/toolbarItemFactory.js -/** - * @fileoverview Implements Toolbar Item Factory - * @author NHN FE Development Lab - */ - - - - -/** - * Toolbar Item Factory - * @ignore - */ - -var toolbarItemFactory_ToolbarItemFactory = /*#__PURE__*/function () { - function ToolbarItemFactory() {} - - /** - * create toolbar item instance - * @param {string} name - toolbar item name - * @param {object} [options] - options to the constructor - * @return {ToolbarItem} - created toolbar item instance - * @static - */ - - /* eslint-disable complexity */ - ToolbarItemFactory.create = function create(name, options) { - var toolbarItem; - - switch (name) { - case 'heading': - toolbarItem = new toolbarButton({ - name: 'heading', - className: 'tui-heading', - event: 'openHeadingSelect', - tooltip: i18n.get('Headings'), - state: 'heading' - }); - break; - - case 'bold': - toolbarItem = new toolbarButton({ - name: 'bold', - className: 'tui-bold', - command: 'Bold', - tooltip: i18n.get('Bold'), - state: 'strong' - }); - break; - - case 'italic': - toolbarItem = new toolbarButton({ - name: 'italic', - className: 'tui-italic', - command: 'Italic', - tooltip: i18n.get('Italic'), - state: 'emph' - }); - break; - - case 'strike': - toolbarItem = new toolbarButton({ - name: 'strike', - className: 'tui-strike', - command: 'Strike', - tooltip: i18n.get('Strike'), - state: 'strike' - }); - break; - - case 'hr': - toolbarItem = new toolbarButton({ - name: 'hr', - className: 'tui-hrline', - command: 'HR', - tooltip: i18n.get('Line'), - state: 'thematicBreak' - }); - break; - - case 'quote': - toolbarItem = new toolbarButton({ - name: 'quote', - className: 'tui-quote', - command: 'Blockquote', - tooltip: i18n.get('Blockquote'), - state: 'blockQuote' - }); - break; - - case 'ul': - toolbarItem = new toolbarButton({ - name: 'ul', - className: 'tui-ul', - command: 'UL', - tooltip: i18n.get('Unordered list'), - state: 'list' - }); - break; - - case 'ol': - toolbarItem = new toolbarButton({ - name: 'ol', - className: 'tui-ol', - command: 'OL', - tooltip: i18n.get('Ordered list'), - state: 'orderedList' - }); - break; - - case 'task': - toolbarItem = new toolbarButton({ - name: 'task', - className: 'tui-task', - command: 'Task', - tooltip: i18n.get('Task'), - state: 'taskList' - }); - break; - - case 'table': - toolbarItem = new toolbarButton({ - name: 'table', - className: 'tui-table', - event: 'openPopupAddTable', - tooltip: i18n.get('Insert table'), - state: 'table' - }); - break; - - case 'image': - toolbarItem = new toolbarButton({ - name: 'image', - className: 'tui-image', - event: 'openPopupAddImage', - tooltip: i18n.get('Insert image'), - state: '' - }); - break; - - case 'link': - toolbarItem = new toolbarButton({ - name: 'link', - className: 'tui-link', - event: 'openPopupAddLink', - tooltip: i18n.get('Insert link') - }); - break; - - case 'code': - toolbarItem = new toolbarButton({ - name: 'code', - className: 'tui-code', - command: 'Code', - tooltip: i18n.get('Code'), - state: 'code' - }); - break; - - case 'codeblock': - toolbarItem = new toolbarButton({ - name: 'codeblock', - className: 'tui-codeblock', - command: 'CodeBlock', - tooltip: i18n.get('Insert CodeBlock'), - state: 'codeBlock' - }); - break; - - case 'indent': - toolbarItem = new toolbarButton({ - name: 'indent', - className: 'tui-indent', - command: 'Indent', - tooltip: i18n.get('Indent') - }); - break; - - case 'outdent': - toolbarItem = new toolbarButton({ - name: 'outdent', - className: 'tui-outdent', - command: 'Outdent', - tooltip: i18n.get('Outdent') - }); - break; - - case 'divider': - toolbarItem = new toolbarDivider(); - break; - - case 'button': - toolbarItem = new toolbarButton(options); - break; - - case 'item': - default: - toolbarItem = new ui_toolbarItem(options); - } - - return toolbarItem; - } - /* eslint-enable complexity */ - ; - - return ToolbarItemFactory; -}(); - -/* harmony default export */ var toolbarItemFactory = (toolbarItemFactory_ToolbarItemFactory); -// CONCATENATED MODULE: ./src/js/ui/toolbar.js -function toolbar_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function toolbar_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -function toolbar_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/** - * @fileoverview Implements toolbar - * @author NHN FE Development Lab - */ - - - - - - -/** - * Class Toolbar - * @param {EventManager} eventManager - event manager - * @param {ToolbarItem[]} [items=[]] - toolbar items - */ - -var toolbar_Toolbar = /*#__PURE__*/function (_UIController) { - toolbar_inheritsLoose(Toolbar, _UIController); - - /** - * items - * @type {Array} - * @private - */ - - /** - * event manager - * @type {EventManager} - * @private - */ - function Toolbar(eventManager, items) { - var _this; - - if (items === void 0) { - items = []; - } - - _this = _UIController.call(this, { - tagName: 'div', - className: 'tui-editor-defaultUI-toolbar' - }) || this; - - toolbar_defineProperty(toolbar_assertThisInitialized(_this), "_items", []); - - toolbar_defineProperty(toolbar_assertThisInitialized(_this), "_eventManager", void 0); - - _this._eventManager = eventManager; - - _this.setItems(items); - - _this._initEvent(eventManager); - - return _this; - } - /** - * init event - * @param {EventManager} eventManager - event manager - * @private - * @override - */ - - - var _proto = Toolbar.prototype; - - _proto._initEvent = function _initEvent(eventManager) { - var _this2 = this; - - eventManager.listen('stateChange', function (ev) { - _this2._items.forEach(function (item) { - if (item._state) { - dom["a" /* default */].toggleClass(item.el, 'active', !!ev[item._state]); - } - }); - }); - eventManager.listen('changePreviewTabPreview', function () { - return _this2.disableAllButton(); - }); - eventManager.listen('changePreviewTabWrite', function () { - return _this2.enableAllButton(); - }); - eventManager.listen('changeMode', function () { - return _this2.enableAllButton(); - }); - } - /** - * disable all toolbar button - */ - ; - - _proto.disableAllButton = function disableAllButton() { - this._items.forEach(function (item) { - if (item instanceof toolbarButton) { - item.disable(); - } - }); - } - /** - * enable all toolbar button - */ - ; - - _proto.enableAllButton = function enableAllButton() { - this._items.forEach(function (item) { - if (item instanceof toolbarButton) { - item.enable(); - } - }); - } - /** - * get toolbar items - * @returns {ToolbarItem[]} - toolbar items - */ - ; - - _proto.getItems = function getItems() { - return this._items.slice(0); - } - /** - * get toolbar item at given index - * @param {number} index - item index - * @returns {ToolbarItem} - toolbar item at the index - */ - ; - - _proto.getItem = function getItem(index) { - return this._items[index]; - } - /** - * set toolbar items - * @param {ToolbarItem[]} items - toolbar items - */ - ; - - _proto.setItems = function setItems(items) { - this.removeAllItems(); - items.forEach(this.addItem.bind(this)); - } - /** - * add toolbar item - * @param {ToolbarItem|string|object} item - toolbar item - */ - ; - - _proto.addItem = function addItem(item) { - this.insertItem(this._items.length, item); - } - /** - * insert toolbar item - * @param {number} index - index at given item inserted - * @param {ToolbarItem|string|object} item - toolbar item - */ - ; - - _proto.insertItem = function insertItem(index, item) { - var _this3 = this; - - if (isString_default()(item)) { - item = toolbarItemFactory.create(item); - } else if (isString_default()(item.type)) { - item = toolbarItemFactory.create(item.type, item.options); - } - - var children = this.el.children; - - if (index >= 0 && index < children.length) { - dom["a" /* default */].insertBefore(item.el, children[index]); - - this._items.splice(index, 0, item); - } else { - this.el.appendChild(item.el); - - this._items.push(item); - } - - item.onCommandHandler = function (commandName) { - return _this3._eventManager.emit('command', commandName); - }; - - item.onEventHandler = function (eventName) { - return _this3._eventManager.emit(eventName); - }; - - item.on('command', item.onCommandHandler); - item.on('event', item.onEventHandler); - } - /** - * get index of given item - * @param {ToolbarItem} item - toolbar item - * @returns {number} - index of given toolbar item - */ - ; - - _proto.indexOfItem = function indexOfItem(item) { - var index; - - if (item instanceof ui_toolbarItem) { - index = this._items.indexOf(item); - } else if (isString_default()(item)) { - var itemName = item; - index = this._items.map(function (itemToTest) { - return itemToTest.getName(); - }).indexOf(itemName); - } - - return index; - } - /** - * remove an item - * @param {ToolbarItem|number} item - an toolbar item or index of the item to remove - * @param {boolean} destroy - destroy item or not - * @returns {ToolbarItem|undefined} - removed item - */ - ; - - _proto.removeItem = function removeItem(item, destroy) { - if (destroy === void 0) { - destroy = true; - } - - var index; - var removedItem; - - if (item instanceof ui_toolbarItem) { - index = this.indexOfItem(item); - } else { - index = item; - } - - if (index >= 0) { - removedItem = this._items.splice(index, 1)[0]; - } - - if (removedItem) { - if (destroy) { - removedItem.destroy(); - } else { - removedItem.off('command', removedItem.onCommandHandler); - removedItem.off('event', removedItem.onEventHandler); - dom["a" /* default */].remove(removedItem.el); - } - } - - return removedItem; - } - /** - * remove all toolbar items - */ - ; - - _proto.removeAllItems = function removeAllItems() { - while (this._items && this._items.length > 0) { - this.removeItem(0); - } - } - /** - * destroy instance - * @override - */ - ; - - _proto.destroy = function destroy() { - this.removeAllItems(); - - _UIController.prototype.destroy.call(this); - }; - - return Toolbar; -}(uicontroller); - -/* harmony default export */ var ui_toolbar = (toolbar_Toolbar); -// CONCATENATED MODULE: ./src/js/ui/layerpopup.js -function layerpopup_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function layerpopup_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -/** - * @fileoverview Implements LayerPopup - * @author NHN FE Development Lab - */ - - - - - - - - - - -var CLASS_PREFIX = 'tui-popup-'; -var CLASS_FIT_WINDOW = 'fit-window'; -var LAYOUT_TEMPLATE_MODELESS = "
    \n \n
    \n \n
    \n
    \n
    "; -var LAYOUT_TEMPLATE_MODAL = "
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    "; -/** - * A number, or a string containing a number. - * @typedef {object} LayerPopupOption - * @property {string[]} [openerCssQuery] - Css Query list to bind clickevent that open popup - * @property {string[]} [closerCssQuery] - Css Query list to bind clickevent that close popup - * @property {HTMLElement} el - popup root element - * @property {HTMLElement|string} [content] - popup content that html string or element - * @property {string} [textContent] - popup text content - * @property {string} title - popup title - * @property {boolean} [header] - whether to draw header - * @property {HTMLElement} [target] - element to append popup - * @property {boolean} modal - true: modal, false: modeless - * @property {string} [headerButtons] - replace header(close) button - */ - -/** - * Class LayerPopup - * @param {LayerPopupOption} options - popup option - */ - -var layerpopup_LayerPopup = /*#__PURE__*/function (_UIController) { - layerpopup_inheritsLoose(LayerPopup, _UIController); - - function LayerPopup(options) { - var _this; - - options = extend_default()({ - header: true, - target: document.body, - textContent: '' - }, options); - _this = _UIController.call(this, { - tagName: 'div', - className: options.modal ? CLASS_PREFIX + "modal-background" : CLASS_PREFIX + "wrapper", - rootElement: options.el - }) || this; - _this._clickEventMap = {}; - _this._onClickCloseButton = _this.hide.bind(layerpopup_assertThisInitialized(_this)); - - _this._initInstance(options); - - _this._initDOM(options); - - _this._initDOMEvent(options); - - _this._initEditorEvent(options); - - return _this; - } - /** - * init instance. - * store properties & prepare before initialize DOM - * @param {LayerPopupOption} options - layer popup options - * @private - */ - - - var _proto = LayerPopup.prototype; - - _proto._initInstance = function _initInstance(options) { - this._target = options.target; - - if (options.el) { - this.el = options.el; - this._isExternalHtmlUse = true; - } - - if (options.content) { - this.content = options.content; - } else { - this.content = options.textContent; - } - - this.options = options; - } - /** - * initialize DOM, render popup - * @private - */ - ; - - _proto._initDOM = function _initDOM() { - this._initLayout(); - - if (!this._isExternalHtmlUse) { - if (isExisty_default()(this.options.title)) { - this.setTitle(this.options.title); - } - - this.setContent(this.content); - } - - var buttons = this.options.headerButtons; - - if (buttons) { - var closeButtons = dom["a" /* default */].findAll(this.el, "." + CLASS_PREFIX + "close-button"); - closeButtons.forEach(function (button) { - dom["a" /* default */].remove(button); - }); - var buttonWrapper = this.el.querySelector("." + CLASS_PREFIX + "header-buttons"); - dom["a" /* default */].empty(buttonWrapper); - buttonWrapper.innerHTML = buttons; - } - - if (this.options.css) { - css_default()(this.el, this.options.css); - } - } - /** - * bind DOM events - * @private - */ - ; - - _proto._initDOMEvent = function _initDOMEvent() { - var _this2 = this; - - var _this$options = this.options, - openerCssQuery = _this$options.openerCssQuery, - closerCssQuery = _this$options.closerCssQuery; - var _document = document, - body = _document.body; - - if (openerCssQuery) { - dom["a" /* default */].findAll(body, openerCssQuery).forEach(function (el) { - var eventKey = "click." + _this2._id; - _this2._clickEventMap[eventKey] = _this2.show.bind(_this2); - on_default()(el, 'click', _this2._clickEventMap[eventKey]); - }); - } - - if (closerCssQuery) { - dom["a" /* default */].findAll(body, closerCssQuery).forEach(function (el) { - var eventKey = "click." + _this2._id; - _this2._clickEventMap[eventKey] = _this2.hide.bind(_this2); - on_default()(el, 'click', _this2._clickEventMap[eventKey]); - }); - } - - this.on("click ." + CLASS_PREFIX + "close-button", this._onClickCloseButton); - } - /** - * bind editor events - * @private - * @abstract - */ - ; - - _proto._initEditorEvent = function _initEditorEvent() {}; - - _proto._initLayout = function _initLayout() { - var options = this.options; - - if (!this._isExternalHtmlUse) { - var layout = options.modal ? LAYOUT_TEMPLATE_MODAL : LAYOUT_TEMPLATE_MODELESS; - this.el.innerHTML = layout; - - if (options.className) { - addClass_default.a.apply(void 0, [this.el].concat(options.className.split(/\s+/g))); - } - - this.hide(); - - this._target.appendChild(this.el); - - this.body = this.el.querySelector("." + CLASS_PREFIX + "body"); - - if (!options.header) { - dom["a" /* default */].remove(this.el.querySelector("." + CLASS_PREFIX + "header")); - } - } else { - this.hide(); - - this._target.appendChild(this.el); - } - } - /** - * set popup content - * @param {HTMLElement|string} content - content - */ - ; - - _proto.setContent = function setContent(content) { - dom["a" /* default */].empty(this.body); - - if (isString_default()(content)) { - this.body.innerHTML = content; - } else { - this.body.appendChild(content); - } - } - /** - * set title - * @param {string} title - title text - */ - ; - - _proto.setTitle = function setTitle(title) { - var titleWrapper = this.el.querySelector("." + CLASS_PREFIX + "title"); - dom["a" /* default */].empty(titleWrapper); - titleWrapper.innerHTML = title; - } - /** - * get title element - * @returns {HTMLElement} - title html element - */ - ; - - _proto.getTitleElement = function getTitleElement() { - return this.el.querySelector("." + CLASS_PREFIX + "title"); - } - /** - * hide popup - */ - ; - - _proto.hide = function hide() { - css_default()(this.el, { - display: 'none' - }); - this._isShow = false; - this.trigger('hidden', this); - } - /** - * show popup - */ - ; - - _proto.show = function show() { - css_default()(this.el, { - display: 'block' - }); - this._isShow = true; - this.trigger('shown', this); - } - /** - * whether this popup is visible - * @returns {boolean} - true: shown, false: hidden - */ - ; - - _proto.isShow = function isShow() { - return this._isShow; - } - /** - * remove popup content - */ - ; - - _proto.remove = function remove() { - var _this3 = this; - - var _this$options2 = this.options, - openerCssQuery = _this$options2.openerCssQuery, - closerCssQuery = _this$options2.closerCssQuery; - var _document2 = document, - body = _document2.body; - this.trigger('remove', this); - this.off("click ." + CLASS_PREFIX + "close-button", this._onClickCloseButton); - - if (openerCssQuery) { - dom["a" /* default */].findAll(body, openerCssQuery).forEach(function (opener) { - off_default()(opener, 'click', _this3._clickEventMap["click." + _this3._id]); - delete _this3._clickEventMap["click." + _this3._id]; - }); - } - - if (closerCssQuery) { - dom["a" /* default */].findAll(body, closerCssQuery).forEach(function (closer) { - off_default()(closer, 'click', _this3._clickEventMap["click." + _this3._id]); - delete _this3._clickEventMap["click." + _this3._id]; - }); - } - - dom["a" /* default */].remove(this.el); - this.el = null; - } - /** - * make popup size fit to window - * @param {boolean} fit - true to make popup fit to window - * @protected - * @ignore - */ - ; - - _proto.setFitToWindow = function setFitToWindow(fit) { - dom["a" /* default */].toggleClass(this.el, CLASS_FIT_WINDOW, fit); - } - /** - * make popup size fit to window - * @returns {boolean} - true for fit to window - * @protected - * @ignore - */ - ; - - _proto.isFitToWindow = function isFitToWindow() { - return hasClass_default()(this.el, CLASS_FIT_WINDOW); - } - /** - * toggle size fit to window - * @returns {boolean} - true for fit to window - * @protected - * @ignore - */ - ; - - _proto.toggleFitToWindow = function toggleFitToWindow() { - var fitToWindow = !this.isFitToWindow(); - this.setFitToWindow(fitToWindow); - return fitToWindow; - }; - - return LayerPopup; -}(uicontroller); - -/* harmony default export */ var layerpopup = (layerpopup_LayerPopup); -// CONCATENATED MODULE: ./src/js/ui/popupDropdownToolbar.js -function popupDropdownToolbar_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -function popupDropdownToolbar_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/** - * @fileoverview implements DefaultToolbar - * @author NHN FE Development Lab - */ - - - - - -/** - * Class PopupDropdownToolbar - * @param {LayerPopupOption} options - layer popup option - * @ignore - */ - -var popupDropdownToolbar_PopupDropdownToolbar = /*#__PURE__*/function (_LayerPopup) { - popupDropdownToolbar_inheritsLoose(PopupDropdownToolbar, _LayerPopup); - - /** - * open event string - * @type {string} - */ - function PopupDropdownToolbar(options) { - options = extend_default()({ - header: false, - className: 'te-dropdown-toolbar' - }, options); - return _LayerPopup.call(this, options) || this; - } - /** - * get toolbar instance it contains - * @returns {Toolbar} - toolbar instance - */ - - - var _proto = PopupDropdownToolbar.prototype; - - _proto.getToolbar = function getToolbar() { - return this._toolbar; - } - /** - * get toolbar items - * @returns {ToolbarItem[]} - toolbar items - */ - ; - - _proto.getItems = function getItems() { - return this.getToolbar().getItems(); - } - /** - * get toolbar item at given index - * @param {number} index - item index - * @returns {ToolbarItem} - toolbar item at the index - */ - ; - - _proto.getItem = function getItem(index) { - return this.getToolbar().getItem(index); - } - /** - * set toolbar items - * @param {ToolbarItem[]} items - toolbar items - */ - ; - - _proto.setItems = function setItems(items) { - this.getToolbar().setItems(items); - } - /** - * add toolbar item - * @param {ToolbarItem|string|object} item - toolbar item - */ - ; - - _proto.addItem = function addItem(item) { - this.getToolbar().addItem(item); - } - /** - * insert toolbar item - * @param {number} index - index at given item inserted - * @param {ToolbarItem|string|object} item - toolbar item - */ - ; - - _proto.insertItem = function insertItem(index, item) { - this.getToolbar().insertItem(index, item); - } - /** - * get index of given item - * @param {ToolbarItem} item - toolbar item - * @returns {number} - index of given toolbar item - */ - ; - - _proto.indexOfItem = function indexOfItem(item) { - return this.getToolbar().indexOfItem(item); - } - /** - * remove an item - * @param {number} index - item index to remove - * @param {boolean} destroy - destroy item or not - * @returns {ToolbarItem} - removed item - */ - ; - - _proto.removeItem = function removeItem(index, destroy) { - return this.getToolbar().removeItem(index, destroy); - } - /** - * remove all toolbar items - */ - ; - - _proto.removeAllItems = function removeAllItems() { - this.getToolbar().removeAllItems(); - } - /** - * init instance. - * store properties & prepare before initialize DOM - * @param {LayerPopupOption} options - layer popup options - * @private - * @override - */ - ; - - _proto._initInstance = function _initInstance(options) { - _LayerPopup.prototype._initInstance.call(this, options); - - var button = options.button, - eventManager = options.eventManager; - this._button = button; - this._eventManager = eventManager; - this._toolbar = new ui_toolbar(eventManager); - } - /** - * initialize DOM, render popup - * @private - * @override - */ - ; - - _proto._initDOM = function _initDOM() { - _LayerPopup.prototype._initDOM.call(this); - - this.setContent(this._toolbar.el); - } - /** - * bind editor events - * @private - * @override - */ - ; - - _proto._initEditorEvent = function _initEditorEvent() { - var _this = this; - - _LayerPopup.prototype._initEditorEvent.call(this); - - this._eventManager.listen('focus', function () { - return _this.hide(); - }); - - this._eventManager.listen('closeAllPopup', function () { - return _this.hide(); - }); - - this._eventManager.listen(PopupDropdownToolbar.OPEN_EVENT, function () { - var isShown = _this.isShow(); - - _this._eventManager.emit('closeAllPopup'); - - if (!isShown) { - _this.show(); - } // to give toolbar element enough width before the calculation - - - css_default()(_this.el, { - left: '-1000px' - }); - var button = _this._button; - var buttonOuterHeightWithMargin = dom["a" /* default */].getOuterHeight(button, true); - var buttonMarginBottom = (buttonOuterHeightWithMargin - dom["a" /* default */].getOuterHeight(button)) / 2; - var top = button.offsetTop + buttonOuterHeightWithMargin - buttonMarginBottom; - var left = button.offsetLeft + dom["a" /* default */].getOuterWidth(button, true) - dom["a" /* default */].getOuterWidth(_this.el, true); - css_default()(_this.el, { - top: top + "px", - left: left + "px" - }); - }); - }; - - return PopupDropdownToolbar; -}(layerpopup); - -popupDropdownToolbar_defineProperty(popupDropdownToolbar_PopupDropdownToolbar, "OPEN_EVENT", 'openDropdownToolbar'); - -/* harmony default export */ var popupDropdownToolbar = (popupDropdownToolbar_PopupDropdownToolbar); -// CONCATENATED MODULE: ./src/js/ui/defaultToolbar.js -function defaultToolbar_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function defaultToolbar_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -function defaultToolbar_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/** - * @fileoverview implements DefaultToolbar - * @author NHN FE Development Lab - */ - - - - - -var MORE_BUTTON_NAME = 'more'; -/** - * Class DefaultToolbar - */ - -var defaultToolbar_DefaultToolbar = /*#__PURE__*/function (_Toolbar) { - defaultToolbar_inheritsLoose(DefaultToolbar, _Toolbar); - - /** - * more button - * @type {ToolbarButton} - * @private - */ - - /** - * popup dropdown toolbar - * @type {PopupDropdownToolbar} - * @private - */ - - /** - * resize observer - * @type {ResizeObserver} - * @private - */ - function DefaultToolbar(eventManager, options) { - var _this; - - _this = _Toolbar.call(this, eventManager, options) || this; - - defaultToolbar_defineProperty(defaultToolbar_assertThisInitialized(_this), "_moreButton", void 0); - - defaultToolbar_defineProperty(defaultToolbar_assertThisInitialized(_this), "_popupDropdownToolbar", void 0); - - defaultToolbar_defineProperty(defaultToolbar_assertThisInitialized(_this), "_observer", void 0); - - _this._init(eventManager); - - _this._bindWidthChangedEvent(); - - return _this; - } - /** - * insert toolbar item - * @param {number} index - index at given item inserted - * @param {ToolbarItem|string|object} item - toolbar item - * @override - */ - - - var _proto = DefaultToolbar.prototype; - - _proto.insertItem = function insertItem(index, item) { - _Toolbar.prototype.insertItem.call(this, index, item); - - this._arrangeMoreButton(); - }; - - _proto._init = function _init(eventManager) { - var moreButton = toolbarItemFactory.create('button', { - name: MORE_BUTTON_NAME, - className: 'tui-more', - tooltip: i18n.get('More'), - event: popupDropdownToolbar.OPEN_EVENT - }); - this._moreButton = moreButton; - this._popupDropdownToolbar = new popupDropdownToolbar({ - eventManager: eventManager, - target: this.el, - button: moreButton.el - }); - this.addItem(moreButton); - }; - - _proto._bindWidthChangedEvent = function _bindWidthChangedEvent() { - var _this2 = this; - - this._observer = new ResizeObserver_es["a" /* default */](function () { - _this2._popupDropdownToolbar.hide(); - - _this2._balanceButtons(); - }); - - this._observer.observe(this.el); - }; - - _proto._balanceButtons = function _balanceButtons() { - var _this3 = this; - - var dropDownToolbarItems = this._popupDropdownToolbar.getItems(); - - dropDownToolbarItems.forEach(function (item) { - _this3._popupDropdownToolbar.removeItem(item, false); - - var itemLength = _this3.getItems().length; - - _Toolbar.prototype.insertItem.call(_this3, itemLength, item); - }); - this.removeItem(this._moreButton, false); - - _Toolbar.prototype.insertItem.call(this, 0, this._moreButton); - - var defaultToolbarItems = this.getItems(); - var overflowItems = defaultToolbarItems.filter(function (item) { - return item.el.offsetTop > _this3.el.clientHeight; - }); - overflowItems.forEach(function (item) { - _this3.removeItem(item, false); - - _this3._popupDropdownToolbar.addItem(item); - }); - - this._arrangeMoreButton(); - }; - - _proto._arrangeMoreButton = function _arrangeMoreButton() { - if (!this._popupDropdownToolbar) { - return; - } - - this.removeItem(this._moreButton, false); - var hasOverflow = this._popupDropdownToolbar.getItems().length > 0; - var itemLength = this.getItems().length; - - if (hasOverflow) { - _Toolbar.prototype.insertItem.call(this, itemLength, this._moreButton); - } - } - /** - * destroy - * @override - */ - ; - - _proto.destroy = function destroy() { - if (this._observer) { - this._observer.disconnect(); - - this._observer = null; - } - }; - - return DefaultToolbar; -}(ui_toolbar); - -/* harmony default export */ var defaultToolbar = (defaultToolbar_DefaultToolbar); -// CONCATENATED MODULE: ./src/js/ui/tab.js -function tab_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -/** - * @fileoverview Implements tab button ui - * @author NHN FE Development Lab - */ - - - - -var CLASS_TAB_ACTIVE = 'te-tab-active'; -/** - * Class Tab - * @param {object} options - options - * @param {string} [options.initName] - name of the default activated button - * @param {string[]} options.items - button names to be created - * @param {DOMElement[]} options.sections - dom elements for tab - * @param {function} [options.onItemClick] - when button is clicked pass button name to function - * @ignore - */ - -var tab_Tab = /*#__PURE__*/function (_UIController) { - tab_inheritsLoose(Tab, _UIController); - - function Tab(options) { - var _this; - - if (options === void 0) { - options = {}; - } - - _this = _UIController.call(this, { - tagName: 'div', - className: 'te-tab' - }) || this; - _this.sections = options.sections; - _this._activeButton = null; - - _this._render(options); - - _this._initEvent(options); - - return _this; - } - - var _proto = Tab.prototype; - - _proto._initEvent = function _initEvent(options) { - var onItemClick = options.onItemClick; - - if (onItemClick) { - this.on('itemClick', onItemClick); - } - - this.on('click button', this._onTabButton.bind(this)); - }; - - _proto._render = function _render(options) { - var items = options.items, - initName = options.initName; - var tabButtons = []; - - for (var i = 0, len = items.length; i < len; i += 1) { - tabButtons.push(""); - } - - this.el.innerHTML = tabButtons.join(''); - this.activate(initName); - }; - - _proto._findButtonContained = function _findButtonContained(element, selector, text) { - return dom["a" /* default */].findAll(element, selector).filter(function (node) { - return new RegExp(text).test(node.textContent); - }); - } - /** - * Activate section & button - * @param {string} name button name to activate - */ - ; - - _proto.activate = function activate(name) { - var _this$_findButtonCont = this._findButtonContained(this.el, 'button', name), - button = _this$_findButtonCont[0]; - - this._activateTabByButton(button); - }; - - _proto._onTabButton = function _onTabButton(ev) { - var button = ev.target; - - this._activateTabByButton(button); - - this.trigger('itemClick', button.textContent); - }; - - _proto._activateTabByButton = function _activateTabByButton(button) { - if (this._isActivatedButton(button)) { - return; - } - - this._updateClassByButton(button); - }; - - _proto._updateClassByButton = function _updateClassByButton(activeButton) { - // deactivate previously activated button - if (this._activeButton) { - var sectionIndex = this._activeButton.getAttribute('data-index'); - - removeClass_default()(this._activeButton, CLASS_TAB_ACTIVE); - - if (this.sections) { - removeClass_default()(this.sections[sectionIndex], CLASS_TAB_ACTIVE); - } - } // activate new button - - - addClass_default()(activeButton, CLASS_TAB_ACTIVE); - this._activeButton = activeButton; - var index = activeButton.getAttribute('data-index'); - - if (this.sections) { - addClass_default()(this.sections[index], CLASS_TAB_ACTIVE); - } - }; - - _proto._isActivatedButton = function _isActivatedButton(button) { - return this._activeButton && this._activeButton.textContent === button.textContent; - }; - - return Tab; -}(uicontroller); - -/* harmony default export */ var tab = (tab_Tab); -// CONCATENATED MODULE: ./src/js/ui/modeSwitch.js -function modeSwitch_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function modeSwitch_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -function modeSwitch_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/** - * @fileoverview Implements ui mode switch - * @author NHN FE Development Lab - */ - - - - - - - -var MARKDOWN = 'markdown'; -var WYSIWYG = 'wysiwyg'; -/** - * Class ModeSwitch - * UI Control for switch between Markdown and WYSIWYG - * @param {HTMLElement} rootElement - root element - * @param {string} initialType - initial type of editor - */ - -var modeSwitch_ModeSwitch = /*#__PURE__*/function (_UIController) { - modeSwitch_inheritsLoose(ModeSwitch, _UIController); - - /** - * mode switch type - * @property {string} MARKDOWN - Markdown - * @property {string} WYSIWYG - WYSIWYG - * @static - * @ignore - */ - - /** - * mode switch buttons - * @type {Object} - * @private - */ - - /** - * current mode - * @type {String} - * @private - */ - - /** - * root element - * @type {HTMLElement} - * @private - */ - function ModeSwitch(rootElement, initialType, eventManager) { - var _this; - - _this = _UIController.call(this, { - tagName: 'div', - className: 'te-mode-switch' - }) || this; - - modeSwitch_defineProperty(modeSwitch_assertThisInitialized(_this), "_buttons", {}); - - modeSwitch_defineProperty(modeSwitch_assertThisInitialized(_this), "_type", void 0); - - modeSwitch_defineProperty(modeSwitch_assertThisInitialized(_this), "_rootElement", void 0); - - _this._eventManager = eventManager; - - _this._render(rootElement); - - _this._switchType(isExisty_default()(initialType) ? initialType : MARKDOWN); - - _this._initEvent(); - - return _this; - } - /** - * is the switch tab bar shown - * @returns {Boolean} - showing status - */ - - - var _proto = ModeSwitch.prototype; - - _proto.isShown = function isShown() { - return this._rootElement.style.display === 'block'; - } - /** - * show switch tab bar - */ - ; - - _proto.show = function show() { - css_default()(this._rootElement, { - display: 'block' - }); - } - /** - * hide switch tab bar - */ - ; - - _proto.hide = function hide() { - css_default()(this._rootElement, { - display: 'none' - }); - }; - - _proto._render = function _render(rootElement) { - this._buttons.markdown = dom["a" /* default */].createElementWith(""); - this._buttons.wysiwyg = dom["a" /* default */].createElementWith(""); - this.el.appendChild(this._buttons.markdown); - this.el.appendChild(this._buttons.wysiwyg); - - if (rootElement) { - rootElement.appendChild(this.el); - this._rootElement = rootElement; - } - - this.on('click .markdown', this._changeMarkdown.bind(this)); - this.on('click .wysiwyg', this._changeWysiwyg.bind(this)); - this.show(); - }; - - _proto._changeMarkdown = function _changeMarkdown() { - this._switchType(MARKDOWN); - }; - - _proto._changeWysiwyg = function _changeWysiwyg() { - this._switchType(WYSIWYG); - }; - - _proto._setActiveButton = function _setActiveButton(type) { - removeClass_default()(this._buttons.markdown, 'active'); - removeClass_default()(this._buttons.wysiwyg, 'active'); - addClass_default()(this._buttons["" + type], 'active'); - }; - - _proto._switchType = function _switchType(type) { - if (this._type === type) { - return; - } - - this._type = type; - - this._setActiveButton(type); - - this.trigger('modeSwitched', this._type); - }; - - _proto._initEvent = function _initEvent() { - var _this2 = this; - - this._eventManager.listen('changeMode', function (type) { - if (_this2._type !== type) { - _this2._type = type; - - _this2._setActiveButton(type); - } - }); - }; - - return ModeSwitch; -}(uicontroller); - -modeSwitch_defineProperty(modeSwitch_ModeSwitch, "TYPE", { - MARKDOWN: MARKDOWN, - WYSIWYG: WYSIWYG -}); - -/* harmony default export */ var ui_modeSwitch = (modeSwitch_ModeSwitch); -// CONCATENATED MODULE: ./src/js/ui/popupAddLink.js -function popupAddLink_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -/** - * @fileoverview Implements PopupAddLink - * @author NHN FE Development Lab - */ - - - - - -var URL_REGEX = /^(https?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})(\/([^\s]*))?$/; -/** - * Class PopupAddLink - * It implements a link Add Popup - * @param {LayerPopupOption} options - layer popup options - * @ignore - */ - -var popupAddLink_PopupAddLink = /*#__PURE__*/function (_LayerPopup) { - popupAddLink_inheritsLoose(PopupAddLink, _LayerPopup); - - function PopupAddLink(options) { - var _this; - - var POPUP_CONTENT = "\n \n \n \n \n
    \n \n \n
    \n "; - options = extend_default()({ - header: true, - title: i18n.get('Insert link'), - className: 'te-popup-add-link tui-editor-popup', - content: POPUP_CONTENT - }, options); - _this = _LayerPopup.call(this, options) || this; - _this._disabledLinkText = false; - return _this; - } - /** - * init instance. - * store properties & prepare before initialize DOM - * @param {LayerPopupOption} options - layer popup options - * @private - * @override - */ - - - var _proto = PopupAddLink.prototype; - - _proto._initInstance = function _initInstance(options) { - _LayerPopup.prototype._initInstance.call(this, options); - - this._editor = options.editor; - this._eventManager = options.editor.eventManager; - } - /** - * initialize DOM, render popup - * @private - * @override - */ - ; - - _proto._initDOM = function _initDOM() { - _LayerPopup.prototype._initDOM.call(this); - - var el = this.el; - this._inputText = el.querySelector('.te-link-text-input'); - this._inputURL = el.querySelector('.te-url-input'); - } - /** - * bind DOM events - * @private - * @override - */ - ; - - _proto._initDOMEvent = function _initDOMEvent() { - var _this2 = this; - - _LayerPopup.prototype._initDOMEvent.call(this); - - this.on('click .te-close-button', function () { - return _this2.hide(); - }); - this.on('click .te-ok-button', function () { - return _this2._addLink(); - }); - this.on('shown', function () { - _this2._disabledLinkText = _this2._editor.isWysiwygMode() && !_this2._editor.getRange().collapsed; - - _this2._disableLinkTextInput(); - - var inputText = _this2._inputText; - var inputURL = _this2._inputURL; - - var selectedText = _this2._editor.getSelectedText().trim(); - - inputText.value = selectedText; - - if (URL_REGEX.exec(selectedText)) { - inputURL.value = selectedText; - } - - inputURL.focus(); - }); - this.on('hidden', function () { - _this2._resetInputs(); - }); - } - /** - * bind editor events - * @private - * @override - */ - ; - - _proto._initEditorEvent = function _initEditorEvent() { - var _this3 = this; - - _LayerPopup.prototype._initEditorEvent.call(this); - - var eventManager = this._eventManager; - eventManager.listen('focus', function () { - return _this3.hide(); - }); - eventManager.listen('closeAllPopup', function () { - return _this3.hide(); - }); - eventManager.listen('openPopupAddLink', function (linkData) { - eventManager.emit('closeAllPopup'); - - if (linkData) { - _this3._inputURL.value = linkData.url; - } - - _this3.show(); - }); - }; - - _proto._disableLinkTextInput = function _disableLinkTextInput() { - var input = this._inputText; - - if (this._disabledLinkText) { - input.setAttribute('disabled', 'disabled'); - addClass_default()(input, 'disabled'); - } else { - input.removeAttribute('disabled'); - removeClass_default()(input, 'disabled'); - } - }; - - _proto._addLink = function _addLink() { - var _this$_getValue = this._getValue(), - url = _this$_getValue.url, - linkText = _this$_getValue.linkText; - - this._clearValidationStyle(); - - if (!this._disabledLinkText && linkText.length < 1) { - addClass_default()(this._inputText, 'wrong'); - return; - } - - if (url.length < 1) { - addClass_default()(this._inputURL, 'wrong'); - return; - } - - this._eventManager.emit('command', 'AddLink', { - linkText: linkText, - url: url - }); - - this.hide(); - }; - - _proto._getValue = function _getValue() { - var url = this._inputURL.value; - var linkText = this._inputText.value; - return { - url: url, - linkText: linkText - }; - }; - - _proto._clearValidationStyle = function _clearValidationStyle() { - removeClass_default()(this._inputURL, 'wrong', 'disabled'); - removeClass_default()(this._inputText, 'wrong'); - }; - - _proto._resetInputs = function _resetInputs() { - this._inputText.removeAttribute('disabled'); - - this._inputText.value = ''; - this._inputURL.value = ''; - - this._clearValidationStyle(); - }; - - return PopupAddLink; -}(layerpopup); - -/* harmony default export */ var popupAddLink = (popupAddLink_PopupAddLink); -// CONCATENATED MODULE: ./src/js/ui/popupAddImage.js -function popupAddImage_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -/** - * @fileoverview Implements PopupAddImage - * @author NHN FE Development Lab - */ - - - - - -var CLASS_IMAGE_URL_INPUT = 'te-image-url-input'; -var CLASS_IMAGE_FILE_INPUT = 'te-image-file-input'; -var CLASS_ALT_TEXT_INPUT = 'te-alt-text-input'; -var CLASS_OK_BUTTON = 'te-ok-button'; -var CLASS_CLOSE_BUTTON = 'te-close-button'; -var CLASS_FILE_TYPE = 'te-file-type'; -var CLASS_URL_TYPE = 'te-url-type'; -var CLASS_TAB_SECTION = 'te-tab-section'; -var TYPE_UI = 'ui'; -/** - * Class PopupAddImage - * It implements a Image Add Popup - * @param {LayerPopupOption} options - layer popup option - * @ignore - */ - -var popupAddImage_PopupAddImage = /*#__PURE__*/function (_LayerPopup) { - popupAddImage_inheritsLoose(PopupAddImage, _LayerPopup); - - function PopupAddImage(options) { - var POPUP_CONTENT = "\n
    \n
    \n \n \n
    \n
    \n \n \n
    \n \n \n
    \n \n \n
    \n "; - options = extend_default()({ - header: true, - title: i18n.get('Insert image'), - className: 'te-popup-add-image tui-editor-popup', - content: POPUP_CONTENT - }, options); - return _LayerPopup.call(this, options) || this; - } - /** - * init instance. - * store properties & prepare before initialize DOM - * @param {LayerPopupOption} options - layer popup options - * @private - * @override - */ - - - var _proto = PopupAddImage.prototype; - - _proto._initInstance = function _initInstance(options) { - _LayerPopup.prototype._initInstance.call(this, options); - - this.eventManager = options.eventManager; - } - /** - * initialize DOM, render popup - * @private - * @override - */ - ; - - _proto._initDOM = function _initDOM() { - _LayerPopup.prototype._initDOM.call(this); - - var popup = this.el; - this._imageUrlInput = popup.querySelector("." + CLASS_IMAGE_URL_INPUT); - this._imageFileInput = popup.querySelector("." + CLASS_IMAGE_FILE_INPUT); - this._altTextInput = popup.querySelector("." + CLASS_ALT_TEXT_INPUT); - var fileTypeSection = popup.querySelector("." + CLASS_FILE_TYPE); - var urlTypeSection = popup.querySelector("." + CLASS_URL_TYPE); - var tabSection = this.body.querySelector("." + CLASS_TAB_SECTION); - this.tab = new tab({ - initName: i18n.get('File'), - items: [i18n.get('File'), i18n.get('URL')], - sections: [fileTypeSection, urlTypeSection] - }); - tabSection.appendChild(this.tab.el); - } - /** - * bind DOM events - * @private - * @override - */ - ; - - _proto._initDOMEvent = function _initDOMEvent() { - var _this = this; - - _LayerPopup.prototype._initDOMEvent.call(this); - - this.on('shown', function () { - return _this._imageUrlInput.focus(); - }); - this.on('hidden', function () { - return _this._resetInputs(); - }); - this.on("change ." + CLASS_IMAGE_FILE_INPUT, function () { - var filename = _this._imageFileInput.value.split('\\').pop(); - - _this._altTextInput.value = filename; - }); - this.on("click ." + CLASS_CLOSE_BUTTON, function () { - return _this.hide(); - }); - this.on("click ." + CLASS_OK_BUTTON, function () { - var imageUrl = _this._imageUrlInput.value; - var altText = _this._altTextInput.value; - - if (imageUrl) { - _this._applyImage(imageUrl, altText); - } else { - var files = _this._imageFileInput.files; - - if (files.length) { - var imageFile = files.item(0); - - var hookCallback = function hookCallback(url, text) { - return _this._applyImage(url, text || altText); - }; - - _this.eventManager.emit('addImageBlobHook', imageFile, hookCallback, TYPE_UI); - } - } - - _this.hide(); - }); - this.tab.on('itemClick', function () { - return _this._resetInputs(); - }); - } - /** - * bind editor events - * @private - * @override - */ - ; - - _proto._initEditorEvent = function _initEditorEvent() { - var _this2 = this; - - _LayerPopup.prototype._initEditorEvent.call(this); - - this.eventManager.listen('focus', function () { - return _this2.hide(); - }); - this.eventManager.listen('closeAllPopup', function () { - return _this2.hide(); - }); - this.eventManager.listen('openPopupAddImage', function () { - _this2.eventManager.emit('closeAllPopup'); - - _this2.show(); - }); - }; - - _proto._applyImage = function _applyImage(imageUrl, altText) { - this.eventManager.emit('command', 'AddImage', { - imageUrl: imageUrl, - altText: altText || 'image' - }); - this.hide(); - }; - - _proto._resetInputs = function _resetInputs() { - dom["a" /* default */].findAll(this.el, 'input').forEach(function (input) { - input.value = ''; - }); - } - /** - * Remove popup - * @override - */ - ; - - _proto.remove = function remove() { - this.tab.remove(); - - _LayerPopup.prototype.remove.call(this); - }; - - return PopupAddImage; -}(layerpopup); - -/* harmony default export */ var popupAddImage = (popupAddImage_PopupAddImage); -// CONCATENATED MODULE: ./src/js/ui/popupTableUtils.js -function popupTableUtils_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -/** - * @fileoverview Implements PopupTableUtils - * @author NHN FE Development Lab - */ - - - - - - -var REMOVE_ROW_MENU_CLASS_NAME = 'te-table-remove-row'; -var DISABLED_MENU_CLASS_NAME = 'te-context-menu-disabled'; -/** - * PopupTableUtils - * It implements table utils popup - * @param {LayerPopupOption} options - layer popup options - */ - -var popupTableUtils_PopupTableUtils = /*#__PURE__*/function (_LayerPopup) { - popupTableUtils_inheritsLoose(PopupTableUtils, _LayerPopup); - - function PopupTableUtils(options) { - var POPUP_CONTENT = "\n \n \n \n \n
    \n \n \n \n
    \n \n "; - options = extend_default()({ - header: false, - className: 'te-popup-table-utils', - content: POPUP_CONTENT - }, options); - return _LayerPopup.call(this, options) || this; - } - /** - * init instance. - * store properties & prepare before initialize DOM - * @param {LayerPopupOption} options - layer popup options - * @private - * @override - */ - - - var _proto = PopupTableUtils.prototype; - - _proto._initInstance = function _initInstance(options) { - _LayerPopup.prototype._initInstance.call(this, options); - - this.eventManager = options.eventManager; - } - /** - * bind DOM events - * @private - * @override - */ - ; - - _proto._initDOMEvent = function _initDOMEvent() { - var _this = this; - - _LayerPopup.prototype._initDOMEvent.call(this); - - this.on('click .te-table-add-row', function () { - return _this.eventManager.emit('command', 'AddRow'); - }); - this.on('click .te-table-add-col', function () { - return _this.eventManager.emit('command', 'AddCol'); - }); - this.on('click .te-table-col-align-left', function () { - return _this.eventManager.emit('command', 'AlignCol', 'left'); - }); - this.on('click .te-table-col-align-center', function () { - return _this.eventManager.emit('command', 'AlignCol', 'center'); - }); - this.on('click .te-table-col-align-right', function () { - return _this.eventManager.emit('command', 'AlignCol', 'right'); - }); - this.on('click .te-table-remove-col', function () { - return _this.eventManager.emit('command', 'RemoveCol'); - }); - this.on('click .te-table-remove', function () { - return _this.eventManager.emit('command', 'RemoveTable'); - }); - - this._bindClickEventOnRemoveRowMenu(); - } - /** - * bind editor events - * @private - * @override - */ - ; - - _proto._initEditorEvent = function _initEditorEvent() { - var _this2 = this; - - _LayerPopup.prototype._initEditorEvent.call(this); - - this.eventManager.listen('focus', function () { - return _this2.hide(); - }); - this.eventManager.listen('mousedown', function () { - return _this2.hide(); - }); - this.eventManager.listen('closeAllPopup', function () { - return _this2.hide(); - }); - this.eventManager.listen('openPopupTableUtils', function (ev) { - var _this2$el$parentNode$ = _this2.el.parentNode.getBoundingClientRect(), - left = _this2$el$parentNode$.left, - top = _this2$el$parentNode$.top; - - _this2._disableRemoveRowMenu(ev.target); - - css_default()(_this2.el, { - position: 'absolute', - top: ev.clientY - top + 5 + "px", - // beside mouse pointer - left: ev.clientX - left + 10 + "px" - }); - - _this2.eventManager.emit('closeAllPopup'); - - _this2.show(); - }); - }; - - _proto._bindClickEventOnRemoveRowMenu = function _bindClickEventOnRemoveRowMenu() { - var _this3 = this; - - this.on("click ." + REMOVE_ROW_MENU_CLASS_NAME, function (ev) { - var target = ev.target; - - if (hasClass_default()(target, DISABLED_MENU_CLASS_NAME)) { - ev.preventDefault(); - } else { - _this3.eventManager.emit('command', 'RemoveRow'); - } - }); - }; - - _proto._disableRemoveRowMenu = function _disableRemoveRowMenu(target) { - var menu = this.el.querySelector("." + REMOVE_ROW_MENU_CLASS_NAME); - dom["a" /* default */].toggleClass(menu, DISABLED_MENU_CLASS_NAME, target.nodeName === 'TH'); - }; - - return PopupTableUtils; -}(layerpopup); - -/* harmony default export */ var popupTableUtils = (popupTableUtils_PopupTableUtils); -// CONCATENATED MODULE: ./src/js/ui/popupAddTable.js -function popupAddTable_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -/** - * @fileoverview Implements PopupAddTable - * @author NHN FE Development Lab - */ - - - - -var CLASS_TABLE_SELECTION = 'te-table-selection'; -var CLASS_TABLE_HEADER = 'te-table-header'; -var CLASS_TABLE_BODY = 'te-table-body'; -var CLASS_SELECTION_AREA = 'te-selection-area'; -var CLASS_DESCRIPTION = 'te-description'; -var popupAddTable_POPUP_CONTENT = "\n
    \n
    \n
    \n
    \n
    \n

    \n"; -var CELL_WIDTH = 25; -var CELL_HEIGHT = 17; -var MIN_ROW_INDEX = 7; -var MAX_ROW_INDEX = 14; -var MIN_COL_INDEX = 5; -var MAX_COL_INDEX = 9; -var MIN_ROW_SELECTION_INDEX = 1; -var MIN_COL_SELECTION_INDEX = 1; -var HEADER_ROW_COUNT = 1; -var LAST_BORDER = 1; -/** - * Class PopupAddTable - * It implements Popup to add a table - * @param {LayerPopupOption} options - layer popup option - * @ignore - */ - -var popupAddTable_PopupAddTable = /*#__PURE__*/function (_LayerPopup) { - popupAddTable_inheritsLoose(PopupAddTable, _LayerPopup); - - function PopupAddTable(options) { - options = extend_default()({ - header: false, - className: 'te-popup-add-table', - content: popupAddTable_POPUP_CONTENT - }, options); - return _LayerPopup.call(this, options) || this; - } - /** - * init instance. - * store properties & prepare before initialize DOM - * @param {LayerPopupOption} options - layer popup options - * @private - * @override - */ - - - var _proto = PopupAddTable.prototype; - - _proto._initInstance = function _initInstance(options) { - _LayerPopup.prototype._initInstance.call(this, options); - - this._selectedBound = {}; - this._tableBound = {}; - this._eventManager = options.eventManager; - this._button = options.button; - this._eventHandlers = { - onMousedown: this._selectTableRange.bind(this), - onClick: this._fireCommandEvent.bind(this) - }; - } - /** - * initialize DOM, render popup - * @private - * @override - */ - ; - - _proto._initDOM = function _initDOM() { - _LayerPopup.prototype._initDOM.call(this); - - this._cacheElements(); - - this._setTableSizeByBound(MIN_COL_INDEX, MIN_ROW_INDEX); - } - /** - * bind DOM events - * @private - * @override - */ - ; - - _proto._initDOMEvent = function _initDOMEvent(options) { - _LayerPopup.prototype._initDOMEvent.call(this, options); - - this.on("mousemove ." + CLASS_TABLE_SELECTION, this._eventHandlers.onMousedown); - this.on("click ." + CLASS_TABLE_SELECTION, this._eventHandlers.onClick); - }; - - _proto._selectTableRange = function _selectTableRange(ev) { - var x = ev.pageX - this._selectionOffset.left; - var y = ev.pageY - this._selectionOffset.top; - - var bound = this._getSelectionBoundByOffset(x, y); - - this._resizeTableBySelectionIfNeed(bound.col, bound.row); - - this._setSelectionAreaByBound(bound.col, bound.row); - - this._setDisplayText(bound.col, bound.row); - - this._setSelectedBound(bound.col, bound.row); - }; - - _proto._fireCommandEvent = function _fireCommandEvent() { - var tableSize = this._getSelectedTableSize(); - - this._eventManager.emit('command', 'Table', tableSize.col, tableSize.row); - } - /** - * bind editor events - * @private - * @override - */ - ; - - _proto._initEditorEvent = function _initEditorEvent() { - var _this = this; - - _LayerPopup.prototype._initEditorEvent.call(this); - - this._eventManager.listen('focus', function () { - return _this.hide(); - }); - - this._eventManager.listen('closeAllPopup', function () { - return _this.hide(); - }); - - this._eventManager.listen('openPopupAddTable', function () { - var button = _this._button; - var offsetTop = button.offsetTop, - offsetLeft = button.offsetLeft; - css_default()(_this.el, { - top: offsetTop + dom["a" /* default */].getOuterHeight(button) + "px", - left: offsetLeft + "px" - }); - - _this._eventManager.emit('closeAllPopup'); - - _this.show(); - - var _this$el$querySelecto = _this.el.querySelector("." + CLASS_TABLE_SELECTION).getBoundingClientRect(), - left = _this$el$querySelecto.left, - top = _this$el$querySelecto.top; - - _this._selectionOffset = { - left: left + window.pageXOffset, - top: top + window.pageYOffset - }; - }); - } - /** - * Cache elements for use - * @private - */ - ; - - _proto._cacheElements = function _cacheElements() { - this.header = this.el.querySelector("." + CLASS_TABLE_HEADER); - this.body = this.el.querySelector("." + CLASS_TABLE_BODY); - this.selection = this.el.querySelector("." + CLASS_SELECTION_AREA); - this.desc = this.el.querySelector("." + CLASS_DESCRIPTION); - } - /** - * Resize table if need - * @param {number} col column index - * @param {number} row row index - * @private - */ - ; - - _proto._resizeTableBySelectionIfNeed = function _resizeTableBySelectionIfNeed(col, row) { - var resizedBound = this._getResizedTableBound(col, row); - - if (resizedBound) { - this._setTableSizeByBound(resizedBound.col, resizedBound.row); - } - } - /** - * Get resized table bound if Need - * @param {number} col column index - * @param {number} row row index - * @returns {object} bound - * @private - */ - ; - - _proto._getResizedTableBound = function _getResizedTableBound(col, row) { - var resizedCol, resizedRow, resizedBound; - - if (col >= MIN_COL_INDEX && col < MAX_COL_INDEX) { - resizedCol = col + 1; - } else if (col < MIN_COL_INDEX) { - resizedCol = MIN_COL_INDEX; - } - - if (row >= MIN_ROW_INDEX && row < MAX_ROW_INDEX) { - resizedRow = row + 1; - } else if (row < MIN_ROW_INDEX) { - resizedRow = MIN_ROW_INDEX; - } - - if (this._isNeedResizeTable(resizedCol, resizedRow)) { - resizedBound = { - row: resizedRow || this._tableBound.row, - col: resizedCol || this._tableBound.col - }; - } - - return resizedBound; - } - /** - * check if need resize table - * @param {number} col column index - * @param {number} row row index - * @returns {boolean} result - * @private - */ - ; - - _proto._isNeedResizeTable = function _isNeedResizeTable(col, row) { - return col && col !== this._tableBound.col || row && row !== this._tableBound.row; - } - /** - * Get bound by offset - * @param {number} x offset - * @param {number} y offset - * @returns {object} bound - * @private - */ - ; - - _proto._getBoundByOffset = function _getBoundByOffset(x, y) { - var row = parseInt(y / CELL_HEIGHT, 10); - var col = parseInt(x / CELL_WIDTH, 10); - return { - row: row, - col: col - }; - } - /** - * Get offset by bound - * @param {number} col column index - * @param {number} row row index - * @returns {object} offset - * @private - */ - ; - - _proto._getOffsetByBound = function _getOffsetByBound(col, row) { - var x = col * CELL_WIDTH + CELL_WIDTH, - y = row * CELL_HEIGHT + CELL_HEIGHT; - return { - x: x, - y: y - }; - } - /** - * Set table size with bound - * @param {number} col column index - * @param {number} row row index - * @private - */ - ; - - _proto._setTableSizeByBound = function _setTableSizeByBound(col, row) { - var boundOffset = this._getOffsetByBound(col, row - HEADER_ROW_COUNT); - - this._setTableSize(boundOffset.x, boundOffset.y); - - this._tableBound.row = row; - this._tableBound.col = col; - } - /** - * Get selection bound that process with range by offset - * @param {number} x offset - * @param {number} y offset - * @returns {object} bound - * @private - */ - ; - - _proto._getSelectionBoundByOffset = function _getSelectionBoundByOffset(x, y) { - var bound = this._getBoundByOffset(x, y); - - if (bound.row < MIN_ROW_SELECTION_INDEX) { - bound.row = MIN_ROW_SELECTION_INDEX; - } else if (bound.row > this._tableBound.row) { - bound.row = this._tableBound.row; - } - - if (bound.col < MIN_COL_SELECTION_INDEX) { - bound.col = MIN_COL_SELECTION_INDEX; - } else if (bound.col > this._tableBound.col) { - bound.col = this._tableBound.col; - } - - return bound; - } - /** - * Set selection area with bound - * @param {number} col column index - * @param {number} row row index - * @private - */ - ; - - _proto._setSelectionAreaByBound = function _setSelectionAreaByBound(col, row) { - var boundOffset = this._getOffsetByBound(col, row); - - this._setSelectionArea(boundOffset.x, boundOffset.y); - } - /** - * Set selected bound - * @param {number} col column index - * @param {number} row row index - * @private - */ - ; - - _proto._setSelectedBound = function _setSelectedBound(col, row) { - this._selectedBound.col = col; - this._selectedBound.row = row; - } - /** - * Get selected table size - * @returns {object} bound - * @private - */ - ; - - _proto._getSelectedTableSize = function _getSelectedTableSize() { - return { - row: this._selectedBound.row + 1, - col: this._selectedBound.col + 1 - }; - } - /** - * Set selected table size text for display - * @param {number} col column index - * @param {number} row row index - * @private - */ - ; - - _proto._setDisplayText = function _setDisplayText(col, row) { - this.desc.innerHTML = col + 1 + " x " + (row + 1); - } - /** - * Set table element size - * @param {number} x offset - * @param {number} y offset - * @private - */ - ; - - _proto._setTableSize = function _setTableSize(x, y) { - x += LAST_BORDER; - y += LAST_BORDER; - css_default()(this.header, { - height: CELL_HEIGHT + "px", - width: x + "px" - }); - css_default()(this.body, { - height: y + "px", - width: x + "px" - }); - css_default()(this.el, { - width: x + 30 + "px" - }); - } - /** - * Set selection element size - * @param {number} x offset - * @param {number} y offset - * @private - */ - ; - - _proto._setSelectionArea = function _setSelectionArea(x, y) { - x += LAST_BORDER; - y += LAST_BORDER; - css_default()(this.selection, { - height: y + "px", - width: x + "px" - }); - }; - - _proto.remove = function remove() { - this.off("mousemove ." + CLASS_TABLE_SELECTION, this._eventHandlers.onMousedown); - this.off("click ." + CLASS_TABLE_SELECTION, this._eventHandlers.onClick); - - _LayerPopup.prototype.remove.call(this); - }; - - return PopupAddTable; -}(layerpopup); - -popupAddTable_PopupAddTable.CELL_WIDTH = CELL_WIDTH; -popupAddTable_PopupAddTable.CELL_HEIGHT = CELL_HEIGHT; -popupAddTable_PopupAddTable.MIN_ROW_SELECTION_INDEX = MIN_ROW_SELECTION_INDEX; -popupAddTable_PopupAddTable.MIN_COL_SELECTION_INDEX = MIN_COL_SELECTION_INDEX; -/* harmony default export */ var popupAddTable = (popupAddTable_PopupAddTable); -// CONCATENATED MODULE: ./src/js/ui/popupAddHeading.js -function popupAddHeading_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -/** - * @fileoverview Implements PopupAddHeading - * @author NHN FE Development Lab - */ - - - - - -/** - * Class PopupAddHeading - * It implements Popup to add headings - * @param {LayerPopupOption} options - layer popup option - * @ignore - */ - -var popupAddHeading_PopupAddHeading = /*#__PURE__*/function (_LayerPopup) { - popupAddHeading_inheritsLoose(PopupAddHeading, _LayerPopup); - - function PopupAddHeading(options) { - var POPUP_CONTENT = "\n
      \n
    • " + i18n.get('Heading') + " 1

    • \n
    • " + i18n.get('Heading') + " 2

    • \n
    • " + i18n.get('Heading') + " 3

    • \n
    • " + i18n.get('Heading') + " 4

    • \n
    • " + i18n.get('Heading') + " 5
    • \n
    • " + i18n.get('Heading') + " 6
    • \n
    • " + i18n.get('Paragraph') + "
    • \n
    \n "; - options = extend_default()({ - header: false, - className: 'te-heading-add', - content: POPUP_CONTENT - }, options); - return _LayerPopup.call(this, options) || this; - } - /** - * init instance. - * store properties & prepare before initialize DOM - * @param {LayerPopupOption} options - layer popup options - * @private - * @override - */ - - - var _proto = PopupAddHeading.prototype; - - _proto._initInstance = function _initInstance(options) { - _LayerPopup.prototype._initInstance.call(this, options); - - this._eventManager = options.eventManager; - this._button = options.button; - } - /** - * bind DOM events - * @private - * @override - */ - ; - - _proto._initDOMEvent = function _initDOMEvent() { - var _this = this; - - _LayerPopup.prototype._initDOMEvent.call(this); - - this.on('click li', function (ev) { - var li = dom["a" /* default */].closest(ev.target, 'li'); - - _this._eventManager.emit('command', li.getAttribute('data-type'), li.getAttribute('data-value')); - }); - } - /** - * bind editor events - * @private - * @override - */ - ; - - _proto._initEditorEvent = function _initEditorEvent() { - var _this2 = this; - - _LayerPopup.prototype._initEditorEvent.call(this); - - this._eventManager.listen('focus', this.hide.bind(this)); - - this._eventManager.listen('closeAllPopup', this.hide.bind(this)); - - this._eventManager.listen('openHeadingSelect', function () { - var button = _this2._button; - var offsetTop = button.offsetTop, - offsetLeft = button.offsetLeft; - css_default()(_this2.el, { - top: offsetTop + dom["a" /* default */].getOuterHeight(button) + "px", - left: offsetLeft + "px" - }); - - _this2._eventManager.emit('closeAllPopup'); - - _this2.show(); - }); - }; - - return PopupAddHeading; -}(layerpopup); - -/* harmony default export */ var popupAddHeading = (popupAddHeading_PopupAddHeading); -// CONCATENATED MODULE: ./src/js/ui/popupCodeBlockLanguages.js -function popupCodeBlockLanguages_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -/** - * @fileoverview Implements popup code block languages - * @author NHN FE Development Lab - */ - - - - - - - - -var BUTTON_CLASS_PREFIX = 'te-popup-code-block-lang-'; - -function getButtonsHTML(languages) { - return languages.map(function (lang) { - return ""; - }).join(''); -} -/** - * Class Popup code block languages select list - * @param {LayerPopupOption} options - layer popup option - * @ignore - */ - - -var popupCodeBlockLanguages_PopupCodeBlockLanguages = /*#__PURE__*/function (_LayerPopup) { - popupCodeBlockLanguages_inheritsLoose(PopupCodeBlockLanguages, _LayerPopup); - - function PopupCodeBlockLanguages(options) { - var _options = options, - languages = _options.languages; - options = extend_default()({ - header: false, - className: 'te-popup-code-block-languages', - content: getButtonsHTML(languages) - }, options); - return _LayerPopup.call(this, options) || this; - } - /** - * init instance. - * store properties & prepare before initialize DOM - * @param {LayerPopupOption} options - layer popup options - * @private - * @override - */ - - - var _proto = PopupCodeBlockLanguages.prototype; - - _proto._initInstance = function _initInstance(options) { - var _this = this; - - _LayerPopup.prototype._initInstance.call(this, options); - - this.eventManager = options.eventManager; - this._onSelectedLanguage = null; - this._onDismissed = null; - this._currentButton = null; - this._buttons = null; - this._languages = options.languages; - - this._btnMousedownHandler = function (event) { - var language = event.target.getAttribute('data-lang'); - - if (_this._onSelectedLanguage) { - _this._onSelectedLanguage(language); - } - - _this.hide(); - }; - } - /** - * initialize DOM, render popup - * @private - * @override - */ - ; - - _proto._initDOM = function _initDOM(options) { - _LayerPopup.prototype._initDOM.call(this, options); - - css_default()(this.el, 'zIndex', 10000); - this._buttons = dom["a" /* default */].findAll(this.el, 'button'); - - this._activateButtonByIndex(0); - } - /** - * bind DOM events - * @private - * @override - */ - ; - - _proto._initDOMEvent = function _initDOMEvent() { - _LayerPopup.prototype._initDOMEvent.call(this); - - this._addBtnMouseDownHandler(); - } - /** - * bind editor events - * @private - * @override - */ - ; - - _proto._initEditorEvent = function _initEditorEvent() { - var _this2 = this; - - _LayerPopup.prototype._initEditorEvent.call(this); - - this.eventManager.listen('openPopupCodeBlockLanguages', function (data) { - _this2.show(data.callback); - - css_default()(_this2.el, { - top: data.offset.top + "px" - }); - css_default()(_this2.el, { - left: data.offset.left + "px" - }); - - _this2.setCurrentLanguage(data.language); - - return _this2; - }); - this.eventManager.listen('focus', function () { - return _this2.hide(); - }); - this.eventManager.listen('mousedown', function () { - return _this2.hide(); - }); - this.eventManager.listen('closeAllPopup', function () { - return _this2.hide(); - }); - this.eventManager.listen('closePopupCodeBlockLanguages', function () { - return _this2.hide(); - }); - this.eventManager.listen('scroll', function () { - return _this2.hide(); - }); - this.eventManager.listen('setCodeBlockLanguages', function (languages) { - return _this2._changeLanguageButtons(languages); - }); - } - /** - * activate an item by index - * @param {number} index - item index - * @private - */ - ; - - _proto._activateButtonByIndex = function _activateButtonByIndex(index) { - if (this._currentButton) { - removeClass_default()(this._currentButton, 'active'); - } - - if (this._buttons.length) { - this._currentButton = this._buttons[index]; - addClass_default()(this._currentButton, 'active'); - - this._currentButton.scrollIntoView(); - } - } - /** - * move to prev language - */ - ; - - _proto.prev = function prev() { - var index = inArray_default()(this._currentButton, this._buttons) - 1; - - if (index < 0) { - index = this._buttons.length - 1; - } - - this._activateButtonByIndex(index); - } - /** - * move to next language - */ - ; - - _proto.next = function next() { - var index = inArray_default()(this._currentButton, this._buttons) + 1; - - if (index >= this._buttons.length) { - index = 0; - } - - this._activateButtonByIndex(index); - } - /** - * current language - * @returns {string} language - */ - ; - - _proto.getCurrentLanguage = function getCurrentLanguage() { - var language = this._currentButton.getAttribute('data-lang'); - - return language; - } - /** - * set current language - * @param {string} language - current language - */ - ; - - _proto.setCurrentLanguage = function setCurrentLanguage(language) { - var item = this._buttons.filter(function (button) { - return matches_default()(button, "." + BUTTON_CLASS_PREFIX + language); - }); - - if (item.length > 0) { - var index = inArray_default()(item[0], this._buttons); - - this._activateButtonByIndex(index); - } - } - /** - * show popup - * @param {object} callback - to be called on language selected & dismissed - * @override - */ - ; - - _proto.show = function show(callback) { - this._onSelectedLanguage = callback.selected; - this._onDismissed = callback.dismissed; - - _LayerPopup.prototype.show.call(this); - } - /** - * hide popup - * @override - */ - ; - - _proto.hide = function hide() { - if (this._onDismissed) { - this._onDismissed(); - } - - this._onSelectedLanguage = null; - this._onDismissed = null; - - _LayerPopup.prototype.hide.call(this); - }; - - _proto._addBtnMouseDownHandler = function _addBtnMouseDownHandler() { - var _this3 = this; - - this._languages.forEach(function (lang) { - _this3.off("mousedown ." + BUTTON_CLASS_PREFIX + lang, _this3._btnMousedownHandler); - - _this3.on("mousedown ." + BUTTON_CLASS_PREFIX + lang, _this3._btnMousedownHandler); - }); - }; - - _proto._changeLanguageButtons = function _changeLanguageButtons(languages) { - this._languages = languages; - - if (languages && languages.length) { - this.content = getButtonsHTML(languages); - this.setContent(this.content); - - this._addBtnMouseDownHandler(); - - this._buttons = dom["a" /* default */].findAll(this.el, 'button'); - - this._activateButtonByIndex(0); - } - }; - - return PopupCodeBlockLanguages; -}(layerpopup); - -/* harmony default export */ var popupCodeBlockLanguages = (popupCodeBlockLanguages_PopupCodeBlockLanguages); -// CONCATENATED MODULE: ./src/js/ui/scrollSyncSplit.js -/** - * @fileoverview Implements scroll sync split - * @author NHN FE Development Lab - */ - - - - - - -var CLASS_SPLIT_SCROLL = 'tui-split-scroll'; -var CLASS_SINGLE_CONTENT = 'single-content'; -var CLASS_SCROLL_SYNC = 'scroll-sync'; -var CLASS_SCROLL_WRAPPER = 'tui-split-scroll-wrapper'; -var CLASS_SCROLL_CONTENT = 'tui-split-scroll-content'; -var CLASS_SPLITTER = 'tui-splitter'; -var EVENT_REQUIRE_SCROLL_INTO_VIEW = 'requireScrollIntoView'; -var CLASS_CONTENT_LEFT = 'tui-split-content-left'; -var CLASS_CONTENT_RIGHT = 'tui-split-content-right'; -var CLASS_CONTENT = { - left: CLASS_CONTENT_LEFT, - right: CLASS_CONTENT_RIGHT -}; -/** - * Class ScrollSyncSplit - * @param {Element} baseElement - an element which attach a splitSyncSplit - * @param {Element} leftElement - an element to be on left side split view - * @param {Element} rightElement - an element to be on right side split view - * @param {object} options - options - * @param {boolean} [options.showScrollSyncButton=false] - show scroll sync button on top right corner - * @param {boolean} [options.scrollSync=true] - true for enable scroll sync - * @param {boolean} [options.splitView=true] - true for split, false for single view - * @ignore - */ - -var scrollSyncSplit_ScrollSyncSplit = /*#__PURE__*/function () { - function ScrollSyncSplit(baseElement, leftElement, rightElement, options) { - if (options === void 0) { - options = {}; - } - - options = extend_default()({ - showScrollSyncButton: false, - scrollSync: true, - splitView: true - }, options); - this._baseElement = baseElement; - this._eventManager = options.eventManager; - /** - * left, right side content elements - * @type {HTMLElement[]} - * @private - */ - - this._contentElements = []; - - this._initDom(leftElement, rightElement, options); - - this._initDomEvent(); - } - - var _proto = ScrollSyncSplit.prototype; - - _proto._initDom = function _initDom(leftElement, rightElement, options) { - var el = document.createElement('div'); - el.className = CLASS_SPLIT_SCROLL; - this._el = el; - var scrollWrapper = document.createElement('div'); - scrollWrapper.className = CLASS_SCROLL_WRAPPER; - this._scrollWrapper = scrollWrapper; - - this._setScrollSync(options.scrollSync); - - this.setSplitView(options.splitView); - var contentWrapper = document.createElement('div'); - contentWrapper.className = CLASS_SCROLL_CONTENT; - this._contentWrapper = contentWrapper; - var splitter = document.createElement('div'); - splitter.className = CLASS_SPLITTER; - - this._baseElement.appendChild(el); - - el.appendChild(scrollWrapper); - scrollWrapper.appendChild(contentWrapper); - scrollWrapper.appendChild(splitter); - - this._setLeft(leftElement); - - this._setRight(rightElement); - }; - - _proto._initDomEvent = function _initDomEvent() { - this._contentWrapper.addEventListener('scroll', this.sync.bind(this)); - }; - - _proto._requireScrollIntoView = function _requireScrollIntoView(element) { - var _element$getBoundingC = element.getBoundingClientRect(), - targetTop = _element$getBoundingC.top, - targetBottom = _element$getBoundingC.bottom; - - var wrapperElement; - - if (this.isScrollSynced()) { - wrapperElement = this._contentWrapper; - } else if (dom["a" /* default */].parents(element, this._contentElements.left).length) { - wrapperElement = this._contentElements.left; - } else if (dom["a" /* default */].parents(element, this._contentElements.right).length) { - wrapperElement = this._contentElements.right; - } else { - return; - } - - var _wrapperElement$getBo = wrapperElement.getBoundingClientRect(), - wrapperTop = _wrapperElement$getBo.top, - wrapperBottom = _wrapperElement$getBo.bottom; - - if (targetTop < wrapperTop) { - wrapperElement.scrollTop = wrapperElement.scrollTop + targetTop - wrapperTop; - } else if (targetBottom > wrapperBottom) { - wrapperElement.scrollTop = wrapperElement.scrollTop + targetBottom - wrapperBottom; - } - - this.sync(); - } - /** - * set content element for given side - * @param {Element} element - content element - * @param {string} side - 'left' | 'right' - * @private - */ - ; - - _proto._setContentElement = function _setContentElement(element, side) { - var _this = this; - - var contentElement = this._contentElements[side]; - - if (contentElement) { - this._eventManager.removeEventHandler(EVENT_REQUIRE_SCROLL_INTO_VIEW); - - this._contentWrapper.removeChild(contentElement); - } - - addClass_default()(element, CLASS_CONTENT[side]); - - this._contentWrapper.appendChild(element); - - this._eventManager.listen(EVENT_REQUIRE_SCROLL_INTO_VIEW, function (ev) { - return _this._requireScrollIntoView(ev); - }); - - this._eventManager.listen('requireScrollSync', function () { - return _this.sync(); - }); - - this._contentElements[side] = element; - this.sync(); - } - /** - * set left side element - * @param {Element} element - an element to be on left side split view - * @private - */ - ; - - _proto._setLeft = function _setLeft(element) { - this._setContentElement(element, 'left'); - } - /** - * set right side element - * @param {Element} element - an element to be on right side split view - * @private - */ - ; - - _proto._setRight = function _setRight(element) { - this._setContentElement(element, 'right'); - }; - - _proto._setScrollSync = function _setScrollSync(activate) { - dom["a" /* default */].toggleClass(this._el, CLASS_SCROLL_SYNC, activate); - } - /** - * toggle multi scroll - */ - ; - - _proto.toggleScrollSync = function toggleScrollSync() { - dom["a" /* default */].toggleClass(this._el, CLASS_SCROLL_SYNC); - }; - - _proto.setSplitView = function setSplitView(activate) { - if (!activate) { - addClass_default()(this._el, CLASS_SINGLE_CONTENT); - } else { - removeClass_default()(this._el, CLASS_SINGLE_CONTENT); - } - } - /** - * toggle split - */ - ; - - _proto.toggleSplitView = function toggleSplitView() { - dom["a" /* default */].toggleClass(this._el, CLASS_SINGLE_CONTENT); - } - /** - * is scroll synced - * @returns {boolean} - true for synced, false for each scroll - */ - ; - - _proto.isScrollSynced = function isScrollSynced() { - return hasClass_default()(this._el, CLASS_SCROLL_SYNC); - } - /** - * is split view - * @returns {boolean} - true for split view, false for single view - */ - ; - - _proto.isSplitView = function isSplitView() { - return !hasClass_default()(this._el, CLASS_SINGLE_CONTENT); - } - /** - * sync scroll - */ - ; - - _proto.sync = function sync() { - if (!this._contentElements.left || !this._contentElements.right) { - return; - } - - var wrapperHeight = this._contentWrapper.clientHeight; - var scrollTop = this._contentWrapper.scrollTop; - var leftElement = this._contentElements.left; - var rightElement = this._contentElements.right; - var scrollingElement = leftElement.offsetHeight - wrapperHeight > 0 ? leftElement : rightElement; - var followingElement = scrollingElement === leftElement ? rightElement : leftElement; - var scrollingElementHeight = scrollingElement.offsetHeight; - var scrollingElementScrollMax = Math.max(scrollingElementHeight - wrapperHeight, 0); - var followingElementHeight = Math.max(followingElement.offsetHeight, wrapperHeight); - var followingElementTopMax = scrollingElementHeight - followingElementHeight; - css_default()(scrollingElement, { - top: 0 - }); - css_default()(followingElement, { - top: scrollTop / scrollingElementScrollMax * followingElementTopMax + "px" - }); - } - /** - * scroll top - * @param {number} top - scroll top in pixel - */ - ; - - _proto.scrollTop = function scrollTop(top) { - this._contentWrapper.scrollTop = top; - }; - - return ScrollSyncSplit; -}(); - -/* harmony default export */ var scrollSyncSplit = (scrollSyncSplit_ScrollSyncSplit); -// CONCATENATED MODULE: ./src/js/codeBlockEditor.js -function codeBlockEditor_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -/** - * @fileoverview Implements code block editor - * @author NHN FE Development Lab - */ - -/** - * Class Code Block Editor - * @param {HTMLElement} el - code block editor container element - * @param {EventManager} eventManager - event manager - * @ignore - */ - -var CodeBlockEditor = /*#__PURE__*/function (_CodeMirrorExt) { - codeBlockEditor_inheritsLoose(CodeBlockEditor, _CodeMirrorExt); - - function CodeBlockEditor(el, eventManager) { - var _this; - - _this = _CodeMirrorExt.call(this, el, { - singleCursorHeightPerLine: false, - theme: 'none' - }) || this; - _this._language = ''; - _this._eventManager = eventManager; - - _this._initEvent(); - - return _this; - } - - var _proto = CodeBlockEditor.prototype; - - _proto._initEvent = function _initEvent() { - var _this2 = this; - - this.on('cursorActivity', this._onRequireScrollIntoView.bind(this)); - this.on('beforeChange', function (cm, ev) { - if (ev.origin === 'paste') { - _this2._eventManager.emit('pasteBefore', { - source: 'codeblock', - data: ev - }); - } - }); - }; - - _proto._onRequireScrollIntoView = function _onRequireScrollIntoView() { - var _this3 = this; - - var cursor = this.getCursor(); - var wrapper = this.getWrapperElement(); // CodeMirror cursorActivity event fires before actually attach a new line element to DOM - // we should proceed at next tick - - setTimeout(function () { - var lineElement = wrapper.querySelector("pre:nth-child(" + (cursor.line + 1) + ")"); - - if (lineElement) { - _this3._eventManager.emit('requireScrollIntoView', lineElement); - } - }, 0); - } - /** - * load code from code block element - * @param {HTMLElement} codeBlockElement - code block element - */ - ; - - _proto.load = function load(codeBlockElement) { - var el = codeBlockElement.cloneNode(true); - this.setLanguage(el.getAttribute('data-language') || ''); - this.setEditorCodeText(el.textContent); - } - /** - * save code to code block element - * @param {HTMLElement} codeBlockElement - code block element - */ - ; - - _proto.save = function save(codeBlockElement) { - codeBlockElement.innerHTML = ''; - codeBlockElement.textContent = this.getEditorCodeText(); - codeBlockElement.setAttribute('data-language', this._language); - - this._eventManager.emit('changeLanguage'); - } - /** - * clear code and language - */ - ; - - _proto.clear = function clear() { - this.setLanguage(''); - this.setEditorCodeText(''); - } - /** - * get code language - * @returns {string} - code language - */ - ; - - _proto.getLanguage = function getLanguage() { - return this._language; - } - /** - * set code language - * @param {string} [language=''] - code language - */ - ; - - _proto.setLanguage = function setLanguage(language) { - if (language === void 0) { - language = ''; - } - - this._language = language; - } - /** - * get code text - * @returns {string} - code text - */ - ; - - _proto.getEditorCodeText = function getEditorCodeText() { - return this.getValue(); - } - /** - * set code text - * @param {string} [code=''] - code text - */ - ; - - _proto.setEditorCodeText = function setEditorCodeText(code) { - if (code === void 0) { - code = ''; - } - - this.setValue(code); - } - /** - * refresh. call if codemirror resized - */ - ; - - _proto.refresh = function refresh() { - this.cm.refresh(); - }; - - return CodeBlockEditor; -}(codeMirrorExt); - -/* harmony default export */ var codeBlockEditor = (CodeBlockEditor); -// EXTERNAL MODULE: ./src/js/preview.js + 1 modules -var js_preview = __webpack_require__(38); - -// CONCATENATED MODULE: ./src/js/codeBlockPreview.js -function codeBlockPreview_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function codeBlockPreview_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -/** - * @fileoverview Implements CodeBlockPreview - * @author NHN FE Development Lab - */ - -/** - * Class Code block preview - * @param {HTMLElement} el - base element - * @param {EventManager} eventManager - event manager - * @param {Convertor} convertor - convertor - * @param {CodeBlockEditor} codeBlockEditor - code block editor - * @ignore - */ - -var CodeBlockPreview = /*#__PURE__*/function (_Preview) { - codeBlockPreview_inheritsLoose(CodeBlockPreview, _Preview); - - function CodeBlockPreview(el, eventManager, convertor, codeBlockEditor) { - var _this; - - _this = _Preview.call(this, el, eventManager, convertor, true) || this; - _this._codeBlockEditor = codeBlockEditor; - - _this._initEvent(); - - _this.lazyRunner.registerLazyRunFunction('refresh', _this.refresh, _this.delayCodeBlockTime, codeBlockPreview_assertThisInitialized(_this)); - - return _this; - } - - var _proto = CodeBlockPreview.prototype; - - _proto._initEvent = function _initEvent() { - var _this2 = this; - - this._codeBlockEditor.on('update', function () { - return _this2.lazyRunner.run('refresh'); - }); - } - /** - * refresh preview - * @override - */ - ; - - _proto.refresh = function refresh() { - var language = this._codeBlockEditor.getLanguage(); - - var codeText = this._codeBlockEditor.getEditorCodeText(); - - _Preview.prototype.refresh.call(this, "```" + language + "\n" + codeText + "\n```"); - - this.eventManager.emit('requireScrollSync'); - } - /** - * clear preview - */ - ; - - _proto.clear = function clear() { - _Preview.prototype.render.call(this, ''); - }; - - return CodeBlockPreview; -}(js_preview["a" /* default */]); - -/* harmony default export */ var codeBlockPreview = (CodeBlockPreview); -// CONCATENATED MODULE: ./src/js/ui/codeBlockLanguagesCombo.js -/** - * @fileoverview Implements UI code block languages combo - * @author NHN FE Development Lab - */ - - - - - - - -/** - * Class CodeBlockLanguagesCombo - * @param {EventManager} eventManager - event manager instance - * @ignore - */ - -var codeBlockLanguagesCombo_CodeBlockLanguagesCombo = /*#__PURE__*/function () { - function CodeBlockLanguagesCombo(eventManager, languages) { - this._eventManager = eventManager; - this._languages = languages; - - this._initDOM(); - - this._initDOMEvent(); - - this._initEvent(); - } - - var _proto = CodeBlockLanguagesCombo.prototype; - - _proto._initDOM = function _initDOM() { - this._inputLanguage = dom["a" /* default */].createElementWith(""); - this._wrapper = dom["a" /* default */].createElementWith(""); - - this._wrapper.appendChild(this._inputLanguage); - - this._hide(); - }; - - _proto._initDOMEvent = function _initDOMEvent() { - var _this = this; - - this._inputLanguage.addEventListener('keydown', function (event) { - return _this._onKeyEvent(event); - }); - - this._inputLanguage.addEventListener('focus', function () { - return _this._showPopupCodeBlockLanguages(); - }); - - this._inputLanguage.addEventListener('focusout', function () { - return _this._onFocusOut(); - }); - - this._wrapper.addEventListener('mousedown', function (ev) { - if (ev.target !== _this._wrapper) { - return; - } - - ev.preventDefault(); - - _this._toggleFocus(); - }); - }; - - _proto._initEvent = function _initEvent() { - var _this2 = this; - - this._eventManager.listen('setCodeBlockLanguages', function (languages) { - _this2._languages = languages; - - if (languages && languages.length) { - _this2._show(); - } else { - _this2._hide(); - } - }); - } - /** - * show popup - * @private - */ - ; - - _proto._showPopupCodeBlockLanguages = function _showPopupCodeBlockLanguages() { - var _this3 = this; - - var clientRect = this._inputLanguage.getBoundingClientRect(); - - addClass_default()(this._wrapper, 'active'); - this.active = true; - this._popupCodeBlockLanguages = this._eventManager.emitReduce('openPopupCodeBlockLanguages', { - language: this._prevStoredLanguage, - offset: { - left: clientRect.left, - top: clientRect.bottom - }, - callback: { - selected: function selected(selectedLanguage) { - return _this3._onLanguageSelectedFromList(selectedLanguage); - }, - dismissed: function dismissed() { - _this3._popupCodeBlockLanguages = null; - } - } - }); - }; - - _proto._toggleFocus = function _toggleFocus() { - var inputLanguage = this._inputLanguage; - - if (hasClass_default()(this._wrapper, 'active')) { - inputLanguage.blur(); - } else { - inputLanguage.focus(); - } - }; - - _proto._onFocusOut = function _onFocusOut() { - removeClass_default()(this._wrapper, 'active'); - this._inputLanguage.value = this._prevStoredLanguage; - - this._hidePopupCodeBlockLanguages(); - }; - - _proto._onKeyEvent = function _onKeyEvent(event) { - if (this._popupCodeBlockLanguages) { - switch (event.which) { - case keyMapper.keyCode('UP'): - this._popupCodeBlockLanguages.prev(); - - event.preventDefault(); - break; - - case keyMapper.keyCode('DOWN'): - this._popupCodeBlockLanguages.next(); - - event.preventDefault(); - break; - - case keyMapper.keyCode('ENTER'): - case keyMapper.keyCode('TAB'): - { - var language = this._popupCodeBlockLanguages.getCurrentLanguage(); - - this._inputLanguage.value = language; - - this._storeInputLanguage(); - - event.preventDefault(); - break; - } - - default: - this._popupCodeBlockLanguages.hide(); - - } - } else if (event.which === keyMapper.keyCode('ENTER') || event.which === keyMapper.keyCode('TAB')) { - this._storeInputLanguage(); - - event.preventDefault(); - } - }; - - _proto._onLanguageSelectedFromList = function _onLanguageSelectedFromList(selectedLanguage) { - this._inputLanguage.value = selectedLanguage; - - this._storeInputLanguage(); - } - /** - * set a callback to be called on language selected - * @param {function} callback - callback function - * @protected - */ - ; - - _proto.setOnLanguageSelected = function setOnLanguageSelected(callback) { - this._onLanguageSelected = callback; - } - /** - * hide popup - * @private - */ - ; - - _proto._hidePopupCodeBlockLanguages = function _hidePopupCodeBlockLanguages() { - this._eventManager.emit('closePopupCodeBlockLanguages'); - } - /** - * set language - * @param {string} language - code block language - * @protected - */ - ; - - _proto.setLanguage = function setLanguage(language) { - this._prevStoredLanguage = language; - this._inputLanguage.value = language; - } - /** - * store selection(typed) language & hide popup - * @private - */ - ; - - _proto._storeInputLanguage = function _storeInputLanguage() { - var selectedLanguage = this._inputLanguage.value; - this.setLanguage(selectedLanguage); - - if (this._onLanguageSelected) { - this._onLanguageSelected(selectedLanguage); - } - - this._hidePopupCodeBlockLanguages(); - } - /** - * get element body - * @returns {HTMLElement} - CodeBlockLanguagesCombo body element - * @protected - */ - ; - - _proto.getElement = function getElement() { - return this._wrapper; - }; - - _proto._show = function _show() { - css_default()(this._wrapper, { - display: 'inline-block' - }); - }; - - _proto._hide = function _hide() { - css_default()(this._wrapper, { - display: 'none' - }); - }; - - return CodeBlockLanguagesCombo; -}(); - -/* harmony default export */ var ui_codeBlockLanguagesCombo = (codeBlockLanguagesCombo_CodeBlockLanguagesCombo); -// CONCATENATED MODULE: ./src/js/ui/popupCodeBlockEditor.js -function popupCodeBlockEditor_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -/** - * @fileoverview Implements popup code block editor - * @author NHN FE Development Lab - */ - - - - - - - - - -var popupCodeBlockEditor_CLASS_PREFIX = 'popup-editor-'; -var popupCodeBlockEditor_CLASS_OK_BUTTON = 'te-ok-button'; -var popupCodeBlockEditor_CLASS_CLOSE_BUTTON = 'te-close-button'; -var CLASS_POPUP_CLOSE_BUTTON = 'tui-popup-close-button'; -var TEMPLATE_HEADER_BUTTONS = "\n \n \n \n \n"; -/** - * Class popup code block editor - * @param {LayerPopupOption} options - layer popup option - * @ignore - */ - -var popupCodeBlockEditor_PopupCodeBlockEditor = /*#__PURE__*/function (_LayerPopup) { - popupCodeBlockEditor_inheritsLoose(PopupCodeBlockEditor, _LayerPopup); - - function PopupCodeBlockEditor(options) { - var TEMPLATE_CONTENT = "\n
    \n
    \n \n \n
    \n "; - options = extend_default()({ - header: true, - title: 'CodeBlock Editor', - content: TEMPLATE_CONTENT, - className: 'tui-popup-code-block-editor', - headerButtons: TEMPLATE_HEADER_BUTTONS, - modal: true - }, options); - return _LayerPopup.call(this, options) || this; - } - /** - * init instance. - * store properties & prepare before initialize DOM - * @param {LayerPopupOption} options - layer popup options - * @private - * @override - */ - - - var _proto = PopupCodeBlockEditor.prototype; - - _proto._initInstance = function _initInstance(options) { - _LayerPopup.prototype._initInstance.call(this, options); - - this.eventManager = options.eventManager; - this.convertor = options.convertor; - this.languages = options.languages; - } - /** - * initialize DOM, render popup - * @private - * @override - */ - ; - - _proto._initDOM = function _initDOM(options) { - _LayerPopup.prototype._initDOM.call(this, options); - - var el = this.el, - eventManager = this.eventManager; - this._body = el.querySelector("." + popupCodeBlockEditor_CLASS_PREFIX + "body"); - this._toggleFitButton = el.querySelector("." + popupCodeBlockEditor_CLASS_PREFIX + "toggle-fit"); - this._togglePreviewButton = el.querySelector("." + popupCodeBlockEditor_CLASS_PREFIX + "toggle-preview"); - this._toggleScrollButton = el.querySelector("." + popupCodeBlockEditor_CLASS_PREFIX + "toggle-scroll"); - this._okButton = el.querySelector("." + popupCodeBlockEditor_CLASS_OK_BUTTON); - this._closeButton = el.querySelector("." + popupCodeBlockEditor_CLASS_CLOSE_BUTTON); - this._codeMirrorWrapper = this._createCodeBlockEditor(); - this._previewWrapper = this._createPreview(); - this._scrollSyncSplit = new scrollSyncSplit(this._body, this._codeMirrorWrapper, this._previewWrapper, { - eventManager: eventManager - }); - - this._updateFitWindowButton(); - - this._updatePreviewButton(); - - this._updateScrollButton(); - - this._codeBlockLanguagesCombo = this._createCodeBlockLanguagesCombo(); - } - /** - * bind DOM events - * @private - * @override - */ - ; - - _proto._initDOMEvent = function _initDOMEvent() { - var _this = this; - - _LayerPopup.prototype._initDOMEvent.call(this); - - this.on('scroll', function (ev) { - return ev.preventDefault(); - }); - this.on("click ." + popupCodeBlockEditor_CLASS_PREFIX + "toggle-fit", function () { - return _this._toggleFitToWindow(); - }); - this.on("click ." + popupCodeBlockEditor_CLASS_PREFIX + "toggle-preview", function () { - return _this._togglePreview(); - }); - this.on("click ." + popupCodeBlockEditor_CLASS_PREFIX + "toggle-scroll", function () { - return _this._toggleScroll(); - }); - this.on("click ." + popupCodeBlockEditor_CLASS_OK_BUTTON, function () { - return _this._save(); - }); - this.on("click ." + popupCodeBlockEditor_CLASS_CLOSE_BUTTON, function () { - return _this.hide(); - }); - this.on("click ." + popupCodeBlockEditor_CLASS_PREFIX + "close", function () { - return _this.hide(); - }); - this.on("click ." + popupCodeBlockEditor_CLASS_PREFIX + "editor-wrapper", function (ev) { - if (ev.target === _this._codeMirrorWrapper) { - _this._focusEditor(true); - } - }); - } - /** - * bind editor events - * @private - * @override - */ - ; - - _proto._initEditorEvent = function _initEditorEvent() { - var _this2 = this; - - _LayerPopup.prototype._initEditorEvent.call(this); - - this.eventManager.listen('openPopupCodeBlockEditor', function (codeBlockElement) { - _this2.eventManager.emit('closeAllPopup'); - - _this2.show(codeBlockElement); - - return _this2; - }); - this.eventManager.listen('closeAllPopup', this.hide.bind(this)); - this.eventManager.listen('closePopupCodeBlockEditor', this.hide.bind(this)); - }; - - _proto._createCodeBlockEditor = function _createCodeBlockEditor() { - var codeMirrorWrapper = document.createElement('div'); - codeMirrorWrapper.className = popupCodeBlockEditor_CLASS_PREFIX + "editor-wrapper"; - this._codeBlockEditor = new codeBlockEditor(codeMirrorWrapper, this.eventManager); - return codeMirrorWrapper; - }; - - _proto._createPreview = function _createPreview() { - var previewWrapper = document.createElement('div'); - this._codeBlockPreview = new codeBlockPreview(previewWrapper, this.eventManager, this.convertor, this._codeBlockEditor); - return previewWrapper; - }; - - _proto._createCodeBlockLanguagesCombo = function _createCodeBlockLanguagesCombo() { - var _this3 = this; - - var titleElement = this.getTitleElement(); - var codeBlockLanguagesCombo = new ui_codeBlockLanguagesCombo(this.eventManager, this.languages); - codeBlockLanguagesCombo.setOnLanguageSelected(function (selectedLanguage) { - _this3._codeBlockEditor.setLanguage(selectedLanguage); - - _this3._codeBlockEditor.refresh(); - - _this3._focusEditor(); - }); - titleElement.innerHTML = 'CodeBlock Editor'; - titleElement.appendChild(codeBlockLanguagesCombo.getElement()); - return codeBlockLanguagesCombo; - }; - - _proto._updateFitWindowButton = function _updateFitWindowButton() { - dom["a" /* default */].toggleClass(this._toggleFitButton, 'active', this.isFitToWindow()); - }; - - _proto._updatePreviewButton = function _updatePreviewButton() { - dom["a" /* default */].toggleClass(this._togglePreviewButton, 'active', this._scrollSyncSplit.isSplitView()); - }; - - _proto._updateScrollButton = function _updateScrollButton() { - if (this._scrollSyncSplit.isSplitView()) { - css_default()(this._toggleScrollButton, { - display: 'inline-block' - }); - } else { - css_default()(this._toggleScrollButton, { - display: 'none' - }); - } - - dom["a" /* default */].toggleClass(this._toggleScrollButton, 'active', this._scrollSyncSplit.isScrollSynced()); - }; - - _proto._focusEditor = function _focusEditor(cursorToEnd) { - this._codeBlockEditor.focus(); - - if (cursorToEnd) { - this._codeBlockEditor.moveCursorToEnd(); - } else { - this._codeBlockEditor.moveCursorToStart(); - } - }; - - _proto._togglePreview = function _togglePreview() { - this._scrollSyncSplit.toggleSplitView(); - - this._updatePreviewButton(); - - this._updateScrollButton(); - - this._codeBlockEditor.refresh(); - }; - - _proto._toggleFitToWindow = function _toggleFitToWindow() { - this.toggleFitToWindow(); - - this._updateFitWindowButton(); - - this._codeBlockEditor.refresh(); - }; - - _proto._toggleScroll = function _toggleScroll() { - this._scrollSyncSplit.toggleScrollSync(); - - this._updateScrollButton(); - } - /** - * store code mirror text to wysiwyg code block - * @private - */ - ; - - _proto._save = function _save() { - this._codeBlockEditor.save(this._codeBlockElement); - - this.hide(); - } - /** - * load code mirror text from wysiwyg code block - * @param {HTMLElement} codeBlockElement - code block element instance to load code from - * @private - */ - ; - - _proto._load = function _load(codeBlockElement) { - this._codeBlockElement = codeBlockElement; - - this._codeBlockEditor.load(codeBlockElement); - - this._codeBlockLanguagesCombo.setLanguage(this._codeBlockEditor.getLanguage()); - - this._focusEditor(); - - this._codeBlockPreview.refresh(); - } - /** - * show popup - * @param {HTMLElement} codeBlockElement - code block element - * @override - */ - ; - - _proto.show = function show(codeBlockElement) { - _LayerPopup.prototype.show.call(this); - - if (!codeBlockElement) { - throw new Error('should be called with codeBlockElement'); - } - - this._load(codeBlockElement); - } - /** - * hide popup - * @override - */ - ; - - _proto.hide = function hide() { - this.setFitToWindow(false); - - if (this._codeBlockEditor) { - this._codeBlockEditor.clear(); - } - - if (this._codeBlockPreview) { - this._codeBlockPreview.clear(); - } - - this._codeBlockElement = null; - - _LayerPopup.prototype.hide.call(this); - }; - - return PopupCodeBlockEditor; -}(layerpopup); - -/* harmony default export */ var popupCodeBlockEditor = (popupCodeBlockEditor_PopupCodeBlockEditor); -// CONCATENATED MODULE: ./src/js/ui/defaultUI.js -function defaultUI_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/** - * @fileoverview default UI - * @author NHN FE Development Lab - */ - - - - - - - - - - - - - - - - - -var CLASS_TOOLBAR = 'te-toolbar-section'; -var CLASS_MARKDOWN_TAB = 'te-markdown-tab-section'; -var CLASS_EDITOR = 'te-editor-section'; -var CLASS_MODE_SWITCH = 'te-mode-switch-section'; -var CONTAINER_TEMPLATE = ['
    ', "
    ", "
    ", "
    ", '
    '].join(''); -/** - * Class DefaultUI - * @param {ToastUIEditor} editor - editor instance - */ - -var defaultUI_DefaultUI = /*#__PURE__*/function () { - /** - * UI name - * @type {string} - */ - - /** - * DefaultToolbar wrapper element - * @type {HTMLElement} - */ - - /** - * DefaultToolbar instance - * @type {DefaultToolbar} - * @private - */ - - /** - * @type {HTMLElement} - * @private - */ - - /** - * editor section element - * @private - * @type {HTMLElement} - */ - - /** - * editor type ww/md - * @private - * @type {string} - */ - - /** - * editor instance - * @private - * @type {ToastUIEditor} - */ - - /** - * markdown tab section element - * @private - * @type {HTMLElement} - */ - - /** - * markdown tab - * @private - * @type {Tab} - */ - - /** - * mode switch instance - * @private - * @type {ModeSwitch} - */ - - /** - * popup instances - * @private - * @type {Array} - */ - function DefaultUI(editor) { - defaultUI_defineProperty(this, "name", 'default'); - - defaultUI_defineProperty(this, "el", void 0); - - defaultUI_defineProperty(this, "_toolbar", void 0); - - defaultUI_defineProperty(this, "_container", void 0); - - defaultUI_defineProperty(this, "_editorSection", void 0); - - defaultUI_defineProperty(this, "_initialEditType", void 0); - - defaultUI_defineProperty(this, "_editor", void 0); - - defaultUI_defineProperty(this, "_markdownTabSection", void 0); - - defaultUI_defineProperty(this, "_markdownTab", void 0); - - defaultUI_defineProperty(this, "_modeSwitch", void 0); - - defaultUI_defineProperty(this, "_popups", []); - - this._editor = editor; - this._initialEditType = editor.options.initialEditType; - - this._init(editor.options); - - this._initEvent(); - } - - var _proto = DefaultUI.prototype; - - _proto._init = function _init(_ref) { - var container = _ref.el, - toolbarItems = _ref.toolbarItems, - hideModeSwitch = _ref.hideModeSwitch; - this.el = dom["a" /* default */].createElementWith(CONTAINER_TEMPLATE, container); - this._container = container; - this._editorSection = this.el.querySelector("." + CLASS_EDITOR); - - this._editorSection.appendChild(this._editor.layout.getEditorEl()); - - this._initToolbar(this._editor.eventManager, toolbarItems); - - this._initModeSwitch(this._editor.eventManager, hideModeSwitch); - - this._initPopupAddLink(); - - this._initPopupAddImage(); - - this._initPopupAddTable(); - - this._initPopupAddHeading(); - - this._initPopupTableUtils(); - - this._initPopupCodeBlockLanguages(); - - this._initPopupCodeBlockEditor(); - - this._initMarkdownTab(); - }; - - _proto._initEvent = function _initEvent() { - this._editor.eventManager.listen('hide', this.hide.bind(this)); - - this._editor.eventManager.listen('show', this.show.bind(this)); - - this._editor.eventManager.listen('changeMode', this._markdownTabControl.bind(this)); - - this._editor.eventManager.listen('changePreviewStyle', this._markdownTabControl.bind(this)); - }; - - _proto._initToolbar = function _initToolbar(eventManager, toolbarItems) { - var toolbar = new defaultToolbar(eventManager, toolbarItems); - this._toolbar = toolbar; - this.el.querySelector("." + CLASS_TOOLBAR).appendChild(toolbar.el); - }; - - _proto._initModeSwitch = function _initModeSwitch(eventManager, hideModeSwitch) { - var _this = this; - - var modeSwitchTabBar = this.el.querySelector("." + CLASS_MODE_SWITCH); - var editType = this._initialEditType === 'markdown' ? ui_modeSwitch.TYPE.MARKDOWN : ui_modeSwitch.TYPE.WYSIWYG; - var modeSwitch = new ui_modeSwitch(modeSwitchTabBar, editType, eventManager); - this._modeSwitch = modeSwitch; - - if (hideModeSwitch) { - modeSwitch.hide(); - } - - modeSwitch.on('modeSwitched', function (type) { - return _this._editor.changeMode(type); - }); - }; - - _proto._initMarkdownTab = function _initMarkdownTab() { - var editor = this._editor; - this._markdownTab = new tab({ - initName: i18n.get('Write'), - items: [i18n.get('Write'), i18n.get('Preview')], - sections: [editor.layout.getMdEditorContainerEl(), editor.layout.getPreviewEl()] - }); - this._markdownTabSection = this.el.querySelector("." + CLASS_MARKDOWN_TAB); - - this._markdownTabSection.appendChild(this._markdownTab.el); - - this._markdownTab.on('itemClick', function (itemText) { - if (itemText === i18n.get('Preview')) { - editor.eventManager.emit('previewNeedsRefresh'); - editor.eventManager.emit('changePreviewTabPreview'); - editor.eventManager.emit('closeAllPopup'); - } else { - editor.getCodeMirror().focus(); - editor.eventManager.emit('changePreviewTabWrite'); - } - }); - }; - - _proto._markdownTabControl = function _markdownTabControl() { - if (this._editor.isMarkdownMode() && this._editor.getCurrentPreviewStyle() === 'tab') { - css_default()(this._markdownTabSection, { - display: 'block' - }); - - this._markdownTab.activate(i18n.get('Write')); - } else { - css_default()(this._markdownTabSection, { - display: 'none' - }); - } - }; - - _proto._initPopupAddLink = function _initPopupAddLink() { - this._popups.push(new popupAddLink({ - target: this.el, - editor: this._editor - })); - }; - - _proto._initPopupAddImage = function _initPopupAddImage() { - this._popups.push(new popupAddImage({ - target: this.el, - eventManager: this._editor.eventManager - })); - }; - - _proto._initPopupAddTable = function _initPopupAddTable() { - this._popups.push(new popupAddTable({ - target: this._toolbar.el, - eventManager: this._editor.eventManager, - button: this.el.querySelector('button.tui-table'), - css: { - position: 'absolute' - } - })); - }; - - _proto._initPopupAddHeading = function _initPopupAddHeading() { - this._popups.push(new popupAddHeading({ - target: this._toolbar.el, - eventManager: this._editor.eventManager, - button: this.el.querySelector('button.tui-heading'), - css: { - position: 'absolute' - } - })); - }; - - _proto._initPopupTableUtils = function _initPopupTableUtils() { - var _this2 = this; - - this._editor.eventManager.listen('contextmenu', function (ev) { - if (dom["a" /* default */].parents(ev.data.target, '[contenteditable=true] table').length > 0) { - ev.data.preventDefault(); - - _this2._editor.eventManager.emit('openPopupTableUtils', ev.data); - } - }); - - this._popups.push(new popupTableUtils({ - target: this.el, - eventManager: this._editor.eventManager - })); - }; - - _proto._initPopupCodeBlockLanguages = function _initPopupCodeBlockLanguages() { - var editor = this._editor; - - this._popups.push(new popupCodeBlockLanguages({ - target: this.el, - eventManager: editor.eventManager, - languages: editor.codeBlockLanguages - })); - }; - - _proto._initPopupCodeBlockEditor = function _initPopupCodeBlockEditor() { - this._popups.push(new popupCodeBlockEditor({ - target: this.el, - eventManager: this._editor.eventManager, - convertor: this._editor.convertor, - languages: this._editor.codeBlockLanguages - })); - } - /** - * get toolbar instance - * @returns {Toolbar} - toolbar instance - */ - ; - - _proto.getToolbar = function getToolbar() { - return this._toolbar; - } - /** - * set toolbar instance - * @param {Toolbar} toolbar - toolbar - */ - ; - - _proto.setToolbar = function setToolbar(toolbar) { - this._toolbar.destroy(); - - this._toolbar = toolbar; - } - /** - * get mode switch instance - * @returns {ModeSwitch} - mode switch instance - */ - ; - - _proto.getModeSwitch = function getModeSwitch() { - return this._modeSwitch; - } - /** - * get editor section height - * @returns {Number} - height of editor section - */ - ; - - _proto.getEditorSectionHeight = function getEditorSectionHeight() { - var clientRect = this._editorSection.getBoundingClientRect(); - - return clientRect.bottom - clientRect.top; - } - /** - * get editor height - * @returns {Number} - height of editor - */ - ; - - _proto.getEditorHeight = function getEditorHeight() { - var clientRect = this._container.getBoundingClientRect(); - - return clientRect.bottom - clientRect.top; - } - /** - * get Table Popup - * @returns {PopupTableUtils} - PopupTableUtils - */ - ; - - _proto.getPopupTableUtils = function getPopupTableUtils() { - var tablePopup; - - this._popups.forEach(function (popup) { - if (popup instanceof popupTableUtils) { - tablePopup = popup; - } - }); - - return tablePopup; - } - /** - * hide - */ - ; - - _proto.hide = function hide() { - addClass_default()(this.el, 'te-hide'); - } - /** - * show - */ - ; - - _proto.show = function show() { - removeClass_default()(this.el, 'te-hide'); - } - /** - * remove - */ - ; - - _proto.remove = function remove() { - dom["a" /* default */].remove(this.el); - - this._markdownTab.remove(); - - this._modeSwitch.remove(); - - this._toolbar.destroy(); - - this._popups.forEach(function (popup) { - return popup.remove(); - }); - - this._popups = []; - tooltip.hide(); - } - /** - * creates popup - * @param {LayerPopupOption} options - layerPopup options - * @returns {LayerPopup} - crated layerPopup - */ - ; - - _proto.createPopup = function createPopup(options) { - return new layerpopup(options); - }; - - return DefaultUI; -}(); - -/* harmony default export */ var defaultUI = (defaultUI_DefaultUI); -// EXTERNAL MODULE: ./src/js/codeBlockManager.js -var codeBlockManager = __webpack_require__(30); - -// EXTERNAL MODULE: /Users/nhn/project/tui.editor/libs/to-mark/dist/to-mark.js -var to_mark = __webpack_require__(32); -var to_mark_default = /*#__PURE__*/__webpack_require__.n(to_mark); - -// CONCATENATED MODULE: ./src/js/toMarkRenderer.js - - -/** - * Check if given node is valid delimiter run. - * According to common-mark spec, following examples are not valid delimiter runs. - * 1. opening (*|**) preceded by an alphanumeric and followed by a punctuation. - * (ex: a**~~c~~b**) - * 2. closing (*|**) preceded by a punctuation and followed by an alphanumeric. - * (ex: **b~~c~~**a) - * @see {@link https://spec.commonmark.org/0.29/#delimiter-run} - * @see {@link https://github.com/commonmark/commonmark-spec/issues/611#issuecomment-533578503} - */ - -function isValidDelimiterRun(node) { - var isElemNode = dom["a" /* default */].isElemNode, - isTextNode = dom["a" /* default */].isTextNode; - var isInvalidOpener = isTextNode(node.previousSibling) && isElemNode(node.firstChild); - var isInvalidCloser = isTextNode(node.nextSibling) && isElemNode(node.lastChild); - return !isInvalidOpener && !isInvalidCloser; -} - -function convertEmphasis(node, subContent, delimiter) { - var FIND_BEFORE_AND_AFTER_SPACES_RX = /^(\s*)((?:.|\n)*\S)(\s*)$/m; - - var _subContent$match = subContent.match(FIND_BEFORE_AND_AFTER_SPACES_RX), - beforeSpaces = _subContent$match[1], - trimmedContent = _subContent$match[2], - afterSpaces = _subContent$match[3]; - - var convertedContent; - - if (isValidDelimiterRun(node)) { - convertedContent = "" + delimiter + trimmedContent + delimiter; - } else { - var tagName = node.nodeName.toLowerCase(); - convertedContent = "<" + tagName + ">" + trimmedContent + ""; - } - - return "" + beforeSpaces + convertedContent + afterSpaces; -} - -/* harmony default export */ var toMarkRenderer = (to_mark_default.a.Renderer.factory(to_mark_default.a.gfmRenderer, { - 'EM, I': function EMI(node, subContent) { - if (this.isEmptyText(subContent)) { - return ''; - } - - return convertEmphasis(node, subContent, '*'); - }, - 'STRONG, B': function STRONGB(node, subContent) { - if (this.isEmptyText(subContent)) { - return ''; - } - - return convertEmphasis(node, subContent, '**'); - }, - 'DEL, S': function DELS(node, subContent) { - if (this.isEmptyText(subContent)) { - return ''; - } - - return convertEmphasis(node, subContent, '~~'); - } -})); -// EXTERNAL MODULE: ./src/js/pluginHelper.js -var pluginHelper = __webpack_require__(31); - -// CONCATENATED MODULE: ./src/js/markdownCommands/emphasisCommon.js -/** - * @fileoverview This file is common logic for italic, bold, strike makrdown commands. - * @author NHN FE Development Lab - */ - -/** - * range expand according to expendSize - * If can not expand, return null - * @param {range} range - range - * @param {number} expendSize - expendSize - * @returns {object} expanded range or null - * @ignore - */ -var getExpandedRange = function getExpandedRange(range, expendSize) { - var start = range.start, - end = range.end; - var expendRange; - - if (start.ch >= expendSize) { - var from = { - line: start.line, - ch: start.ch - expendSize - }; - var to = { - line: end.line, - ch: end.ch + expendSize - }; - expendRange = { - from: from, - to: to - }; - } - - return expendRange; -}; -/** - * remove symbol in the front and back of text - * @param {string} text - text - * @param {string} symbol - text - * @returns {string} - * @ignore - */ - - -var removeSyntax = function removeSyntax(text, symbol) { - var symbolLength = symbol.length; - return text.substr(symbolLength, text.length - symbolLength * 2); -}; -/** - * append symbol in the front and back of text - * @param {string} text - text - * @param {string} symbol - text - * @returns {string} - * @ignore - */ - -var appendSyntax = function appendSyntax(text, symbol) { - return "" + symbol + text + symbol; -}; -/** - * check expanded text and replace text using replacer - * @param {CodeMirror.doc} doc - doc of codemirror - * @param {range} range - origin range - * @param {number} expandSize - expandSize - * @param {function} checker - sytax check function - * @param {function} replacer - text replace function - * @returns {boolean} - if replace text, return true. - * @ignore - */ - -var expandReplace = function expandReplace(doc, range, expandSize, checker, replacer) { - var expendRange = getExpandedRange(range, expandSize); - var result = false; - - if (expendRange) { - var from = expendRange.from, - to = expendRange.to; - var expendRangeText = doc.getRange(from, to); - - if (checker(expendRangeText)) { - doc.setSelection(from, to); - doc.replaceSelection(replacer(expendRangeText), 'around'); - result = true; - } - } - - return result; -}; -/** - * check text and replace text using replacer - * @param {CodeMirror.doc} doc - doc of codemirror - * @param {string} text - text - * @param {function} checker - sytax check function - * @param {function} replacer - text replace function - * @returns {boolean} - if replace text, return true. - * @ignore - */ - -var replace = function replace(doc, text, checker, replacer) { - var result = false; - - if (checker(text)) { - doc.replaceSelection(replacer(text), 'around'); - result = true; - } - - return result; -}; -var changeSyntax = function changeSyntax(doc, range, symbol, syntaxRegex, contentRegex) { - var _doc$getCursor = doc.getCursor(), - line = _doc$getCursor.line, - ch = _doc$getCursor.ch; - - var selectionStr = doc.getSelection(); - var symbolLength = symbol.length; - - var isSyntax = function isSyntax(t) { - return syntaxRegex.test(t); - }; // 1. expand text and check syntax => remove syntax - // 2. check text is syntax => remove syntax - // 3. If text does not match syntax, remove syntax inside text and then append syntax - - - if (!(expandReplace(doc, range, symbolLength, isSyntax, function (t) { - return removeSyntax(t, symbol); - }) || replace(doc, selectionStr, isSyntax, function (t) { - return removeSyntax(t, symbol); - }))) { - var removeSyntaxInsideText = selectionStr.replace(contentRegex, '$1'); - doc.replaceSelection(appendSyntax(removeSyntaxInsideText, symbol), 'around'); - } - - var afterSelectStr = doc.getSelection(); - var size = ch; - - if (!selectionStr) { - // If text was not selected, after replace text, move cursor - // For example **|** => | (move cusor -symbolLenth) - if (isSyntax(afterSelectStr)) { - size += symbolLength; - } else { - size -= symbolLength; - } - - doc.setCursor(line, size); - } -}; -// CONCATENATED MODULE: ./src/js/markdownCommands/bold.js -/** - * @fileoverview Implements Bold markdown command - * @author NHN FE Development Lab - */ - - -var boldRangeRegex = /^(\*{2}|_{2}).*\1$/; -var boldContentRegex = /[*_]{2,}([^*_]*)[*_]{2,}/g; -var boldSymbol = '**'; -/** - * Bold - * Add bold markdown syntax to markdown editor - * @extends Command - * @module markdownCommands/Bold - * @ignore - */ - -var Bold = commandManager["a" /* default */].command('markdown', -/** @lends Bold */ -{ - name: 'Bold', - keyMap: ['CTRL+B', 'META+B'], - - /** - * Command Handler - * @param {MarkdownEditor} mde MarkdownEditor instance - */ - exec: function exec(mde) { - var cm = mde.getEditor(); - var doc = cm.getDoc(); - var originRange = mde.getRange(); - changeSyntax(doc, originRange, boldSymbol, boldRangeRegex, boldContentRegex); - cm.focus(); - } -}); -/* harmony default export */ var bold = (Bold); -// CONCATENATED MODULE: ./src/js/markdownCommands/italic.js -/** - * @fileoverview Implements Italic markdown command - * @author NHN FE Development Lab - */ - - -var boldItalicRangeRegex = /^(\*{3}|_{3}).*\1$/; -var italic_boldRangeRegex = /^(\*{2}|_{2}).*\1$/; -var italicRangeRegex = /^(\*|_).*\1$/; -var italicContentRegex = /([^*_])[*_]([^*_]+)[*_]([^*_])/g; - -var isBoldItalic = function isBoldItalic(t) { - return boldItalicRangeRegex.test(t); -}; - -var isBold = function isBold(t) { - return italic_boldRangeRegex.test(t); -}; - -var isItalic = function isItalic(t) { - return italicRangeRegex.test(t); -}; - -var italicSymbol = '*'; -var italic_boldSymbol = '**'; -var boldItalicSymbol = '***'; -var italicLength = italicSymbol.length; -var boldLength = italic_boldSymbol.length; -var boldItalicLength = boldItalicSymbol.length; -/** - * remove italic syntax in the middle of given text - * @param {string} text - text selected - * @returns {string} - text eliminated all italic in the middle of it's content - * @ignore - */ - -var removeItalicInsideText = function removeItalicInsideText(text) { - return text ? text.replace(italicContentRegex, '$1$2$3') : ''; -}; - -var italic_replaceText = function replaceText(doc, text, range) { - // Check 3 cases when both text and expand text - // case 1 : bold & italic (when expand 3 both front and end) => remove italic - // case 2 : bold (when expand 2 both front and end) => append - // case 3 : italic (expand 1 both front and end) => remove - var expandReplaceBind = expandReplace.bind(this, doc, range); - return expandReplaceBind(boldItalicLength, isBoldItalic, function (t) { - return removeSyntax(t, italicSymbol); - }) || expandReplaceBind(boldLength, isBold, function (t) { - return appendSyntax(removeItalicInsideText(t), italicSymbol); - }) || expandReplaceBind(italicLength, isItalic, function (t) { - return removeSyntax(t, italicSymbol); - }) || replace(doc, text, isBoldItalic, function (t) { - return removeSyntax(t, italicSymbol); - }) || replace(doc, text, isBold, function (t) { - return appendSyntax(removeItalicInsideText(t), italicSymbol); - }) || replace(doc, text, isItalic, function (t) { - return removeSyntax(t, italicSymbol); - }); -}; - -var italic_replaceEmptyText = function replaceEmptyText(doc, range) { - // Check 3 cases when expand text - // case 1 : bold & italic => remove italic - // case 2 : bold => append - // case 3 : italic => remove - // if there is no match, make italic - return expandReplace(doc, range, boldItalicLength, isBoldItalic, function (t) { - return removeSyntax(t, italicSymbol); - }) || expandReplace(doc, range, boldLength, isBold, function (t) { - return appendSyntax(t, italicSymbol); - }) || expandReplace(doc, range, italicLength, isItalic, function () { - return ''; - }) || doc.replaceSelection("" + italicSymbol + italicSymbol, 'around'); -}; -/** - * Italic - * Add italic markdown syntax to markdown editor - * @extends Command - * @module markdownCommands/Italic - * @ignore - */ - - -var Italic = commandManager["a" /* default */].command('markdown', -/** @lends Italic */ -{ - name: 'Italic', - keyMap: ['CTRL+I', 'META+I'], - - /** - * Command handler - * @param {MarkdownEditor} mde MarkdownEditor instance - */ - exec: function exec(mde) { - var cm = mde.getEditor(); - var doc = cm.getDoc(); - - var _doc$getCursor = doc.getCursor(), - line = _doc$getCursor.line, - ch = _doc$getCursor.ch; - - var range = mde.getRange(); - var selectionStr = doc.getSelection(); - - if (selectionStr) { - // check selectionStr match bold & italic, bold, italic and then - // if there is no match, append italic - if (!italic_replaceText(doc, selectionStr, range)) { - // Before append italic, remove italic inside text and then append italic - // Example: One*Two*Three => *OneTwoThree* - doc.replaceSelection(appendSyntax(removeItalicInsideText(selectionStr), italicSymbol), 'around'); - } - } else { - italic_replaceEmptyText(doc, range); - var afterSelectStr = doc.getSelection(); - var size = ch; // If text was not selected, after replace text, move cursor - - if (isBoldItalic(afterSelectStr) || isItalic(afterSelectStr) && !isBold(afterSelectStr)) { - // For example **|** => ***|*** (move cusor +symbolLenth) - size += italicLength; - } else { - // For example *|* => | (move cusor -symbolLenth) - size -= italicLength; - } - - doc.setCursor(line, size); - } - - cm.focus(); - } -}); -/* harmony default export */ var italic = (Italic); -// CONCATENATED MODULE: ./src/js/markdownCommands/strike.js -/** - * @fileoverview Implements StrikeThrough markdown command - * @author NHN FE Development Lab - */ - - -var strikeRangeRegex = /^~~.*~~$/; -var strikeContentRegex = /~~([^~]*)~~/g; -var strikeSymbol = '~~'; -/** - * Strike - * Add strike markdown syntax to markdown editor - * @extends Command - * @module markdownCommands/Strike - * @ignore - */ - -var Strike = commandManager["a" /* default */].command('markdown', -/** @lends Strike */ -{ - name: 'Strike', - keyMap: ['CTRL+S', 'META+S'], - - /** - * Command handler - * @param {MarkdownEditor} mde MarkdownEditor instance - */ - exec: function exec(mde) { - var cm = mde.getEditor(); - var doc = cm.getDoc(); - var originRange = mde.getRange(); - changeSyntax(doc, originRange, strikeSymbol, strikeRangeRegex, strikeContentRegex); - cm.focus(); - } -}); -/* harmony default export */ var strike = (Strike); -// CONCATENATED MODULE: ./src/js/markdownCommands/blockquote.js -/** - * @fileoverview Implements Blockquote markdown command - * @author NHN FE Development Lab - */ - -var BlockquoteRegex = /^> ?/; -/** - * Blockquote - * Add blockquote markdown syntax to markdown editor - * @extends Command - * @module markdownCommands/Blockquote - * @ignore - */ - -var Blockquote = commandManager["a" /* default */].command('markdown', -/** @lends Blockquote */ -{ - name: 'Blockquote', - keyMap: ['ALT+Q', 'ALT+Q'], - - /** - * command handler - * @param {MarkdownEditor} mde MarkdownEditor instance - */ - exec: function exec(mde) { - var cm = mde.getEditor(); - var doc = cm.getDoc(); - var range = mde.getCurrentRange(); - var from = { - line: range.from.line, - ch: 0 - }; - var to = { - line: range.to.line, - ch: doc.getLineHandle(range.to.line).text.length - }; - var textToModify = doc.getRange(from, to); - var textLinesToModify = textToModify.split('\n'); - - var isNeedToRemove = this._haveBlockquote(textLinesToModify); - - var resultText; - - if (isNeedToRemove) { - resultText = this._removeBlockquote(textLinesToModify); - } else { - resultText = this._addBlockquote(textLinesToModify); - } - - doc.replaceRange(resultText.join('\n'), from, to); - - if (isNeedToRemove) { - var length = textLinesToModify.length; - - if (this._isBlockquoteWithSpace(textLinesToModify[length - 1])) { - range.to.ch -= 2; - } else { - range.to.ch -= 1; - } - } else { - range.to.ch += 2; - } - - doc.setCursor(range.to); - cm.focus(); - }, - - /** - * check all text in textArr starts with '>' - * @param {Array} textArr - text array - * @returns {boolean} - true if all text in textArr starts with '>' - * @private - */ - _haveBlockquote: function _haveBlockquote(textArr) { - for (var i = 0; i < textArr.length; i += 1) { - if (!BlockquoteRegex.test(textArr[i])) { - return false; - } - } - - return true; - }, - - /** - * add '> ' to all text in textArr - * @param {Array} textArr - text array - * @returns {Array} - new text array added '> ' - * @private - */ - _addBlockquote: function _addBlockquote(textArr) { - return textArr.map(function (text) { - return "> " + text; - }); - }, - - /** - * remove '> ' or '>' to all text in textArr - * @param {Array} textArr - text array - * @returns {Array} - new text array removed '> ' or '>' - * @private - */ - _removeBlockquote: function _removeBlockquote(textArr) { - return textArr.map(function (text) { - return text.replace(BlockquoteRegex, ''); - }); - }, - - /** - * check text start '> ' - * @param {string} text - text - * @returns {boolean} - if text start '> ', true - * @private - */ - _isBlockquoteWithSpace: function _isBlockquoteWithSpace(text) { - return /^> /.test(text); - } -}); -/* harmony default export */ var blockquote = (Blockquote); -// CONCATENATED MODULE: ./src/js/markdownCommands/heading.js -/** - * @fileoverview Implements Heading markdown command - * @author NHN FE Development Lab - */ - - -var heading_FIND_HEADING_RX = /^#+\s/g; -/** - * Heading - * Add heading markdown syntax to markdown editor - * @extends Command - * @module markdownCommands/Heading - * @ignore - */ - -var Heading = commandManager["a" /* default */].command('markdown', -/** @lends Heading */ -{ - name: 'Heading', - - /** - * Command Handler - * @param {MarkdownEditor} mde MarkdownEditor instance - * @param {number} size heading size - */ - exec: function exec(mde, size) { - var cm = mde.getEditor(); - var doc = cm.getDoc(); - var range = mde.getCurrentRange(); - var from = { - line: range.from.line, - ch: 0 - }; - var to = { - line: range.to.line, - ch: doc.getLineHandle(range.to.line).text.length - }; - var lengthOfCurrentLineBefore = doc.getLine(to.line).length; - var textToModify = doc.getRange(from, to); - var textLinesToModify = textToModify.split('\n'); - toArray_default()(textLinesToModify).forEach(function (line, index) { - textLinesToModify[index] = getHeadingMarkdown(line, size); - }); - doc.replaceRange(textLinesToModify.join('\n'), from, to); - range.to.ch += doc.getLine(to.line).length - lengthOfCurrentLineBefore; - doc.setSelection(from, range.to); - cm.focus(); - } -}); -/** - * Get heading markdown - * @param {string} text Source test - * @param {number} size size - * @returns {string} - */ - -function getHeadingMarkdown(text, size) { - var foundedHeading = text.match(heading_FIND_HEADING_RX); - var heading = ''; - - do { - heading += '#'; - size -= 1; - } while (size > 0); - - if (foundedHeading) { - var _text$split = text.split(foundedHeading[0]); - - text = _text$split[1]; - } - - return heading + " " + text; -} - -/* harmony default export */ var markdownCommands_heading = (Heading); -// CONCATENATED MODULE: ./src/js/markdownCommands/paragraph.js -/** - * @fileoverview Implements Paragraph markdown command - * @author NHN FE Development Lab - */ - - -/** - * Paragraph - * Convert selected lines to paragraph - * @extends Command - * @module markdownCommands/Paragraph - * @ignore - */ - -var Paragraph = commandManager["a" /* default */].command('markdown', -/** @lends Paragraph */ -{ - name: 'Paragraph', - - /** - * Command Handler - * @param {MarkdownEditor} mde MarkdownEditor instance - */ - exec: function exec(mde) { - var cm = mde.getEditor(); - var doc = cm.getDoc(); - var range = mde.getCurrentRange(); - var from = { - line: range.from.line, - ch: 0 - }; - var to = { - line: range.to.line, - ch: doc.getLineHandle(range.to.line).text.length - }; - var lengthOfCurrentLineBefore = doc.getLine(to.line).length; - var textToModify = doc.getRange(from, to); - var textLines = textToModify.split('\n'); - toArray_default()(textLines).forEach(function (line, index) { - textLines[index] = getParagraphMarkdown(line); - }); - doc.replaceRange(textLines.join('\n'), from, to); - range.to.ch += doc.getLine(to.line).length - lengthOfCurrentLineBefore; - doc.setSelection(from, to); - cm.focus(); - } -}); -/** - * Get paragraph markdown lineText - * @param {string} lineText line lineText - * @returns {string} - */ - -function getParagraphMarkdown(lineText) { - var headingRx = /^(#{1,6}| *((?:\*|-|\d\.)(?: \[[ xX]])?)) /; - return lineText.replace(headingRx, ''); -} - -/* harmony default export */ var paragraph = (Paragraph); -// CONCATENATED MODULE: ./src/js/markdownCommands/hr.js -/** - * @fileoverview Implements HR markdown command - * @author NHN FE Development Lab - */ - -/** - * HR - * Add HR markdown syntax to markdown editor - * @extends Command - * @module markdownCommands/HR - * @ignore - */ - -var HR = commandManager["a" /* default */].command('markdown', -/** @lends HR */ -{ - name: 'HR', - keyMap: ['CTRL+L', 'META+L'], - - /** - * Command handler - * @param {MarkdownEditor} mde MarkdownEditor instance - */ - exec: function exec(mde) { - var cm = mde.getEditor(); - var doc = cm.getDoc(); - var replaceText = ''; - var range = mde.getCurrentRange(); - var from = { - line: range.from.line, - ch: range.from.ch - }; - var to = { - line: range.to.line, - ch: range.to.ch - }; - - if (range.collapsed) { - replaceText = doc.getLine(from.line); - from.ch = 0; - to.ch = doc.getLineHandle(range.to.line).text.length; - } - - if (doc.getLine(from.line).length) { - replaceText += '\n\n* * *\n\n'; - } else { - replaceText += '\n* * *\n'; - } - - doc.replaceRange(replaceText, from, to); - cm.focus(); - } -}); -/* harmony default export */ var markdownCommands_hr = (HR); -// CONCATENATED MODULE: ./src/js/markdownCommands/addLink.js -/** - * @fileoverview Implements Addlink markdown command - * @author NHN FE Development Lab - */ - - -var addLink_decodeURIGraceful = importManager.decodeURIGraceful, - encodeMarkdownCharacters = importManager.encodeMarkdownCharacters; -var FIND_MARKDOWN_IMAGE_SYNTAX_RX = /!\[.*\]\(.*\)/g; -var FIND_ESCAPED_CHARS_RX = /\(|\)|\[|\]|<|>/g; - -function escapeLinkTextExceptImageSyntax(linkText) { - var imageSyntaxRanges = []; - var result = FIND_MARKDOWN_IMAGE_SYNTAX_RX.exec(linkText); - - while (result) { - var _result = result, - index = _result.index; - imageSyntaxRanges.push([index, index + result[0].length]); - result = FIND_MARKDOWN_IMAGE_SYNTAX_RX.exec(linkText); - } - - return linkText.replace(FIND_ESCAPED_CHARS_RX, function (matched, offset) { - var isDelimiter = imageSyntaxRanges.some(function (range) { - return offset > range[0] && offset < range[1]; - }); - return isDelimiter ? matched : "\\" + matched; - }); -} -/** - * AddLink - * Add link markdown syntax to markdown editor - * @extends Command - * @module markdownCommands/AddLink - * @ignore - */ - - -var AddLink = commandManager["a" /* default */].command('markdown', -/** @lends AddLink */ -{ - name: 'AddLink', - - /** - * command handler for AddLink - * @param {MarkdownEditor} mde - MarkdownEditor instance - * @param {object} data - data for image - */ - exec: function exec(mde, data) { - var cm = mde.getEditor(); - var doc = cm.getDoc(); - var range = mde.getCurrentRange(); - var from = { - line: range.from.line, - ch: range.from.ch - }; - var to = { - line: range.to.line, - ch: range.to.ch - }; - var linkText = data.linkText, - url = data.url; - linkText = addLink_decodeURIGraceful(linkText); - linkText = escapeLinkTextExceptImageSyntax(linkText); - url = encodeMarkdownCharacters(url); - var replaceText = "[" + linkText + "](" + url + ")"; - doc.replaceRange(replaceText, from, to); - cm.focus(); - } -}); -/* harmony default export */ var addLink = (AddLink); -// CONCATENATED MODULE: ./src/js/markdownCommands/addImage.js -/** - * @fileoverview Implments AddImage markdown command - * @author NHN FE Development Lab - */ - - -var addImage_decodeURIGraceful = importManager.decodeURIGraceful, - addImage_encodeMarkdownCharacters = importManager.encodeMarkdownCharacters, - escapeMarkdownCharacters = importManager.escapeMarkdownCharacters; -/** - * AddImage - * Add Image markdown syntax to markdown Editor - * @extends Command - * @module markdownCommands/AddImage - * @ignore - */ - -var AddImage = commandManager["a" /* default */].command('markdown', -/** @lends AddImage */ -{ - name: 'AddImage', - - /** - * Command Handler - * @param {MarkdownEditor} mde MarkdownEditor instance - * @param {object} data data for image - */ - exec: function exec(mde, data) { - var cm = mde.getEditor(); - var doc = cm.getDoc(); - var range = mde.getCurrentRange(); - var from = { - line: range.from.line, - ch: range.from.ch - }; - var to = { - line: range.to.line, - ch: range.to.ch - }; - var altText = data.altText, - imageUrl = data.imageUrl; - altText = addImage_decodeURIGraceful(altText); - altText = escapeMarkdownCharacters(altText); - imageUrl = addImage_encodeMarkdownCharacters(imageUrl); - var replaceText = "![" + altText + "](" + imageUrl + ")"; - doc.replaceRange(replaceText, from, to, '+addImage'); - cm.focus(); - } -}); -/* harmony default export */ var addImage = (AddImage); -// CONCATENATED MODULE: ./src/js/markdownCommands/ul.js -/** - * @fileoverview Implements UL markdown command - * @author NHN FE Development Lab - */ - -/** - * UL - * Add unordered list markdown syntax to markdown editor - * @extends Command - * @module markdownCommands/UL - * @ignore - */ - -var UL = commandManager["a" /* default */].command('markdown', -/** @lends UL */ -{ - name: 'UL', - keyMap: ['CTRL+U', 'META+U'], - - /** - * Command handler - * @param {MarkdownEditor} mde MarkdownEditor instance - */ - exec: function exec(mde) { - var range = mde.getCurrentRange(); - var listManager = mde.componentManager.getManager('list'); - listManager.changeSyntax(range, 'ul'); - } -}); -/* harmony default export */ var markdownCommands_ul = (UL); -// CONCATENATED MODULE: ./src/js/markdownCommands/ol.js -/** - * @fileoverview Implements OL markdown command - * @author NHN FE Development Lab - */ - -/** - * OL - * Add ordered list markdown syntax to markdown editor - * @extends Command - * @module markdownCommands/OL - * @ignore - */ - -var OL = commandManager["a" /* default */].command('markdown', -/** @lends OL */ -{ - name: 'OL', - keyMap: ['CTRL+O', 'META+O'], - - /** - * Command handler - * @param {MarkdownEditor} mde MarkdownEditor instance - */ - exec: function exec(mde) { - var range = mde.getCurrentRange(); - var listManager = mde.componentManager.getManager('list'); - listManager.changeSyntax(range, 'ol'); - } -}); -/* harmony default export */ var ol = (OL); -// CONCATENATED MODULE: ./src/js/markdownCommands/indent.js -/** - * @fileoverview Implements Indent markdown command - * @author NHN FE Development Lab - */ - -/** - * Indent - * Add Indent markdown syntax to markdown editor - * @extends Command - * @module markdownCommands/inent - * @ignore - */ - -var Indent = commandManager["a" /* default */].command('markdown', -/** @lends Indent */ -{ - name: 'Indent', - - /** - * Command handler - * @param {MarkdownEditor} mde MarkdownEditor instance - */ - exec: function exec(mde) { - var cm = mde.getEditor(); - cm.execCommand('indentOrderedList'); - } -}); -/* harmony default export */ var markdownCommands_indent = (Indent); -// CONCATENATED MODULE: ./src/js/markdownCommands/outdent.js -/** - * @fileoverview Implements Outdent markdown command - * @author NHN FE Development Lab - */ - -/** - * Outdent - * Add Outdent markdown syntax to markdown editor - * @extends Command - * @module markdownCommands/outdent - * @ignore - */ - -var Outdent = commandManager["a" /* default */].command('markdown', -/** @lends Outdent */ -{ - name: 'Outdent', - - /** - * Command handler - * @param {MarkdownEditor} mde MarkdownEditor instance - */ - exec: function exec(mde) { - var cm = mde.getEditor(); - cm.execCommand('indentLessOrderedList'); - } -}); -/* harmony default export */ var outdent = (Outdent); -// CONCATENATED MODULE: ./src/js/markdownCommands/table.js -/** - * @fileoverview Implements Table markdown command - * @author NHN FE Development Lab - */ - -/** - * Table - * Add table markdown syntax to markdown editor - * @extends Command - * @module markdownCommands/Table - * @ignore - */ - -var Table = commandManager["a" /* default */].command('markdown', -/** @lends Table */ -{ - name: 'Table', - - /** - * Command handler - * @param {MarkdownEditor} mde MarkdownEditor instance - * @param {number} col column count - * @param {number} row row count - * @param {Array} data initial table data - */ - exec: function exec(mde, col, row, data) { - var cm = mde.getEditor(); - var doc = cm.getDoc(); - var table = '\n'; - - if (cm.getCursor().ch > 0) { - table += '\n'; - } - - table += makeHeader(col, data); - table += makeBody(col, row - 1, data); - doc.replaceSelection(table); - - if (!data) { - cm.setCursor(cm.getCursor().line - row, 2); - } - - mde.focus(); - } -}); -/** - * makeHeader - * make table header markdown string - * @param {number} col Column count - * @param {array} data Cell's text content - * @returns {string} markdown string - */ - -function makeHeader(col, data) { - var header = '|'; - var border = '|'; - var index = 0; - - while (col) { - if (data) { - header += " " + data[index] + " |"; - index += 1; - } else { - header += ' |'; - } - - border += ' --- |'; - col -= 1; - } - - return header + "\n" + border + "\n"; -} -/** - * makeBody - * make table body markdown string - * @param {number} col column count - * @param {number} row row count - * @param {Array} data initial table data - * @returns {string} html string - */ - - -function makeBody(col, row, data) { - var body = ''; - var index = col; - - for (var irow = 0; irow < row; irow += 1) { - body += '|'; - - for (var icol = 0; icol < col; icol += 1) { - if (data) { - body += " " + data[index] + " |"; - index += 1; - } else { - body += ' |'; - } - } - - body += '\n'; - } - - body = body.replace(/\n$/g, ''); - return body; -} - -/* harmony default export */ var markdownCommands_table = (Table); -// CONCATENATED MODULE: ./src/js/markdownCommands/task.js -/** - * @fileoverview Implements Task markdown command - * @author NHN FE Development Lab - */ - -/** - * Task - * @extends Command - * @module markdownCommands/Task - * @ignore - */ - -var Task = commandManager["a" /* default */].command('markdown', -/** @lends Task */ -{ - name: 'Task', - keyMap: ['ALT+T', 'ALT+T'], - - /** - * Command handler - * @param {MarkdownEditor} mde MarkdownEditor instance - */ - exec: function exec(mde) { - var range = mde.getCurrentRange(); - var listManager = mde.componentManager.getManager('list'); - listManager.changeSyntax(range, 'task'); - } -}); -/* harmony default export */ var markdownCommands_task = (Task); -// CONCATENATED MODULE: ./src/js/markdownCommands/code.js -/** - * @fileoverview Implements Code markdown command - * @author NHN FE Development Lab - */ - -var codeRangeRegex = /^`([^`]+)`$/; -var codeContentRegex = /`([^`]+)`/g; -/** - * Code - * Add code markdown syntax to markdown editor - * @extends Command - * @module markdownCommands/Code - * @ignore - */ - -var Code = commandManager["a" /* default */].command('markdown', -/** @lends Code */ -{ - name: 'Code', - keyMap: ['SHIFT+CTRL+C', 'SHIFT+META+C'], - - /** - * Command Handler - * @param {MarkdownEditor} mde MarkdownEditor instance - */ - exec: function exec(mde) { - var cm = mde.getEditor(); - var doc = cm.getDoc(); - var selection = doc.getSelection(); - var cursor = cm.getCursor(); - var hasSyntax = this.hasStrikeSyntax(selection); - var result; - - if (hasSyntax) { - result = this.remove(selection); - result = this._removeCodeSyntax(result); - } else { - result = this._removeCodeSyntax(selection); - result = this.append(result); - } - - doc.replaceSelection(result, 'around'); - - if (!selection && !hasSyntax) { - this.setCursorToCenter(doc, cursor, hasSyntax); - } - - cm.focus(); - }, - - /** - * set cursor to center - * @param {CodeMirror.doc} doc - codemirror document - * @param {object} cursor - codemirror cursor - * @param {boolean} isRemoved - whether it involes deletion - */ - setCursorToCenter: function setCursorToCenter(doc, cursor, isRemoved) { - var pos = isRemoved ? -1 : 1; - doc.setCursor(cursor.line, cursor.ch + pos); - }, - - /** - * has code syntax - * @param {string} text Source text - * @returns {boolean} true if the given text has a code syntax - */ - hasStrikeSyntax: function hasStrikeSyntax(text) { - return codeRangeRegex.test(text); - }, - - /** - * apply Code - * @param {string} text - selected text - * @returns {string} - text after code syntax applied - */ - append: function append(text) { - return "`" + text + "`"; - }, - - /** - * remove Code - * @param {string} text - selected text - * @returns {string} - text after code syntax removed - */ - remove: function remove(text) { - return text.substr(1, text.length - 2); - }, - - /** - * remove bold syntax in the middle of given text - * @param {string} text - text selected - * @returns {string} - text eliminated all code in the middle of it's content - * @private - */ - _removeCodeSyntax: function _removeCodeSyntax(text) { - return text ? text.replace(codeContentRegex, '$1') : ''; - } -}); -/* harmony default export */ var markdownCommands_code = (Code); -// CONCATENATED MODULE: ./src/js/markdownCommands/codeBlock.js -/** - * @fileoverview Implements CodeBlock markdown command - * @author NHN FE Development Lab - */ - -/** - * CodeBlock - * Add CodeBlock markdown syntax to markdown editor - * @extends Command - * @module markdownCommands/CodeBlock - * @ignore - */ - -var CodeBlock = commandManager["a" /* default */].command('markdown', -/** @lends CodeBlock */ -{ - name: 'CodeBlock', - keyMap: ['SHIFT+CTRL+P', 'SHIFT+META+P'], - - /** - * Command handler - * @param {MarkdownEditor} mde MarkdownEditor instance - */ - exec: function exec(mde) { - var cm = mde.getEditor(); - var doc = cm.getDoc(); - var range = mde.getCurrentRange(); - var replaceText = ['```', doc.getSelection(), '```']; - var cursorOffset = 1; // insert a line break to the front if the selection starts in the middle of a text - - if (range.from.ch !== 0) { - replaceText.unshift(''); - cursorOffset += 1; - } // insert a line break to the end if the selection has trailing text - - - if (range.to.ch !== doc.getLine(range.to.line).length) { - replaceText.push(''); - } - - doc.replaceSelection(replaceText.join('\n')); - cm.setCursor(range.from.line + cursorOffset, 0); - cm.focus(); - } -}); -/* harmony default export */ var markdownCommands_codeBlock = (CodeBlock); -// CONCATENATED MODULE: ./src/js/markdownCommands/changeTaskMarker.js -/** - * @fileoverview Implements ChangeTaskMarker markdown command - * @author NHN FE Development Lab - */ - - -var TASK_MARKER_RX = /^\[(\s*)(x?)(\s*)\](?:\s+)/i; -/** - * Add ChangeTaskMarker command - * @extends Command - * @module markdownCommands/ToggleTaskMarker - * @ignore - */ - -var ChangeTaskMarker = commandManager["a" /* default */].command('markdown', -/** @lends ChangeTaskMarker */ -{ - name: 'ChangeTaskMarker', - exec: function exec(mde) { - var cm = mde.getEditor(); - - var _cm$getCursor = cm.getCursor(), - line = _cm$getCursor.line, - ch = _cm$getCursor.ch; - - var mdCh = cm.getLine(line).length === ch ? ch : ch + 1; - var mdNode = mde.getToastMark().findNodeAtPosition([line + 1, mdCh]); - var paraNode = Object(markdown["b" /* findClosestNode */])(mdNode, function (node) { - return node.type === 'paragraph' && node.parent && node.parent.type === 'item'; - }); - - if (paraNode && paraNode.firstChild) { - var _paraNode$firstChild = paraNode.firstChild, - literal = _paraNode$firstChild.literal, - sourcepos = _paraNode$firstChild.sourcepos; - var _sourcepos$ = sourcepos[0], - startLine = _sourcepos$[0], - startCh = _sourcepos$[1]; - var matched = literal.match(TASK_MARKER_RX); - - if (matched) { - var startSpaces = matched[1], - stateChar = matched[2], - lastSpaces = matched[3]; - var spaces = startSpaces.length + lastSpaces.length; - var startPos = { - line: startLine - 1, - ch: startCh - }; - - if (stateChar) { - cm.replaceRange(stateChar, startPos, Object(markdown["a" /* addChPos */])(startPos, spaces ? spaces + 1 : 0)); - } else if (!spaces) { - cm.replaceRange(' ', startPos, startPos); - } - } - } - } -}); -/* harmony default export */ var changeTaskMarker = (ChangeTaskMarker); -// CONCATENATED MODULE: ./src/js/markdownCommands/toggleTaskMarker.js -/** - * @fileoverview Implements ToggleTaskMarker markdown command - * @author NHN FE Development Lab - */ - - -/** - * Add ToggleTaskMarker command - * @extends Command - * @module markdownCommands/ToggleTaskMarker - * @ignore - */ - -var ToggleTaskMarker = commandManager["a" /* default */].command('markdown', -/** @lends ToggleTaskMarker */ -{ - name: 'ToggleTaskMarker', - exec: function exec(mde) { - var _this = this; - - var cm = mde.getEditor(); - var ranges = cm.listSelections(); - ranges.forEach(function (range) { - var anchor = range.anchor, - head = range.head; - var startLine = Math.min(anchor.line, head.line); - var endLine = Math.max(anchor.line, head.line); - var mdNode; - - for (var index = startLine, len = endLine; index <= len; index += 1) { - mdNode = mde.getToastMark().findFirstNodeAtLine(index + 1); - - if (mdNode.type === 'list' || mdNode.type === 'item') { - _this._changeTaskState(mdNode, index, cm); - } - } - }); - }, - _changeTaskState: function _changeTaskState(list, line, cm) { - var listData = list.listData, - sourcepos = list.sourcepos; - var task = listData.task, - checked = listData.checked, - padding = listData.padding; - - if (task) { - var stateChar = checked ? ' ' : 'x'; - var _sourcepos$ = sourcepos[0], - startCh = _sourcepos$[1]; - var startPos = { - line: line, - ch: startCh + padding - }; - cm.replaceRange(stateChar, startPos, Object(markdown["a" /* addChPos */])(startPos, 1)); - } - } -}); -/* harmony default export */ var toggleTaskMarker = (ToggleTaskMarker); -// CONCATENATED MODULE: ./src/js/markdownCommands/moveNextCursorOrIndent.js -/** - * @fileoverview Implements MoveNextCursorOrIndent markdown command - * @author NHN FE Development Lab - */ - - -/** - * Add MoveNextCursorOrIndent command - * @extends Command - * @module markdownCommands/MoveNextCursorOrIndent - * @ignore - */ - -var MoveNextCursorOrIndent = commandManager["a" /* default */].command('markdown', -/** @lends MoveNextCursorOrIndent */ -{ - name: 'MoveNextCursorOrIndent', - exec: function exec(mde) { - var cm = mde.getEditor(); - - var _cm$getCursor = cm.getCursor(), - line = _cm$getCursor.line, - ch = _cm$getCursor.ch; - - var mdCh = cm.getLine(line).length === ch ? ch : ch + 1; - var mdNode = mde.getToastMark().findNodeAtPosition([line + 1, mdCh]); - var cellNode = Object(markdown["b" /* findClosestNode */])(mdNode, function (node) { - return Object(markdown["l" /* isTableCellNode */])(node); - }); - - if (cellNode) { - this._moveCursorNextCell(cellNode, cm); - } else { - cm.execCommand('indentOrderedList'); - } - }, - _moveCursorNextCell: function _moveCursorNextCell(cell, cm) { - var next = cell.next, - parent = cell.parent; - var line = Object(markdown["f" /* getMdStartLine */])(cell); - var ch = Object(markdown["c" /* getMdEndCh */])(cell) + 2; - - if (next) { - ch = Object(markdown["c" /* getMdEndCh */])(next); - } else { - var nextRow = !parent.next && parent.parent.type === 'tableHead' ? parent.parent.next.firstChild : parent.next; - - if (nextRow) { - line = line + 1; - ch = Object(markdown["c" /* getMdEndCh */])(nextRow.firstChild); - } - } - - cm.setCursor({ - line: line - 1, - ch: ch - 1 - }); - } -}); -/* harmony default export */ var moveNextCursorOrIndent = (MoveNextCursorOrIndent); -// CONCATENATED MODULE: ./src/js/markdownCommands/movePrevCursorOrOutdent.js -/** - * @fileoverview Implements MoveCursorOrOutdent markdown command - * @author NHN FE Development Lab - */ - - -/** - * Add MovePrevCursorOrOutdent command - * @extends Command - * @module markdownCommands/MovePrevCursorOrOutdent - * @ignore - */ - -var MovePrevCursorOrOutdent = commandManager["a" /* default */].command('markdown', -/** @lends MovePrevCursorOrOutdent */ -{ - name: 'MovePrevCursorOrOutdent', - exec: function exec(mde) { - var cm = mde.getEditor(); - - var _cm$getCursor = cm.getCursor(), - line = _cm$getCursor.line, - ch = _cm$getCursor.ch; - - var mdCh = cm.getLine(line).length === ch ? ch : ch + 1; - var mdNode = mde.getToastMark().findNodeAtPosition([line + 1, mdCh]); - var cellNode = Object(markdown["b" /* findClosestNode */])(mdNode, function (node) { - return Object(markdown["l" /* isTableCellNode */])(node); - }); - - if (cellNode) { - this._moveCursorPrevCell(cellNode, cm); - } else { - cm.execCommand('indentLessOrderedList'); - } - }, - _moveCursorPrevCell: function _moveCursorPrevCell(cell, cm) { - var prev = cell.prev, - parent = cell.parent; - var line = Object(markdown["f" /* getMdStartLine */])(cell); - var ch = 1; - - if (prev) { - ch = Object(markdown["c" /* getMdEndCh */])(prev); - } else { - var prevRow = !parent.prev && parent.parent.type === 'tableBody' ? parent.parent.prev.lastChild : parent.prev; - - if (prevRow) { - line = line - 1; - ch = Object(markdown["c" /* getMdEndCh */])(prevRow.lastChild); - } - } - - cm.setCursor({ - line: line - 1, - ch: ch - 1 - }); - } -}); -/* harmony default export */ var movePrevCursorOrOutdent = (MovePrevCursorOrOutdent); -// CONCATENATED MODULE: ./src/js/markdownCommands/addLine.js -/** - * @fileoverview Implements AddLine markdown command - * @author NHN FE Development Lab - */ - - - -function createTableRow(row) { - var columnLen = row.parent.parent.columns.length; - var result = '|'; - - for (var i = 0; i < columnLen; i += 1) { - result += ' |'; - } - - return result; -} -/** - * Add AddLine command - * @extends Command - * @module markdownCommands/AddLine - * @ignore - */ - - -var AddLine = commandManager["a" /* default */].command('markdown', -/** @lends AddLine */ -{ - name: 'AddLine', - exec: function exec(mde) { - var cm = mde.getEditor(); - - var _cm$getCursor = cm.getCursor(), - line = _cm$getCursor.line, - ch = _cm$getCursor.ch; - - var mdCh = cm.getLine(line).length === ch ? ch : ch + 1; - var mdNode = mde.getToastMark().findNodeAtPosition([line + 1, mdCh]); - var cellNode = Object(markdown["b" /* findClosestNode */])(mdNode, function (node) { - return Object(markdown["l" /* isTableCellNode */])(node) && (node.parent.type === 'tableDelimRow' || node.parent.parent.type === 'tableBody'); - }); - - if (cellNode) { - this._addTableRowByCell(cellNode, cm); - } else { - cm.execCommand('newlineAndIndentContinueMarkdownList'); - } - }, - _addTableRowByCell: function _addTableRowByCell(cell, cm) { - var line = Object(markdown["f" /* getMdStartLine */])(cell); - var parent = cell.parent; - var nextRow = parent.next; - var currentLineText = cm.getLine(line - 1); - var rowStr = createTableRow(parent); - - if (nextRow && nextRow.type === 'tableRow' || currentLineText !== rowStr) { - cm.setCursor(line - 1, Object(markdown["c" /* getMdEndCh */])(parent)); - cm.replaceSelection("\n" + rowStr); - cm.setCursor(line, 2); - } else { - cm.execCommand('deleteLine'); - } - } -}); -/* harmony default export */ var addLine = (AddLine); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/bold.js -/** - * @fileoverview Implements bold WysiwygCommand - * @author NHN FE Development Lab - */ - - -/** - * Bold - * Add bold to selected wysiwyg editor content - * @extends Command - * @module wysiwygCommands/Bold - * @ignore - */ - -var bold_Bold = commandManager["a" /* default */].command('wysiwyg', -/** @lends Bold */ -{ - name: 'Bold', - keyMap: ['CTRL+B', 'META+B'], - - /** - * command handler - * @param {WysiwygEditor} wwe wysiwygEditor instance - */ - exec: function exec(wwe) { - var sq = wwe.getEditor(); - var tableSelectionManager = wwe.componentManager.getManager('tableSelection'); - wwe.focus(); - - if (sq.hasFormat('table') && tableSelectionManager.getSelectedCells().length) { - tableSelectionManager.styleToSelectedCells(styleBold); - var range = sq.getSelection(); - range.collapse(true); - sq.setSelection(range); - } else { - styleBold(sq); - dom["a" /* default */].optimizeRange(sq.getSelection(), 'B'); - } - } -}); -/** - * Style bold. - * @param {object} sq - squire editor instance - */ - -function styleBold(sq) { - if (sq.hasFormat('b') || sq.hasFormat('strong')) { - sq.changeFormat(null, { - tag: 'b' - }); - } else if (!sq.hasFormat('PRE')) { - if (sq.hasFormat('code')) { - sq.changeFormat(null, { - tag: 'code' - }); - } - - sq.bold(); - } -} - -/* harmony default export */ var wysiwygCommands_bold = (bold_Bold); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/italic.js -/** - * @fileoverview Implements italic WysiwygCommand - * @author NHN FE Development Lab - */ - - -/** - * Italic - * Add Italic to selected wysiwyg editor content - * @extends Command - * @module wysiwygCommands/Italic - * @ignore - */ - -var italic_Italic = commandManager["a" /* default */].command('wysiwyg', -/** @lends Italic */ -{ - name: 'Italic', - keyMap: ['CTRL+I', 'META+I'], - - /** - * command handler - * @param {WysiwygEditor} wwe wysiwygEditor instance - */ - exec: function exec(wwe) { - var sq = wwe.getEditor(); - var tableSelectionManager = wwe.componentManager.getManager('tableSelection'); - wwe.focus(); - - if (sq.hasFormat('table') && tableSelectionManager.getSelectedCells().length) { - tableSelectionManager.styleToSelectedCells(styleItalic); - var range = sq.getSelection(); - range.collapse(true); - sq.setSelection(range); - } else { - styleItalic(sq); - dom["a" /* default */].optimizeRange(sq.getSelection(), 'I'); - } - } -}); -/** - * Style italic. - * @param {object} sq - squire editor instance - */ - -function styleItalic(sq) { - if (sq.hasFormat('i') || sq.hasFormat('em')) { - sq.changeFormat(null, { - tag: 'i' - }); - } else if (!sq.hasFormat('PRE')) { - if (sq.hasFormat('code')) { - sq.changeFormat(null, { - tag: 'code' - }); - } - - sq.italic(); - } -} - -/* harmony default export */ var wysiwygCommands_italic = (italic_Italic); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/strike.js -/** - * @fileoverview Implements strike WysiwygCommand - * @author NHN FE Development Lab - */ - - -/** - * Strike - * Add strike to selected wysiwyg editor content - * @extends Command - * @module wysiwygCommands/Strike - * @ignore - */ - -var strike_Strike = commandManager["a" /* default */].command('wysiwyg', -/** @lends Strike */ -{ - name: 'Strike', - keyMap: ['CTRL+S', 'META+S'], - - /** - * command handler - * @param {WysiwygEditor} wwe WysiwygEditor instance - */ - exec: function exec(wwe) { - var sq = wwe.getEditor(); - var tableSelectionManager = wwe.componentManager.getManager('tableSelection'); - wwe.focus(); - - if (sq.hasFormat('table') && tableSelectionManager.getSelectedCells().length) { - tableSelectionManager.styleToSelectedCells(styleStrike); - var range = sq.getSelection(); - range.collapse(true); - sq.setSelection(range); - } else { - styleStrike(sq); - dom["a" /* default */].optimizeRange(sq.getSelection(), 'S'); - } - } -}); -/** - * Style strike. - * @param {object} sq - squire editor instance - */ - -function styleStrike(sq) { - if (sq.hasFormat('S')) { - sq.changeFormat(null, { - tag: 'S' - }); - } else if (!sq.hasFormat('PRE')) { - if (sq.hasFormat('code')) { - sq.changeFormat(null, { - tag: 'code' - }); - } - - sq.strikethrough(); - } -} - -/* harmony default export */ var wysiwygCommands_strike = (strike_Strike); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/blockquote.js -/** - * @fileoverview Implements block quote WysiwygCommand - * @author NHN FE Development Lab - */ - -/** - * Blockquote - * Add Blockquote to selected wysiwyg editor content - * @extends Command - * @module wysiwygCommands/Blockquote - * @ignore - */ - -var blockquote_Blockquote = commandManager["a" /* default */].command('wysiwyg', -/** @lends Blockquote */ -{ - name: 'Blockquote', - keyMap: ['ALT+Q', 'ALT+Q'], - - /** - * command handler - * @param {WysiwygEditor} wwe wysiwygEditor instance - */ - exec: function exec(wwe) { - var sq = wwe.getEditor(); - wwe.focus(); - - if (!sq.hasFormat('TABLE') && !sq.hasFormat('PRE')) { - if (sq.hasFormat('BLOCKQUOTE')) { - sq.decreaseQuoteLevel(); - } else { - sq.increaseQuoteLevel(); - } - } - } -}); -/* harmony default export */ var wysiwygCommands_blockquote = (blockquote_Blockquote); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/addImage.js -/** - * @fileoverview Implements AddImage wysiwyg command - * @author NHN FE Development Lab - */ - - -var wysiwygCommands_addImage_decodeURIGraceful = importManager.decodeURIGraceful, - wysiwygCommands_addImage_encodeMarkdownCharacters = importManager.encodeMarkdownCharacters; -/** - * AddImage - * Add Image markdown syntax to wysiwyg Editor - * @extends Command - * @module wysiwygCommands/AddImage - * @ignore - */ - -var addImage_AddImage = commandManager["a" /* default */].command('wysiwyg', -/** @lends AddImage */ -{ - name: 'AddImage', - - /** - * command handler - * @param {WysiwygEditor} wwe wysiwygEditor instance - * @param {object} data data for image - */ - exec: function exec(wwe, data) { - var sq = wwe.getEditor(); - var altText = data.altText, - imageUrl = data.imageUrl; - altText = wysiwygCommands_addImage_decodeURIGraceful(altText); - imageUrl = wysiwygCommands_addImage_encodeMarkdownCharacters(imageUrl); - wwe.focus(); - - if (!sq.hasFormat('PRE')) { - sq.insertImage(imageUrl, { - alt: altText - }); - } - } -}); -/* harmony default export */ var wysiwygCommands_addImage = (addImage_AddImage); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/addLink.js -/** - * @fileoverview Implements AddLink wysiwyg command - * @author NHN FE Development Lab - */ - - - - -var wysiwygCommands_addLink_decodeURIGraceful = importManager.decodeURIGraceful, - addLink_encodeMarkdownCharacters = importManager.encodeMarkdownCharacters; -/** - * Add link markdown syntax to wysiwyg Editor - * @extends Command - * @module wysiwygCommands/AddLink - * @ignore - */ - -var addLink_AddLink = commandManager["a" /* default */].command('wysiwyg', -/** @lends AddLink */ -{ - name: 'AddLink', - - /** - * command handler - * @param {WysiwygEditor} wwe - wysiwygEditor instance - * @param {object} data - data for link - */ - exec: function exec(wwe, data) { - var sq = wwe.getEditor(); - var linkAttribute = wwe.getLinkAttribute(); - var url = data.url, - linkText = data.linkText; - var linkManager = wwe.componentManager.getManager('link'); - linkText = wysiwygCommands_addLink_decodeURIGraceful(linkText); - url = addLink_encodeMarkdownCharacters(url); - wwe.focus(); - - if (!sq.hasFormat('PRE')) { - sq.removeAllFormatting(); - var selectedText = sq.getSelectedText(); - - var selectedImageOnly = this._isSelectedImageOnly(sq.getSelection()); - - if (selectedText || selectedImageOnly) { - sq.makeLink(url, linkAttribute); - } else { - var link = sq.createElement('A', extend_default()({ - href: url - }, linkAttribute)); - link.textContent = linkText; - sq.insertElement(link); - } - - linkManager.addClassNameToImageLinksInSelection(); - } - }, - _isSelectedImageOnly: function _isSelectedImageOnly(range) { - if (!range.collapsed) { - var startContainer = range.startContainer, - endContainer = range.endContainer; - - if (startContainer && startContainer === endContainer) { - return dom["a" /* default */].isElemNode(startContainer) && startContainer.firstChild.nodeName === 'IMG'; - } - } - - return false; - } -}); -/* harmony default export */ var wysiwygCommands_addLink = (addLink_AddLink); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/hr.js -/** - * @fileoverview Implements HR wysiwyg command - * @author NHN FE Development Lab - */ - - -/** - * HR - * Add horizontal line markdown syntax to wysiwyg Editor - * @extends Command - * @module wysiwygCommands/HR - * @ignore - */ - -var hr_HR = commandManager["a" /* default */].command('wysiwyg', -/** @lends HR */ -{ - name: 'HR', - keyMap: ['CTRL+L', 'META+L'], - - /** - * command handler - * @param {WysiwygEditor} wwe wysiwygEditor instance - */ - exec: function exec(wwe) { - var sq = wwe.getEditor(); - var range = sq.getSelection(); - - if (range.collapsed && !sq.hasFormat('TABLE') && !sq.hasFormat('PRE')) { - var hr = document.createElement('hr'); - var currentNode = dom["a" /* default */].getChildNodeByOffset(range.startContainer, range.startOffset); - var nextBlockNode = dom["a" /* default */].getTopNextNodeUnder(currentNode, wwe.getBody()); // If nextBlockNode is div that has hr and has contenteditable as false, - // nextBlockNode should be set as nextSibling that is normal block. - - if (nextBlockNode && !dom["a" /* default */].isTextNode(nextBlockNode)) { - while (nextBlockNode && nextBlockNode.getAttribute('contenteditable') === 'false') { - nextBlockNode = nextBlockNode.nextSibling; - } - } - - if (!nextBlockNode) { - nextBlockNode = dom["a" /* default */].createEmptyLine(); - dom["a" /* default */].append(wwe.getBody(), nextBlockNode); - } - - sq.modifyBlocks(function (frag) { - frag.appendChild(hr); - return frag; - }); - var previousSibling = hr.previousSibling; - - if (previousSibling && dom["a" /* default */].isTextNode(previousSibling) && dom["a" /* default */].getTextLength(previousSibling) === 0) { - hr.parentNode.removeChild(previousSibling); - } - - hr.parentNode.replaceChild(dom["a" /* default */].createHorizontalRule(), hr); - range.selectNodeContents(nextBlockNode); - range.collapse(true); - sq.setSelection(range); - sq.saveUndoState(range); - } - - wwe.focus(); - } -}); -/* harmony default export */ var wysiwygCommands_hr = (hr_HR); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/heading.js -/** - * @fileoverview Implements Heading wysiwyg command - * @author NHN FE Development Lab - */ - - - -/** - * Heading - * Convert selected root level contents to heading with size wysiwyg Editor - * @extends Command - * @module wysiwygCommands/Heading - * @ignore - */ - -var heading_Heading = commandManager["a" /* default */].command('wysiwyg', -/** @lends Heading */ -{ - name: 'Heading', - - /** - * Command handler - * @param {WysiwygEditor} wwe WYSIWYGEditor instance - * @param {Number} size size - */ - exec: function exec(wwe, size) { - var sq = wwe.getEditor(); - var blockTagName = 'h1, h2, h3, h4, h5, h6, div'; - wwe.focus(); - - if (!sq.hasFormat('TABLE') && !sq.hasFormat('PRE')) { - sq.modifyBlocks(function (fragment) { - var blocks = dom["a" /* default */].children(fragment, blockTagName); - toArray_default()(blocks).forEach(function (block) { - var headingHTML = "h" + size; - - if (dom["a" /* default */].getNodeName(block) === 'DIV') { - dom["a" /* default */].wrap(block, headingHTML); - } else { - var wrapperHeading = document.createElement(headingHTML); - dom["a" /* default */].insertBefore(wrapperHeading, block); - wrapperHeading.innerHTML = block.innerHTML; - dom["a" /* default */].remove(block); - } - }); - return fragment; - }); - } - } -}); -/* harmony default export */ var wysiwygCommands_heading = (heading_Heading); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/paragraph.js -/** - * @fileoverview Implements Paragraph wysiwyg command - * @author NHN FE Development Lab - */ - - - -/** - * Paragraph - * Convert selected contents to paragraph only heading and list - * @extends Command - * @module wysiwygCommands/Paragraph - * @ignore - */ - -var paragraph_Paragraph = commandManager["a" /* default */].command('wysiwyg', -/** @lends Paragraph */ -{ - name: 'Paragraph', - - /** - * Command handler - * @param {WysiwygEditor} wwe WYSIWYGEditor instance - */ - exec: function exec(wwe) { - var sq = wwe.getEditor(); - wwe.focus(); - - if (!sq.hasFormat('TABLE') && !sq.hasFormat('PRE')) { - sq.modifyBlocks(function (fragment) { - var newFragment = document.createDocumentFragment(); - toArray_default()(fragment.childNodes).forEach(function (block) { - if (block.nodeName.match(/h\d/i)) { - appendChildrenTo(newFragment, block.children); - } else if (block.nodeName.match(/ul|ol/i)) { - dom["a" /* default */].findAll(block, 'li').forEach(function (listItem) { - appendChildrenTo(newFragment, listItem.children); - }); - } else { - newFragment.appendChild(block); - } - }); - return newFragment; - }); - } - } -}); -/** - * Append children - * @param {HTMLElement} parent - target to append - * @param {Array.} children - appending children - */ - -function appendChildrenTo(parent, children) { - toArray_default()(children).forEach(function (child) { - parent.appendChild(child.cloneNode(true)); - }); -} - -/* harmony default export */ var wysiwygCommands_paragraph = (paragraph_Paragraph); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/ul.js -/** - * @fileoverview Implements ul WysiwygCommand - * @author NHN FE Development Lab - */ - -/** - * UL - * Add UL to selected wysiwyg editor content - * @extends Command - * @module wysiwygCommands/UL - * @ignore - */ - -var ul_UL = commandManager["a" /* default */].command('wysiwyg', -/** @lends UL */ -{ - name: 'UL', - keyMap: ['CTRL+U', 'META+U'], - - /** - * Command Handler - * @param {WysiwygEditor} wwe WYSIWYGEditor instance - */ - exec: function exec(wwe) { - var sq = wwe.getEditor(); - var range = sq.getSelection(); - var listManager = wwe.componentManager.getManager('list'); - var startContainer = range.startContainer, - endContainer = range.endContainer, - startOffset = range.startOffset, - endOffset = range.endOffset; - var newLIs = []; - wwe.focus(); - sq.saveUndoState(range); - - if (listManager.isAvailableMakeListInTable()) { - newLIs = listManager.createListInTable(range, 'UL'); - } else { - var lines = listManager.getLinesOfSelection(startContainer, endContainer); - - for (var i = 0; i < lines.length; i += 1) { - var newLI = this._changeFormatToUnorderedListIfNeed(wwe, lines[i]); - - if (newLI) { - newLIs.push(newLI); - } - } - } - - if (newLIs.length) { - listManager.adjustRange(startContainer, endContainer, startOffset, endOffset, newLIs); - } - }, - - /** - * Change format to unordered list if need - * @param {WysiwygEditor} wwe Wysiwyg editor instance - * @param {HTMLElement} target Element target for change - * @returns {HTMLElement} newly created list - * @private - */ - _changeFormatToUnorderedListIfNeed: function _changeFormatToUnorderedListIfNeed(wwe, target) { - var sq = wwe.getEditor(); - var range = sq.getSelection(); - var taskManager = wwe.componentManager.getManager('task'); - var newLI; - - if (!sq.hasFormat('PRE')) { - range.setStart(target, 0); - range.collapse(true); - sq.setSelection(range); - - if (sq.hasFormat('LI')) { - wwe.saveSelection(range); - taskManager.unformatTask(range.startContainer); - sq.replaceParent(range.startContainer, 'ol', 'ul'); - wwe.restoreSavedSelection(); - } else { - wwe.unwrapBlockTag(); - sq.makeUnorderedList(); - } - - newLI = sq.getSelection().startContainer; - } - - return newLI; - } -}); -/* harmony default export */ var wysiwygCommands_ul = (ul_UL); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/ol.js -/** - * @fileoverview Implements ol WysiwygCommand - * @author NHN FE Development Lab - */ - -/** - * OL - * Add OL to selected wysiwyg editor content - * @extends Command - * @module wysiwygCommands/OL - * @ignore - */ - -var ol_OL = commandManager["a" /* default */].command('wysiwyg', -/** @lends OL */ -{ - name: 'OL', - keyMap: ['CTRL+O', 'META+O'], - - /** - * Command Handler - * @param {WysiwygEditor} wwe WYSIWYGEditor instance - */ - exec: function exec(wwe) { - var sq = wwe.getEditor(); - var range = sq.getSelection(); - var listManager = wwe.componentManager.getManager('list'); - var startContainer = range.startContainer, - startOffset = range.startOffset, - endContainer = range.endContainer, - endOffset = range.endOffset; - var newLIs = []; - wwe.focus(); - sq.saveUndoState(range); - - if (listManager.isAvailableMakeListInTable()) { - newLIs = listManager.createListInTable(range, 'OL'); - } else { - var lines = listManager.getLinesOfSelection(startContainer, endContainer); - - for (var i = 0; i < lines.length; i += 1) { - var newLI = this._changeFormatToOrderedListIfNeed(wwe, lines[i]); - - if (newLI) { - newLIs.push(newLI); - } - } - } - - if (newLIs.length) { - listManager.adjustRange(startContainer, endContainer, startOffset, endOffset, newLIs); - } - }, - - /** - * Change format to unordered list if need - * @param {WysiwygEditor} wwe Wysiwyg editor instance - * @param {HTMLElement} target Element target for change - * @returns {HTMLElement} newly created list item - * @private - */ - _changeFormatToOrderedListIfNeed: function _changeFormatToOrderedListIfNeed(wwe, target) { - var sq = wwe.getEditor(); - var range = sq.getSelection(); - var taskManager = wwe.componentManager.getManager('task'); - var newLI; - - if (!sq.hasFormat('PRE')) { - range.setStart(target, 0); - range.collapse(true); - sq.setSelection(range); - - if (sq.hasFormat('LI')) { - wwe.saveSelection(range); - taskManager.unformatTask(range.startContainer); - sq.replaceParent(range.startContainer, 'ul', 'ol'); - wwe.restoreSavedSelection(); - } else { - wwe.unwrapBlockTag(); - sq.makeOrderedList(); - } - - newLI = sq.getSelection().startContainer; - } - - return newLI; - } -}); -/* harmony default export */ var wysiwygCommands_ol = (ol_OL); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/table.js -/** - * @fileoverview Implements table WysiwygCommand - * @author NHN FE Development Lab - */ - -/** - * Table - * Add table to selected wysiwyg editor content - * @extends Command - * @module wysiwygCommands/Table - * @ignore - */ - -var table_Table = commandManager["a" /* default */].command('wysiwyg', -/** @lends Table */ -{ - name: 'Table', - - /** - * Command Handler - * @param {WysiwygEditor} wwe wysiwygEditor instance - * @param {number} col column count - * @param {number} row row count - * @param {Array} data initial table data - */ - exec: function exec(wwe, col, row, data) { - var sq = wwe.getEditor(); - var tableIDClassName = wwe.componentManager.getManager('table').getTableIDClassName(); - var tableHTMLString; - - if (!sq.getSelection().collapsed || sq.hasFormat('TABLE') || sq.hasFormat('PRE')) { - wwe.focus(); - return; - } - - tableHTMLString = ""; - tableHTMLString += table_makeHeader(col, data); - tableHTMLString += table_makeBody(col, row - 1, data); - tableHTMLString += '
    '; - sq.insertHTML(tableHTMLString); - wwe.focus(); - - if (!data) { - focusToFirstTh(sq, wwe.getBody().querySelector("." + tableIDClassName)); - } - } -}); -/** - * Focus to first th - * @param {Squire} sq Squire instance - * @param {HTMLElement} table wrapped table element - */ - -function focusToFirstTh(sq, table) { - var range = sq.getSelection(); - range.selectNodeContents(table.querySelector('th')); - range.collapse(true); - sq.setSelection(range); -} -/** - * makeHeader - * make table header html string - * @param {number} col column count - * @param {string} data cell data - * @returns {string} html string - */ - - -function table_makeHeader(col, data) { - var header = ''; - var index = 0; - - while (col) { - header += ''; - - if (data) { - header += data[index]; - index += 1; - } - - header += ''; - col -= 1; - } - - header += ''; - return header; -} -/** - * makeBody - * make table body html string - * @param {number} col column count - * @param {number} row row count - * @param {string} data cell data - * @returns {string} html string - */ - - -function table_makeBody(col, row, data) { - var body = ''; - var index = col; - - for (var irow = 0; irow < row; irow += 1) { - body += ''; - - for (var icol = 0; icol < col; icol += 1) { - body += ''; - - if (data) { - body += data[index]; - index += 1; - } - - body += ''; - } - - body += ''; - } - - body += ''; - return body; -} - -/* harmony default export */ var wysiwygCommands_table = (table_Table); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/tableAddRow.js -/** - * @fileoverview Implements table add row WysiwygCommand - * @author NHN FE Development Lab - */ - - - - -/** - * AddRow - * Add Row to selected table - * @extends Command - * @module wysiwygCommands/TableAddRow - * @ignore - */ - -var TableAddRow = commandManager["a" /* default */].command('wysiwyg', -/** @lends AddRow */ -{ - name: 'AddRow', - - /** - * command handler - * @param {WysiwygEditor} wwe wysiwygEditor instance - */ - exec: function exec(wwe) { - var sq = wwe.getEditor(); - var range = sq.getSelection().cloneRange(); - var selectedRowLength = getSelectedRowsLength(wwe); - var tr, newRow; - wwe.focus(); - - if (sq.hasFormat('TD')) { - sq.saveUndoState(range); - tr = dom["a" /* default */].closest(range.startContainer, 'tr'); - - for (var i = 0; i < selectedRowLength; i += 1) { - newRow = getNewRow(tr); - dom["a" /* default */].insertAfter(newRow, tr); - } - - focusToFirstTd(sq, newRow); - } else if (sq.hasFormat('TH')) { - sq.saveUndoState(range); - tr = dom["a" /* default */].closest(range.startContainer, 'tr'); - - var _domUtils$parents = dom["a" /* default */].parents(tr, 'thead'), - thead = _domUtils$parents[0]; - - var tbody = thead.nextSibling; - - if (matches_default()(tbody, 'tbody')) { - var _domUtils$children = dom["a" /* default */].children(tbody, 'tr'); - - tr = _domUtils$children[0]; - } - - for (var _i = 0; _i < selectedRowLength; _i += 1) { - newRow = getNewRow(tr); - dom["a" /* default */].insertBefore(newRow, tr); - } - - focusToFirstTd(sq, newRow); - } - } -}); -/** - * get number of selected rows - * @param {WysiwygEditor} wwe - wysiwygEditor instance - * @returns {number} - number of selected rows - * @ignore - */ - -function getSelectedRowsLength(wwe) { - var selectionMgr = wwe.componentManager.getManager('tableSelection'); - var selectedCells = selectionMgr.getSelectedCells(); - var length = 1; - - if (selectedCells.length > 1) { - var first = selectedCells[0]; - var last = selectedCells[selectedCells.length - 1]; - var range = selectionMgr.getSelectionRangeFromTable(first, last); - length = range.to.row - range.from.row + 1; - } - - return length; -} -/** - * Get new row of given row - * @param {HTMLElement} tr - wrapped table row - * @returns {HTMLElement} - new cloned element - * @ignore - */ - - -function getNewRow(tr) { - var cloned = tr.cloneNode(true); - var htmlString = browser_default.a.msie ? '' : '
    '; - dom["a" /* default */].findAll(cloned, 'td').forEach(function (td) { - td.innerHTML = htmlString; - }); - return cloned; -} -/** - * Focus to first table cell - * @param {Squire} sq - Squire instance - * @param {HTMLElement} tr - wrapped table row - * @ignore - */ - - -function focusToFirstTd(sq, tr) { - var range = sq.getSelection(); - range.selectNodeContents(tr.querySelector('td')); - range.collapse(true); - sq.setSelection(range); -} - -/* harmony default export */ var tableAddRow = (TableAddRow); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/tableAddCol.js -/** - * @fileoverview Implements table add column WysiwygCommand - * @author NHN FE Development Lab - */ - - - - - -/** - * AddCol - * Add col to selected table - * @extends Command - * @module wysiwygCommands/TableAddCol - * @ignore - */ - -var TableAddCol = commandManager["a" /* default */].command('wysiwyg', -/** @lends AddCol */ -{ - name: 'AddCol', - - /** - * command handler - * @param {WysiwygEditor} wwe wysiwygEditor instance - */ - exec: function exec(wwe) { - var sq = wwe.getEditor(); - var range = sq.getSelection().cloneRange(); - var numberOfCols = getNumberOfCols(wwe); - var cell; - wwe.focus(); - - if (sq.hasFormat('TR')) { - sq.saveUndoState(range); - cell = getCellByRange(range); - addColToCellAfter(cell, numberOfCols); - focusToNextCell(sq, cell); - } - } -}); -/** - * get number of selected cols - * @param {WysiwygEditor} wwe - wysiwyg editor instance - * @returns {number} - number of selected cols - * @ignore - */ - -function getNumberOfCols(wwe) { - var selectionMgr = wwe.componentManager.getManager('tableSelection'); - var selectedCells = selectionMgr.getSelectedCells(); - var length = 1; - - if (selectedCells.length > 0) { - var maxLength = selectedCells[0].parentNode.querySelectorAll('td, th').length; - length = Math.min(maxLength, selectedCells.length); - } - - return length; -} -/** - * Get cell by range object - * @param {Range} range - range - * @returns {HTMLElement} - html element - * @ignore - */ - - -function getCellByRange(range) { - var cell = range.startContainer; - - if (dom["a" /* default */].getNodeName(cell) !== 'TD' && dom["a" /* default */].getNodeName(cell) !== 'TH') { - cell = dom["a" /* default */].closest(cell, 'td, th'); - } - - return cell; -} -/** - * Add column to after the current cell - * @param {HTMLElement} cell - wrapped table cell - * @param {number} [numberOfCols=1] - number of cols - * @ignore - */ - - -function addColToCellAfter(cell, numberOfCols) { - if (numberOfCols === void 0) { - numberOfCols = 1; - } - - var _domUtils$parents = dom["a" /* default */].parents(cell, 'table'), - table = _domUtils$parents[0]; - - if (table) { - var index = inArray_default()(cell, toArray_default()(cell.parentNode.childNodes)); - var cellToAdd; - dom["a" /* default */].findAll(table, 'tr').forEach(function (tr) { - var isTBody = dom["a" /* default */].getNodeName(tr.parentNode) === 'TBODY'; - var isMSIE = browser_default.a.msie; - var currentCell = tr.children[index]; - - for (var i = 0; i < numberOfCols; i += 1) { - if (isTBody) { - cellToAdd = document.createElement('td'); - } else { - cellToAdd = document.createElement('th'); - } - - if (!isMSIE) { - cellToAdd.appendChild(document.createElement('br')); - } - - dom["a" /* default */].insertAfter(cellToAdd, currentCell); - } - }); - } -} -/** - * Focus to next cell - * @param {Squire} sq - Squire instance - * @param {HTMLElement} cell - wrapped table cell - * @ignore - */ - - -function focusToNextCell(sq, cell) { - var range = sq.getSelection(); - range.selectNodeContents(cell.nextSibling); - range.collapse(true); - sq.setSelection(range); -} - -/* harmony default export */ var tableAddCol = (TableAddCol); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/tableRemoveRow.js -/** - * @fileoverview Implements table remove row WysiwygCommand - * @author NHN FE Development Lab - */ - - -/** - * RemoveRow - * remove Row to selected table - * @extends Command - * @module wysiwygCommands/TableRemoveRow - * @ignore - */ - -var TableRemoveRow = commandManager["a" /* default */].command('wysiwyg', -/** @lends RemoveRow */ -{ - name: 'RemoveRow', - - /** - * command handler - * @param {WysiwygEditor} wwe wysiwygEditor instance - */ - exec: function exec(wwe) { - var sq = wwe.getEditor(); - var range = sq.getSelection().cloneRange(); - - var _domUtils$parents = dom["a" /* default */].parents(range.startContainer, 'table'), - table = _domUtils$parents[0]; - - var selectionMgr = wwe.componentManager.getManager('tableSelection'); - var tableMgr = wwe.componentManager.getManager('table'); - var trs = getTrs(range, selectionMgr, table); - var tbodyRowLength = table.querySelectorAll('tbody tr').length; - wwe.focus(); - - if ((sq.hasFormat('TD') || sq.hasFormat('TABLE')) && tbodyRowLength > 1) { - sq.saveUndoState(range); - var firstTr = trs[0]; - var lastTr = trs[trs.length - 1]; - var nextFocus = lastTr && lastTr.nextSibling ? lastTr.nextSibling : firstTr && firstTr.previousSibling; - - if (nextFocus) { - tableRemoveRow_focusToFirstTd(sq, range, nextFocus, tableMgr); - } - - trs.forEach(function (tr) { - return dom["a" /* default */].remove(tr); - }); - } - - selectionMgr.removeClassAttrbuteFromAllCellsIfNeed(); - } -}); -/** - * Focus to first TD in given TR - * @param {SquireExt} sq Squire instance - * @param {Range} range Range object - * @param {HTMLElement} tr HTMLElement wrapped TR - * @param {object} tableMgr Table manager - */ - -function tableRemoveRow_focusToFirstTd(sq, range, tr, tableMgr) { - var nextFocusCell = tr.querySelector('td'); - range.setStart(nextFocusCell, 0); - range.collapse(true); - tableMgr.setLastCellNode(nextFocusCell); - sq.setSelection(range); -} -/** - * Get start, end row index from current range - * @param {HTMLElement} firstSelectedCell Range object - * @param {object} rangeInformation Range information object - * @param {HTMLElement} table HTMLElement wrapped TABLE - * @returns {HTMLElement} - */ - - -function getSelectedRows(firstSelectedCell, rangeInformation, table) { - var tbodyRowLength = table.querySelectorAll('tbody tr').length; - var isStartContainerInThead = dom["a" /* default */].parents(firstSelectedCell, 'thead').length; - var startRowIndex = rangeInformation.from.row; - var endRowIndex = rangeInformation.to.row; - - if (isStartContainerInThead) { - startRowIndex += 1; - } - - var isWholeTbodySelected = (startRowIndex === 1 || isStartContainerInThead) && endRowIndex === tbodyRowLength; - - if (isWholeTbodySelected) { - endRowIndex -= 1; - } - - return dom["a" /* default */].findAll(table, 'tr').slice(startRowIndex, endRowIndex + 1); -} -/** - * Get TRs - * @param {Range} range Range object - * @param {object} selectionMgr Table selection manager - * @param {HTMLElement} table current table - * @returns {Array.} - */ - - -function getTrs(range, selectionMgr, table) { - var selectedCells = selectionMgr.getSelectedCells(); - var rangeInformation, trs; - - if (selectedCells.length) { - rangeInformation = selectionMgr.getSelectionRangeFromTable(selectedCells[0], selectedCells[selectedCells.length - 1]); - trs = getSelectedRows(selectedCells[0], rangeInformation, table); - } else { - var cell = dom["a" /* default */].closest(range.startContainer, 'td,th'); - rangeInformation = selectionMgr.getSelectionRangeFromTable(cell, cell); - trs = getSelectedRows(cell, rangeInformation, table); - } - - return trs; -} - -/* harmony default export */ var tableRemoveRow = (TableRemoveRow); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/tableRemoveCol.js -/** - * @fileoverview Implements table remove column WysiwygCommand - * @author NHN FE Development Lab - */ - - - - -/** - * RemoveCol - * remove Row to selected table - * @extends Command - * @module wysiwygCommands/TableRemoveCol - * @ignore - */ - -var TableRemoveCol = commandManager["a" /* default */].command('wysiwyg', -/** @lends RemoveCol */ -{ - name: 'RemoveCol', - - /** - * command handler - * @param {WysiwygEditor} wwe wysiwygEditor instance - */ - exec: function exec(wwe) { - var sq = wwe.getEditor(); - var range = sq.getSelection().cloneRange(); - - var _domUtils$parents = dom["a" /* default */].parents(range.startContainer, 'table'), - table = _domUtils$parents[0]; - - var tableMgr = wwe.componentManager.getManager('table'); - var selectionMgr = wwe.componentManager.getManager('tableSelection'); - var hasMultipleCols = dom["a" /* default */].closest(range.startContainer, 'table').querySelectorAll('thead tr th').length > 1; - wwe.focus(); // IE 800a025e error on removing part of selection range. collapse - - range.collapse(true); - sq.setSelection(range); - - if (sq.hasFormat('TR', null, range) && hasMultipleCols) { - var trs = table.querySelectorAll('tbody tr'); - var tbodyColLength = trs.length ? trs[0].querySelectorAll('td').length : 0; - var selectedCells = selectionMgr.getSelectedCells(); - - if (selectedCells.length < tbodyColLength) { - sq.saveUndoState(range); - var nextFocus; - - if (selectedCells.length > 1) { - var tailCell = selectedCells[selectedCells.length - 1]; - var headCell = selectedCells[0]; - nextFocus = tailCell.nextSibling ? tailCell.nextSibling : headCell.previousSibling; - removeMultipleColsByCells(selectedCells); - } else { - var cell = tableRemoveCol_getCellByRange(range); - nextFocus = cell.nextSibling ? cell.nextSibling : cell.previousSibling; - removeColByCell(cell); - } - - focusToCell(sq, nextFocus, tableMgr); - } - } - } -}); -/** - * Get cell by range object - * @param {Range} range range - * @returns {HTMLElement|Node} - */ - -function tableRemoveCol_getCellByRange(range) { - var cell = range.startContainer; - - if (dom["a" /* default */].getNodeName(cell) !== 'TD' && !dom["a" /* default */].getNodeName(cell) === 'TH') { - cell = dom["a" /* default */].parentsUntil(cell, 'tr'); - } - - return cell; -} -/** - * Remove columns by given cells - * @param {HTMLElement} cells - table cells - */ - - -function removeMultipleColsByCells(cells) { - var numberOfCells = cells.length; - - for (var i = 0; i < numberOfCells; i += 1) { - var cellToDelete = cells[i]; - - if (cellToDelete) { - removeColByCell(cells[i]); - } - } -} -/** - * Remove column by given cell - * @param {HTMLElement} cell - wrapped table cell - */ - - -function removeColByCell(cell) { - var _domUtils$parents2 = dom["a" /* default */].parents(cell, 'table'), - table = _domUtils$parents2[0]; - - if (table) { - var index = inArray_default()(cell, toArray_default()(cell.parentNode.childNodes)); - dom["a" /* default */].findAll(table, 'tr').forEach(function (tr) { - var td = tr.children[index]; - dom["a" /* default */].remove(td); - }); - } -} -/** - * Focus to given cell - * @param {Squire} sq - Squire instance - * @param {HTMLElement} cell - wrapped table cell - * @param {object} tableMgr - Table manager instance - */ - - -function focusToCell(sq, cell, tableMgr) { - var nextFocusCell = cell; - - if (cell && dom["a" /* default */].isContain(document.body, cell)) { - var range = sq.getSelection(); - range.selectNodeContents(cell); - range.collapse(true); - sq.setSelection(range); - tableMgr.setLastCellNode(nextFocusCell); - } -} - -/* harmony default export */ var tableRemoveCol = (TableRemoveCol); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/tableAlignCol.js -/** - * @fileoverview Implements table align column WysiwygCommand - * @author NHN FE Development Lab - */ - - - -/** - * AlignCol - * Align selected column's text content to given direction - * @extends Command - * @module wysiwygCommands/TableAlignCol - * @ignore - */ - -var TableAlignCol = commandManager["a" /* default */].command('wysiwyg', -/** @lends AlignCol */ -{ - name: 'AlignCol', - - /** - * command handler - * @param {WysiwygEditor} wwe wysiwygEditor instance - * @param {string} alignDirection Align direction - */ - exec: function exec(wwe, alignDirection) { - var sq = wwe.getEditor(); - var range = sq.getSelection().cloneRange(); - var selectionMgr = wwe.componentManager.getManager('tableSelection'); - var rangeInformation = getRangeInformation(range, selectionMgr); - wwe.focus(); - - if (sq.hasFormat('TR')) { - sq.saveUndoState(range); - - var _domUtils$parents = dom["a" /* default */].parents(range.startContainer, 'table'), - table = _domUtils$parents[0]; - - var selectionInformation = getSelectionInformation(table, rangeInformation); - setAlignAttributeToTableCells(table, alignDirection, selectionInformation); - } - - selectionMgr.removeClassAttrbuteFromAllCellsIfNeed(); - } -}); -/** - * Set Column align - * @param {HTMLElement} table wrapped TABLE - * @param {string} alignDirection 'left' or 'center' or 'right' - * @param {{ - * startColumnIndex: number, - * endColumnIndex: number, - * isDivided: boolean - * }} selectionInformation start, end column index and boolean value for whether range divided or not - */ - -function setAlignAttributeToTableCells(table, alignDirection, selectionInformation) { - var isDivided = selectionInformation.isDivided || false; - var start = selectionInformation.startColumnIndex; - var end = selectionInformation.endColumnIndex; - var trs = dom["a" /* default */].findAll(table, 'tr'); - var columnLength = trs.length ? trs[0].querySelectorAll('td,th').length : 0; - trs.forEach(function (tr) { - var cells = toArray_default()(dom["a" /* default */].children(tr, 'td,th')); - cells.forEach(function (cell, index) { - if (isDivided && (start <= index && index <= columnLength || index <= end)) { - cell.setAttribute('align', alignDirection); - } else if (start <= index && index <= end) { - cell.setAttribute('align', alignDirection); - } - }); - }); -} -/** - * Return start, end column index and boolean value for whether range divided or not - * @param {HTMLElement} table wrapped TABLE - * @param {{startColumnIndex: number, endColumnIndex: number}} rangeInformation Range information - * @returns {{startColumnIndex: number, endColumnIndex: number, isDivided: boolean}} - */ - - -function getSelectionInformation(table, rangeInformation) { - var trs = table.querySelectorAll('tr'); - var columnLength = trs.length ? trs[0].querySelectorAll('td,th').length : 0; - var from = rangeInformation.from, - to = rangeInformation.to; - var startColumnIndex, endColumnIndex, isDivided; - - if (from.row === to.row) { - startColumnIndex = from.cell; - endColumnIndex = to.cell; - } else if (from.row < to.row) { - if (from.cell <= to.cell) { - startColumnIndex = 0; - endColumnIndex = columnLength - 1; - } else { - startColumnIndex = from.cell; - endColumnIndex = to.cell; - isDivided = true; - } - } - - return { - startColumnIndex: startColumnIndex, - endColumnIndex: endColumnIndex, - isDivided: isDivided - }; -} -/** - * Get range information - * @param {Range} range Range object - * @param {object} selectionMgr Table selection manager - * @returns {object} - */ - - -function getRangeInformation(range, selectionMgr) { - var selectedCells = selectionMgr.getSelectedCells(); - var rangeInformation, startCell; - - if (selectedCells.length) { - rangeInformation = selectionMgr.getSelectionRangeFromTable(selectedCells[0], selectedCells[selectedCells.length - 1]); - } else { - var startContainer = range.startContainer; - startCell = dom["a" /* default */].isTextNode(startContainer) ? dom["a" /* default */].parent(startContainer, 'td,th') : startContainer; - rangeInformation = selectionMgr.getSelectionRangeFromTable(startCell, startCell); - } - - return rangeInformation; -} - -/* harmony default export */ var tableAlignCol = (TableAlignCol); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/tableRemove.js -/** - * @fileoverview Implements table remove WysiwygCommand - * @author NHN FE Development Lab - */ - - -/** - * RemoveTable - * Remove selected table - * @extends Command - * @module wysiwygCommands/TableRemove - * @ignore - */ - -var TableRemove = commandManager["a" /* default */].command('wysiwyg', -/** @lends RemoveTable */ -{ - name: 'RemoveTable', - - /** - * command handler - * @param {WysiwygEditor} wwe wysiwygEditor instance - */ - exec: function exec(wwe) { - var sq = wwe.getEditor(); - var range = sq.getSelection().cloneRange(); - - if (sq.hasFormat('TABLE')) { - sq.saveUndoState(range); - dom["a" /* default */].remove(dom["a" /* default */].closest(range.startContainer, 'table')); - } - - wwe.focus(); - } -}); -/* harmony default export */ var tableRemove = (TableRemove); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/indent.js -/** - * @fileoverview Implements Indent wysiwyg command - * @author NHN FE Development Lab - */ - - - - -/** - * Indent - * Indent list or task to wysiwyg Editor - * @extends Command - * @module wysiwygCommands/indent - * @ignore - */ - -var indent_Indent = commandManager["a" /* default */].command('wysiwyg', -/** @lends Indent */ -{ - name: 'Indent', - - /** - * Command Handler - * @param {WysiwygEditor} wwe wysiwygEditor instance - */ - exec: function exec(wwe) { - var listManager = wwe.componentManager.getManager('list'); - var range = wwe.getEditor().getSelection(); - var node = dom["a" /* default */].closest(range.startContainer, 'li'); - var prevClasses, nodeClasses, nextClasses; - var prev = node && node.previousSibling; - - if (prev) { - var next = node.querySelector('li'); - wwe.getEditor().saveUndoState(); - nodeClasses = node.className; - prevClasses = prev.className; - node.className = ''; - prev.className = ''; - - if (next) { - nextClasses = next.className; - var divElements = toArray_default()(next.children).filter(function (child) { - return matches_default()(child, 'div'); - }); - - if (!divElements.length) { - next.className = ''; - } - } - - wwe.getEditor().increaseListLevel(); - listManager.mergeList(node); - node.className = nodeClasses; - prev.className = prevClasses; - - if (next) { - next.className = nextClasses; - } - } - } -}); -/* harmony default export */ var wysiwygCommands_indent = (indent_Indent); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/outdent.js -/** - * @fileoverview Implements Outdent wysiwyg command - * @author NHN FE Development Lab - */ - - -/** - * Outdent - * Outdent list or task to wysiwyg Editor - * @extends Command - * @module wysiwygCommands/Outdent - * @ignore - */ - -var outdent_Outdent = commandManager["a" /* default */].command('wysiwyg', -/** @lends Outdent */ -{ - name: 'Outdent', - - /** - * Command Handler - * @param {WysiwygEditor} wwe WysiwygEditor instance - */ - exec: function exec(wwe) { - var node = getCurrentLi(wwe); - - if (node && isExecutable(node)) { - wwe.getEditor().saveUndoState(); - var nodeClasses = node.className; - wwe.getEditor().decreaseListLevel(); - node = getCurrentLi(wwe); - - if (node && nodeClasses) { - node.className = nodeClasses; - } - } - } -}); -/** - * test if outdent the given list item - * arbitrary list allows list item to be in any position - * while markdown spec does not - * @param {HTMLElement} currentLiNode - list item element - * @returns {boolean} - true to executable - * @ignore - */ - -function isExecutable(currentLiNode) { - var nodeName = dom["a" /* default */].getNodeName(currentLiNode.nextSibling); - return nodeName !== 'OL' && nodeName !== 'UL'; -} -/** - * Get list item element of current selection - * @param {object} wwe Wysiwyg editor instance - * @returns {HTMLElement} - * @ignore - */ - - -function getCurrentLi(wwe) { - var range = wwe.getEditor().getSelection(); - return dom["a" /* default */].closest(range.startContainer, 'li'); -} - -/* harmony default export */ var wysiwygCommands_outdent = (outdent_Outdent); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/task.js -/** - * @fileoverview Implements Task WysiwygCommand - * @author NHN FE Development Lab - */ - - -/** - * Task - * Add Task to selected wysiwyg editor content - * @extends Command - * @module wysiwygCommands/Task - * @ignore - */ - -var task_Task = commandManager["a" /* default */].command('wysiwyg', -/** @lends Task */ -{ - name: 'Task', - keyMap: ['ALT+T', 'ALT+T'], - - /** - * Command Handler - * @param {WysiwygEditor} wwe WYSIWYGEditor instance - */ - exec: function exec(wwe) { - var sq = wwe.getEditor(); - var range = sq.getSelection(); - var listManager = wwe.componentManager.getManager('list'); - var startContainer = range.startContainer, - endContainer = range.endContainer, - startOffset = range.startOffset, - endOffset = range.endOffset; - var newLIs = []; - wwe.focus(); - sq.saveUndoState(range); - - if (listManager.isAvailableMakeListInTable()) { - newLIs = listManager.createListInTable(range, 'TASK'); - } else { - var lines = listManager.getLinesOfSelection(startContainer, endContainer); - - for (var i = 0; i < lines.length; i += 1) { - var newLI = this._changeFormatToTaskIfNeed(wwe, lines[i]); - - if (newLI) { - newLIs.push(newLI); - } - } - } - - if (newLIs.length) { - listManager.adjustRange(startContainer, endContainer, startOffset, endOffset, newLIs); - } - }, - - /** - * Change format to unordered list and return current li element if need - * @param {WysiwygEditor} wwe Wysiwyg editor instance - * @param {HTMLElement} target Element target for change - * @returns {HTMLElement} newly created list - * @private - */ - _changeFormatToTaskIfNeed: function _changeFormatToTaskIfNeed(wwe, target) { - var sq = wwe.getEditor(); - var range = sq.getSelection(); - var taskManager = wwe.componentManager.getManager('task'); - var newLI; - - if (!sq.hasFormat('PRE')) { - range.setStart(target, 0); - range.collapse(true); - sq.setSelection(range); - - if (!sq.hasFormat('li')) { - sq.makeUnorderedList(); - target = sq.getSelection().startContainer; - } - - if (hasClass_default()(target, 'task-list-item')) { - taskManager.unformatTask(target); - } else { - taskManager.formatTask(target); - } - - newLI = sq.getSelection().startContainer; - } - - return newLI; - } -}); -/* harmony default export */ var wysiwygCommands_task = (task_Task); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/code.js -/** - * @fileoverview Implements code WysiwygCommand - * @author NHN FE Development Lab - */ - - -/** - * Code - * Add bold to selected wysiwyg editor content - * @extends Command - * @module wysiwygCommands/Code - * @ignore - */ - -var code_Code = commandManager["a" /* default */].command('wysiwyg', -/** @lends Code */ -{ - name: 'Code', - keyMap: ['SHIFT+CTRL+C', 'SHIFT+META+C'], - - /** - * command handler - * @param {WysiwygEditor} wwe wysiwygEditor instance - */ - exec: function exec(wwe) { - var sq = wwe.getEditor(); - var tableSelectionManager = wwe.componentManager.getManager('tableSelection'); - - var _styleCode = styleCode.bind(null, wwe.getEditor()); - - wwe.focus(); - - if (sq.hasFormat('table') && tableSelectionManager.getSelectedCells().length) { - tableSelectionManager.styleToSelectedCells(_styleCode); - var range = sq.getSelection(); - range.collapse(true); - sq.setSelection(range); - } else { - _styleCode(sq); - } - } -}); -/** - * removeUnnecessaryCodeInNextToRange - * Remove unnecessary code tag next to range, code tag made by squire - * @param {Range} range range object - */ - -function removeUnnecessaryCodeInNextToRange(range) { - if (dom["a" /* default */].getNodeName(range.startContainer.nextSibling) === 'CODE' && dom["a" /* default */].getTextLength(range.startContainer.nextSibling) === 0) { - dom["a" /* default */].remove(range.startContainer.nextSibling); - } -} -/** - * Style code. - * @param {object} editor - editor instance - * @param {object} sq - squire editor instance - */ - - -function styleCode(editor, sq) { - if (!sq.hasFormat('PRE') && sq.hasFormat('code')) { - sq.changeFormat(null, { - tag: 'code' - }); - removeUnnecessaryCodeInNextToRange(editor.getSelection().cloneRange()); - } else if (!sq.hasFormat('a') && !sq.hasFormat('PRE')) { - if (sq.hasFormat('b')) { - sq.removeBold(); - } else if (sq.hasFormat('i')) { - sq.removeItalic(); - } - - sq.changeFormat({ - tag: 'code' - }); - var range = sq.getSelection().cloneRange(); - range.setStart(range.endContainer, range.endOffset); - range.collapse(true); - sq.setSelection(range); - } -} - -/* harmony default export */ var wysiwygCommands_code = (code_Code); -// CONCATENATED MODULE: ./src/js/wysiwygCommands/codeBlock.js -/** - * @fileoverview Implements code block WysiwygCommand - * @author NHN FE Development Lab - */ - - - -var CODEBLOCK_CLASS_TEMP = 'te-content-codeblock-temp'; -var codeBlock_CODEBLOCK_ATTR_NAME = 'data-te-codeblock'; -/** - * CodeBlock - * Add CodeBlock to wysiwygEditor - * @extends Command - * @module wysiwygCommands/Codeblock - * @ignore - */ - -var codeBlock_CodeBlock = commandManager["a" /* default */].command('wysiwyg', -/** @lends CodeBlock */ -{ - name: 'CodeBlock', - keyMap: ['SHIFT+CTRL+P', 'SHIFT+META+P'], - - /** - * Command handler - * @param {WysiwygEditor} wwe wysiwygEditor instance - * @param {string} type of language - */ - exec: function exec(wwe, type) { - var sq = wwe.getEditor(); - var range = sq.getSelection().cloneRange(); - - if (!sq.hasFormat('PRE') && !sq.hasFormat('TABLE')) { - var attr = codeBlock_CODEBLOCK_ATTR_NAME + " class = \"" + CODEBLOCK_CLASS_TEMP + "\""; - - if (type) { - attr += " data-language=\"" + type + "\""; - } - - var codeBlockBody = getCodeBlockBody(range, wwe); - sq.insertHTML("
    " + codeBlockBody + "
    "); - focusToFirstCode(wwe.getBody().querySelector("." + CODEBLOCK_CLASS_TEMP), wwe); - } - - wwe.focus(); - } -}); -/** - * focusToFirstCode - * Focus to first code tag content of pre tag - * @param {HTMLElement} pre pre tag - * @param {WysiwygEditor} wwe wysiwygEditor - */ - -function focusToFirstCode(pre, wwe) { - var range = wwe.getEditor().getSelection().cloneRange(); - removeClass_default()(pre, CODEBLOCK_CLASS_TEMP); - range.setStartBefore(pre.firstChild); - range.collapse(true); - wwe.getEditor().setSelection(range); -} -/** - * getCodeBlockBody - * get text wrapped by code - * @param {object} range range object - * @param {object} wwe wysiwyg editor - * @returns {string} - */ - - -function getCodeBlockBody(range, wwe) { - var mgr = wwe.componentManager.getManager('codeblock'); - var codeBlock; - - if (range.collapsed) { - codeBlock = '
    '; - } else { - var contents = range.extractContents(); - var nodes = toArray_default()(contents.childNodes); - var tempDiv = document.createElement('div'); - tempDiv.appendChild(mgr.prepareToPasteOnCodeblock(nodes)); - codeBlock = tempDiv.innerHTML; - } - - return codeBlock; -} - -/* harmony default export */ var wysiwygCommands_codeBlock = (codeBlock_CodeBlock); -// CONCATENATED MODULE: ./src/js/scroll/animation.js -var ANIMATION_TIME = 200; -var SCROLL_BOCKING_RESET_DELAY = 15; -var currentTimeoutId = null; -var releaseTimer = null; - -function run(deltaScrollTop, _ref) { - var syncScrollTop = _ref.syncScrollTop, - releaseEventBlock = _ref.releaseEventBlock; - clearTimeout(releaseTimer); - syncScrollTop(deltaScrollTop); - releaseTimer = setTimeout(function () { - releaseEventBlock(); - }, SCROLL_BOCKING_RESET_DELAY); -} - -function animate(sourceScrollTop, targetScrollTop, callbackObjForSync) { - var diff = targetScrollTop - sourceScrollTop; - var startTime = Date.now(); - /** - * Each animation step - */ - - var step = function step() { - var stepTime = Date.now(); - var progress = (stepTime - startTime) / ANIMATION_TIME; - var deltaValue; // if already doing animation - - if (currentTimeoutId) { - clearTimeout(currentTimeoutId); - } - - if (progress < 1) { - deltaValue = sourceScrollTop + diff * Math.cos((1 - progress) * Math.PI / 2); - run(Math.ceil(deltaValue), callbackObjForSync); - currentTimeoutId = setTimeout(step, 1); - } else { - run(targetScrollTop, callbackObjForSync); - currentTimeoutId = null; - } - }; - - step(); -} -// EXTERNAL MODULE: ./src/js/scroll/helper.js -var helper = __webpack_require__(18); - -// EXTERNAL MODULE: ./src/js/scroll/cache/offsetInfo.js -var offsetInfo = __webpack_require__(24); - -// CONCATENATED MODULE: ./src/js/scroll/editorScroll.js - - - - -var EDITING_POSITION_RATIO = 0.5; -var blockedPreviewScrollEvent = false; -var latestScrollTop = null; -/* eslint-disable no-return-assign */ - -function getAndSaveOffsetHeight(node, mdNodeId) { - var cachedHeight = Object(offsetInfo["a" /* getOffsetHeight */])(mdNodeId); - var offsetHeight = cachedHeight || node.offsetHeight; - - if (!cachedHeight) { - Object(offsetInfo["d" /* setOffsetHeight */])(mdNodeId, offsetHeight); - } - - return offsetHeight; -} - -function getTopInfo(cm, startLine, mdNode, node, previewEl) { - var mdNodeStartLine = Object(markdown["f" /* getMdStartLine */])(mdNode); - var height = cm.lineInfo(startLine).handle.height; - var previewElHeight = getAndSaveOffsetHeight(previewEl, 0); - var top = node.getBoundingClientRect().top - previewEl.getBoundingClientRect().top; // position editing node on middle of preview as default - - var additionalScrollTop = -previewElHeight * EDITING_POSITION_RATIO; - - if (Object(markdown["j" /* isMultiLineNode */])(mdNode)) { - var additionalTopPos = (startLine - mdNodeStartLine + 1) * height; - additionalScrollTop = additionalTopPos; - top += additionalTopPos; - } - - return { - top: top, - additionalScrollTop: additionalScrollTop - }; -} - -function syncPreviewScrollTopToMarkdown(editor, preview, scrollEvent) { - var root = preview._previewContent, - previewEl = preview.el; - var cm = editor.cm, - toastMark = editor.toastMark; - - var _cm$getScrollInfo = cm.getScrollInfo(), - left = _cm$getScrollInfo.left, - scrollTop = _cm$getScrollInfo.top, - height = _cm$getScrollInfo.height, - clientHeight = _cm$getScrollInfo.clientHeight; - - var isBottomPos = height - scrollTop <= clientHeight; - var sourceScrollTop = previewEl.scrollTop; - var targetScrollTop = isBottomPos ? previewEl.scrollHeight : 0; - - if (scrollTop && !isBottomPos) { - var _ref = scrollEvent ? cm.coordsChar({ - left: left, - top: scrollTop - }, 'local') : cm.getCursor('from'), - startLine = _ref.line; - - var firstMdNode = toastMark.findFirstNodeAtLine(startLine + 1); - - if (!firstMdNode || Object(markdown["g" /* isHtmlNode */])(firstMdNode)) { - return; - } // if DOM element does not exist, should get its parent node using markdown node - // in case of text node, rendererd DOM element is not matched to markdown node - - - var nodeObj = Object(helper["f" /* getParentNodeObj */])(firstMdNode); - var node = nodeObj.node, - mdNode = nodeObj.mdNode; - var mdNodeStartLine = Object(markdown["f" /* getMdStartLine */])(mdNode); - var previewElHeight = getAndSaveOffsetHeight(previewEl, 0); - targetScrollTop = Object(helper["g" /* getTotalOffsetTop */])(node, root) || node.offsetTop; - - if (!scrollEvent) { - var _getTopInfo = getTopInfo(cm, startLine, mdNode, node, previewEl), - top = _getTopInfo.top, - additionalScrollTop = _getTopInfo.additionalScrollTop; - - if (top > 0 && top < previewElHeight) { - return; - } - - targetScrollTop += additionalScrollTop; // assign the null to sync scrollTop position when scrolling - - latestScrollTop = null; - } else if (Object(helper["h" /* isNodeToBeCalculated */])(mdNode)) { - var offsetHeight = getAndSaveOffsetHeight(node, mdNode.id); - var offsetTop = cm.heightAtLine(mdNodeStartLine - 1, 'local'); - var cmNodeHeight = Object(helper["c" /* getCmRangeHeight */])(mdNode, cm); - targetScrollTop += Object(helper["b" /* getAdditionalTopPos */])(scrollTop, offsetTop, cmNodeHeight, offsetHeight); - var scrollTopInfo = { - latestScrollTop: latestScrollTop, - scrollTop: scrollTop, - targetScrollTop: targetScrollTop, - sourceScrollTop: sourceScrollTop - }; - targetScrollTop = Object(helper["d" /* getFallbackScrollTop */])(scrollTopInfo); - latestScrollTop = scrollTop; - - if (targetScrollTop === sourceScrollTop) { - return; - } - } - } - - blockedPreviewScrollEvent = true; - var callbackObjForSync = { - syncScrollTop: function syncScrollTop(deltaScrollTop) { - return previewEl.scrollTop = deltaScrollTop; - }, - releaseEventBlock: function releaseEventBlock() { - return blockedPreviewScrollEvent = false; - } - }; - animate(sourceScrollTop, targetScrollTop, callbackObjForSync); -} -function isBlockedPreviewScrollEvent() { - return blockedPreviewScrollEvent; -} -// CONCATENATED MODULE: ./src/js/scroll/previewScroll.js - - - - -var blockedMarkdownScrollEvent = false; -var previewScroll_latestScrollTop = null; -/* eslint-disable no-return-assign */ - -function getAndSaveOffsetInfo(node, mdNodeId, root) { - var cachedHeight = Object(offsetInfo["a" /* getOffsetHeight */])(mdNodeId); - var cachedTop = Object(offsetInfo["b" /* getOffsetTop */])(mdNodeId); - var offsetHeight = cachedHeight || node.offsetHeight; - var offsetTop = cachedTop || Object(helper["g" /* getTotalOffsetTop */])(node, root) || node.offsetTop; - - if (!cachedHeight) { - Object(offsetInfo["d" /* setOffsetHeight */])(mdNodeId, offsetHeight); - } - - if (!cachedTop) { - Object(offsetInfo["e" /* setOffsetTop */])(mdNodeId, offsetTop); - } - - return { - offsetHeight: offsetHeight, - offsetTop: offsetTop - }; -} - -function getAncestorHavingId(node, root) { - while (!node.getAttribute('data-nodeid') && node.parentElement !== root) { - node = node.parentElement; - } - - return node; -} - -function syncMarkdownScrollTopToPreview(editor, preview, targetNode) { - var toastMark = editor.toastMark, - cm = editor.cm; - var _preview$el = preview.el, - scrollTop = _preview$el.scrollTop, - clientHeight = _preview$el.clientHeight, - scrollHeight = _preview$el.scrollHeight; - var root = preview._previewContent; - var isBottomPos = scrollHeight - scrollTop <= clientHeight; - - var _cm$getScrollInfo = cm.getScrollInfo(), - left = _cm$getScrollInfo.left, - sourceScrollTop = _cm$getScrollInfo.top, - height = _cm$getScrollInfo.height; - - var targetScrollTop = isBottomPos ? height : 0; - - if (scrollTop && targetNode && !isBottomPos) { - targetNode = getAncestorHavingId(targetNode, root); - - if (!targetNode.getAttribute('data-nodeid')) { - return; - } - - var _cm$coordsChar = cm.coordsChar({ - left: left, - top: sourceScrollTop - }, 'local'), - startLine = _cm$coordsChar.line; - - var mdNodeId = Number(targetNode.getAttribute('data-nodeid')); - - var _getParentNodeObj = Object(helper["f" /* getParentNodeObj */])(toastMark.findNodeById(mdNodeId)), - mdNode = _getParentNodeObj.mdNode, - node = _getParentNodeObj.node; - - var mdNodeStartLine = Object(markdown["f" /* getMdStartLine */])(mdNode); - targetScrollTop = cm.heightAtLine(mdNodeStartLine - 1, 'local'); - - if (Object(markdown["i" /* isListItemNode */])(mdNode)) { - targetScrollTop += Object(helper["e" /* getNextEmptyLineHeight */])(cm, mdNodeStartLine, startLine); - } - - if (Object(helper["h" /* isNodeToBeCalculated */])(mdNode)) { - var cmNodeHeight = Object(helper["c" /* getCmRangeHeight */])(mdNode, cm); - - var _getAndSaveOffsetInfo = getAndSaveOffsetInfo(node, mdNodeId, root), - offsetHeight = _getAndSaveOffsetInfo.offsetHeight, - offsetTop = _getAndSaveOffsetInfo.offsetTop; - - targetScrollTop += Object(helper["b" /* getAdditionalTopPos */])(scrollTop, offsetTop, offsetHeight, cmNodeHeight); - var scrollTopInfo = { - latestScrollTop: previewScroll_latestScrollTop, - scrollTop: scrollTop, - targetScrollTop: targetScrollTop, - sourceScrollTop: sourceScrollTop - }; - targetScrollTop = Object(helper["d" /* getFallbackScrollTop */])(scrollTopInfo); - previewScroll_latestScrollTop = scrollTop; - - if (targetScrollTop === sourceScrollTop) { - return; - } - } - } - - blockedMarkdownScrollEvent = true; - var callbackObjForSync = { - syncScrollTop: function syncScrollTop(deltaScrollTop) { - return cm.scrollTo(0, deltaScrollTop); - }, - releaseEventBlock: function releaseEventBlock() { - return blockedMarkdownScrollEvent = false; - } - }; - animate(sourceScrollTop, targetScrollTop, callbackObjForSync); -} -function isBlockedMarkdownScrollEvent() { - return blockedMarkdownScrollEvent; -} -// CONCATENATED MODULE: ./src/js/scroll/ui/button.js - -var button_className = 'tui-scrollsync'; -var activeClassName = 'tui-scrollsync active'; -var active = true; -function isActive() { - return active; -} -function createButton(editor) { - if (editor.isViewer() || editor.getUI().name !== 'default') { - return; - } - - var i18n = editor.i18n; - var tooltip = { - ACTIVE: i18n.get('Auto scroll enabled'), - INACTIVE: i18n.get('Auto scroll disabled') - }; - var toolbar = editor.getUI().getToolbar(); - var buttonEl = document.createElement('button'); - buttonEl.className = activeClassName; - toolbar.addItem('divider'); - toolbar.addItem({ - type: 'button', - options: { - command: 'scrollSyncToggle', - tooltip: tooltip.ACTIVE, - el: buttonEl - } - }); - var items = toolbar.getItems(); - var divider = items[items.length - 2].el; - var button = items[items.length - 1]; - changeButtonVisiblityStateIfNeed(editor, button, divider); - addEventListener(editor, button, divider); - addEditorCommand(editor, button, tooltip); -} - -function addEventListener(editor, button, divider) { - // hide scroll follow button in wysiwyg - editor.on('changeMode', function () { - return changeButtonVisiblityStateIfNeed(editor, button, divider); - }); - editor.on('changePreviewStyle', function () { - return changeButtonVisiblityStateIfNeed(editor, button, divider); - }); -} - -function addEditorCommand(editor, button, tooltip) { - // Commands - editor.addCommand('markdown', { - name: 'scrollSyncToggle', - exec: function exec() { - active = !active; - - button._onOut(); - - if (active) { - button.el.className = activeClassName; - button.setTooltip(tooltip.ACTIVE); - } else { - button.el.className = button_className; - button.setTooltip(tooltip.INACTIVE); - } - - button._onOver(); - } - }); -} - -function changeButtonVisiblityStateIfNeed(editor, button, divider) { - if (editor.mdPreviewStyle === 'vertical' && editor.currentMode === 'markdown') { - css_default()(button.el, { - display: 'inline-block' - }); - css_default()(divider, { - display: 'inline-block' - }); - } else { - css_default()(button.el, { - display: 'none' - }); - css_default()(divider, { - display: 'none' - }); - } -} -// CONCATENATED MODULE: ./src/js/scroll/sync.js - - - -var isScrollable = true; -/* eslint-disable no-return-assign */ - -function register(editor) { - var mdEditor = editor.mdEditor, - preview = editor.preview; - createButton(editor); - addScrollEvent(mdEditor, preview); - addPreviewRenderedEvent(mdEditor, preview); - mdEditor.cm.on('change', function () { - return isScrollable = false; - }); -} - -function addPreviewRenderedEvent(editor, preview) { - editor.eventManager.listen('previewRenderAfter', function () { - // Immediately after the 'previewRenderAfter' event has occurred, - // browser rendering is not yet complete. - // So the size of elements can not be accurately measured. - setTimeout(function () { - if (isActive()) { - syncPreviewScrollTopToMarkdown(editor, preview); - } - - isScrollable = true; - }, 200); - }); -} - -function addScrollEvent(editor, preview) { - var eventManager = editor.eventManager; - eventManager.listen('scroll', function (_ref) { - var source = _ref.source, - data = _ref.data; - - if (!isActive()) { - return; - } - - if (isScrollable && preview.isVisible()) { - if (source === 'markdown' && !isBlockedMarkdownScrollEvent()) { - syncPreviewScrollTopToMarkdown(editor, preview, true); - } else if (source === 'preview' && !isBlockedPreviewScrollEvent()) { - syncMarkdownScrollTopToPreview(editor, preview, data); - } - } - }); -} -// CONCATENATED MODULE: ./src/js/editor.js -function editor_extends() { editor_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return editor_extends.apply(this, arguments); } - -/** - * @fileoverview Implements Editor - * @author NHN FE Development Lab - */ - - - - - - - - - - - - - - - - - - - - - - - - - - - // markdown commands - - - - - - - - - - - - - - - - - - - - - - - // wysiwyg Commands - - - - - - - - - - - - - - - - - - - - - - - - - - -var __nedInstance = []; -/** - * @callback addImageBlobHook - * @param {File|Blob} fileOrBlob - image blob - * @param {callback} callback - callback function to be called after - * @param {string} source - source of an event the item belongs to. 'paste', 'drop', 'ui' - */ - -/** - * ToastUI Editor - * @param {Object} options Option object - * @param {HTMLElement} options.el - container element - * @param {string} [options.height='300px'] - Editor's height style value. Height is applied as border-box ex) '300px', '100%', 'auto' - * @param {string} [options.minHeight='200px'] - Editor's min-height style value in pixel ex) '300px' - * @param {string} [options.initialValue] - Editor's initial value - * @param {string} [options.previewStyle] - Markdown editor's preview style (tab, vertical) - * @param {boolean} [options.previewHighlight = true] - Highlight a preview element corresponds to the cursor position in the markdwon editor - * @param {string} [options.initialEditType] - Initial editor type (markdown, wysiwyg) - * @param {Object} [options.events] - Events - * @param {function} [options.events.load] - It would be emitted when editor fully load - * @param {function} [options.events.change] - It would be emitted when content changed - * @param {function} [options.events.stateChange] - It would be emitted when format change by cursor position - * @param {function} [options.events.focus] - It would be emitted when editor get focus - * @param {function} [options.events.blur] - It would be emitted when editor loose focus - * @param {Object} [options.hooks] - Hooks - * @param {function} [options.hooks.previewBeforeHook] - Submit preview to hook URL before preview be shown - * @param {addImageBlobHook} [options.hooks.addImageBlobHook] - hook for image upload - * @param {string} [options.language='en-US'] - language - * @param {boolean} [options.useCommandShortcut=true] - whether use keyboard shortcuts to perform commands - * @param {boolean} [options.useDefaultHTMLSanitizer=true] - use default htmlSanitizer - * @param {boolean} [options.usageStatistics=true] - send hostname to google analytics - * @param {Array.} [options.toolbarItems] - toolbar items. - * @param {boolean} [options.hideModeSwitch=false] - hide mode switch tab bar - * @param {Array.} [options.plugins] - Array of plugins. A plugin can be either a function or an array in the form of [function, options]. - * @param {Object} [options.extendedAutolinks] - Using extended Autolinks specified in GFM spec - * @param {Object} [options.customConvertor] - convertor extention - * @param {string} [options.placeholder] - The placeholder text of the editable element. - * @param {Object} [options.linkAttribute] - Attributes of anchor element that should be rel, target, contenteditable, hreflang, type - * @param {Object} [options.customHTMLRenderer] - Object containing custom renderer functions correspond to markdown node - * @param {boolean} [options.referenceDefinition=false] - whether use the specification of link reference definition - * @param {function} [options.customHTMLSanitizer=null] - custom HTML sanitizer - * @param {boolean} [options.frontMatter=false] - whether use the front matter - */ - -var editor_ToastUIEditor = /*#__PURE__*/function () { - function ToastUIEditor(options) { - var _this = this; - - this.initialHtml = options.el.innerHTML; - options.el.innerHTML = ''; - this.options = extend_default()({ - previewStyle: 'tab', - previewHighlight: true, - initialEditType: 'markdown', - height: '300px', - minHeight: '200px', - language: 'en-US', - useDefaultHTMLSanitizer: true, - useCommandShortcut: true, - usageStatistics: true, - toolbarItems: ['heading', 'bold', 'italic', 'strike', 'divider', 'hr', 'quote', 'divider', 'ul', 'ol', 'task', 'indent', 'outdent', 'divider', 'table', 'image', 'link', 'divider', 'code', 'codeblock'], - hideModeSwitch: false, - linkAttribute: null, - extendedAutolinks: false, - customConvertor: null, - customHTMLRenderer: null, - referenceDefinition: false, - customHTMLSanitizer: null, - frontMatter: false - }, options); - this.codeBlockLanguages = []; - this.eventManager = new js_eventManager["a" /* default */](); - this.importManager = new importManager(this.eventManager); - this.commandManager = new commandManager["a" /* default */](this, { - useCommandShortcut: this.options.useCommandShortcut - }); - var linkAttribute = Object(utils_common["c" /* sanitizeLinkAttribute */])(this.options.linkAttribute); - - var _getPluginInfo = Object(pluginHelper["a" /* getPluginInfo */])(this.options.plugins), - renderer = _getPluginInfo.renderer, - parser = _getPluginInfo.parser, - plugins = _getPluginInfo.plugins; - - var _this$options = this.options, - customHTMLRenderer = _this$options.customHTMLRenderer, - customHTMLSanitizer = _this$options.customHTMLSanitizer, - extendedAutolinks = _this$options.extendedAutolinks, - referenceDefinition = _this$options.referenceDefinition, - useDefaultHTMLSanitizer = _this$options.useDefaultHTMLSanitizer, - frontMatter = _this$options.frontMatter; - var rendererOptions = { - linkAttribute: linkAttribute, - customHTMLRenderer: editor_extends({}, renderer, customHTMLRenderer), - extendedAutolinks: extendedAutolinks, - referenceDefinition: referenceDefinition, - customParser: parser, - frontMatter: frontMatter, - customProp: { - showFrontMatter: frontMatter - } - }; - - if (this.options.customConvertor) { - // eslint-disable-next-line new-cap - this.convertor = new this.options.customConvertor(this.eventManager, rendererOptions); - } else { - this.convertor = new convertor["a" /* default */](this.eventManager, rendererOptions); - } - - var sanitizer = customHTMLSanitizer || (useDefaultHTMLSanitizer ? htmlSanitizer["a" /* default */] : null); - - if (sanitizer) { - this.convertor.initHtmlSanitizer(sanitizer); - } - - if (this.options.hooks) { - forEachOwnProperties_default()(this.options.hooks, function (fn, key) { - return _this.addHook(key, fn); - }); - } - - if (this.options.events) { - forEachOwnProperties_default()(this.options.events, function (fn, key) { - return _this.on(key, fn); - }); - } - - this.layout = new js_layout(options, this.eventManager); - this.i18n = i18n; - this.i18n.setCode(this.options.language); - this.setUI(this.options.UI || new defaultUI(this)); - this.toastMark = new toastmark["ToastMark"]('', { - disallowedHtmlBlockTags: ['br'], - extendedAutolinks: extendedAutolinks, - referenceDefinition: referenceDefinition, - disallowDeepHeading: true, - customParser: parser, - frontMatter: frontMatter - }); - this.mdEditor = markdownEditor.factory(this.layout.getMdEditorContainerEl(), this.eventManager, this.toastMark, this.options); - this.preview = new mdPreview["a" /* default */](this.layout.getPreviewEl(), this.eventManager, this.convertor, editor_extends({}, rendererOptions, { - isViewer: false, - highlight: this.options.previewHighlight - })); - this.wwEditor = wysiwygEditor.factory(this.layout.getWwEditorContainerEl(), this.eventManager, { - sanitizer: sanitizer, - linkAttribute: linkAttribute - }); - this.toMarkOptions = { - gfm: true, - renderer: toMarkRenderer - }; - - if (plugins) { - Object(pluginHelper["b" /* invokePlugins */])(plugins, this); - } - - this.changePreviewStyle(this.options.previewStyle); - this.changeMode(this.options.initialEditType, true); - this.minHeight(this.options.minHeight); - this.height(this.options.height); - this.setMarkdown(this.options.initialValue, false); - - if (this.options.placeholder) { - this.setPlaceholder(this.options.placeholder); - } - - if (!this.options.initialValue) { - this.setHtml(this.initialHtml, false); - } - - this.eventManager.emit('load', this); - - __nedInstance.push(this); - - this._addDefaultCommands(); - - if (this.options.usageStatistics) { - Object(utils_common["d" /* sendHostName */])(); - } - - register(this); - } - /** - * change preview style - * @param {string} style - 'tab'|'vertical' - */ - - - var _proto = ToastUIEditor.prototype; - - _proto.changePreviewStyle = function changePreviewStyle(style) { - this.layout.changePreviewStyle(style); - this.mdPreviewStyle = style; - this.eventManager.emit('changePreviewStyle', style); - this.eventManager.emit('previewNeedsRefresh', this.getMarkdown()); - } - /** - * call commandManager's exec method - * @param {*} ...args Command argument - */ - ; - - _proto.exec = function exec() { - var _this$commandManager; - - (_this$commandManager = this.commandManager).exec.apply(_this$commandManager, arguments); - } - /** - * add default commands - * @private - */ - ; - - _proto._addDefaultCommands = function _addDefaultCommands() { - this.addCommand(bold); - this.addCommand(italic); - this.addCommand(blockquote); - this.addCommand(markdownCommands_heading); - this.addCommand(paragraph); - this.addCommand(markdownCommands_hr); - this.addCommand(addLink); - this.addCommand(addImage); - this.addCommand(markdownCommands_ul); - this.addCommand(ol); - this.addCommand(markdownCommands_indent); - this.addCommand(outdent); - this.addCommand(markdownCommands_table); - this.addCommand(markdownCommands_task); - this.addCommand(markdownCommands_code); - this.addCommand(markdownCommands_codeBlock); - this.addCommand(strike); - this.addCommand(changeTaskMarker); - this.addCommand(toggleTaskMarker); - this.addCommand(moveNextCursorOrIndent); - this.addCommand(movePrevCursorOrOutdent); - this.addCommand(addLine); - this.addCommand(wysiwygCommands_bold); - this.addCommand(wysiwygCommands_italic); - this.addCommand(wysiwygCommands_blockquote); - this.addCommand(wysiwygCommands_ul); - this.addCommand(wysiwygCommands_ol); - this.addCommand(wysiwygCommands_addImage); - this.addCommand(wysiwygCommands_addLink); - this.addCommand(wysiwygCommands_hr); - this.addCommand(wysiwygCommands_heading); - this.addCommand(wysiwygCommands_paragraph); - this.addCommand(wysiwygCommands_indent); - this.addCommand(wysiwygCommands_outdent); - this.addCommand(wysiwygCommands_task); - this.addCommand(wysiwygCommands_table); - this.addCommand(tableAddRow); - this.addCommand(tableAddCol); - this.addCommand(tableRemoveRow); - this.addCommand(tableRemoveCol); - this.addCommand(tableAlignCol); - this.addCommand(tableRemove); - this.addCommand(wysiwygCommands_code); - this.addCommand(wysiwygCommands_codeBlock); - this.addCommand(wysiwygCommands_strike); - }; - - _proto.addCommand = function addCommand(type, props) { - if (!props) { - this.commandManager.addCommand(type); - } else { - this.commandManager.addCommand(commandManager["a" /* default */].command(type, props)); - } - } - /** - * After added command. - */ - ; - - _proto.afterAddedCommand = function afterAddedCommand() { - this.eventManager.emit('afterAddedCommand', this); - } - /** - * Bind eventHandler to event type - * @param {string} type Event type - * @param {function} handler Event handler - */ - ; - - _proto.on = function on(type, handler) { - this.eventManager.listen(type, handler); - } - /** - * Unbind eventHandler from event type - * @param {string} type Event type - */ - ; - - _proto.off = function off(type) { - this.eventManager.removeEventHandler(type); - } - /** - * Add hook to TUIEditor event - * @param {string} type Event type - * @param {function} handler Event handler - */ - ; - - _proto.addHook = function addHook(type, handler) { - this.eventManager.removeEventHandler(type); - this.eventManager.listen(type, handler); - } - /** - * Remove hook from TUIEditor event - * @param {string} type Event type - */ - ; - - _proto.removeHook = function removeHook(type) { - this.eventManager.removeEventHandler(type); - } - /** - * Get CodeMirror instance - * @returns {CodeMirror} - */ - ; - - _proto.getCodeMirror = function getCodeMirror() { - return this.mdEditor.getEditor(); - } - /** - * Get SquireExt instance - * @returns {SquireExt} - */ - ; - - _proto.getSquire = function getSquire() { - return this.wwEditor.getEditor(); - } - /** - * Set focus to current Editor - */ - ; - - _proto.focus = function focus() { - this.getCurrentModeEditor().focus(); - } - /** - * Remove focus of current Editor - */ - ; - - _proto.blur = function blur() { - this.getCurrentModeEditor().blur(); - } - /** - * Set cursor position to end - */ - ; - - _proto.moveCursorToEnd = function moveCursorToEnd() { - this.getCurrentModeEditor().moveCursorToEnd(); - } - /** - * Set cursor position to start - */ - ; - - _proto.moveCursorToStart = function moveCursorToStart() { - this.getCurrentModeEditor().moveCursorToStart(); - } - /** - * Set markdown syntax text. - * @param {string} markdown - markdown syntax text. - * @param {boolean} [cursorToEnd=true] - move cursor to contents end - */ - ; - - _proto.setMarkdown = function setMarkdown(markdown, cursorToEnd) { - if (cursorToEnd === void 0) { - cursorToEnd = true; - } - - markdown = markdown || ''; - - if (this.isMarkdownMode()) { - this.mdEditor.setValue(markdown, cursorToEnd); - } else { - this.wwEditor.setValue(this.convertor.toHTML(markdown), cursorToEnd); - } - - this.eventManager.emit('setMarkdownAfter', markdown); - } - /** - * Set html value. - * @param {string} html - html syntax text - * @param {boolean} [cursorToEnd=true] - move cursor to contents end - */ - ; - - _proto.setHtml = function setHtml(html, cursorToEnd) { - if (cursorToEnd === void 0) { - cursorToEnd = true; - } - - html = html || ''; - this.wwEditor.setValue(html, cursorToEnd); - - if (this.isMarkdownMode()) { - var markdown = this.convertor.toMarkdown(this.wwEditor.getValue(), this.toMarkOptions); - this.mdEditor.setValue(markdown, cursorToEnd); - this.eventManager.emit('setMarkdownAfter', markdown); - } - } - /** - * Get markdown syntax text. - * @returns {string} - */ - ; - - _proto.getMarkdown = function getMarkdown() { - var markdown; - - if (this.isMarkdownMode()) { - markdown = this.mdEditor.getValue(); - } else { - markdown = this.convertor.toMarkdown(this.wwEditor.getValue(), this.toMarkOptions); - } - - return markdown; - } - /** - * Get html syntax text. - * @returns {string} - */ - ; - - _proto.getHtml = function getHtml() { - if (this.isWysiwygMode()) { - this.mdEditor.setValue(this.convertor.toMarkdown(this.wwEditor.getValue(), this.toMarkOptions)); - } - - return this.convertor.toHTML(this.mdEditor.getValue()); - } - /** - * Insert text - * @param {string} text - text string to insert - */ - ; - - _proto.insertText = function insertText(text) { - if (this.isMarkdownMode()) { - this.mdEditor.replaceSelection(text); - } else { - this.wwEditor.insertText(text); - } - } - /** - * Add widget to selection - * @param {Range} selection Current selection - * @param {Node} node widget node - * @param {string} style Adding style "over" or "bottom" - * @param {number} [offset] Offset for adjust position - */ - ; - - _proto.addWidget = function addWidget(selection, node, style, offset) { - this.getCurrentModeEditor().addWidget(selection, node, style, offset); - } - /** - * Set and return edithr height - * @param {string} height - editor height - * @returns {string} editor height - */ - ; - - _proto.height = function height(_height) { - if (isExisty_default()(_height)) { - var el = this.options.el; - - if (_height === 'auto') { - addClass_default()(el, 'auto-height'); - this.minHeight(this.minHeight()); - } else { - removeClass_default()(el, 'auto-height'); - this.minHeight(_height); - } - - if (isNumber_default()(_height)) { - _height = _height + "px"; - } - - css_default()(this.options.el, { - height: _height - }); - this._height = _height; - } - - return this._height; - } - /** - * Set / Get min content height - * @param {string} minHeight - min content height in pixel - * @returns {string} - min height in pixel - */ - ; - - _proto.minHeight = function minHeight(_minHeight) { - if (isExisty_default()(_minHeight)) { - var editorHeight = this._ui.getEditorHeight(); - - var editorSectionHeight = this._ui.getEditorSectionHeight(); - - var diffHeight = editorHeight - editorSectionHeight; - this._minHeight = _minHeight; - _minHeight = parseInt(_minHeight, 10); - _minHeight = Math.max(_minHeight - diffHeight, 0); - this.wwEditor.setMinHeight(_minHeight); - this.mdEditor.setMinHeight(_minHeight); - this.preview.setMinHeight(_minHeight); - } - - return this._minHeight; - } - /** - * Get current editor mode name - * @returns {Object} MarkdownEditor or WysiwygEditor - */ - ; - - _proto.getCurrentModeEditor = function getCurrentModeEditor() { - var editor; - - if (this.isMarkdownMode()) { - editor = this.mdEditor; - } else { - editor = this.wwEditor; - } - - return editor; - } - /** - * Return true if current editor mode is Markdown - * @returns {boolean} - */ - ; - - _proto.isMarkdownMode = function isMarkdownMode() { - return this.currentMode === 'markdown'; - } - /** - * Return true if current editor mode is WYSIWYG - * @returns {boolean} - */ - ; - - _proto.isWysiwygMode = function isWysiwygMode() { - return this.currentMode === 'wysiwyg'; - } - /** - * Return false - * @returns {boolean} - */ - ; - - _proto.isViewer = function isViewer() { - return false; - } - /** - * Get current Markdown editor's preview style - * @returns {string} - */ - ; - - _proto.getCurrentPreviewStyle = function getCurrentPreviewStyle() { - return this.mdPreviewStyle; - } - /** - * Change editor's mode to given mode string - * @param {string} mode - Editor mode name of want to change - * @param {boolean} [isWithoutFocus] - Change mode without focus - */ - ; - - _proto.changeMode = function changeMode(mode, isWithoutFocus) { - if (this.currentMode === mode) { - return; - } - - this.eventManager.emit('changeModeBefore', this.currentMode); - this.currentMode = mode; - - if (this.isWysiwygMode()) { - this.layout.switchToWYSIWYG(); - this.wwEditor.setValue(this.convertor.toHTML(this.mdEditor.getValue()), !isWithoutFocus); - this.eventManager.emit('changeModeToWysiwyg'); - } else { - this.layout.switchToMarkdown(); - this.mdEditor.resetState(); - this.mdEditor.setValue(this.convertor.toMarkdown(this.wwEditor.getValue(), this.toMarkOptions), !isWithoutFocus); - this.getCodeMirror().refresh(); - this.eventManager.emit('changeModeToMarkdown'); - } - - this.eventManager.emit('changeMode', mode); - - if (!isWithoutFocus) { - this.focus(); - } - } - /** - * Remove TUIEditor from document - */ - ; - - _proto.remove = function remove() { - var self = this; - var i = __nedInstance.length - 1; - this.wwEditor.remove(); - this.mdEditor.remove(); - this.layout.remove(); - this.preview.remove(); - - if (this.getUI()) { - this.getUI().remove(); - } - - this.eventManager.emit('removeEditor'); - this.eventManager.events.forEach(function (value, key) { - self.off(key); - }); - this.eventManager = null; - - for (; i >= 0; i -= 1) { - if (__nedInstance[i] === this) { - __nedInstance.splice(i, 1); - } - } - } - /** - * Hide TUIEditor - */ - ; - - _proto.hide = function hide() { - this.eventManager.emit('hide', this); - } - /** - * Show TUIEditor - */ - ; - - _proto.show = function show() { - this.eventManager.emit('show', this); - this.getCodeMirror().refresh(); - } - /** - * Scroll Editor content to Top - * @param {number} value Scroll amount - * @returns {number} - */ - ; - - _proto.scrollTop = function scrollTop(value) { - return this.getCurrentModeEditor().scrollTop(value); - } - /** - * Set UI to private UI property - * @param {UI} UI UI instance - */ - ; - - _proto.setUI = function setUI(UI) { - this._ui = UI; - } - /** - * Get _ui property - * @returns {DefaultUI|UI} - */ - ; - - _proto.getUI = function getUI() { - return this._ui; - } - /** - * Reset TUIEditor - */ - ; - - _proto.reset = function reset() { - this.wwEditor.reset(); - this.mdEditor.reset(); - } - /** - * Get current range - * @returns {{start, end}|Range} - */ - ; - - _proto.getRange = function getRange() { - return this.getCurrentModeEditor().getRange(); - } - /** - * Get text object of current range - * @param {{start, end}|Range} range Range object of each editor - * @returns {MdTextObject|WwTextObject} TextObject class - */ - ; - - _proto.getTextObject = function getTextObject(range) { - return this.getCurrentModeEditor().getTextObject(range); - } - /** - * get selected text - * @returns {string} - selected text - */ - ; - - _proto.getSelectedText = function getSelectedText() { - var range = this.getRange(); - var textObject = this.getTextObject(range); - return textObject.getTextContent() || ''; - } - /** - * Set the placeholder on all editors - * @param {string} placeholder - placeholder to set - */ - ; - - _proto.setPlaceholder = function setPlaceholder(placeholder) { - this.mdEditor.setPlaceholder(placeholder); - this.wwEditor.setPlaceholder(placeholder); - } - /** - * Set code block languages - * @param {Array} languages - code language list - */ - ; - - _proto.setCodeBlockLanguages = function setCodeBlockLanguages(languages) { - var _this2 = this; - - if (languages === void 0) { - languages = []; - } - - languages.forEach(function (lang) { - if (_this2.codeBlockLanguages.indexOf(lang) < 0) { - _this2.codeBlockLanguages.push(lang); - } - }); - this.eventManager.emit('setCodeBlockLanguages', this.codeBlockLanguages); - } - /** - * Get instance of TUIEditor - * @returns {Array} - */ - ; - - ToastUIEditor.getInstances = function getInstances() { - return __nedInstance; - } - /** - * Factory method for Editor - * @param {object} options Option for initialize TUIEditor - * @returns {object} ToastUIEditor or ToastUIEditorViewer - */ - ; - - ToastUIEditor.factory = function factory(options) { - var tuiEditor; - - if (options.viewer) { - tuiEditor = new viewer["a" /* default */](options); - } else { - tuiEditor = new ToastUIEditor(options); - } - - return tuiEditor; - } - /** - * Set language - * @param {string} code - code for I18N language - * @param {object} data - language set - */ - ; - - ToastUIEditor.setLanguage = function setLanguage(code, data) { - i18n.setLanguage(code, data); - }; - - return ToastUIEditor; -}(); // (Not an official API) -// Create a function converting markdown to HTML using the internal parser and renderer. - - -editor_ToastUIEditor._createMarkdownToHTML = createMarkdownToHTML; -/** - * Check whether is viewer (using in plugins) - * @type {boolean} - */ - -editor_ToastUIEditor.isViewer = false; -/** - * CodeBlockManager instance using in plugins - * @type {CodeBlockManager} - * @ignore - */ - -editor_ToastUIEditor.codeBlockManager = codeBlockManager["a" /* default */]; -/** - * WwCodeBlockManager class using in plugins - * @type {Class.} - * @ignore - */ - -editor_ToastUIEditor.WwCodeBlockManager = wwCodeBlockManager; -/** - * WwTableManager class using in plugins - * @type {Class.} - * @ignore - */ - -editor_ToastUIEditor.WwTableManager = wwTableManager; -/** - * WwTableManager class using in plugins - * @type {Class.} - * @ignore - */ - -editor_ToastUIEditor.WwTableSelectionManager = wwTableSelectionManager; -/** - * CommandManager class using in plugins - * @type {Class.} - * @ignore - */ - -editor_ToastUIEditor.CommandManager = commandManager["a" /* default */]; -/* harmony default export */ var js_editor = (editor_ToastUIEditor); -// EXTERNAL MODULE: ./src/css/editor.css -var css_editor = __webpack_require__(50); - -// EXTERNAL MODULE: ./src/css/contents.css -var css_contents = __webpack_require__(51); - -// EXTERNAL MODULE: ./src/css/preview-highlighting.css -var preview_highlighting = __webpack_require__(41); - -// EXTERNAL MODULE: ./src/css/md-syntax-highlighting.css -var md_syntax_highlighting = __webpack_require__(52); - -// CONCATENATED MODULE: ./src/js/i18n/en-us.js -/** - * @fileoverview I18N for English - * @author NHN FE Development Lab - */ - -js_editor.setLanguage(['en', 'en-US'], { - Markdown: 'Markdown', - WYSIWYG: 'WYSIWYG', - Write: 'Write', - Preview: 'Preview', - Headings: 'Headings', - Paragraph: 'Paragraph', - Bold: 'Bold', - Italic: 'Italic', - Strike: 'Strike', - Code: 'Inline code', - Line: 'Line', - Blockquote: 'Blockquote', - 'Unordered list': 'Unordered list', - 'Ordered list': 'Ordered list', - Task: 'Task', - Indent: 'Indent', - Outdent: 'Outdent', - 'Insert link': 'Insert link', - 'Insert CodeBlock': 'Insert codeBlock', - 'Insert table': 'Insert table', - 'Insert image': 'Insert image', - Heading: 'Heading', - 'Image URL': 'Image URL', - 'Select image file': 'Select image file', - Description: 'Description', - OK: 'OK', - More: 'More', - Cancel: 'Cancel', - File: 'File', - URL: 'URL', - 'Link text': 'Link text', - 'Add row': 'Add row', - 'Add col': 'Add col', - 'Remove row': 'Remove row', - 'Remove col': 'Remove col', - 'Align left': 'Align left', - 'Align center': 'Align center', - 'Align right': 'Align right', - 'Remove table': 'Remove table', - 'Would you like to paste as table?': 'Would you like to paste as table?', - 'Text color': 'Text color', - 'Auto scroll enabled': 'Auto scroll enabled', - 'Auto scroll disabled': 'Auto scroll disabled', - 'Choose language': 'Choose language' -}); -// CONCATENATED MODULE: ./src/js/index.js -/** - * @fileoverview entry point for editor - * @author NHN FE Development Lab - */ - - - - - - -/* harmony default export */ var js = __webpack_exports__["default"] = (js_editor); - -/***/ }) -/******/ ])["default"]; -}); \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock index d6699b5198..affc7ef14d 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.3.tgz#26b230021334f7859fbb80f9c379a1192cc3fe97" - integrity sha512-FR1XIiZljhjBuHQKr2kdd0gD82sy8+oVPrJ+BrSKK3N4OsOTpVxZnUhixLeDRv1Lmw3twwmLCEcp8snPix/wPg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.3.tgz#464148bbf641e6988852235f94dc3393131c657e" - integrity sha512-/aXlX5JZ/CYD6KdIBL2V216aNidqxf7ugU9dZPK1FbGSixN805lJVIu766ufEA5xZrMIGPL/O7MZmu+hJyclTA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.4.3" - "@abp/bootstrap" "~4.4.3" - "@abp/bootstrap-datepicker" "~4.4.3" - "@abp/datatables.net-bs4" "~4.4.3" - "@abp/font-awesome" "~4.4.3" - "@abp/jquery-form" "~4.4.3" - "@abp/jquery-validation-unobtrusive" "~4.4.3" - "@abp/lodash" "~4.4.3" - "@abp/luxon" "~4.4.3" - "@abp/malihu-custom-scrollbar-plugin" "~4.4.3" - "@abp/select2" "~4.4.3" - "@abp/sweetalert" "~4.4.3" - "@abp/timeago" "~4.4.3" - "@abp/toastr" "~4.4.3" - -"@abp/aspnetcore.mvc.ui@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.3.tgz#b7c217f23d39793a63baff9a56ff063bb0da3049" - integrity sha512-dVZe5HcKRTg0gfWom7vY70JRZkHm1nFtYWq+ciEPvVqPAClzDEvJucoKiUTzfgmPQO13Yv5/GonTV99MV9sLHg== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.4.tgz#ecaaee9d8af8e14a1c9fa65bf3cb6e56c6a82e99" + integrity sha512-FBctV4JuYnTqCCzA/1EG2wUdTYYcilTNSWvk/4YZkndvu9T5iu48qdac1Gq3Ux8JIFer9D0oAPld0YlweYYOGw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.4.tgz#22191efb159572abbd071e12cce847768721a2ee" + integrity sha512-Fp4OXxaSSsTzDlWlVYksSTKXbXvUdILbJNlk+r03TD7VmJCaNx49BxLyUEhJIyP3SY8oOno1UnsDjygbFHJ0xw== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.4.4" + "@abp/bootstrap" "~4.4.4" + "@abp/bootstrap-datepicker" "~4.4.4" + "@abp/datatables.net-bs4" "~4.4.4" + "@abp/font-awesome" "~4.4.4" + "@abp/jquery-form" "~4.4.4" + "@abp/jquery-validation-unobtrusive" "~4.4.4" + "@abp/lodash" "~4.4.4" + "@abp/luxon" "~4.4.4" + "@abp/malihu-custom-scrollbar-plugin" "~4.4.4" + "@abp/select2" "~4.4.4" + "@abp/sweetalert" "~4.4.4" + "@abp/timeago" "~4.4.4" + "@abp/toastr" "~4.4.4" + +"@abp/aspnetcore.mvc.ui@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.4.tgz#2f8e9488cad566f333d62fa717621477fb7fe658" + integrity sha512-/ngxU+vyUfBfpJ7+4/2Fyo5arUAY+LrjauoH9rkdXxpNjNNKjSUsoVqRAwRc1QMJh3iuUOeJgzx0gtkcE2ihiQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,145 +41,145 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.3.tgz#08fd1642ede232badb62a1536982ad2bfce6c265" - integrity sha512-pwb+3DbLkhuNnjD74UwqZgK5hnoxAFFu8y7qlJEkSiKsLWrKNlJS+PHF1LLifPqXogU1MKwc18AuXnHOEKjzbQ== +"@abp/bootstrap-datepicker@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.4.tgz#f2bddae93c4d126f926e4c9f0b4d41b5638ec4ba" + integrity sha512-WfP8KqMNcwAIyVim0MpyMo7sg1kVd9LzrqeAOdu5nPrJ9iV5N3y/JIw4JUkSaOh/zQPLgZUMg1NEhDHOkbaOHw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.3.tgz#76968df98fd5c6e5d26abea9cea5c9d76646d24e" - integrity sha512-InA3AI1ydkqd7AYz+f9RAag1h/uhFsFAFGIo34jllIeFhG4C59EbkNwdWDk96lNHmt0qutQYydsO6WKPlgnjYA== +"@abp/bootstrap@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.4.tgz#34ff3d94cea5b95fa78acdd5837d36569e0244db" + integrity sha512-fE8MsiUJD7K/lzKCsQ5FUU6KbZL6GORBMUdenm5OAUGpQWKPdLZ8mF2rjNsb2+kQgVQCuei7eYl+6712idCF9A== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.3.tgz#fc79a2eebf37a61a6cc05287b722750000f38522" - integrity sha512-gQ2rNyj1MpYCfLTg7Id/20AH4dqs0XIt/n+WqlgeGoYvEpAm4lakHWL7mxZaDQ+iMI/lVVrBhuzwuQv7xKpEIQ== +"@abp/core@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.4.tgz#e157da92b884d7d9a1e3ba50f65be42c60047d78" + integrity sha512-t3Mu7Bvs0o439CVSx9uxBJ+yTFrt2Pyep9/6Vh6Su+b4aoZeQt6ZTKWeJqUVZ7Y/LMt+AbJ/dtbFHvhV8yVuXg== dependencies: - "@abp/utils" "^4.4.3" + "@abp/utils" "~4.4.4" -"@abp/datatables.net-bs4@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.3.tgz#69d3704d057fe39c3b4aff0654f098fac3a27f49" - integrity sha512-Rs8u9BqaVnA7SYhaP849dVNQjaUdO3y5d95b5hv9kLgxquIEf/FIAmGMc0p9BkCK74SkRJ3WJLlR8DXxLi/tEw== +"@abp/datatables.net-bs4@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.4.tgz#37f4c5664ba1a8c4f5b03e675192f6b0ef66cf1b" + integrity sha512-byccQ1dSzhxpLggDwyPoOSOGF+6lBrr9r+WC3OCzWkBUuD6gXpRzDumjAAgIe12hGfXGDRibuD7Ji3qPLzcHzw== dependencies: - "@abp/datatables.net" "~4.4.3" + "@abp/datatables.net" "~4.4.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.3.tgz#1515dcc2bdc7c65c1f24a366c738e1b21ad05723" - integrity sha512-j0cIadlcIOLb/ZQnbqXi4sMEgyLCFA08GMIljvN6GhBObZjMQh4Eazk/B+a4xw+ATk0rbAW3dJyMx80zpi82cg== +"@abp/datatables.net@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.4.tgz#add4b07eef578dd02f84892bbe495642459c4669" + integrity sha512-+9JHEu71xADrTFIKoujXAO0nwUvAuRU9gJpVuJFg4G6juILbEqARo2mUTXEx+UyqnzhwoRJ0K1VFyBJnCY0R0Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" datatables.net "^1.10.21" -"@abp/font-awesome@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.3.tgz#9b0b03da07245e4458305e54490b4e37cbcc2b40" - integrity sha512-R6s0jcAhmpUTdc4b/NJkfHXbXblmcuTNwiNG/CJJ/QNrVhk7OolzyqR5k/moaBpb4Uaqf5u07Aau24rOH35q5w== +"@abp/font-awesome@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.4.tgz#47ff0c880ceb95382e0b1371912230cd7d7602c8" + integrity sha512-lkuyC7drFfzavkNJNLuQ+EJYTBb5ZlPNPnGFAxEpRyjJuJ5j+n84JxVBXwg+oPOfmZ+hOeEQPA7j7TdcC4EZDQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.3.tgz#3d5760e9ece4984165304fa028a5eb997adc4d9f" - integrity sha512-lk0QYruQVwXhVFYBiIrNx5zqF7fY7PKuGGvPQMHyeNaljvpbuK5FPwkge0y6nToWA4Y7PhSCYBU7xvkBuqEDgA== +"@abp/jquery-form@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.4.tgz#0638484b9318ba98acaf765aac0396f5f523dce5" + integrity sha512-JWN82DzSbSk2vAPQaapv+8PPCN8si4peLoWJAoHTVizAvis3YamdcG+QLYbTCAVKRlh7kiLRgbAAroy3ppbZ7Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.3.tgz#c08e336debe60a119a5abd0cb66032da6ace6b08" - integrity sha512-mfvYChTALH5nmB0docrEkS5/+Yxt6SgbQOjPVuQx5PgqoVscmf2/JvsBnW73/YVdQBkVXs339hoDGPA6K2WR9w== +"@abp/jquery-validation-unobtrusive@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.4.tgz#2ef0ce29eeb9e6aac9a87338a67aab2060b63026" + integrity sha512-XA9s0uzGXjBju1ZS42xd3IWproSxLBdGEZIYoSbVmaxS0YDBa8FqffbNb/fgY9M8dqujZEasDVuQPhXLBRN+jA== dependencies: - "@abp/jquery-validation" "~4.4.3" + "@abp/jquery-validation" "~4.4.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.3.tgz#331f3671e6e37bed4dc737942e8eb2a6d1297722" - integrity sha512-RjKn9xxoYQz0v8yzWcVlbIQYZQTcXgYFX7GMJf04V/QbdU6vsge+5vHKzhcaW5XWL8+GgKHTqqoxbqzdJykaPA== +"@abp/jquery-validation@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.4.tgz#fa71e1729b692b40097175d68caad29ea13d5155" + integrity sha512-vrP/Vpne86GbPnHR8M8PGvm+B9kGd/JJiPzVN/egxEvvBKdw0APGk9R03Tji2Qu8CuZxvPnKzHHBwKRinWX3Ng== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-validation "^1.19.2" -"@abp/jquery@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.3.tgz#9d2dc238596a6e5c878b5be4b1d49e7e8f95aec4" - integrity sha512-BN2KU1mw0hyQD8/61ZOIDM0hyMDkhZix4TOWCQa3s18pWHlBEsjKVnINQlz9J9k4TZEdQP9D3wZmw+XUfZjoIw== +"@abp/jquery@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.4.tgz#cbf5f99562ad5f01c41aa61704b0136c4ad68594" + integrity sha512-0fltJprq9DMHHWeTAN7i8kAcod5czQ48LdjeIY3wuLDWkGgMVcfarECQ9cu7QekMryB0HFdrUjMJHIhxqzxc3Q== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" jquery "~3.6.0" -"@abp/lodash@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.3.tgz#8e936ebc54a9043eee80cb22f3dad5ea8a2306cb" - integrity sha512-QKFjdRd8cEZp7fg9MhuFhD5CP3MBw7CfaJ3yj0W1e5Tx+xtV+rYz4PrOE8/BLb4un7gxqUrEWBgdIzY+lBR7mQ== +"@abp/lodash@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.4.tgz#8abd3986bcf64561ecbc86f23f53677b3c34eda9" + integrity sha512-IyAZHiR1vPYhbla0lTH/iYK38PCR+9wP5zgrWGD0JSP9R642GEEhdeiuzwclv1aNGretg+TSATr+zSWB5V1DYQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" lodash "^4.17.15" -"@abp/luxon@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.3.tgz#bd3328f45714155870bc8a91d41a197a613392b0" - integrity sha512-rPVzSXEy+rJZLIQ10boOq6suQAZQWJyB5P+rvfSx8h9sbRpsQ5fJOX2ShnUUf/+49KHzRRIqy+vrhr1oiE0C8Q== +"@abp/luxon@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.4.tgz#429b28dddbd8fa65c6c58978451d426bb886c5a3" + integrity sha512-pw75sGoQ/d4OaNlmGwt55Eq7AGWXUBuXyrsNQWSJmkPV9AS2s//ZoxZut1Wu/qaKo5DV4VitEW1U21MuKoEZPA== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.3.tgz#194f39ebbabad7853089549a7e19cfd2a7393e98" - integrity sha512-bhME41UsDCPGxnLP+zqH8nsx1uAxRR8tAeBKOJV24Xf8FHEjUQEDBXG0t1PBYGZVn1/0Ugao7Z12G9uZOiZVog== +"@abp/malihu-custom-scrollbar-plugin@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.4.tgz#fea9aa4755993dac45a8ad10938da789ec523518" + integrity sha512-Mgtzpw94SjN91YWPdV/TfvDt5JZNpW6iCHfL2NjfH3sTXCywK/CanmhdQ0FYJCasRWVPTHfQPWydFsnyzHWXRQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.3.tgz#71015901aae117360f876c744903613494800c83" - integrity sha512-s7ArMLq2LC0m1oFcuCJghf5lEnGbq1D8/WaIKGmmD0ERL0g5xMccFlNbXm+Z79MJoTvQFssSLPTLZICjzWPKJw== +"@abp/select2@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.4.tgz#80d0e0b64cec86a3aa069e9086958946f631d2bf" + integrity sha512-8qx0nj9ZHrdnEPccpLhavHu4YnVp0Z5ZyfpfACVS2GgaxsR31DbltlGdnr2IfRyhK8nJWLNsW8UNhSoXQwGYEw== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" select2 "^4.0.13" -"@abp/sweetalert@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.3.tgz#287b9c89f90885742b074b4e3a427f0ec482952d" - integrity sha512-tAEgHMaTe+E+uS+Mt8XV3dt5yJJHg01Zsbp4ojO3wvdoAS6MKRXWdH05u3ZdwRQrJFbSgQjY85vWn/a/PnYRng== +"@abp/sweetalert@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.4.tgz#1af8934290d4e5adb7c620363ef2a9b746a6eeab" + integrity sha512-TgXm4rhqzTghKzgbxDT5NQcQ/PRFkgwJtnNWZK3XDZiKzw0auT8Wa3GtSsJJD5tl3Dx6VfnTtmf0gpPU5/9fKQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" sweetalert "^2.1.2" -"@abp/timeago@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.3.tgz#7d31b9fcc128e9b8c6bb7870c4284427e9f9f383" - integrity sha512-E8FeAraStlYsHz6D1oBrwM5eHhZeCGrP7aA768Ke5UGIZPoYwyIIYLRfK4MCoCLKgTVlRrUn0Dj7Xkj9tWOfBQ== +"@abp/timeago@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.4.tgz#91ddb61439eaa138a42b9179ec92845efb05af29" + integrity sha512-r53FieaMDar60tGAu+NLr2qCem1+NhPgd7MtYEemJil8HUYci7T0fXvWcYhlrn98zipzEx3eiWo4eBwvIP8MLg== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" timeago "^1.6.7" -"@abp/toastr@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.3.tgz#45ef155fdbb6134a50794e456f820671c72e4105" - integrity sha512-dmKYS7iw/a+eWCD+J+nZ1htmGEjJSCsV1H8dDwA+ZxYJrE2/ejUh0LZ+b8Hsvobqfe/6bwYBj6oe0R9+vszCfg== +"@abp/toastr@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.4.tgz#1cd04ad6dfcb866bfaad3ec288407b0bf3f47c41" + integrity sha512-B7Q0Gza71nITTbryHcHqiIxtJzFbVmXeoPlcLlc/i4zvMaoibihevN10vXmPnfkdQUvTgViIjwA4/ZnBmyM11Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" toastr "^2.1.4" -"@abp/utils@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.3.tgz#5d6939be5463adaa938357d74d1a35fed21b0115" - integrity sha512-B2E89fhM7vKDz9He6EeNc9P5RVYThiBLpTkKvJTeXG+DJtrP2ZbEICe1fcDA48wLFokXXKgx/SjoJlMvObhilQ== +"@abp/utils@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.4.tgz#0bd79fa4635224fcae7ff61224a8c54266db73bf" + integrity sha512-h8Nt2OPqi8EiXKAuvJIpBlCHhavL7BHr+ntJXY6yM4aCdcQtJdSAgNmh0skzEGnf1hZxrYOugtAz4Pk1WNjv/g== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json index 08f00fa737..9bab9644c7 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.4" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js index 1fee6e798d..d7b5d2d9c4 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js @@ -1,4 +1,6 @@ /* https://select2.org/troubleshooting/common-problems */ -$.fn.modal.Constructor.prototype._enforceFocus = function () { }; \ No newline at end of file +if ($.fn.modal) { + $.fn.modal.Constructor.prototype._enforceFocus = function () { }; +} diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock index 26b462528b..e7efc1f3b3 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.3.tgz#26b230021334f7859fbb80f9c379a1192cc3fe97" - integrity sha512-FR1XIiZljhjBuHQKr2kdd0gD82sy8+oVPrJ+BrSKK3N4OsOTpVxZnUhixLeDRv1Lmw3twwmLCEcp8snPix/wPg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.3.tgz#464148bbf641e6988852235f94dc3393131c657e" - integrity sha512-/aXlX5JZ/CYD6KdIBL2V216aNidqxf7ugU9dZPK1FbGSixN805lJVIu766ufEA5xZrMIGPL/O7MZmu+hJyclTA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.4.3" - "@abp/bootstrap" "~4.4.3" - "@abp/bootstrap-datepicker" "~4.4.3" - "@abp/datatables.net-bs4" "~4.4.3" - "@abp/font-awesome" "~4.4.3" - "@abp/jquery-form" "~4.4.3" - "@abp/jquery-validation-unobtrusive" "~4.4.3" - "@abp/lodash" "~4.4.3" - "@abp/luxon" "~4.4.3" - "@abp/malihu-custom-scrollbar-plugin" "~4.4.3" - "@abp/select2" "~4.4.3" - "@abp/sweetalert" "~4.4.3" - "@abp/timeago" "~4.4.3" - "@abp/toastr" "~4.4.3" - -"@abp/aspnetcore.mvc.ui@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.3.tgz#b7c217f23d39793a63baff9a56ff063bb0da3049" - integrity sha512-dVZe5HcKRTg0gfWom7vY70JRZkHm1nFtYWq+ciEPvVqPAClzDEvJucoKiUTzfgmPQO13Yv5/GonTV99MV9sLHg== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.4.tgz#ecaaee9d8af8e14a1c9fa65bf3cb6e56c6a82e99" + integrity sha512-FBctV4JuYnTqCCzA/1EG2wUdTYYcilTNSWvk/4YZkndvu9T5iu48qdac1Gq3Ux8JIFer9D0oAPld0YlweYYOGw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.4.tgz#22191efb159572abbd071e12cce847768721a2ee" + integrity sha512-Fp4OXxaSSsTzDlWlVYksSTKXbXvUdILbJNlk+r03TD7VmJCaNx49BxLyUEhJIyP3SY8oOno1UnsDjygbFHJ0xw== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.4.4" + "@abp/bootstrap" "~4.4.4" + "@abp/bootstrap-datepicker" "~4.4.4" + "@abp/datatables.net-bs4" "~4.4.4" + "@abp/font-awesome" "~4.4.4" + "@abp/jquery-form" "~4.4.4" + "@abp/jquery-validation-unobtrusive" "~4.4.4" + "@abp/lodash" "~4.4.4" + "@abp/luxon" "~4.4.4" + "@abp/malihu-custom-scrollbar-plugin" "~4.4.4" + "@abp/select2" "~4.4.4" + "@abp/sweetalert" "~4.4.4" + "@abp/timeago" "~4.4.4" + "@abp/toastr" "~4.4.4" + +"@abp/aspnetcore.mvc.ui@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.4.tgz#2f8e9488cad566f333d62fa717621477fb7fe658" + integrity sha512-/ngxU+vyUfBfpJ7+4/2Fyo5arUAY+LrjauoH9rkdXxpNjNNKjSUsoVqRAwRc1QMJh3iuUOeJgzx0gtkcE2ihiQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,145 +41,145 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.3.tgz#08fd1642ede232badb62a1536982ad2bfce6c265" - integrity sha512-pwb+3DbLkhuNnjD74UwqZgK5hnoxAFFu8y7qlJEkSiKsLWrKNlJS+PHF1LLifPqXogU1MKwc18AuXnHOEKjzbQ== +"@abp/bootstrap-datepicker@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.4.tgz#f2bddae93c4d126f926e4c9f0b4d41b5638ec4ba" + integrity sha512-WfP8KqMNcwAIyVim0MpyMo7sg1kVd9LzrqeAOdu5nPrJ9iV5N3y/JIw4JUkSaOh/zQPLgZUMg1NEhDHOkbaOHw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.3.tgz#76968df98fd5c6e5d26abea9cea5c9d76646d24e" - integrity sha512-InA3AI1ydkqd7AYz+f9RAag1h/uhFsFAFGIo34jllIeFhG4C59EbkNwdWDk96lNHmt0qutQYydsO6WKPlgnjYA== +"@abp/bootstrap@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.4.tgz#34ff3d94cea5b95fa78acdd5837d36569e0244db" + integrity sha512-fE8MsiUJD7K/lzKCsQ5FUU6KbZL6GORBMUdenm5OAUGpQWKPdLZ8mF2rjNsb2+kQgVQCuei7eYl+6712idCF9A== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.3.tgz#fc79a2eebf37a61a6cc05287b722750000f38522" - integrity sha512-gQ2rNyj1MpYCfLTg7Id/20AH4dqs0XIt/n+WqlgeGoYvEpAm4lakHWL7mxZaDQ+iMI/lVVrBhuzwuQv7xKpEIQ== +"@abp/core@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.4.tgz#e157da92b884d7d9a1e3ba50f65be42c60047d78" + integrity sha512-t3Mu7Bvs0o439CVSx9uxBJ+yTFrt2Pyep9/6Vh6Su+b4aoZeQt6ZTKWeJqUVZ7Y/LMt+AbJ/dtbFHvhV8yVuXg== dependencies: - "@abp/utils" "^4.4.3" + "@abp/utils" "~4.4.4" -"@abp/datatables.net-bs4@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.3.tgz#69d3704d057fe39c3b4aff0654f098fac3a27f49" - integrity sha512-Rs8u9BqaVnA7SYhaP849dVNQjaUdO3y5d95b5hv9kLgxquIEf/FIAmGMc0p9BkCK74SkRJ3WJLlR8DXxLi/tEw== +"@abp/datatables.net-bs4@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.4.tgz#37f4c5664ba1a8c4f5b03e675192f6b0ef66cf1b" + integrity sha512-byccQ1dSzhxpLggDwyPoOSOGF+6lBrr9r+WC3OCzWkBUuD6gXpRzDumjAAgIe12hGfXGDRibuD7Ji3qPLzcHzw== dependencies: - "@abp/datatables.net" "~4.4.3" + "@abp/datatables.net" "~4.4.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.3.tgz#1515dcc2bdc7c65c1f24a366c738e1b21ad05723" - integrity sha512-j0cIadlcIOLb/ZQnbqXi4sMEgyLCFA08GMIljvN6GhBObZjMQh4Eazk/B+a4xw+ATk0rbAW3dJyMx80zpi82cg== +"@abp/datatables.net@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.4.tgz#add4b07eef578dd02f84892bbe495642459c4669" + integrity sha512-+9JHEu71xADrTFIKoujXAO0nwUvAuRU9gJpVuJFg4G6juILbEqARo2mUTXEx+UyqnzhwoRJ0K1VFyBJnCY0R0Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" datatables.net "^1.10.21" -"@abp/font-awesome@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.3.tgz#9b0b03da07245e4458305e54490b4e37cbcc2b40" - integrity sha512-R6s0jcAhmpUTdc4b/NJkfHXbXblmcuTNwiNG/CJJ/QNrVhk7OolzyqR5k/moaBpb4Uaqf5u07Aau24rOH35q5w== +"@abp/font-awesome@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.4.tgz#47ff0c880ceb95382e0b1371912230cd7d7602c8" + integrity sha512-lkuyC7drFfzavkNJNLuQ+EJYTBb5ZlPNPnGFAxEpRyjJuJ5j+n84JxVBXwg+oPOfmZ+hOeEQPA7j7TdcC4EZDQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.3.tgz#3d5760e9ece4984165304fa028a5eb997adc4d9f" - integrity sha512-lk0QYruQVwXhVFYBiIrNx5zqF7fY7PKuGGvPQMHyeNaljvpbuK5FPwkge0y6nToWA4Y7PhSCYBU7xvkBuqEDgA== +"@abp/jquery-form@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.4.tgz#0638484b9318ba98acaf765aac0396f5f523dce5" + integrity sha512-JWN82DzSbSk2vAPQaapv+8PPCN8si4peLoWJAoHTVizAvis3YamdcG+QLYbTCAVKRlh7kiLRgbAAroy3ppbZ7Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.3.tgz#c08e336debe60a119a5abd0cb66032da6ace6b08" - integrity sha512-mfvYChTALH5nmB0docrEkS5/+Yxt6SgbQOjPVuQx5PgqoVscmf2/JvsBnW73/YVdQBkVXs339hoDGPA6K2WR9w== +"@abp/jquery-validation-unobtrusive@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.4.tgz#2ef0ce29eeb9e6aac9a87338a67aab2060b63026" + integrity sha512-XA9s0uzGXjBju1ZS42xd3IWproSxLBdGEZIYoSbVmaxS0YDBa8FqffbNb/fgY9M8dqujZEasDVuQPhXLBRN+jA== dependencies: - "@abp/jquery-validation" "~4.4.3" + "@abp/jquery-validation" "~4.4.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.3.tgz#331f3671e6e37bed4dc737942e8eb2a6d1297722" - integrity sha512-RjKn9xxoYQz0v8yzWcVlbIQYZQTcXgYFX7GMJf04V/QbdU6vsge+5vHKzhcaW5XWL8+GgKHTqqoxbqzdJykaPA== +"@abp/jquery-validation@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.4.tgz#fa71e1729b692b40097175d68caad29ea13d5155" + integrity sha512-vrP/Vpne86GbPnHR8M8PGvm+B9kGd/JJiPzVN/egxEvvBKdw0APGk9R03Tji2Qu8CuZxvPnKzHHBwKRinWX3Ng== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-validation "^1.19.2" -"@abp/jquery@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.3.tgz#9d2dc238596a6e5c878b5be4b1d49e7e8f95aec4" - integrity sha512-BN2KU1mw0hyQD8/61ZOIDM0hyMDkhZix4TOWCQa3s18pWHlBEsjKVnINQlz9J9k4TZEdQP9D3wZmw+XUfZjoIw== +"@abp/jquery@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.4.tgz#cbf5f99562ad5f01c41aa61704b0136c4ad68594" + integrity sha512-0fltJprq9DMHHWeTAN7i8kAcod5czQ48LdjeIY3wuLDWkGgMVcfarECQ9cu7QekMryB0HFdrUjMJHIhxqzxc3Q== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" jquery "~3.6.0" -"@abp/lodash@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.3.tgz#8e936ebc54a9043eee80cb22f3dad5ea8a2306cb" - integrity sha512-QKFjdRd8cEZp7fg9MhuFhD5CP3MBw7CfaJ3yj0W1e5Tx+xtV+rYz4PrOE8/BLb4un7gxqUrEWBgdIzY+lBR7mQ== +"@abp/lodash@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.4.tgz#8abd3986bcf64561ecbc86f23f53677b3c34eda9" + integrity sha512-IyAZHiR1vPYhbla0lTH/iYK38PCR+9wP5zgrWGD0JSP9R642GEEhdeiuzwclv1aNGretg+TSATr+zSWB5V1DYQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" lodash "^4.17.15" -"@abp/luxon@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.3.tgz#bd3328f45714155870bc8a91d41a197a613392b0" - integrity sha512-rPVzSXEy+rJZLIQ10boOq6suQAZQWJyB5P+rvfSx8h9sbRpsQ5fJOX2ShnUUf/+49KHzRRIqy+vrhr1oiE0C8Q== +"@abp/luxon@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.4.tgz#429b28dddbd8fa65c6c58978451d426bb886c5a3" + integrity sha512-pw75sGoQ/d4OaNlmGwt55Eq7AGWXUBuXyrsNQWSJmkPV9AS2s//ZoxZut1Wu/qaKo5DV4VitEW1U21MuKoEZPA== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.3.tgz#194f39ebbabad7853089549a7e19cfd2a7393e98" - integrity sha512-bhME41UsDCPGxnLP+zqH8nsx1uAxRR8tAeBKOJV24Xf8FHEjUQEDBXG0t1PBYGZVn1/0Ugao7Z12G9uZOiZVog== +"@abp/malihu-custom-scrollbar-plugin@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.4.tgz#fea9aa4755993dac45a8ad10938da789ec523518" + integrity sha512-Mgtzpw94SjN91YWPdV/TfvDt5JZNpW6iCHfL2NjfH3sTXCywK/CanmhdQ0FYJCasRWVPTHfQPWydFsnyzHWXRQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.3.tgz#71015901aae117360f876c744903613494800c83" - integrity sha512-s7ArMLq2LC0m1oFcuCJghf5lEnGbq1D8/WaIKGmmD0ERL0g5xMccFlNbXm+Z79MJoTvQFssSLPTLZICjzWPKJw== +"@abp/select2@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.4.tgz#80d0e0b64cec86a3aa069e9086958946f631d2bf" + integrity sha512-8qx0nj9ZHrdnEPccpLhavHu4YnVp0Z5ZyfpfACVS2GgaxsR31DbltlGdnr2IfRyhK8nJWLNsW8UNhSoXQwGYEw== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" select2 "^4.0.13" -"@abp/sweetalert@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.3.tgz#287b9c89f90885742b074b4e3a427f0ec482952d" - integrity sha512-tAEgHMaTe+E+uS+Mt8XV3dt5yJJHg01Zsbp4ojO3wvdoAS6MKRXWdH05u3ZdwRQrJFbSgQjY85vWn/a/PnYRng== +"@abp/sweetalert@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.4.tgz#1af8934290d4e5adb7c620363ef2a9b746a6eeab" + integrity sha512-TgXm4rhqzTghKzgbxDT5NQcQ/PRFkgwJtnNWZK3XDZiKzw0auT8Wa3GtSsJJD5tl3Dx6VfnTtmf0gpPU5/9fKQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" sweetalert "^2.1.2" -"@abp/timeago@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.3.tgz#7d31b9fcc128e9b8c6bb7870c4284427e9f9f383" - integrity sha512-E8FeAraStlYsHz6D1oBrwM5eHhZeCGrP7aA768Ke5UGIZPoYwyIIYLRfK4MCoCLKgTVlRrUn0Dj7Xkj9tWOfBQ== +"@abp/timeago@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.4.tgz#91ddb61439eaa138a42b9179ec92845efb05af29" + integrity sha512-r53FieaMDar60tGAu+NLr2qCem1+NhPgd7MtYEemJil8HUYci7T0fXvWcYhlrn98zipzEx3eiWo4eBwvIP8MLg== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" timeago "^1.6.7" -"@abp/toastr@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.3.tgz#45ef155fdbb6134a50794e456f820671c72e4105" - integrity sha512-dmKYS7iw/a+eWCD+J+nZ1htmGEjJSCsV1H8dDwA+ZxYJrE2/ejUh0LZ+b8Hsvobqfe/6bwYBj6oe0R9+vszCfg== +"@abp/toastr@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.4.tgz#1cd04ad6dfcb866bfaad3ec288407b0bf3f47c41" + integrity sha512-B7Q0Gza71nITTbryHcHqiIxtJzFbVmXeoPlcLlc/i4zvMaoibihevN10vXmPnfkdQUvTgViIjwA4/ZnBmyM11Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" toastr "^2.1.4" -"@abp/utils@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.3.tgz#5d6939be5463adaa938357d74d1a35fed21b0115" - integrity sha512-B2E89fhM7vKDz9He6EeNc9P5RVYThiBLpTkKvJTeXG+DJtrP2ZbEICe1fcDA48wLFokXXKgx/SjoJlMvObhilQ== +"@abp/utils@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.4.tgz#0bd79fa4635224fcae7ff61224a8c54266db73bf" + integrity sha512-h8Nt2OPqi8EiXKAuvJIpBlCHhavL7BHr+ntJXY6yM4aCdcQtJdSAgNmh0skzEGnf1hZxrYOugtAz4Pk1WNjv/g== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json index bd876ad0ac..7934fab336 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json @@ -3,12 +3,12 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.3", - "@abp/cms-kit": "4.4.3", - "@abp/tui-editor": "^4.4.3", + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.4", + "@abp/cms-kit": "4.4.4", + "@abp/tui-editor": "^4.4.4", "tui-code-snippet": "1.5.2", - "@abp/uppy": "^4.4.3", + "@abp/uppy": "^4.4.4", "slugify": "1.4.6", - "@abp/jstree": "4.4.3" + "@abp/jstree": "4.4.4" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js index 1fee6e798d..d7b5d2d9c4 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js @@ -1,4 +1,6 @@ /* https://select2.org/troubleshooting/common-problems */ -$.fn.modal.Constructor.prototype._enforceFocus = function () { }; \ No newline at end of file +if ($.fn.modal) { + $.fn.modal.Constructor.prototype._enforceFocus = function () { }; +} diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock index 84ff21424b..0220f26576 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.3.tgz#26b230021334f7859fbb80f9c379a1192cc3fe97" - integrity sha512-FR1XIiZljhjBuHQKr2kdd0gD82sy8+oVPrJ+BrSKK3N4OsOTpVxZnUhixLeDRv1Lmw3twwmLCEcp8snPix/wPg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.3.tgz#464148bbf641e6988852235f94dc3393131c657e" - integrity sha512-/aXlX5JZ/CYD6KdIBL2V216aNidqxf7ugU9dZPK1FbGSixN805lJVIu766ufEA5xZrMIGPL/O7MZmu+hJyclTA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.4.3" - "@abp/bootstrap" "~4.4.3" - "@abp/bootstrap-datepicker" "~4.4.3" - "@abp/datatables.net-bs4" "~4.4.3" - "@abp/font-awesome" "~4.4.3" - "@abp/jquery-form" "~4.4.3" - "@abp/jquery-validation-unobtrusive" "~4.4.3" - "@abp/lodash" "~4.4.3" - "@abp/luxon" "~4.4.3" - "@abp/malihu-custom-scrollbar-plugin" "~4.4.3" - "@abp/select2" "~4.4.3" - "@abp/sweetalert" "~4.4.3" - "@abp/timeago" "~4.4.3" - "@abp/toastr" "~4.4.3" - -"@abp/aspnetcore.mvc.ui@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.3.tgz#b7c217f23d39793a63baff9a56ff063bb0da3049" - integrity sha512-dVZe5HcKRTg0gfWom7vY70JRZkHm1nFtYWq+ciEPvVqPAClzDEvJucoKiUTzfgmPQO13Yv5/GonTV99MV9sLHg== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.4.tgz#ecaaee9d8af8e14a1c9fa65bf3cb6e56c6a82e99" + integrity sha512-FBctV4JuYnTqCCzA/1EG2wUdTYYcilTNSWvk/4YZkndvu9T5iu48qdac1Gq3Ux8JIFer9D0oAPld0YlweYYOGw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.4.tgz#22191efb159572abbd071e12cce847768721a2ee" + integrity sha512-Fp4OXxaSSsTzDlWlVYksSTKXbXvUdILbJNlk+r03TD7VmJCaNx49BxLyUEhJIyP3SY8oOno1UnsDjygbFHJ0xw== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.4.4" + "@abp/bootstrap" "~4.4.4" + "@abp/bootstrap-datepicker" "~4.4.4" + "@abp/datatables.net-bs4" "~4.4.4" + "@abp/font-awesome" "~4.4.4" + "@abp/jquery-form" "~4.4.4" + "@abp/jquery-validation-unobtrusive" "~4.4.4" + "@abp/lodash" "~4.4.4" + "@abp/luxon" "~4.4.4" + "@abp/malihu-custom-scrollbar-plugin" "~4.4.4" + "@abp/select2" "~4.4.4" + "@abp/sweetalert" "~4.4.4" + "@abp/timeago" "~4.4.4" + "@abp/toastr" "~4.4.4" + +"@abp/aspnetcore.mvc.ui@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.4.tgz#2f8e9488cad566f333d62fa717621477fb7fe658" + integrity sha512-/ngxU+vyUfBfpJ7+4/2Fyo5arUAY+LrjauoH9rkdXxpNjNNKjSUsoVqRAwRc1QMJh3iuUOeJgzx0gtkcE2ihiQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,236 +41,236 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.3.tgz#08fd1642ede232badb62a1536982ad2bfce6c265" - integrity sha512-pwb+3DbLkhuNnjD74UwqZgK5hnoxAFFu8y7qlJEkSiKsLWrKNlJS+PHF1LLifPqXogU1MKwc18AuXnHOEKjzbQ== +"@abp/bootstrap-datepicker@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.4.tgz#f2bddae93c4d126f926e4c9f0b4d41b5638ec4ba" + integrity sha512-WfP8KqMNcwAIyVim0MpyMo7sg1kVd9LzrqeAOdu5nPrJ9iV5N3y/JIw4JUkSaOh/zQPLgZUMg1NEhDHOkbaOHw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.3.tgz#76968df98fd5c6e5d26abea9cea5c9d76646d24e" - integrity sha512-InA3AI1ydkqd7AYz+f9RAag1h/uhFsFAFGIo34jllIeFhG4C59EbkNwdWDk96lNHmt0qutQYydsO6WKPlgnjYA== +"@abp/bootstrap@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.4.tgz#34ff3d94cea5b95fa78acdd5837d36569e0244db" + integrity sha512-fE8MsiUJD7K/lzKCsQ5FUU6KbZL6GORBMUdenm5OAUGpQWKPdLZ8mF2rjNsb2+kQgVQCuei7eYl+6712idCF9A== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/cms-kit.admin@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-4.4.3.tgz#821411c47071decb432e9b9a29dfd7e81067ccf2" - integrity sha512-GhyNCPihM8334DyPIGXZo0GjAmjHrFCFiGLegw1Hbl+ErAoAURS6TUu/WHk1LO8Gc7nIMWVFsTjBs1m6iG7KSQ== +"@abp/cms-kit.admin@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-4.4.4.tgz#0a362f91c4056889efe477522fcabdfddce202dc" + integrity sha512-/ql0vW+zIP7CgK9VLvwC61aNOheTKINsYRfqpQHvQVn1QpfnlW3V4cgT/hwzzlE2y9IUjlkHq/qWhCSjZBYcsQ== dependencies: - "@abp/jstree" "~4.4.3" - "@abp/slugify" "~4.4.3" - "@abp/tui-editor" "~4.4.3" - "@abp/uppy" "~4.4.3" + "@abp/jstree" "~4.4.4" + "@abp/slugify" "~4.4.4" + "@abp/tui-editor" "~4.4.4" + "@abp/uppy" "~4.4.4" -"@abp/cms-kit.public@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-4.4.3.tgz#5534ed72215fd6bfe97ea5b62607bfb513b09963" - integrity sha512-rrxGXST6LsFXl02zw7UzOavsfZLRvtPouwOqKPBjLX83z30DK5jGMx4LPOnIW/LUfv+k/hxwDuvASD7DTOuXVQ== +"@abp/cms-kit.public@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-4.4.4.tgz#d0048f6fa4b0b6b9003bcfdf06be7e5356a0a8df" + integrity sha512-hGFXsBqhh5O0dEV+6tfLFO9VGRidD/RaT4aZo+ND5JozLTjLDFsMiZ0/JOnSMX7awE9wKb0obeLWBkS53ShlHg== dependencies: - "@abp/highlight.js" "~4.4.3" - "@abp/star-rating-svg" "~4.4.3" + "@abp/highlight.js" "~4.4.4" + "@abp/star-rating-svg" "~4.4.4" -"@abp/cms-kit@4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-4.4.3.tgz#5e902fa16cfee393d50d2b0c42455a532d4dcf84" - integrity sha512-3PzBJUuKciTtudiDQ/NNVTBpYaevfhufm4UFThecMCSnkId1emaoZcUX2gxs5I+0kC+m6nw3SwT209R543X/kQ== +"@abp/cms-kit@4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-4.4.4.tgz#ee962a5e3018b0811133ae54eecaf16d87a6915f" + integrity sha512-tW/kzTEbEqCrt8QlZIT/gWGF4hLaFV/RPiZvZFmfdDjpeil6hhcIIpKh6b4DyHgNWsGnwc+GJMSre82M9R6pKg== dependencies: - "@abp/cms-kit.admin" "~4.4.3" - "@abp/cms-kit.public" "~4.4.3" + "@abp/cms-kit.admin" "~4.4.4" + "@abp/cms-kit.public" "~4.4.4" -"@abp/codemirror@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-4.4.3.tgz#501d9f10653f2009b6887385c63f445e8c4a46fb" - integrity sha512-StASyx1h3rG42tvnAA1KzpQE/obltNXtugLvfopZSkx5G1j6hduvQ7hu2h9e8d9n5SOia+Do2dym4pTHZ2BGeQ== +"@abp/codemirror@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-4.4.4.tgz#f02761b66ca839fadbe047a61076f36ee6f89207" + integrity sha512-959JJbQnNNXNImPj8ZFAflRBK+wUgaUzeMsp56QQUjuqjEJA1G8s/nqmnCFKtd4xqMKcuFZ+qZS5d9GOdr3e7Q== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" codemirror "^5.54.0" -"@abp/core@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.3.tgz#fc79a2eebf37a61a6cc05287b722750000f38522" - integrity sha512-gQ2rNyj1MpYCfLTg7Id/20AH4dqs0XIt/n+WqlgeGoYvEpAm4lakHWL7mxZaDQ+iMI/lVVrBhuzwuQv7xKpEIQ== +"@abp/core@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.4.tgz#e157da92b884d7d9a1e3ba50f65be42c60047d78" + integrity sha512-t3Mu7Bvs0o439CVSx9uxBJ+yTFrt2Pyep9/6Vh6Su+b4aoZeQt6ZTKWeJqUVZ7Y/LMt+AbJ/dtbFHvhV8yVuXg== dependencies: - "@abp/utils" "^4.4.3" + "@abp/utils" "~4.4.4" -"@abp/datatables.net-bs4@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.3.tgz#69d3704d057fe39c3b4aff0654f098fac3a27f49" - integrity sha512-Rs8u9BqaVnA7SYhaP849dVNQjaUdO3y5d95b5hv9kLgxquIEf/FIAmGMc0p9BkCK74SkRJ3WJLlR8DXxLi/tEw== +"@abp/datatables.net-bs4@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.4.tgz#37f4c5664ba1a8c4f5b03e675192f6b0ef66cf1b" + integrity sha512-byccQ1dSzhxpLggDwyPoOSOGF+6lBrr9r+WC3OCzWkBUuD6gXpRzDumjAAgIe12hGfXGDRibuD7Ji3qPLzcHzw== dependencies: - "@abp/datatables.net" "~4.4.3" + "@abp/datatables.net" "~4.4.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.3.tgz#1515dcc2bdc7c65c1f24a366c738e1b21ad05723" - integrity sha512-j0cIadlcIOLb/ZQnbqXi4sMEgyLCFA08GMIljvN6GhBObZjMQh4Eazk/B+a4xw+ATk0rbAW3dJyMx80zpi82cg== +"@abp/datatables.net@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.4.tgz#add4b07eef578dd02f84892bbe495642459c4669" + integrity sha512-+9JHEu71xADrTFIKoujXAO0nwUvAuRU9gJpVuJFg4G6juILbEqARo2mUTXEx+UyqnzhwoRJ0K1VFyBJnCY0R0Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" datatables.net "^1.10.21" -"@abp/font-awesome@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.3.tgz#9b0b03da07245e4458305e54490b4e37cbcc2b40" - integrity sha512-R6s0jcAhmpUTdc4b/NJkfHXbXblmcuTNwiNG/CJJ/QNrVhk7OolzyqR5k/moaBpb4Uaqf5u07Aau24rOH35q5w== +"@abp/font-awesome@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.4.tgz#47ff0c880ceb95382e0b1371912230cd7d7602c8" + integrity sha512-lkuyC7drFfzavkNJNLuQ+EJYTBb5ZlPNPnGFAxEpRyjJuJ5j+n84JxVBXwg+oPOfmZ+hOeEQPA7j7TdcC4EZDQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/highlight.js@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-4.4.3.tgz#60b64e27e8c5d573be093fb32c0d43538f970a45" - integrity sha512-wTo+AnbgkWBQCA/u3KJTJAfAPt0ARwvxjxxNH3A4HICfW7mtt4wpaZ3Zy2m7k7alHKWEzUeLG4bS86X0j2oRRQ== +"@abp/highlight.js@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-4.4.4.tgz#0bda9c785800a12b9107b91d395135398e94ca26" + integrity sha512-f32sPArQV3K/oY6G2l441uEZ0AJgnpuVX2W1rH4Z0ItAW+N3GIV9yjmRpd9L4paKpRb3N/xWS5vmGxXuh+ekbw== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" -"@abp/jquery-form@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.3.tgz#3d5760e9ece4984165304fa028a5eb997adc4d9f" - integrity sha512-lk0QYruQVwXhVFYBiIrNx5zqF7fY7PKuGGvPQMHyeNaljvpbuK5FPwkge0y6nToWA4Y7PhSCYBU7xvkBuqEDgA== +"@abp/jquery-form@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.4.tgz#0638484b9318ba98acaf765aac0396f5f523dce5" + integrity sha512-JWN82DzSbSk2vAPQaapv+8PPCN8si4peLoWJAoHTVizAvis3YamdcG+QLYbTCAVKRlh7kiLRgbAAroy3ppbZ7Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.3.tgz#c08e336debe60a119a5abd0cb66032da6ace6b08" - integrity sha512-mfvYChTALH5nmB0docrEkS5/+Yxt6SgbQOjPVuQx5PgqoVscmf2/JvsBnW73/YVdQBkVXs339hoDGPA6K2WR9w== +"@abp/jquery-validation-unobtrusive@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.4.tgz#2ef0ce29eeb9e6aac9a87338a67aab2060b63026" + integrity sha512-XA9s0uzGXjBju1ZS42xd3IWproSxLBdGEZIYoSbVmaxS0YDBa8FqffbNb/fgY9M8dqujZEasDVuQPhXLBRN+jA== dependencies: - "@abp/jquery-validation" "~4.4.3" + "@abp/jquery-validation" "~4.4.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.3.tgz#331f3671e6e37bed4dc737942e8eb2a6d1297722" - integrity sha512-RjKn9xxoYQz0v8yzWcVlbIQYZQTcXgYFX7GMJf04V/QbdU6vsge+5vHKzhcaW5XWL8+GgKHTqqoxbqzdJykaPA== +"@abp/jquery-validation@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.4.tgz#fa71e1729b692b40097175d68caad29ea13d5155" + integrity sha512-vrP/Vpne86GbPnHR8M8PGvm+B9kGd/JJiPzVN/egxEvvBKdw0APGk9R03Tji2Qu8CuZxvPnKzHHBwKRinWX3Ng== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-validation "^1.19.2" -"@abp/jquery@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.3.tgz#9d2dc238596a6e5c878b5be4b1d49e7e8f95aec4" - integrity sha512-BN2KU1mw0hyQD8/61ZOIDM0hyMDkhZix4TOWCQa3s18pWHlBEsjKVnINQlz9J9k4TZEdQP9D3wZmw+XUfZjoIw== +"@abp/jquery@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.4.tgz#cbf5f99562ad5f01c41aa61704b0136c4ad68594" + integrity sha512-0fltJprq9DMHHWeTAN7i8kAcod5czQ48LdjeIY3wuLDWkGgMVcfarECQ9cu7QekMryB0HFdrUjMJHIhxqzxc3Q== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" jquery "~3.6.0" -"@abp/jstree@4.4.3", "@abp/jstree@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-4.4.3.tgz#5a1ead8fdc70263f4334c3dd04db468a609c1ff9" - integrity sha512-TDSbnFGkz7T1zbW1AnhMnDkEQlPlTVezjnIeW2c7SmIM4qjCBg8KP47HJ8/D/HD0/y2//C/BxtI3dIxYN70s2Q== +"@abp/jstree@4.4.4", "@abp/jstree@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-4.4.4.tgz#2435a2a56c97d30e26199a01d32ed0a3b4642972" + integrity sha512-f6hhXaO14rc2RSaIxmchj7dOljiNf1HMg76QHqci+EGCoHdQLvoEhbwFfMRyRF/c34n+RDNNMdAXAcFUEMQupg== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jstree "^3.3.9" -"@abp/lodash@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.3.tgz#8e936ebc54a9043eee80cb22f3dad5ea8a2306cb" - integrity sha512-QKFjdRd8cEZp7fg9MhuFhD5CP3MBw7CfaJ3yj0W1e5Tx+xtV+rYz4PrOE8/BLb4un7gxqUrEWBgdIzY+lBR7mQ== +"@abp/lodash@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.4.tgz#8abd3986bcf64561ecbc86f23f53677b3c34eda9" + integrity sha512-IyAZHiR1vPYhbla0lTH/iYK38PCR+9wP5zgrWGD0JSP9R642GEEhdeiuzwclv1aNGretg+TSATr+zSWB5V1DYQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" lodash "^4.17.15" -"@abp/luxon@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.3.tgz#bd3328f45714155870bc8a91d41a197a613392b0" - integrity sha512-rPVzSXEy+rJZLIQ10boOq6suQAZQWJyB5P+rvfSx8h9sbRpsQ5fJOX2ShnUUf/+49KHzRRIqy+vrhr1oiE0C8Q== +"@abp/luxon@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.4.tgz#429b28dddbd8fa65c6c58978451d426bb886c5a3" + integrity sha512-pw75sGoQ/d4OaNlmGwt55Eq7AGWXUBuXyrsNQWSJmkPV9AS2s//ZoxZut1Wu/qaKo5DV4VitEW1U21MuKoEZPA== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.3.tgz#194f39ebbabad7853089549a7e19cfd2a7393e98" - integrity sha512-bhME41UsDCPGxnLP+zqH8nsx1uAxRR8tAeBKOJV24Xf8FHEjUQEDBXG0t1PBYGZVn1/0Ugao7Z12G9uZOiZVog== +"@abp/malihu-custom-scrollbar-plugin@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.4.tgz#fea9aa4755993dac45a8ad10938da789ec523518" + integrity sha512-Mgtzpw94SjN91YWPdV/TfvDt5JZNpW6iCHfL2NjfH3sTXCywK/CanmhdQ0FYJCasRWVPTHfQPWydFsnyzHWXRQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/markdown-it@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-4.4.3.tgz#55a7f1af1c77e464797e6470c9d9b1d2db978d49" - integrity sha512-LKTMVraFJHUqQuGPhmQKO0mZeSAg/smYv7+E1mj7EAt6/5PXAs8Xyhbd3TG0vV7y6EjPsX32bJCFiYOQMJ2LqQ== +"@abp/markdown-it@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-4.4.4.tgz#bd036fa30b2f1e1ae363bbd1b226e28c7ddb2711" + integrity sha512-Mhvk8Bp0p890jio6UL8C0B/78d8qm+2B+SRZPo6D6zx2OeLG6dHaILCfxoS+S2k59cM3j+dWCx2MI6e0q5pUIg== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" markdown-it "^11.0.0" -"@abp/select2@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.3.tgz#71015901aae117360f876c744903613494800c83" - integrity sha512-s7ArMLq2LC0m1oFcuCJghf5lEnGbq1D8/WaIKGmmD0ERL0g5xMccFlNbXm+Z79MJoTvQFssSLPTLZICjzWPKJw== +"@abp/select2@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.4.tgz#80d0e0b64cec86a3aa069e9086958946f631d2bf" + integrity sha512-8qx0nj9ZHrdnEPccpLhavHu4YnVp0Z5ZyfpfACVS2GgaxsR31DbltlGdnr2IfRyhK8nJWLNsW8UNhSoXQwGYEw== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" select2 "^4.0.13" -"@abp/slugify@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-4.4.3.tgz#d198e544626e49aae916ab54c6713b7095b5f352" - integrity sha512-3yd2O1KGpUA5C+da2u1l5KUZrJvNtulKrmtxqaVlzIzeJPYcnxcaSmMOXYqkpcpyT5A+R7/Gs4pKPpQ3zy1c7Q== +"@abp/slugify@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-4.4.4.tgz#f20f9a93943d806fcd3ace2e2fb10cd40e319bca" + integrity sha512-YFeYYsyOrbnJfOVyIrBU+dex5sXDfNuxYJhjzzbHW3nRVBaOz+n29APxQBVDP8I7vYzecK+bZlB/K2EpTkiycQ== dependencies: slugify "^1.4.7" -"@abp/star-rating-svg@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-4.4.3.tgz#742cd6b5b36b73ec5e2abf1d42e7d2c2a0bdab85" - integrity sha512-RD61eWhX0AcVomEztk1ObnGTCu20hLWZQZOALa/+dVZivF91t890jJd+0DMzEz3DhlbGCATPIGzmcAEhY/+pnw== +"@abp/star-rating-svg@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-4.4.4.tgz#57a45389791ef71d8bcf2cc631d1f2a2e487c7e0" + integrity sha512-hcHkMi/gffajo6Es03h7aISANoh2J/wNRftbGLFvIBIegqc6v5khhvGB4YVebwyt2qpEri/bVro62PHRDO6ZgQ== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" star-rating-svg "^3.5.0" -"@abp/sweetalert@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.3.tgz#287b9c89f90885742b074b4e3a427f0ec482952d" - integrity sha512-tAEgHMaTe+E+uS+Mt8XV3dt5yJJHg01Zsbp4ojO3wvdoAS6MKRXWdH05u3ZdwRQrJFbSgQjY85vWn/a/PnYRng== +"@abp/sweetalert@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.4.tgz#1af8934290d4e5adb7c620363ef2a9b746a6eeab" + integrity sha512-TgXm4rhqzTghKzgbxDT5NQcQ/PRFkgwJtnNWZK3XDZiKzw0auT8Wa3GtSsJJD5tl3Dx6VfnTtmf0gpPU5/9fKQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" sweetalert "^2.1.2" -"@abp/timeago@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.3.tgz#7d31b9fcc128e9b8c6bb7870c4284427e9f9f383" - integrity sha512-E8FeAraStlYsHz6D1oBrwM5eHhZeCGrP7aA768Ke5UGIZPoYwyIIYLRfK4MCoCLKgTVlRrUn0Dj7Xkj9tWOfBQ== +"@abp/timeago@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.4.tgz#91ddb61439eaa138a42b9179ec92845efb05af29" + integrity sha512-r53FieaMDar60tGAu+NLr2qCem1+NhPgd7MtYEemJil8HUYci7T0fXvWcYhlrn98zipzEx3eiWo4eBwvIP8MLg== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" timeago "^1.6.7" -"@abp/toastr@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.3.tgz#45ef155fdbb6134a50794e456f820671c72e4105" - integrity sha512-dmKYS7iw/a+eWCD+J+nZ1htmGEjJSCsV1H8dDwA+ZxYJrE2/ejUh0LZ+b8Hsvobqfe/6bwYBj6oe0R9+vszCfg== +"@abp/toastr@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.4.tgz#1cd04ad6dfcb866bfaad3ec288407b0bf3f47c41" + integrity sha512-B7Q0Gza71nITTbryHcHqiIxtJzFbVmXeoPlcLlc/i4zvMaoibihevN10vXmPnfkdQUvTgViIjwA4/ZnBmyM11Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" toastr "^2.1.4" -"@abp/tui-editor@^4.4.3", "@abp/tui-editor@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-4.4.3.tgz#5aeab2d695449ccff2dd0747e9ff6c8045540c43" - integrity sha512-Nikwg4Ywl2AO20rNF3YZAzijP5ihoFWr6WuLGjI4LppnaEKcZ8OBQ42iEj8C/XNzPZ2y7GR5Z9QY25wAieUiCg== +"@abp/tui-editor@^4.4.4", "@abp/tui-editor@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-4.4.4.tgz#bbad5686b8b862b2c619eab6339b551432779c50" + integrity sha512-fromARg9BkdvieyOgQTZ9dO5bHZ5t/g1kys7mIpcZf8C8HiQLlXcv+PRh9xmCSjdhLC9dN9n9IWMOnlc+3fu0g== dependencies: - "@abp/codemirror" "~4.4.3" - "@abp/highlight.js" "~4.4.3" - "@abp/jquery" "~4.4.3" - "@abp/markdown-it" "~4.4.3" + "@abp/codemirror" "~4.4.4" + "@abp/highlight.js" "~4.4.4" + "@abp/jquery" "~4.4.4" + "@abp/markdown-it" "~4.4.4" "@toast-ui/editor" "^2.5.1" -"@abp/uppy@^4.4.3", "@abp/uppy@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-4.4.3.tgz#2ce6eae0be3875f5666a94480662412d31d5fb92" - integrity sha512-tMov0MgPLQnGiBRmAmyJHSlaUAIyyVWHGfXqdmeMn1fzlmqNkRDStaflO5ei94kXk+MvU8DLZXVaWRSfmai3fg== +"@abp/uppy@^4.4.4", "@abp/uppy@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-4.4.4.tgz#936f3651d83add3afa4a8827e63f1e055e7ac8aa" + integrity sha512-pb9F38s4xOn8n3/ikgWIGRRiPYxPOQaVVI9eKkd+oJzGb/LFVzkeWbLnatgxB+4duRbWO/eaZo2vTg7FWWazPA== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" uppy "^1.16.1" -"@abp/utils@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.3.tgz#5d6939be5463adaa938357d74d1a35fed21b0115" - integrity sha512-B2E89fhM7vKDz9He6EeNc9P5RVYThiBLpTkKvJTeXG+DJtrP2ZbEICe1fcDA48wLFokXXKgx/SjoJlMvObhilQ== +"@abp/utils@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.4.tgz#0bd79fa4635224fcae7ff61224a8c54266db73bf" + integrity sha512-h8Nt2OPqi8EiXKAuvJIpBlCHhavL7BHr+ntJXY6yM4aCdcQtJdSAgNmh0skzEGnf1hZxrYOugtAz4Pk1WNjv/g== dependencies: just-compare "^1.3.0" diff --git a/modules/docs/app/VoloDocs.Web/package.json b/modules/docs/app/VoloDocs.Web/package.json index a205363d67..85d9e486db 100644 --- a/modules/docs/app/VoloDocs.Web/package.json +++ b/modules/docs/app/VoloDocs.Web/package.json @@ -3,7 +3,7 @@ "name": "volo.docstestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.3", - "@abp/docs": "^4.4.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.4", + "@abp/docs": "^4.4.4" } } diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js index 1fee6e798d..d7b5d2d9c4 100644 --- a/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js +++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js @@ -1,4 +1,6 @@ /* https://select2.org/troubleshooting/common-problems */ -$.fn.modal.Constructor.prototype._enforceFocus = function () { }; \ No newline at end of file +if ($.fn.modal) { + $.fn.modal.Constructor.prototype._enforceFocus = function () { }; +} diff --git a/modules/docs/app/VoloDocs.Web/yarn.lock b/modules/docs/app/VoloDocs.Web/yarn.lock index ee7aae401c..c0b6653772 100644 --- a/modules/docs/app/VoloDocs.Web/yarn.lock +++ b/modules/docs/app/VoloDocs.Web/yarn.lock @@ -2,45 +2,45 @@ # yarn lockfile v1 -"@abp/anchor-js@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-4.4.3.tgz#40ccc5bf16f02ad7eafff45221368514ad6859a2" - integrity sha512-fwvMTzjqplCZgzkixDgPpKXDVMNOmKqEvK8yLW6lZhTN2xlviVbRiv7L5s0mHlb+EKlU90o6F3EwiS5Ut60VvA== +"@abp/anchor-js@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-4.4.4.tgz#172a29a07591feb23b664844ddf779ee02c6bdc9" + integrity sha512-n21qqiu+KnTbkmL+a34l9uJwx4dyvJH3Cy3sq2+pHWZI/GMEmqsCTYkrNdOGAP470hXfteIaZxgRfBl15UQwzg== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" anchor-js "^4.2.2" -"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.3.tgz#26b230021334f7859fbb80f9c379a1192cc3fe97" - integrity sha512-FR1XIiZljhjBuHQKr2kdd0gD82sy8+oVPrJ+BrSKK3N4OsOTpVxZnUhixLeDRv1Lmw3twwmLCEcp8snPix/wPg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.3.tgz#464148bbf641e6988852235f94dc3393131c657e" - integrity sha512-/aXlX5JZ/CYD6KdIBL2V216aNidqxf7ugU9dZPK1FbGSixN805lJVIu766ufEA5xZrMIGPL/O7MZmu+hJyclTA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.4.3" - "@abp/bootstrap" "~4.4.3" - "@abp/bootstrap-datepicker" "~4.4.3" - "@abp/datatables.net-bs4" "~4.4.3" - "@abp/font-awesome" "~4.4.3" - "@abp/jquery-form" "~4.4.3" - "@abp/jquery-validation-unobtrusive" "~4.4.3" - "@abp/lodash" "~4.4.3" - "@abp/luxon" "~4.4.3" - "@abp/malihu-custom-scrollbar-plugin" "~4.4.3" - "@abp/select2" "~4.4.3" - "@abp/sweetalert" "~4.4.3" - "@abp/timeago" "~4.4.3" - "@abp/toastr" "~4.4.3" - -"@abp/aspnetcore.mvc.ui@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.3.tgz#b7c217f23d39793a63baff9a56ff063bb0da3049" - integrity sha512-dVZe5HcKRTg0gfWom7vY70JRZkHm1nFtYWq+ciEPvVqPAClzDEvJucoKiUTzfgmPQO13Yv5/GonTV99MV9sLHg== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.4.tgz#ecaaee9d8af8e14a1c9fa65bf3cb6e56c6a82e99" + integrity sha512-FBctV4JuYnTqCCzA/1EG2wUdTYYcilTNSWvk/4YZkndvu9T5iu48qdac1Gq3Ux8JIFer9D0oAPld0YlweYYOGw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.4.tgz#22191efb159572abbd071e12cce847768721a2ee" + integrity sha512-Fp4OXxaSSsTzDlWlVYksSTKXbXvUdILbJNlk+r03TD7VmJCaNx49BxLyUEhJIyP3SY8oOno1UnsDjygbFHJ0xw== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.4.4" + "@abp/bootstrap" "~4.4.4" + "@abp/bootstrap-datepicker" "~4.4.4" + "@abp/datatables.net-bs4" "~4.4.4" + "@abp/font-awesome" "~4.4.4" + "@abp/jquery-form" "~4.4.4" + "@abp/jquery-validation-unobtrusive" "~4.4.4" + "@abp/lodash" "~4.4.4" + "@abp/luxon" "~4.4.4" + "@abp/malihu-custom-scrollbar-plugin" "~4.4.4" + "@abp/select2" "~4.4.4" + "@abp/sweetalert" "~4.4.4" + "@abp/timeago" "~4.4.4" + "@abp/toastr" "~4.4.4" + +"@abp/aspnetcore.mvc.ui@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.4.tgz#2f8e9488cad566f333d62fa717621477fb7fe658" + integrity sha512-/ngxU+vyUfBfpJ7+4/2Fyo5arUAY+LrjauoH9rkdXxpNjNNKjSUsoVqRAwRc1QMJh3iuUOeJgzx0gtkcE2ihiQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -49,181 +49,181 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.3.tgz#08fd1642ede232badb62a1536982ad2bfce6c265" - integrity sha512-pwb+3DbLkhuNnjD74UwqZgK5hnoxAFFu8y7qlJEkSiKsLWrKNlJS+PHF1LLifPqXogU1MKwc18AuXnHOEKjzbQ== +"@abp/bootstrap-datepicker@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.4.tgz#f2bddae93c4d126f926e4c9f0b4d41b5638ec4ba" + integrity sha512-WfP8KqMNcwAIyVim0MpyMo7sg1kVd9LzrqeAOdu5nPrJ9iV5N3y/JIw4JUkSaOh/zQPLgZUMg1NEhDHOkbaOHw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.3.tgz#76968df98fd5c6e5d26abea9cea5c9d76646d24e" - integrity sha512-InA3AI1ydkqd7AYz+f9RAag1h/uhFsFAFGIo34jllIeFhG4C59EbkNwdWDk96lNHmt0qutQYydsO6WKPlgnjYA== +"@abp/bootstrap@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.4.tgz#34ff3d94cea5b95fa78acdd5837d36569e0244db" + integrity sha512-fE8MsiUJD7K/lzKCsQ5FUU6KbZL6GORBMUdenm5OAUGpQWKPdLZ8mF2rjNsb2+kQgVQCuei7eYl+6712idCF9A== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/clipboard@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-4.4.3.tgz#558b69dbb3875bd37cf98e6ed83ff0881bd89924" - integrity sha512-kgtAqoKOAPlplkR80xJGAXSwh6GkOJxcTKmyDmnQObLbUjxnSo5vXpWDEcBDRrGw7g1I+Owj0JUZQbhkFpcksw== +"@abp/clipboard@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-4.4.4.tgz#2fbcdfcd884079737efaacce028333656da918ea" + integrity sha512-hpnhEzmsY8Nu3qsNGurrD3JXsPnv8N/aUyZ7hfFHwNA5Uses/cVFNgzJL4lie1ykoDKE5D/SZnLoe/a3aQuMoA== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" clipboard "^2.0.6" -"@abp/core@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.3.tgz#fc79a2eebf37a61a6cc05287b722750000f38522" - integrity sha512-gQ2rNyj1MpYCfLTg7Id/20AH4dqs0XIt/n+WqlgeGoYvEpAm4lakHWL7mxZaDQ+iMI/lVVrBhuzwuQv7xKpEIQ== +"@abp/core@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.4.tgz#e157da92b884d7d9a1e3ba50f65be42c60047d78" + integrity sha512-t3Mu7Bvs0o439CVSx9uxBJ+yTFrt2Pyep9/6Vh6Su+b4aoZeQt6ZTKWeJqUVZ7Y/LMt+AbJ/dtbFHvhV8yVuXg== dependencies: - "@abp/utils" "^4.4.3" + "@abp/utils" "~4.4.4" -"@abp/datatables.net-bs4@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.3.tgz#69d3704d057fe39c3b4aff0654f098fac3a27f49" - integrity sha512-Rs8u9BqaVnA7SYhaP849dVNQjaUdO3y5d95b5hv9kLgxquIEf/FIAmGMc0p9BkCK74SkRJ3WJLlR8DXxLi/tEw== +"@abp/datatables.net-bs4@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.4.tgz#37f4c5664ba1a8c4f5b03e675192f6b0ef66cf1b" + integrity sha512-byccQ1dSzhxpLggDwyPoOSOGF+6lBrr9r+WC3OCzWkBUuD6gXpRzDumjAAgIe12hGfXGDRibuD7Ji3qPLzcHzw== dependencies: - "@abp/datatables.net" "~4.4.3" + "@abp/datatables.net" "~4.4.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.3.tgz#1515dcc2bdc7c65c1f24a366c738e1b21ad05723" - integrity sha512-j0cIadlcIOLb/ZQnbqXi4sMEgyLCFA08GMIljvN6GhBObZjMQh4Eazk/B+a4xw+ATk0rbAW3dJyMx80zpi82cg== +"@abp/datatables.net@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.4.tgz#add4b07eef578dd02f84892bbe495642459c4669" + integrity sha512-+9JHEu71xADrTFIKoujXAO0nwUvAuRU9gJpVuJFg4G6juILbEqARo2mUTXEx+UyqnzhwoRJ0K1VFyBJnCY0R0Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" datatables.net "^1.10.21" -"@abp/docs@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-4.4.3.tgz#c2b30ec6851f856045acc7b79fa41ccfc59fd79a" - integrity sha512-sCN7aOv42CU5KRLJMcAcCQX8usWbl+ti1EWZ4ZjgEXlBuVrSBJ9uUSIt1Fl30LhHIJCJAZYSvjuYtGat5z433Q== +"@abp/docs@^4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-4.4.4.tgz#8b3acd3216070cf5f3e6b92f052a5e5a9a6da1dc" + integrity sha512-TncyDDj5EacN9b0mfmHBkimWFB62i3MqkA20YfGQpQf5cSaWLZWU75w0YY0E+JxceV8uSfVXdp7QsP9CCQjWfw== dependencies: - "@abp/anchor-js" "~4.4.3" - "@abp/clipboard" "~4.4.3" - "@abp/malihu-custom-scrollbar-plugin" "~4.4.3" - "@abp/popper.js" "~4.4.3" - "@abp/prismjs" "~4.4.3" + "@abp/anchor-js" "~4.4.4" + "@abp/clipboard" "~4.4.4" + "@abp/malihu-custom-scrollbar-plugin" "~4.4.4" + "@abp/popper.js" "~4.4.4" + "@abp/prismjs" "~4.4.4" -"@abp/font-awesome@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.3.tgz#9b0b03da07245e4458305e54490b4e37cbcc2b40" - integrity sha512-R6s0jcAhmpUTdc4b/NJkfHXbXblmcuTNwiNG/CJJ/QNrVhk7OolzyqR5k/moaBpb4Uaqf5u07Aau24rOH35q5w== +"@abp/font-awesome@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.4.tgz#47ff0c880ceb95382e0b1371912230cd7d7602c8" + integrity sha512-lkuyC7drFfzavkNJNLuQ+EJYTBb5ZlPNPnGFAxEpRyjJuJ5j+n84JxVBXwg+oPOfmZ+hOeEQPA7j7TdcC4EZDQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.3.tgz#3d5760e9ece4984165304fa028a5eb997adc4d9f" - integrity sha512-lk0QYruQVwXhVFYBiIrNx5zqF7fY7PKuGGvPQMHyeNaljvpbuK5FPwkge0y6nToWA4Y7PhSCYBU7xvkBuqEDgA== +"@abp/jquery-form@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.4.tgz#0638484b9318ba98acaf765aac0396f5f523dce5" + integrity sha512-JWN82DzSbSk2vAPQaapv+8PPCN8si4peLoWJAoHTVizAvis3YamdcG+QLYbTCAVKRlh7kiLRgbAAroy3ppbZ7Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.3.tgz#c08e336debe60a119a5abd0cb66032da6ace6b08" - integrity sha512-mfvYChTALH5nmB0docrEkS5/+Yxt6SgbQOjPVuQx5PgqoVscmf2/JvsBnW73/YVdQBkVXs339hoDGPA6K2WR9w== +"@abp/jquery-validation-unobtrusive@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.4.tgz#2ef0ce29eeb9e6aac9a87338a67aab2060b63026" + integrity sha512-XA9s0uzGXjBju1ZS42xd3IWproSxLBdGEZIYoSbVmaxS0YDBa8FqffbNb/fgY9M8dqujZEasDVuQPhXLBRN+jA== dependencies: - "@abp/jquery-validation" "~4.4.3" + "@abp/jquery-validation" "~4.4.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.3.tgz#331f3671e6e37bed4dc737942e8eb2a6d1297722" - integrity sha512-RjKn9xxoYQz0v8yzWcVlbIQYZQTcXgYFX7GMJf04V/QbdU6vsge+5vHKzhcaW5XWL8+GgKHTqqoxbqzdJykaPA== +"@abp/jquery-validation@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.4.tgz#fa71e1729b692b40097175d68caad29ea13d5155" + integrity sha512-vrP/Vpne86GbPnHR8M8PGvm+B9kGd/JJiPzVN/egxEvvBKdw0APGk9R03Tji2Qu8CuZxvPnKzHHBwKRinWX3Ng== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-validation "^1.19.2" -"@abp/jquery@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.3.tgz#9d2dc238596a6e5c878b5be4b1d49e7e8f95aec4" - integrity sha512-BN2KU1mw0hyQD8/61ZOIDM0hyMDkhZix4TOWCQa3s18pWHlBEsjKVnINQlz9J9k4TZEdQP9D3wZmw+XUfZjoIw== +"@abp/jquery@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.4.tgz#cbf5f99562ad5f01c41aa61704b0136c4ad68594" + integrity sha512-0fltJprq9DMHHWeTAN7i8kAcod5czQ48LdjeIY3wuLDWkGgMVcfarECQ9cu7QekMryB0HFdrUjMJHIhxqzxc3Q== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" jquery "~3.6.0" -"@abp/lodash@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.3.tgz#8e936ebc54a9043eee80cb22f3dad5ea8a2306cb" - integrity sha512-QKFjdRd8cEZp7fg9MhuFhD5CP3MBw7CfaJ3yj0W1e5Tx+xtV+rYz4PrOE8/BLb4un7gxqUrEWBgdIzY+lBR7mQ== +"@abp/lodash@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.4.tgz#8abd3986bcf64561ecbc86f23f53677b3c34eda9" + integrity sha512-IyAZHiR1vPYhbla0lTH/iYK38PCR+9wP5zgrWGD0JSP9R642GEEhdeiuzwclv1aNGretg+TSATr+zSWB5V1DYQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" lodash "^4.17.15" -"@abp/luxon@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.3.tgz#bd3328f45714155870bc8a91d41a197a613392b0" - integrity sha512-rPVzSXEy+rJZLIQ10boOq6suQAZQWJyB5P+rvfSx8h9sbRpsQ5fJOX2ShnUUf/+49KHzRRIqy+vrhr1oiE0C8Q== +"@abp/luxon@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.4.tgz#429b28dddbd8fa65c6c58978451d426bb886c5a3" + integrity sha512-pw75sGoQ/d4OaNlmGwt55Eq7AGWXUBuXyrsNQWSJmkPV9AS2s//ZoxZut1Wu/qaKo5DV4VitEW1U21MuKoEZPA== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.3.tgz#194f39ebbabad7853089549a7e19cfd2a7393e98" - integrity sha512-bhME41UsDCPGxnLP+zqH8nsx1uAxRR8tAeBKOJV24Xf8FHEjUQEDBXG0t1PBYGZVn1/0Ugao7Z12G9uZOiZVog== +"@abp/malihu-custom-scrollbar-plugin@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.4.tgz#fea9aa4755993dac45a8ad10938da789ec523518" + integrity sha512-Mgtzpw94SjN91YWPdV/TfvDt5JZNpW6iCHfL2NjfH3sTXCywK/CanmhdQ0FYJCasRWVPTHfQPWydFsnyzHWXRQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/popper.js@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-4.4.3.tgz#97eeb98602d620b2ab7eef904e677330367d4ebe" - integrity sha512-ht65DHhZtB5j0/k58wNnslCyDlrIgfQ6T74VDys1dPf1oxkGpMTBYk+vzEeta3xtFB+5Y4sLtnlj0QWkts6EKA== +"@abp/popper.js@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-4.4.4.tgz#50146efbc32383cb8cbd11b5e834f5d17a2faf51" + integrity sha512-G6F1SR1EIOAt2kpN8L0Nn078IkJ+OeLKG4ev94ieBn0fQgBR5IruHluksv6bisotKBm4tjSGO6elT/m2q1CMqQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" popper.js "^1.16.0" -"@abp/prismjs@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-4.4.3.tgz#08f3f8c46a070b33a3d869b5548c57fd6b1beb5c" - integrity sha512-YnZrlvlmznZp7x0s+KNUVPcTxsIdGcluht7BQA7u1uoRSabqUm8jNt64IOPGMyDkdMwcjmjeCVpj1F1lcDPo+A== +"@abp/prismjs@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-4.4.4.tgz#d743682fed6c8a97a19690a7107de6c2ff3f0bd1" + integrity sha512-WtzEnVSmFmT2qFfU58h6ZV8TNbf5TcW2acblW6w9cxPOnpUITIp87zHuTA3bT/gP9ybq3hgs3iFMg6n5IqzVzw== dependencies: - "@abp/clipboard" "~4.4.3" - "@abp/core" "~4.4.3" + "@abp/clipboard" "~4.4.4" + "@abp/core" "~4.4.4" prismjs "^1.20.0" -"@abp/select2@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.3.tgz#71015901aae117360f876c744903613494800c83" - integrity sha512-s7ArMLq2LC0m1oFcuCJghf5lEnGbq1D8/WaIKGmmD0ERL0g5xMccFlNbXm+Z79MJoTvQFssSLPTLZICjzWPKJw== +"@abp/select2@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.4.tgz#80d0e0b64cec86a3aa069e9086958946f631d2bf" + integrity sha512-8qx0nj9ZHrdnEPccpLhavHu4YnVp0Z5ZyfpfACVS2GgaxsR31DbltlGdnr2IfRyhK8nJWLNsW8UNhSoXQwGYEw== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" select2 "^4.0.13" -"@abp/sweetalert@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.3.tgz#287b9c89f90885742b074b4e3a427f0ec482952d" - integrity sha512-tAEgHMaTe+E+uS+Mt8XV3dt5yJJHg01Zsbp4ojO3wvdoAS6MKRXWdH05u3ZdwRQrJFbSgQjY85vWn/a/PnYRng== +"@abp/sweetalert@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.4.tgz#1af8934290d4e5adb7c620363ef2a9b746a6eeab" + integrity sha512-TgXm4rhqzTghKzgbxDT5NQcQ/PRFkgwJtnNWZK3XDZiKzw0auT8Wa3GtSsJJD5tl3Dx6VfnTtmf0gpPU5/9fKQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" sweetalert "^2.1.2" -"@abp/timeago@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.3.tgz#7d31b9fcc128e9b8c6bb7870c4284427e9f9f383" - integrity sha512-E8FeAraStlYsHz6D1oBrwM5eHhZeCGrP7aA768Ke5UGIZPoYwyIIYLRfK4MCoCLKgTVlRrUn0Dj7Xkj9tWOfBQ== +"@abp/timeago@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.4.tgz#91ddb61439eaa138a42b9179ec92845efb05af29" + integrity sha512-r53FieaMDar60tGAu+NLr2qCem1+NhPgd7MtYEemJil8HUYci7T0fXvWcYhlrn98zipzEx3eiWo4eBwvIP8MLg== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" timeago "^1.6.7" -"@abp/toastr@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.3.tgz#45ef155fdbb6134a50794e456f820671c72e4105" - integrity sha512-dmKYS7iw/a+eWCD+J+nZ1htmGEjJSCsV1H8dDwA+ZxYJrE2/ejUh0LZ+b8Hsvobqfe/6bwYBj6oe0R9+vszCfg== +"@abp/toastr@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.4.tgz#1cd04ad6dfcb866bfaad3ec288407b0bf3f47c41" + integrity sha512-B7Q0Gza71nITTbryHcHqiIxtJzFbVmXeoPlcLlc/i4zvMaoibihevN10vXmPnfkdQUvTgViIjwA4/ZnBmyM11Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" toastr "^2.1.4" -"@abp/utils@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.3.tgz#5d6939be5463adaa938357d74d1a35fed21b0115" - integrity sha512-B2E89fhM7vKDz9He6EeNc9P5RVYThiBLpTkKvJTeXG+DJtrP2ZbEICe1fcDA48wLFokXXKgx/SjoJlMvObhilQ== +"@abp/utils@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.4.tgz#0bd79fa4635224fcae7ff61224a8c54266db73bf" + integrity sha512-h8Nt2OPqi8EiXKAuvJIpBlCHhavL7BHr+ntJXY6yM4aCdcQtJdSAgNmh0skzEGnf1hZxrYOugtAz4Pk1WNjv/g== dependencies: just-compare "^1.3.0" diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json index 3d3646c571..bb9ed9e96d 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json @@ -3,6 +3,6 @@ "name": "demo-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.4" } } diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js index 1fee6e798d..d7b5d2d9c4 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js @@ -1,4 +1,6 @@ /* https://select2.org/troubleshooting/common-problems */ -$.fn.modal.Constructor.prototype._enforceFocus = function () { }; \ No newline at end of file +if ($.fn.modal) { + $.fn.modal.Constructor.prototype._enforceFocus = function () { }; +} diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock index 34fa198c14..9b3a03c2dd 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.3.tgz#26b230021334f7859fbb80f9c379a1192cc3fe97" - integrity sha512-FR1XIiZljhjBuHQKr2kdd0gD82sy8+oVPrJ+BrSKK3N4OsOTpVxZnUhixLeDRv1Lmw3twwmLCEcp8snPix/wPg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.3.tgz#464148bbf641e6988852235f94dc3393131c657e" - integrity sha512-/aXlX5JZ/CYD6KdIBL2V216aNidqxf7ugU9dZPK1FbGSixN805lJVIu766ufEA5xZrMIGPL/O7MZmu+hJyclTA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.4.3" - "@abp/bootstrap" "~4.4.3" - "@abp/bootstrap-datepicker" "~4.4.3" - "@abp/datatables.net-bs4" "~4.4.3" - "@abp/font-awesome" "~4.4.3" - "@abp/jquery-form" "~4.4.3" - "@abp/jquery-validation-unobtrusive" "~4.4.3" - "@abp/lodash" "~4.4.3" - "@abp/luxon" "~4.4.3" - "@abp/malihu-custom-scrollbar-plugin" "~4.4.3" - "@abp/select2" "~4.4.3" - "@abp/sweetalert" "~4.4.3" - "@abp/timeago" "~4.4.3" - "@abp/toastr" "~4.4.3" - -"@abp/aspnetcore.mvc.ui@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.3.tgz#b7c217f23d39793a63baff9a56ff063bb0da3049" - integrity sha512-dVZe5HcKRTg0gfWom7vY70JRZkHm1nFtYWq+ciEPvVqPAClzDEvJucoKiUTzfgmPQO13Yv5/GonTV99MV9sLHg== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.4.tgz#ecaaee9d8af8e14a1c9fa65bf3cb6e56c6a82e99" + integrity sha512-FBctV4JuYnTqCCzA/1EG2wUdTYYcilTNSWvk/4YZkndvu9T5iu48qdac1Gq3Ux8JIFer9D0oAPld0YlweYYOGw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.4.tgz#22191efb159572abbd071e12cce847768721a2ee" + integrity sha512-Fp4OXxaSSsTzDlWlVYksSTKXbXvUdILbJNlk+r03TD7VmJCaNx49BxLyUEhJIyP3SY8oOno1UnsDjygbFHJ0xw== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.4.4" + "@abp/bootstrap" "~4.4.4" + "@abp/bootstrap-datepicker" "~4.4.4" + "@abp/datatables.net-bs4" "~4.4.4" + "@abp/font-awesome" "~4.4.4" + "@abp/jquery-form" "~4.4.4" + "@abp/jquery-validation-unobtrusive" "~4.4.4" + "@abp/lodash" "~4.4.4" + "@abp/luxon" "~4.4.4" + "@abp/malihu-custom-scrollbar-plugin" "~4.4.4" + "@abp/select2" "~4.4.4" + "@abp/sweetalert" "~4.4.4" + "@abp/timeago" "~4.4.4" + "@abp/toastr" "~4.4.4" + +"@abp/aspnetcore.mvc.ui@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.4.tgz#2f8e9488cad566f333d62fa717621477fb7fe658" + integrity sha512-/ngxU+vyUfBfpJ7+4/2Fyo5arUAY+LrjauoH9rkdXxpNjNNKjSUsoVqRAwRc1QMJh3iuUOeJgzx0gtkcE2ihiQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,145 +41,145 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.3.tgz#08fd1642ede232badb62a1536982ad2bfce6c265" - integrity sha512-pwb+3DbLkhuNnjD74UwqZgK5hnoxAFFu8y7qlJEkSiKsLWrKNlJS+PHF1LLifPqXogU1MKwc18AuXnHOEKjzbQ== +"@abp/bootstrap-datepicker@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.4.tgz#f2bddae93c4d126f926e4c9f0b4d41b5638ec4ba" + integrity sha512-WfP8KqMNcwAIyVim0MpyMo7sg1kVd9LzrqeAOdu5nPrJ9iV5N3y/JIw4JUkSaOh/zQPLgZUMg1NEhDHOkbaOHw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.3.tgz#76968df98fd5c6e5d26abea9cea5c9d76646d24e" - integrity sha512-InA3AI1ydkqd7AYz+f9RAag1h/uhFsFAFGIo34jllIeFhG4C59EbkNwdWDk96lNHmt0qutQYydsO6WKPlgnjYA== +"@abp/bootstrap@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.4.tgz#34ff3d94cea5b95fa78acdd5837d36569e0244db" + integrity sha512-fE8MsiUJD7K/lzKCsQ5FUU6KbZL6GORBMUdenm5OAUGpQWKPdLZ8mF2rjNsb2+kQgVQCuei7eYl+6712idCF9A== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.3.tgz#fc79a2eebf37a61a6cc05287b722750000f38522" - integrity sha512-gQ2rNyj1MpYCfLTg7Id/20AH4dqs0XIt/n+WqlgeGoYvEpAm4lakHWL7mxZaDQ+iMI/lVVrBhuzwuQv7xKpEIQ== +"@abp/core@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.4.tgz#e157da92b884d7d9a1e3ba50f65be42c60047d78" + integrity sha512-t3Mu7Bvs0o439CVSx9uxBJ+yTFrt2Pyep9/6Vh6Su+b4aoZeQt6ZTKWeJqUVZ7Y/LMt+AbJ/dtbFHvhV8yVuXg== dependencies: - "@abp/utils" "^4.4.3" + "@abp/utils" "~4.4.4" -"@abp/datatables.net-bs4@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.3.tgz#69d3704d057fe39c3b4aff0654f098fac3a27f49" - integrity sha512-Rs8u9BqaVnA7SYhaP849dVNQjaUdO3y5d95b5hv9kLgxquIEf/FIAmGMc0p9BkCK74SkRJ3WJLlR8DXxLi/tEw== +"@abp/datatables.net-bs4@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.4.tgz#37f4c5664ba1a8c4f5b03e675192f6b0ef66cf1b" + integrity sha512-byccQ1dSzhxpLggDwyPoOSOGF+6lBrr9r+WC3OCzWkBUuD6gXpRzDumjAAgIe12hGfXGDRibuD7Ji3qPLzcHzw== dependencies: - "@abp/datatables.net" "~4.4.3" + "@abp/datatables.net" "~4.4.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.3.tgz#1515dcc2bdc7c65c1f24a366c738e1b21ad05723" - integrity sha512-j0cIadlcIOLb/ZQnbqXi4sMEgyLCFA08GMIljvN6GhBObZjMQh4Eazk/B+a4xw+ATk0rbAW3dJyMx80zpi82cg== +"@abp/datatables.net@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.4.tgz#add4b07eef578dd02f84892bbe495642459c4669" + integrity sha512-+9JHEu71xADrTFIKoujXAO0nwUvAuRU9gJpVuJFg4G6juILbEqARo2mUTXEx+UyqnzhwoRJ0K1VFyBJnCY0R0Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" datatables.net "^1.10.21" -"@abp/font-awesome@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.3.tgz#9b0b03da07245e4458305e54490b4e37cbcc2b40" - integrity sha512-R6s0jcAhmpUTdc4b/NJkfHXbXblmcuTNwiNG/CJJ/QNrVhk7OolzyqR5k/moaBpb4Uaqf5u07Aau24rOH35q5w== +"@abp/font-awesome@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.4.tgz#47ff0c880ceb95382e0b1371912230cd7d7602c8" + integrity sha512-lkuyC7drFfzavkNJNLuQ+EJYTBb5ZlPNPnGFAxEpRyjJuJ5j+n84JxVBXwg+oPOfmZ+hOeEQPA7j7TdcC4EZDQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.3.tgz#3d5760e9ece4984165304fa028a5eb997adc4d9f" - integrity sha512-lk0QYruQVwXhVFYBiIrNx5zqF7fY7PKuGGvPQMHyeNaljvpbuK5FPwkge0y6nToWA4Y7PhSCYBU7xvkBuqEDgA== +"@abp/jquery-form@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.4.tgz#0638484b9318ba98acaf765aac0396f5f523dce5" + integrity sha512-JWN82DzSbSk2vAPQaapv+8PPCN8si4peLoWJAoHTVizAvis3YamdcG+QLYbTCAVKRlh7kiLRgbAAroy3ppbZ7Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.3.tgz#c08e336debe60a119a5abd0cb66032da6ace6b08" - integrity sha512-mfvYChTALH5nmB0docrEkS5/+Yxt6SgbQOjPVuQx5PgqoVscmf2/JvsBnW73/YVdQBkVXs339hoDGPA6K2WR9w== +"@abp/jquery-validation-unobtrusive@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.4.tgz#2ef0ce29eeb9e6aac9a87338a67aab2060b63026" + integrity sha512-XA9s0uzGXjBju1ZS42xd3IWproSxLBdGEZIYoSbVmaxS0YDBa8FqffbNb/fgY9M8dqujZEasDVuQPhXLBRN+jA== dependencies: - "@abp/jquery-validation" "~4.4.3" + "@abp/jquery-validation" "~4.4.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.3.tgz#331f3671e6e37bed4dc737942e8eb2a6d1297722" - integrity sha512-RjKn9xxoYQz0v8yzWcVlbIQYZQTcXgYFX7GMJf04V/QbdU6vsge+5vHKzhcaW5XWL8+GgKHTqqoxbqzdJykaPA== +"@abp/jquery-validation@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.4.tgz#fa71e1729b692b40097175d68caad29ea13d5155" + integrity sha512-vrP/Vpne86GbPnHR8M8PGvm+B9kGd/JJiPzVN/egxEvvBKdw0APGk9R03Tji2Qu8CuZxvPnKzHHBwKRinWX3Ng== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" jquery-validation "^1.19.2" -"@abp/jquery@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.3.tgz#9d2dc238596a6e5c878b5be4b1d49e7e8f95aec4" - integrity sha512-BN2KU1mw0hyQD8/61ZOIDM0hyMDkhZix4TOWCQa3s18pWHlBEsjKVnINQlz9J9k4TZEdQP9D3wZmw+XUfZjoIw== +"@abp/jquery@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.4.tgz#cbf5f99562ad5f01c41aa61704b0136c4ad68594" + integrity sha512-0fltJprq9DMHHWeTAN7i8kAcod5czQ48LdjeIY3wuLDWkGgMVcfarECQ9cu7QekMryB0HFdrUjMJHIhxqzxc3Q== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" jquery "~3.6.0" -"@abp/lodash@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.3.tgz#8e936ebc54a9043eee80cb22f3dad5ea8a2306cb" - integrity sha512-QKFjdRd8cEZp7fg9MhuFhD5CP3MBw7CfaJ3yj0W1e5Tx+xtV+rYz4PrOE8/BLb4un7gxqUrEWBgdIzY+lBR7mQ== +"@abp/lodash@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.4.tgz#8abd3986bcf64561ecbc86f23f53677b3c34eda9" + integrity sha512-IyAZHiR1vPYhbla0lTH/iYK38PCR+9wP5zgrWGD0JSP9R642GEEhdeiuzwclv1aNGretg+TSATr+zSWB5V1DYQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" lodash "^4.17.15" -"@abp/luxon@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.3.tgz#bd3328f45714155870bc8a91d41a197a613392b0" - integrity sha512-rPVzSXEy+rJZLIQ10boOq6suQAZQWJyB5P+rvfSx8h9sbRpsQ5fJOX2ShnUUf/+49KHzRRIqy+vrhr1oiE0C8Q== +"@abp/luxon@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.4.tgz#429b28dddbd8fa65c6c58978451d426bb886c5a3" + integrity sha512-pw75sGoQ/d4OaNlmGwt55Eq7AGWXUBuXyrsNQWSJmkPV9AS2s//ZoxZut1Wu/qaKo5DV4VitEW1U21MuKoEZPA== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.3.tgz#194f39ebbabad7853089549a7e19cfd2a7393e98" - integrity sha512-bhME41UsDCPGxnLP+zqH8nsx1uAxRR8tAeBKOJV24Xf8FHEjUQEDBXG0t1PBYGZVn1/0Ugao7Z12G9uZOiZVog== +"@abp/malihu-custom-scrollbar-plugin@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.4.tgz#fea9aa4755993dac45a8ad10938da789ec523518" + integrity sha512-Mgtzpw94SjN91YWPdV/TfvDt5JZNpW6iCHfL2NjfH3sTXCywK/CanmhdQ0FYJCasRWVPTHfQPWydFsnyzHWXRQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.3.tgz#71015901aae117360f876c744903613494800c83" - integrity sha512-s7ArMLq2LC0m1oFcuCJghf5lEnGbq1D8/WaIKGmmD0ERL0g5xMccFlNbXm+Z79MJoTvQFssSLPTLZICjzWPKJw== +"@abp/select2@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.4.tgz#80d0e0b64cec86a3aa069e9086958946f631d2bf" + integrity sha512-8qx0nj9ZHrdnEPccpLhavHu4YnVp0Z5ZyfpfACVS2GgaxsR31DbltlGdnr2IfRyhK8nJWLNsW8UNhSoXQwGYEw== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" select2 "^4.0.13" -"@abp/sweetalert@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.3.tgz#287b9c89f90885742b074b4e3a427f0ec482952d" - integrity sha512-tAEgHMaTe+E+uS+Mt8XV3dt5yJJHg01Zsbp4ojO3wvdoAS6MKRXWdH05u3ZdwRQrJFbSgQjY85vWn/a/PnYRng== +"@abp/sweetalert@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.4.tgz#1af8934290d4e5adb7c620363ef2a9b746a6eeab" + integrity sha512-TgXm4rhqzTghKzgbxDT5NQcQ/PRFkgwJtnNWZK3XDZiKzw0auT8Wa3GtSsJJD5tl3Dx6VfnTtmf0gpPU5/9fKQ== dependencies: - "@abp/core" "~4.4.3" + "@abp/core" "~4.4.4" sweetalert "^2.1.2" -"@abp/timeago@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.3.tgz#7d31b9fcc128e9b8c6bb7870c4284427e9f9f383" - integrity sha512-E8FeAraStlYsHz6D1oBrwM5eHhZeCGrP7aA768Ke5UGIZPoYwyIIYLRfK4MCoCLKgTVlRrUn0Dj7Xkj9tWOfBQ== +"@abp/timeago@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.4.tgz#91ddb61439eaa138a42b9179ec92845efb05af29" + integrity sha512-r53FieaMDar60tGAu+NLr2qCem1+NhPgd7MtYEemJil8HUYci7T0fXvWcYhlrn98zipzEx3eiWo4eBwvIP8MLg== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" timeago "^1.6.7" -"@abp/toastr@~4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.3.tgz#45ef155fdbb6134a50794e456f820671c72e4105" - integrity sha512-dmKYS7iw/a+eWCD+J+nZ1htmGEjJSCsV1H8dDwA+ZxYJrE2/ejUh0LZ+b8Hsvobqfe/6bwYBj6oe0R9+vszCfg== +"@abp/toastr@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.4.tgz#1cd04ad6dfcb866bfaad3ec288407b0bf3f47c41" + integrity sha512-B7Q0Gza71nITTbryHcHqiIxtJzFbVmXeoPlcLlc/i4zvMaoibihevN10vXmPnfkdQUvTgViIjwA4/ZnBmyM11Q== dependencies: - "@abp/jquery" "~4.4.3" + "@abp/jquery" "~4.4.4" toastr "^2.1.4" -"@abp/utils@^4.4.3": - version "4.4.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.3.tgz#5d6939be5463adaa938357d74d1a35fed21b0115" - integrity sha512-B2E89fhM7vKDz9He6EeNc9P5RVYThiBLpTkKvJTeXG+DJtrP2ZbEICe1fcDA48wLFokXXKgx/SjoJlMvObhilQ== +"@abp/utils@~4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.4.tgz#0bd79fa4635224fcae7ff61224a8c54266db73bf" + integrity sha512-h8Nt2OPqi8EiXKAuvJIpBlCHhavL7BHr+ntJXY6yM4aCdcQtJdSAgNmh0skzEGnf1hZxrYOugtAz4Pk1WNjv/g== dependencies: just-compare "^1.3.0" diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json index c94337f8f8..5dd2f57c9c 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0", - "@abp/virtual-file-explorer": "^3.2.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.4", + "@abp/virtual-file-explorer": "^4.4.4" } } diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/core/abp.js b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/core/abp.js index 20bd92147a..c267fc151f 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/core/abp.js +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/core/abp.js @@ -684,12 +684,19 @@ var abp = abp || {}; document.cookie = cookieValue; } + /** + * Escape HTML to help prevent XSS attacks. + */ + abp.utils.htmlEscape = function (html) { + return typeof html === 'string' ? html.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"') : html; + } + /* SECURITY ***************************************/ abp.security = abp.security || {}; abp.security.antiForgery = abp.security.antiForgery || {}; abp.security.antiForgery.tokenCookieName = 'XSRF-TOKEN'; - abp.security.antiForgery.tokenHeaderName = 'X-XSRF-TOKEN'; + abp.security.antiForgery.tokenHeaderName = 'RequestVerificationToken'; abp.security.antiForgery.getToken = function () { return abp.utils.getCookieValue(abp.security.antiForgery.tokenCookieName); @@ -750,5 +757,20 @@ var abp = abp || {}; return toUtc(date); } }; + + /* FEATURES *************************************************/ + + abp.features = abp.features || {}; + abp.features.values = abp.features.values || {}; + + abp.features.isEnabled = function(name){ + var value = abp.features.get(name); + return value == 'true' || value == 'True'; + } + + abp.features.get = function (name) { + return abp.features.values[name]; + }; + })(); diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/jquery/abp.jquery.js b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/jquery/abp.jquery.js index 3087635e7d..81ebf1e2e1 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/jquery/abp.jquery.js +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/abp/jquery/abp.jquery.js @@ -99,19 +99,28 @@ var abp = abp || {}; options.success = undefined; options.error = undefined; - return $.Deferred(function ($dfd) { - $.ajax(options) + var xhr = null; + var promise = $.Deferred(function ($dfd) { + xhr = $.ajax(options) .done(function (data, textStatus, jqXHR) { $dfd.resolve(data); userOptions.success && userOptions.success(data); }).fail(function (jqXHR) { + if(jqXHR.statusText === 'abort') { + //ajax request is abort, ignore error handle. + return; + } if (jqXHR.getResponseHeader('_AbpErrorFormat') === 'true') { abp.ajax.handleAbpErrorResponse(jqXHR, userOptions, $dfd); } else { abp.ajax.handleNonAbpErrorResponse(jqXHR, userOptions, $dfd); } }); - }); + }).promise(); + + promise['jqXHR'] = xhr; + + return promise; }; $.extend(abp.ajax, { diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.css b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.css index 35ddb6a220..0a5e9b5a8a 100755 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.css +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.css @@ -1,8 +1,8 @@ /*! - * Bootstrap v4.4.1 (https://getbootstrap.com/) - * Copyright 2011-2019 The Bootstrap Authors - * Copyright 2011-2019 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * Bootstrap v4.5.2 (https://getbootstrap.com/) + * Copyright 2011-2020 The Bootstrap Authors + * Copyright 2011-2020 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ :root { --blue: #007bff; @@ -31,7 +31,7 @@ --breakpoint-md: 768px; --breakpoint-lg: 992px; --breakpoint-xl: 1200px; - --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } @@ -54,7 +54,7 @@ article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { body { margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 1rem; font-weight: 400; line-height: 1.5; @@ -163,12 +163,12 @@ a:hover { text-decoration: underline; } -a:not([href]) { +a:not([href]):not([class]) { color: inherit; text-decoration: none; } -a:not([href]):hover { +a:not([href]):not([class]):hover { color: inherit; text-decoration: none; } @@ -185,6 +185,7 @@ pre { margin-top: 0; margin-bottom: 1rem; overflow: auto; + -ms-overflow-style: scrollbar; } figure { @@ -215,6 +216,7 @@ caption { th { text-align: inherit; + text-align: -webkit-match-parent; } label { @@ -226,9 +228,8 @@ button { border-radius: 0; } -button:focus { - outline: 1px dotted; - outline: 5px auto -webkit-focus-ring-color; +button:focus:not(:focus-visible) { + outline: 0; } input, @@ -252,6 +253,10 @@ select { text-transform: none; } +[role="button"] { + cursor: pointer; +} + select { word-wrap: normal; } @@ -284,13 +289,6 @@ input[type="checkbox"] { padding: 0; } -input[type="date"], -input[type="time"], -input[type="datetime-local"], -input[type="month"] { - -webkit-appearance: listbox; -} - textarea { overflow: auto; resize: vertical; @@ -541,39 +539,12 @@ pre code { overflow-y: scroll; } -.container { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} - -@media (min-width: 576px) { - .container { - max-width: 540px; - } -} - -@media (min-width: 768px) { - .container { - max-width: 720px; - } -} - -@media (min-width: 992px) { - .container { - max-width: 960px; - } -} - -@media (min-width: 1200px) { - .container { - max-width: 1140px; - } -} - -.container-fluid, .container-sm, .container-md, .container-lg, .container-xl { +.container, +.container-fluid, +.container-sm, +.container-md, +.container-lg, +.container-xl { width: 100%; padding-right: 15px; padding-left: 15px; @@ -798,47 +769,47 @@ pre code { } .offset-1 { - margin-right: 8.333333%; + margin-left: 8.333333%; } .offset-2 { - margin-right: 16.666667%; + margin-left: 16.666667%; } .offset-3 { - margin-right: 25%; + margin-left: 25%; } .offset-4 { - margin-right: 33.333333%; + margin-left: 33.333333%; } .offset-5 { - margin-right: 41.666667%; + margin-left: 41.666667%; } .offset-6 { - margin-right: 50%; + margin-left: 50%; } .offset-7 { - margin-right: 58.333333%; + margin-left: 58.333333%; } .offset-8 { - margin-right: 66.666667%; + margin-left: 66.666667%; } .offset-9 { - margin-right: 75%; + margin-left: 75%; } .offset-10 { - margin-right: 83.333333%; + margin-left: 83.333333%; } .offset-11 { - margin-right: 91.666667%; + margin-left: 91.666667%; } @media (min-width: 576px) { @@ -970,40 +941,40 @@ pre code { order: 12; } .offset-sm-0 { - margin-right: 0; + margin-left: 0; } .offset-sm-1 { - margin-right: 8.333333%; + margin-left: 8.333333%; } .offset-sm-2 { - margin-right: 16.666667%; + margin-left: 16.666667%; } .offset-sm-3 { - margin-right: 25%; + margin-left: 25%; } .offset-sm-4 { - margin-right: 33.333333%; + margin-left: 33.333333%; } .offset-sm-5 { - margin-right: 41.666667%; + margin-left: 41.666667%; } .offset-sm-6 { - margin-right: 50%; + margin-left: 50%; } .offset-sm-7 { - margin-right: 58.333333%; + margin-left: 58.333333%; } .offset-sm-8 { - margin-right: 66.666667%; + margin-left: 66.666667%; } .offset-sm-9 { - margin-right: 75%; + margin-left: 75%; } .offset-sm-10 { - margin-right: 83.333333%; + margin-left: 83.333333%; } .offset-sm-11 { - margin-right: 91.666667%; + margin-left: 91.666667%; } } @@ -1136,40 +1107,40 @@ pre code { order: 12; } .offset-md-0 { - margin-right: 0; + margin-left: 0; } .offset-md-1 { - margin-right: 8.333333%; + margin-left: 8.333333%; } .offset-md-2 { - margin-right: 16.666667%; + margin-left: 16.666667%; } .offset-md-3 { - margin-right: 25%; + margin-left: 25%; } .offset-md-4 { - margin-right: 33.333333%; + margin-left: 33.333333%; } .offset-md-5 { - margin-right: 41.666667%; + margin-left: 41.666667%; } .offset-md-6 { - margin-right: 50%; + margin-left: 50%; } .offset-md-7 { - margin-right: 58.333333%; + margin-left: 58.333333%; } .offset-md-8 { - margin-right: 66.666667%; + margin-left: 66.666667%; } .offset-md-9 { - margin-right: 75%; + margin-left: 75%; } .offset-md-10 { - margin-right: 83.333333%; + margin-left: 83.333333%; } .offset-md-11 { - margin-right: 91.666667%; + margin-left: 91.666667%; } } @@ -1302,40 +1273,40 @@ pre code { order: 12; } .offset-lg-0 { - margin-right: 0; + margin-left: 0; } .offset-lg-1 { - margin-right: 8.333333%; + margin-left: 8.333333%; } .offset-lg-2 { - margin-right: 16.666667%; + margin-left: 16.666667%; } .offset-lg-3 { - margin-right: 25%; + margin-left: 25%; } .offset-lg-4 { - margin-right: 33.333333%; + margin-left: 33.333333%; } .offset-lg-5 { - margin-right: 41.666667%; + margin-left: 41.666667%; } .offset-lg-6 { - margin-right: 50%; + margin-left: 50%; } .offset-lg-7 { - margin-right: 58.333333%; + margin-left: 58.333333%; } .offset-lg-8 { - margin-right: 66.666667%; + margin-left: 66.666667%; } .offset-lg-9 { - margin-right: 75%; + margin-left: 75%; } .offset-lg-10 { - margin-right: 83.333333%; + margin-left: 83.333333%; } .offset-lg-11 { - margin-right: 91.666667%; + margin-left: 91.666667%; } } @@ -1468,40 +1439,40 @@ pre code { order: 12; } .offset-xl-0 { - margin-right: 0; + margin-left: 0; } .offset-xl-1 { - margin-right: 8.333333%; + margin-left: 8.333333%; } .offset-xl-2 { - margin-right: 16.666667%; + margin-left: 16.666667%; } .offset-xl-3 { - margin-right: 25%; + margin-left: 25%; } .offset-xl-4 { - margin-right: 33.333333%; + margin-left: 33.333333%; } .offset-xl-5 { - margin-right: 41.666667%; + margin-left: 41.666667%; } .offset-xl-6 { - margin-right: 50%; + margin-left: 50%; } .offset-xl-7 { - margin-right: 58.333333%; + margin-left: 58.333333%; } .offset-xl-8 { - margin-right: 66.666667%; + margin-left: 66.666667%; } .offset-xl-9 { - margin-right: 75%; + margin-left: 75%; } .offset-xl-10 { - margin-right: 83.333333%; + margin-left: 83.333333%; } .offset-xl-11 { - margin-right: 91.666667%; + margin-left: 91.666667%; } } @@ -1888,11 +1859,6 @@ pre code { box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } -.form-control::-webkit-input-placeholder { - color: #6c757d; - opacity: 1; -} - .form-control::-moz-placeholder { color: #6c757d; opacity: 1; @@ -1903,11 +1869,6 @@ pre code { opacity: 1; } -.form-control::-ms-input-placeholder { - color: #6c757d; - opacity: 1; -} - .form-control::placeholder { color: #6c757d; opacity: 1; @@ -1918,6 +1879,15 @@ pre code { opacity: 1; } +input[type="date"].form-control, +input[type="time"].form-control, +input[type="datetime-local"].form-control, +input[type="month"].form-control { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + select.form-control:focus::-ms-value { color: #495057; background-color: #fff; @@ -2061,6 +2031,7 @@ textarea.form-control { .valid-tooltip { position: absolute; top: 100%; + left: 0; z-index: 5; display: none; max-width: 100%; @@ -2073,6 +2044,11 @@ textarea.form-control { border-radius: 0.25rem; } +.form-row > .col > .valid-tooltip, +.form-row > [class*="col-"] > .valid-tooltip { + left: 5px; +} + .was-validated :valid ~ .valid-feedback, .was-validated :valid ~ .valid-tooltip, .is-valid ~ .valid-feedback, @@ -2102,7 +2078,7 @@ textarea.form-control { .was-validated .custom-select:valid, .custom-select.is-valid { border-color: #28a745; padding-right: calc(0.75em + 2.3125rem); - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.75rem center/8px 10px no-repeat, #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) no-repeat; } .was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { @@ -2161,6 +2137,7 @@ textarea.form-control { .invalid-tooltip { position: absolute; top: 100%; + left: 0; z-index: 5; display: none; max-width: 100%; @@ -2173,6 +2150,11 @@ textarea.form-control { border-radius: 0.25rem; } +.form-row > .col > .invalid-tooltip, +.form-row > [class*="col-"] > .invalid-tooltip { + left: 5px; +} + .was-validated :invalid ~ .invalid-feedback, .was-validated :invalid ~ .invalid-tooltip, .is-invalid ~ .invalid-feedback, @@ -2202,7 +2184,7 @@ textarea.form-control { .was-validated .custom-select:invalid, .custom-select.is-invalid { border-color: #dc3545; padding-right: calc(0.75em + 2.3125rem); - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.75rem center/8px 10px no-repeat, #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) no-repeat; } .was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { @@ -2315,7 +2297,6 @@ textarea.form-control { color: #212529; text-align: center; vertical-align: middle; - cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; @@ -2349,6 +2330,10 @@ textarea.form-control { opacity: 0.65; } +.btn:not(:disabled):not(.disabled) { + cursor: pointer; +} + a.btn.disabled, fieldset:disabled a.btn { pointer-events: none; @@ -2919,7 +2904,6 @@ fieldset:disabled a.btn { .btn-link:focus, .btn-link.focus { text-decoration: underline; - box-shadow: none; } .btn-link:disabled, .btn-link.disabled { @@ -3201,7 +3185,7 @@ input[type="button"].btn-block { .dropdown-item:hover, .dropdown-item:focus { color: #16181b; text-decoration: none; - background-color: #f8f9fa; + background-color: #e9ecef; } .dropdown-item.active, .dropdown-item:active { @@ -3211,7 +3195,7 @@ input[type="button"].btn-block { } .dropdown-item.disabled, .dropdown-item:disabled { - color: #6c757d; + color: #adb5bd; pointer-events: none; background-color: transparent; } @@ -3367,7 +3351,8 @@ input[type="button"].btn-block { .input-group > .custom-select, .input-group > .custom-file { position: relative; - flex: 1 1 0%; + flex: 1 1 auto; + width: 1%; min-width: 0; margin-bottom: 0; } @@ -3397,12 +3382,6 @@ input[type="button"].btn-block { z-index: 4; } -.input-group > .form-control:not(:last-child), -.input-group > .custom-select:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - .input-group > .form-control:not(:first-child), .input-group > .custom-select:not(:first-child) { border-top-left-radius: 0; @@ -3415,14 +3394,23 @@ input[type="button"].btn-block { } .input-group > .custom-file:not(:last-child) .custom-file-label, -.input-group > .custom-file:not(:last-child) .custom-file-label::after { +.input-group > .custom-file:not(:first-child) .custom-file-label { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group:not(.has-validation) > .form-control:not(:last-child), +.input-group:not(.has-validation) > .custom-select:not(:last-child), +.input-group:not(.has-validation) > .custom-file:not(:last-child) .custom-file-label::after { border-top-right-radius: 0; border-bottom-right-radius: 0; } -.input-group > .custom-file:not(:first-child) .custom-file-label { - border-top-left-radius: 0; - border-bottom-left-radius: 0; +.input-group.has-validation > .form-control:nth-last-child(n + 3), +.input-group.has-validation > .custom-select:nth-last-child(n + 3), +.input-group.has-validation > .custom-file:nth-last-child(n + 3) .custom-file-label::after { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } .input-group-prepend, @@ -3522,8 +3510,10 @@ input[type="button"].btn-block { .input-group > .input-group-prepend > .btn, .input-group > .input-group-prepend > .input-group-text, -.input-group > .input-group-append:not(:last-child) > .btn, -.input-group > .input-group-append:not(:last-child) > .input-group-text, +.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .btn, +.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .input-group-text, +.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .btn, +.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .input-group-text, .input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), .input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { border-top-right-radius: 0; @@ -3542,9 +3532,12 @@ input[type="button"].btn-block { .custom-control { position: relative; + z-index: 1; display: block; min-height: 1.5rem; padding-left: 1.5rem; + -webkit-print-color-adjust: exact; + color-adjust: exact; } .custom-control-inline { @@ -3616,7 +3609,7 @@ input[type="button"].btn-block { width: 1rem; height: 1rem; content: ""; - background: no-repeat 50% / 50% 50%; + background: 50% / 50% 50% no-repeat; } .custom-checkbox .custom-control-label::before { @@ -3702,7 +3695,7 @@ input[type="button"].btn-block { line-height: 1.5; color: #495057; vertical-align: middle; - background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; + background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.75rem center/8px 10px no-repeat; border: 1px solid #ced4da; border-radius: 0.25rem; -webkit-appearance: none; @@ -3771,6 +3764,7 @@ input[type="button"].btn-block { width: 100%; height: calc(1.5em + 0.75rem + 2px); margin: 0; + overflow: hidden; opacity: 0; } @@ -3800,6 +3794,7 @@ input[type="button"].btn-block { z-index: 1; height: calc(1.5em + 0.75rem + 2px); padding: 0.375rem 0.75rem; + overflow: hidden; font-weight: 400; line-height: 1.5; color: #495057; @@ -3836,7 +3831,7 @@ input[type="button"].btn-block { } .custom-range:focus { - outline: none; + outline: 0; } .custom-range:focus::-webkit-slider-thumb { @@ -4029,11 +4024,8 @@ input[type="button"].btn-block { border-bottom: 1px solid #dee2e6; } -.nav-tabs .nav-item { - margin-bottom: -1px; -} - .nav-tabs .nav-link { + margin-bottom: -1px; border: 1px solid transparent; border-top-left-radius: 0.25rem; border-top-right-radius: 0.25rem; @@ -4072,11 +4064,13 @@ input[type="button"].btn-block { background-color: #007bff; } +.nav-fill > .nav-link, .nav-fill .nav-item { flex: 1 1 auto; text-align: center; } +.nav-justified > .nav-link, .nav-justified .nav-item { flex-basis: 0; flex-grow: 1; @@ -4171,8 +4165,12 @@ input[type="button"].btn-block { height: 1.5em; vertical-align: middle; content: ""; - background: no-repeat center center; - background-size: 100% 100%; + background: 50% / 100% 100% no-repeat; +} + +.navbar-nav-scroll { + max-height: 75vh; + overflow-y: auto; } @media (max-width: 575.98px) { @@ -4202,6 +4200,9 @@ input[type="button"].btn-block { .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl { flex-wrap: nowrap; } + .navbar-expand-sm .navbar-nav-scroll { + overflow: visible; + } .navbar-expand-sm .navbar-collapse { display: flex !important; flex-basis: auto; @@ -4238,6 +4239,9 @@ input[type="button"].btn-block { .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl { flex-wrap: nowrap; } + .navbar-expand-md .navbar-nav-scroll { + overflow: visible; + } .navbar-expand-md .navbar-collapse { display: flex !important; flex-basis: auto; @@ -4274,6 +4278,9 @@ input[type="button"].btn-block { .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl { flex-wrap: nowrap; } + .navbar-expand-lg .navbar-nav-scroll { + overflow: visible; + } .navbar-expand-lg .navbar-collapse { display: flex !important; flex-basis: auto; @@ -4310,6 +4317,9 @@ input[type="button"].btn-block { .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl { flex-wrap: nowrap; } + .navbar-expand-xl .navbar-nav-scroll { + overflow: visible; + } .navbar-expand-xl .navbar-collapse { display: flex !important; flex-basis: auto; @@ -4348,6 +4358,10 @@ input[type="button"].btn-block { flex-wrap: nowrap; } +.navbar-expand .navbar-nav-scroll { + overflow: visible; +} + .navbar-expand .navbar-collapse { display: flex !important; flex-basis: auto; @@ -4390,7 +4404,7 @@ input[type="button"].btn-block { } .navbar-light .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } .navbar-light .navbar-text { @@ -4438,7 +4452,7 @@ input[type="button"].btn-block { } .navbar-dark .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } .navbar-dark .navbar-text { @@ -4470,14 +4484,26 @@ input[type="button"].btn-block { margin-left: 0; } -.card > .list-group:first-child .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; +.card > .list-group { + border-top: inherit; + border-bottom: inherit; } -.card > .list-group:last-child .list-group-item:last-child { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; +.card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} + +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} + +.card > .card-header + .list-group, +.card > .list-group + .card-footer { + border-top: 0; } .card-body { @@ -4518,10 +4544,6 @@ input[type="button"].btn-block { border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; } -.card-header + .list-group .list-group-item:first-child { - border-top: 0; -} - .card-footer { padding: 0.75rem 1.25rem; background-color: rgba(0, 0, 0, 0.03); @@ -4551,6 +4573,7 @@ input[type="button"].btn-block { bottom: 0; left: 0; padding: 1.25rem; + border-radius: calc(0.25rem - 1px); } .card-img, @@ -4653,6 +4676,10 @@ input[type="button"].btn-block { } } +.accordion { + overflow-anchor: none; +} + .accordion > .card { overflow: hidden; } @@ -4688,7 +4715,7 @@ input[type="button"].btn-block { } .breadcrumb-item + .breadcrumb-item::before { - display: inline-block; + float: left; padding-right: 0.5rem; color: #6c757d; content: "/"; @@ -4997,6 +5024,7 @@ a.badge-dark:focus, a.badge-dark.focus { position: absolute; top: 0; right: 0; + z-index: 2; padding: 0.75rem 1.25rem; color: inherit; } @@ -5135,6 +5163,7 @@ a.badge-dark:focus, a.badge-dark.focus { display: flex; height: 1rem; overflow: hidden; + line-height: 0; font-size: 0.75rem; background-color: #e9ecef; border-radius: 0.25rem; @@ -5164,8 +5193,8 @@ a.badge-dark:focus, a.badge-dark.focus { } .progress-bar-animated { - -webkit-animation: progress-bar-stripes 1s linear infinite; - animation: progress-bar-stripes 1s linear infinite; + -webkit-animation: 1s linear infinite progress-bar-stripes; + animation: 1s linear infinite progress-bar-stripes; } @media (prefers-reduced-motion: reduce) { @@ -5189,6 +5218,7 @@ a.badge-dark:focus, a.badge-dark.focus { flex-direction: column; padding-left: 0; margin-bottom: 0; + border-radius: 0.25rem; } .list-group-item-action { @@ -5218,13 +5248,13 @@ a.badge-dark:focus, a.badge-dark.focus { } .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; + border-top-left-radius: inherit; + border-top-right-radius: inherit; } .list-group-item:last-child { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; } .list-group-item.disabled, .list-group-item:disabled { @@ -5253,26 +5283,26 @@ a.badge-dark:focus, a.badge-dark.focus { flex-direction: row; } -.list-group-horizontal .list-group-item:first-child { +.list-group-horizontal > .list-group-item:first-child { border-bottom-left-radius: 0.25rem; border-top-right-radius: 0; } -.list-group-horizontal .list-group-item:last-child { +.list-group-horizontal > .list-group-item:last-child { border-top-right-radius: 0.25rem; border-bottom-left-radius: 0; } -.list-group-horizontal .list-group-item.active { +.list-group-horizontal > .list-group-item.active { margin-top: 0; } -.list-group-horizontal .list-group-item + .list-group-item { +.list-group-horizontal > .list-group-item + .list-group-item { border-top-width: 1px; border-left-width: 0; } -.list-group-horizontal .list-group-item + .list-group-item.active { +.list-group-horizontal > .list-group-item + .list-group-item.active { margin-left: -1px; border-left-width: 1px; } @@ -5281,22 +5311,22 @@ a.badge-dark:focus, a.badge-dark.focus { .list-group-horizontal-sm { flex-direction: row; } - .list-group-horizontal-sm .list-group-item:first-child { + .list-group-horizontal-sm > .list-group-item:first-child { border-bottom-left-radius: 0.25rem; border-top-right-radius: 0; } - .list-group-horizontal-sm .list-group-item:last-child { + .list-group-horizontal-sm > .list-group-item:last-child { border-top-right-radius: 0.25rem; border-bottom-left-radius: 0; } - .list-group-horizontal-sm .list-group-item.active { + .list-group-horizontal-sm > .list-group-item.active { margin-top: 0; } - .list-group-horizontal-sm .list-group-item + .list-group-item { + .list-group-horizontal-sm > .list-group-item + .list-group-item { border-top-width: 1px; border-left-width: 0; } - .list-group-horizontal-sm .list-group-item + .list-group-item.active { + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { margin-left: -1px; border-left-width: 1px; } @@ -5306,22 +5336,22 @@ a.badge-dark:focus, a.badge-dark.focus { .list-group-horizontal-md { flex-direction: row; } - .list-group-horizontal-md .list-group-item:first-child { + .list-group-horizontal-md > .list-group-item:first-child { border-bottom-left-radius: 0.25rem; border-top-right-radius: 0; } - .list-group-horizontal-md .list-group-item:last-child { + .list-group-horizontal-md > .list-group-item:last-child { border-top-right-radius: 0.25rem; border-bottom-left-radius: 0; } - .list-group-horizontal-md .list-group-item.active { + .list-group-horizontal-md > .list-group-item.active { margin-top: 0; } - .list-group-horizontal-md .list-group-item + .list-group-item { + .list-group-horizontal-md > .list-group-item + .list-group-item { border-top-width: 1px; border-left-width: 0; } - .list-group-horizontal-md .list-group-item + .list-group-item.active { + .list-group-horizontal-md > .list-group-item + .list-group-item.active { margin-left: -1px; border-left-width: 1px; } @@ -5331,22 +5361,22 @@ a.badge-dark:focus, a.badge-dark.focus { .list-group-horizontal-lg { flex-direction: row; } - .list-group-horizontal-lg .list-group-item:first-child { + .list-group-horizontal-lg > .list-group-item:first-child { border-bottom-left-radius: 0.25rem; border-top-right-radius: 0; } - .list-group-horizontal-lg .list-group-item:last-child { + .list-group-horizontal-lg > .list-group-item:last-child { border-top-right-radius: 0.25rem; border-bottom-left-radius: 0; } - .list-group-horizontal-lg .list-group-item.active { + .list-group-horizontal-lg > .list-group-item.active { margin-top: 0; } - .list-group-horizontal-lg .list-group-item + .list-group-item { + .list-group-horizontal-lg > .list-group-item + .list-group-item { border-top-width: 1px; border-left-width: 0; } - .list-group-horizontal-lg .list-group-item + .list-group-item.active { + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { margin-left: -1px; border-left-width: 1px; } @@ -5356,38 +5386,36 @@ a.badge-dark:focus, a.badge-dark.focus { .list-group-horizontal-xl { flex-direction: row; } - .list-group-horizontal-xl .list-group-item:first-child { + .list-group-horizontal-xl > .list-group-item:first-child { border-bottom-left-radius: 0.25rem; border-top-right-radius: 0; } - .list-group-horizontal-xl .list-group-item:last-child { + .list-group-horizontal-xl > .list-group-item:last-child { border-top-right-radius: 0.25rem; border-bottom-left-radius: 0; } - .list-group-horizontal-xl .list-group-item.active { + .list-group-horizontal-xl > .list-group-item.active { margin-top: 0; } - .list-group-horizontal-xl .list-group-item + .list-group-item { + .list-group-horizontal-xl > .list-group-item + .list-group-item { border-top-width: 1px; border-left-width: 0; } - .list-group-horizontal-xl .list-group-item + .list-group-item.active { + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { margin-left: -1px; border-left-width: 1px; } } -.list-group-flush .list-group-item { - border-right-width: 0; - border-left-width: 0; +.list-group-flush { border-radius: 0; } -.list-group-flush .list-group-item:first-child { - border-top-width: 0; +.list-group-flush > .list-group-item { + border-width: 0 0 1px; } -.list-group-flush:last-child .list-group-item:last-child { +.list-group-flush > .list-group-item:last-child { border-bottom-width: 0; } @@ -5542,9 +5570,6 @@ button.close { padding: 0; background-color: transparent; border: 0; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; } a.close.disabled { @@ -5552,15 +5577,13 @@ a.close.disabled { } .toast { + flex-basis: 350px; max-width: 350px; - overflow: hidden; font-size: 0.875rem; background-color: rgba(255, 255, 255, 0.85); background-clip: padding-box; border: 1px solid rgba(0, 0, 0, 0.1); box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); - -webkit-backdrop-filter: blur(10px); - backdrop-filter: blur(10px); opacity: 0; border-radius: 0.25rem; } @@ -5590,6 +5613,8 @@ a.close.disabled { background-color: rgba(255, 255, 255, 0.85); background-clip: padding-box; border-bottom: 1px solid rgba(0, 0, 0, 0.05); + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); } .toast-body { @@ -5671,6 +5696,9 @@ a.close.disabled { .modal-dialog-centered::before { display: block; height: calc(100vh - 1rem); + height: -webkit-min-content; + height: -moz-min-content; + height: min-content; content: ""; } @@ -5784,6 +5812,9 @@ a.close.disabled { } .modal-dialog-centered::before { height: calc(100vh - 3.5rem); + height: -webkit-min-content; + height: -moz-min-content; + height: min-content; } .modal-sm { max-width: 300px; @@ -5808,7 +5839,7 @@ a.close.disabled { z-index: 1070; display: block; margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-style: normal; font-weight: 400; line-height: 1.5; @@ -5921,7 +5952,7 @@ a.close.disabled { z-index: 1060; display: block; max-width: 276px; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-style: normal; font-weight: 400; line-height: 1.5; @@ -6200,7 +6231,7 @@ a.close.disabled { display: inline-block; width: 20px; height: 20px; - background: no-repeat 50% / 100% 100%; + background: 50% / 100% 100% no-repeat; } .carousel-control-prev-icon { @@ -6284,8 +6315,8 @@ a.close.disabled { border: 0.25em solid currentColor; border-right-color: transparent; border-radius: 50%; - -webkit-animation: spinner-border .75s linear infinite; - animation: spinner-border .75s linear infinite; + -webkit-animation: .75s linear infinite spinner-border; + animation: .75s linear infinite spinner-border; } .spinner-border-sm { @@ -6300,6 +6331,7 @@ a.close.disabled { } 50% { opacity: 1; + transform: none; } } @@ -6309,6 +6341,7 @@ a.close.disabled { } 50% { opacity: 1; + transform: none; } } @@ -6320,8 +6353,8 @@ a.close.disabled { background-color: currentColor; border-radius: 50%; opacity: 0; - -webkit-animation: spinner-grow .75s linear infinite; - animation: spinner-grow .75s linear infinite; + -webkit-animation: .75s linear infinite spinner-grow; + animation: .75s linear infinite spinner-grow; } .spinner-grow-sm { @@ -6329,6 +6362,14 @@ a.close.disabled { height: 1rem; } +@media (prefers-reduced-motion: reduce) { + .spinner-border, + .spinner-grow { + -webkit-animation-duration: 1.5s; + animation-duration: 1.5s; + } +} + .align-baseline { vertical-align: baseline !important; } @@ -7412,6 +7453,26 @@ button.bg-dark:focus { } } +.user-select-all { + -webkit-user-select: all !important; + -moz-user-select: all !important; + user-select: all !important; +} + +.user-select-auto { + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + -ms-user-select: auto !important; + user-select: auto !important; +} + +.user-select-none { + -webkit-user-select: none !important; + -moz-user-select: none !important; + -ms-user-select: none !important; + user-select: none !important; +} + .overflow-auto { overflow: auto !important; } @@ -7567,18 +7628,6 @@ button.bg-dark:focus { height: 100vh !important; } -.stretched-link::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - pointer-events: auto; - content: ""; - background-color: rgba(0, 0, 0, 0); -} - .m-0 { margin: 0 !important; } @@ -9391,6 +9440,18 @@ button.bg-dark:focus { } } +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + pointer-events: auto; + content: ""; + background-color: rgba(0, 0, 0, 0); +} + .text-monospace { font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; } @@ -9607,7 +9668,7 @@ a.text-dark:hover, a.text-dark:focus { .text-break { word-break: break-word !important; - overflow-wrap: break-word !important; + word-wrap: break-word !important; } .text-reset { diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.css.map b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.css.map index a1927ae7b4..69262df679 100755 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.css.map +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/css/bootstrap-rtl.css.map @@ -1 +1 @@ -{"version":3,"sources":["../../scss/bootstrap-rtl.scss","bootstrap-rtl.css","../../scss/_root.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/vendor/_rfs.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_functions.scss","../../scss/_forms.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_forms.scss","../../scss/mixins/_gradients.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/utilities/_align.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_background.scss","../../scss/utilities/_borders.scss","../../scss/utilities/_display.scss","../../scss/utilities/_embed.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/utilities/_overflow.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_shadows.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_stretched-link.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/_print.scss","../../scss/_rtl.scss"],"names":[],"mappings":"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AAwB;AFpH1B;;AE4HA;EACE,aAAa;EACb,0BAA0B;AFzH5B;;AEgIA;EACE,qBAAqB;AF7HvB;;AEgIA;EACE,kBAAkB;EAClB,eAAe;AF7HjB;;AEgIA;EACE,aAAa;AF7Hf;;AAEA;EEiIE,wBAAwB;AF/H1B;;AM3VA;;EAEE,qBHySuC;EGvSvC,gBHyS+B;EGxS/B,gBHyS+B;AHoDjC;;AMzVA;EFgHM,iBAtCY;AJmRlB;;AM5VA;EF+GM,eAtCY;AJuRlB;;AM/VA;EF8GM,kBAtCY;AJ2RlB;;AMlWA;EF6GM,iBAtCY;AJ+RlB;;AMrWA;EF4GM,kBAtCY;AJmSlB;;AMxWA;EF2GM,eAtCY;AJuSlB;;AM1WA;EFyGM,kBAtCY;EEjEhB,gBH2S+B;AHkEjC;;AMzWA;EFmGM,eAtCY;EE3DhB,gBH8R+B;EG7R/B,gBHqR+B;AHuFjC;;AM1WA;EF8FM,iBAtCY;EEtDhB,gBH0R+B;EGzR/B,gBHgR+B;AH6FjC;;AM3WA;EFyFM,iBAtCY;EEjDhB,gBHsR+B;EGrR/B,gBH2Q+B;AHmGjC;;AM5WA;EFoFM,iBAtCY;EE5ChB,gBHkR+B;EGjR/B,gBHsQ+B;AHyGjC;;AElVA;EIpBE,gBHiFW;EGhFX,mBHgFW;EG/EX,SAAS;EACT,wCHzCa;AHmZf;;AMlWA;;EFMI,cAAW;EEHb,gBH8N+B;AHuIjC;;AMlWA;;EAEE,cHsQgC;EGrQhC,yBH8QmC;AHuFrC;;AM7VA;EC/EE,eAAe;EACf,gBAAgB;APgblB;;AM7VA;ECpFE,eAAe;EACf,gBAAgB;APqblB;;AM/VA;EACE,qBAAqB;ANkWvB;;AMnWA;EAII,oBHwP+B;AH2GnC;;AMzVA;EFjCI,cAAW;EEmCb,yBAAyB;AN4V3B;;AMxVA;EACE,mBHwBW;ECTP,kBAtCY;AJmXlB;;AMxVA;EACE,cAAc;EF7CZ,cAAW;EE+Cb,cH1GgB;AHqclB;;AM9VA;EAMI,qBAAqB;AN4VzB;;AQ/cA;ECIE,eAAe;EAGf,YAAY;AT6cd;;AQ9cA;EACE,gBLigCwC;EKhgCxC,sBLRa;EKSb,yBLNgB;EOLd,sBP6OgC;EMvOlC,eAAe;EAGf,YAAY;ATsdd;;AQxcA;EAEE,qBAAqB;AR0cvB;;AQvcA;EACE,qBAA0B;EAC1B,cAAc;AR0chB;;AQvcA;EJkCI,cAAW;EIhCb,cL3BgB;AHqelB;;AWjfA;EPuEI,gBAAW;EOrEb,cRoCe;EQnCf,qBAAqB;AXofvB;;AWjfE;EACE,cAAc;AXoflB;;AW/eA;EACE,sBRqlCuC;EC3hCrC,gBAAW;EOxDb,WRTa;EQUb,yBRDgB;EOXd,qBP+O+B;AHgRnC;;AWvfA;EASI,UAAU;EPkDV,eAAW;EOhDX,gBR4Q6B;AHsOjC;;AE1SA;ESjME,cAAc;EPyCZ,gBAAW;EOvCb,cRjBgB;AHggBlB;;AWlfA;EP0CI,kBAAW;EOlCX,cAAc;EACd,kBAAkB;AX+etB;;AW1eA;EACE,iBR4jCuC;EQ3jCvC,kBAAkB;AX6epB;;AYrhBE;ECDA,WAAW;EACX,mBAA0B;EAC1B,kBAAyB;EACzB,kBAAkB;EAClB,iBAAiB;Ab0hBnB;;AcveI;EFtDF;ICaI,gBVmMK;EHkVT;AACF;;Ac7eI;EFtDF;ICaI,gBVoMK;EHuVT;AACF;;AcnfI;EFtDF;ICaI,gBVqMK;EH4VT;AACF;;AczfI;EFtDF;ICaI,iBVsMM;EHiWV;AACF;;AY/iBE;ECPA,WAAW;EACX,mBAA0B;EAC1B,kBAAyB;EACzB,kBAAkB;EAClB,iBAAiB;Ab0jBnB;;AcvgBI;EFrCE;IACE,gBT8LG;EHkXT;AACF;;Ac7gBI;EFrCE;IACE,gBT+LG;EHuXT;AACF;;AcnhBI;EFrCE;IACE,gBTgMG;EH4XT;AACF;;AczhBI;EFrCE;IACE,iBTiMI;EHiYV;AACF;;AY/iBE;ECnBA,aAAa;EACb,eAAe;EACf,mBAA0B;EAC1B,kBAAyB;AbskB3B;;AYhjBE;EACE,eAAe;EACf,cAAc;AZmjBlB;;AYrjBE;;EAMI,gBAAgB;EAChB,eAAe;AZojBrB;;AetmBE;;;;;;EACE,kBAAkB;EAClB,WAAW;EACX,mBAA0B;EAC1B,kBAAyB;Af8mB7B;;Ae3lBM;EACE,aAAa;EACb,YAAY;EACZ,eAAe;Af8lBvB;;Ae1lBQ;EF8BJ,cAAuB;EACvB,eAAwB;AbgkB5B;;Ae/lBQ;EF8BJ,aAAuB;EACvB,cAAwB;AbqkB5B;;AepmBQ;EF8BJ,oBAAuB;EACvB,qBAAwB;Ab0kB5B;;AezmBQ;EF8BJ,aAAuB;EACvB,cAAwB;Ab+kB5B;;Ae9mBQ;EF8BJ,aAAuB;EACvB,cAAwB;AbolB5B;;AennBQ;EF8BJ,oBAAuB;EACvB,qBAAwB;AbylB5B;;AennBM;EFQJ,cAAc;EACd,WAAW;EACX,eAAe;Ab+mBjB;;AepnBQ;EFLN,mBAAsC;EAItC,oBAAuC;Ab0nBzC;;AeznBQ;EFLN,oBAAsC;EAItC,qBAAuC;Ab+nBzC;;Ae9nBQ;EFLN,aAAsC;EAItC,cAAuC;AbooBzC;;AenoBQ;EFLN,oBAAsC;EAItC,qBAAuC;AbyoBzC;;AexoBQ;EFLN,oBAAsC;EAItC,qBAAuC;Ab8oBzC;;Ae7oBQ;EFLN,aAAsC;EAItC,cAAuC;AbmpBzC;;AelpBQ;EFLN,oBAAsC;EAItC,qBAAuC;AbwpBzC;;AevpBQ;EFLN,oBAAsC;EAItC,qBAAuC;Ab6pBzC;;Ae5pBQ;EFLN,aAAsC;EAItC,cAAuC;AbkqBzC;;AejqBQ;EFLN,oBAAsC;EAItC,qBAAuC;AbuqBzC;;AetqBQ;EFLN,oBAAsC;EAItC,qBAAuC;Ab4qBzC;;Ae3qBQ;EFLN,cAAsC;EAItC,eAAuC;AbirBzC;;Ae3qBM;EAAwB,SAAS;Af+qBvC;;Ae7qBM;EAAuB,SZ6KG;AHogBhC;;Ae9qBQ;EAAwB,QADZ;AfmrBpB;;AelrBQ;EAAwB,QADZ;AfurBpB;;AetrBQ;EAAwB,QADZ;Af2rBpB;;Ae1rBQ;EAAwB,QADZ;Af+rBpB;;Ae9rBQ;EAAwB,QADZ;AfmsBpB;;AelsBQ;EAAwB,QADZ;AfusBpB;;AetsBQ;EAAwB,QADZ;Af2sBpB;;Ae1sBQ;EAAwB,QADZ;Af+sBpB;;Ae9sBQ;EAAwB,QADZ;AfmtBpB;;AeltBQ;EAAwB,QADZ;AfutBpB;;AettBQ;EAAwB,SADZ;Af2tBpB;;Ae1tBQ;EAAwB,SADZ;Af+tBpB;;Ae9tBQ;EAAwB,SADZ;AfmuBpB;;Ae5tBU;EFNR,uBAA+C;AbsuBjD;;AehuBU;EFNR,wBAA+C;Ab0uBjD;;AepuBU;EFNR,iBAA+C;Ab8uBjD;;AexuBU;EFNR,wBAA+C;AbkvBjD;;Ae5uBU;EFNR,wBAA+C;AbsvBjD;;AehvBU;EFNR,iBAA+C;Ab0vBjD;;AepvBU;EFNR,wBAA+C;Ab8vBjD;;AexvBU;EFNR,wBAA+C;AbkwBjD;;Ae5vBU;EFNR,iBAA+C;AbswBjD;;AehwBU;EFNR,wBAA+C;Ab0wBjD;;AepwBU;EFNR,wBAA+C;Ab8wBjD;;Ac3wBI;EC9BE;IACE,aAAa;IACb,YAAY;IACZ,eAAe;Ef6yBrB;EezyBM;IF8BJ,cAAuB;IACvB,eAAwB;Eb8wB1B;Ee7yBM;IF8BJ,aAAuB;IACvB,cAAwB;EbkxB1B;EejzBM;IF8BJ,oBAAuB;IACvB,qBAAwB;EbsxB1B;EerzBM;IF8BJ,aAAuB;IACvB,cAAwB;Eb0xB1B;EezzBM;IF8BJ,aAAuB;IACvB,cAAwB;Eb8xB1B;Ee7zBM;IF8BJ,oBAAuB;IACvB,qBAAwB;EbkyB1B;Ee5zBI;IFQJ,cAAc;IACd,WAAW;IACX,eAAe;EbuzBf;Ee5zBM;IFLN,mBAAsC;IAItC,oBAAuC;Ebi0BvC;Eeh0BM;IFLN,oBAAsC;IAItC,qBAAuC;Ebq0BvC;Eep0BM;IFLN,aAAsC;IAItC,cAAuC;Eby0BvC;Eex0BM;IFLN,oBAAsC;IAItC,qBAAuC;Eb60BvC;Ee50BM;IFLN,oBAAsC;IAItC,qBAAuC;Ebi1BvC;Eeh1BM;IFLN,aAAsC;IAItC,cAAuC;Ebq1BvC;Eep1BM;IFLN,oBAAsC;IAItC,qBAAuC;Eby1BvC;Eex1BM;IFLN,oBAAsC;IAItC,qBAAuC;Eb61BvC;Ee51BM;IFLN,aAAsC;IAItC,cAAuC;Ebi2BvC;Eeh2BM;IFLN,oBAAsC;IAItC,qBAAuC;Ebq2BvC;Eep2BM;IFLN,oBAAsC;IAItC,qBAAuC;Eby2BvC;Eex2BM;IFLN,cAAsC;IAItC,eAAuC;Eb62BvC;Eev2BI;IAAwB,SAAS;Ef02BrC;Eex2BI;IAAuB,SZ6KG;EH8rB9B;Eex2BM;IAAwB,QADZ;Ef42BlB;Ee32BM;IAAwB,QADZ;Ef+2BlB;Ee92BM;IAAwB,QADZ;Efk3BlB;Eej3BM;IAAwB,QADZ;Efq3BlB;Eep3BM;IAAwB,QADZ;Efw3BlB;Eev3BM;IAAwB,QADZ;Ef23BlB;Ee13BM;IAAwB,QADZ;Ef83BlB;Ee73BM;IAAwB,QADZ;Efi4BlB;Eeh4BM;IAAwB,QADZ;Efo4BlB;Een4BM;IAAwB,QADZ;Efu4BlB;Eet4BM;IAAwB,SADZ;Ef04BlB;Eez4BM;IAAwB,SADZ;Ef64BlB;Ee54BM;IAAwB,SADZ;Efg5BlB;Eez4BQ;IFNR,eAA6B;Ebk5B7B;Ee54BQ;IFNR,uBAA+C;Ebq5B/C;Ee/4BQ;IFNR,wBAA+C;Ebw5B/C;Eel5BQ;IFNR,iBAA+C;Eb25B/C;Eer5BQ;IFNR,wBAA+C;Eb85B/C;Eex5BQ;IFNR,wBAA+C;Ebi6B/C;Ee35BQ;IFNR,iBAA+C;Ebo6B/C;Ee95BQ;IFNR,wBAA+C;Ebu6B/C;Eej6BQ;IFNR,wBAA+C;Eb06B/C;Eep6BQ;IFNR,iBAA+C;Eb66B/C;Eev6BQ;IFNR,wBAA+C;Ebg7B/C;Ee16BQ;IFNR,wBAA+C;Ebm7B/C;AACF;;Acj7BI;EC9BE;IACE,aAAa;IACb,YAAY;IACZ,eAAe;Efm9BrB;Ee/8BM;IF8BJ,cAAuB;IACvB,eAAwB;Ebo7B1B;Een9BM;IF8BJ,aAAuB;IACvB,cAAwB;Ebw7B1B;Eev9BM;IF8BJ,oBAAuB;IACvB,qBAAwB;Eb47B1B;Ee39BM;IF8BJ,aAAuB;IACvB,cAAwB;Ebg8B1B;Ee/9BM;IF8BJ,aAAuB;IACvB,cAAwB;Ebo8B1B;Een+BM;IF8BJ,oBAAuB;IACvB,qBAAwB;Ebw8B1B;Eel+BI;IFQJ,cAAc;IACd,WAAW;IACX,eAAe;Eb69Bf;Eel+BM;IFLN,mBAAsC;IAItC,oBAAuC;Ebu+BvC;Eet+BM;IFLN,oBAAsC;IAItC,qBAAuC;Eb2+BvC;Ee1+BM;IFLN,aAAsC;IAItC,cAAuC;Eb++BvC;Ee9+BM;IFLN,oBAAsC;IAItC,qBAAuC;Ebm/BvC;Eel/BM;IFLN,oBAAsC;IAItC,qBAAuC;Ebu/BvC;Eet/BM;IFLN,aAAsC;IAItC,cAAuC;Eb2/BvC;Ee1/BM;IFLN,oBAAsC;IAItC,qBAAuC;Eb+/BvC;Ee9/BM;IFLN,oBAAsC;IAItC,qBAAuC;EbmgCvC;EelgCM;IFLN,aAAsC;IAItC,cAAuC;EbugCvC;EetgCM;IFLN,oBAAsC;IAItC,qBAAuC;Eb2gCvC;Ee1gCM;IFLN,oBAAsC;IAItC,qBAAuC;Eb+gCvC;Ee9gCM;IFLN,cAAsC;IAItC,eAAuC;EbmhCvC;Ee7gCI;IAAwB,SAAS;EfghCrC;Ee9gCI;IAAuB,SZ6KG;EHo2B9B;Ee9gCM;IAAwB,QADZ;EfkhClB;EejhCM;IAAwB,QADZ;EfqhClB;EephCM;IAAwB,QADZ;EfwhClB;EevhCM;IAAwB,QADZ;Ef2hClB;Ee1hCM;IAAwB,QADZ;Ef8hClB;Ee7hCM;IAAwB,QADZ;EfiiClB;EehiCM;IAAwB,QADZ;EfoiClB;EeniCM;IAAwB,QADZ;EfuiClB;EetiCM;IAAwB,QADZ;Ef0iClB;EeziCM;IAAwB,QADZ;Ef6iClB;Ee5iCM;IAAwB,SADZ;EfgjClB;Ee/iCM;IAAwB,SADZ;EfmjClB;EeljCM;IAAwB,SADZ;EfsjClB;Ee/iCQ;IFNR,eAA6B;EbwjC7B;EeljCQ;IFNR,uBAA+C;Eb2jC/C;EerjCQ;IFNR,wBAA+C;Eb8jC/C;EexjCQ;IFNR,iBAA+C;EbikC/C;Ee3jCQ;IFNR,wBAA+C;EbokC/C;Ee9jCQ;IFNR,wBAA+C;EbukC/C;EejkCQ;IFNR,iBAA+C;Eb0kC/C;EepkCQ;IFNR,wBAA+C;Eb6kC/C;EevkCQ;IFNR,wBAA+C;EbglC/C;Ee1kCQ;IFNR,iBAA+C;EbmlC/C;Ee7kCQ;IFNR,wBAA+C;EbslC/C;EehlCQ;IFNR,wBAA+C;EbylC/C;AACF;;AcvlCI;EC9BE;IACE,aAAa;IACb,YAAY;IACZ,eAAe;EfynCrB;EernCM;IF8BJ,cAAuB;IACvB,eAAwB;Eb0lC1B;EeznCM;IF8BJ,aAAuB;IACvB,cAAwB;Eb8lC1B;Ee7nCM;IF8BJ,oBAAuB;IACvB,qBAAwB;EbkmC1B;EejoCM;IF8BJ,aAAuB;IACvB,cAAwB;EbsmC1B;EeroCM;IF8BJ,aAAuB;IACvB,cAAwB;Eb0mC1B;EezoCM;IF8BJ,oBAAuB;IACvB,qBAAwB;Eb8mC1B;EexoCI;IFQJ,cAAc;IACd,WAAW;IACX,eAAe;EbmoCf;EexoCM;IFLN,mBAAsC;IAItC,oBAAuC;Eb6oCvC;Ee5oCM;IFLN,oBAAsC;IAItC,qBAAuC;EbipCvC;EehpCM;IFLN,aAAsC;IAItC,cAAuC;EbqpCvC;EeppCM;IFLN,oBAAsC;IAItC,qBAAuC;EbypCvC;EexpCM;IFLN,oBAAsC;IAItC,qBAAuC;Eb6pCvC;Ee5pCM;IFLN,aAAsC;IAItC,cAAuC;EbiqCvC;EehqCM;IFLN,oBAAsC;IAItC,qBAAuC;EbqqCvC;EepqCM;IFLN,oBAAsC;IAItC,qBAAuC;EbyqCvC;EexqCM;IFLN,aAAsC;IAItC,cAAuC;Eb6qCvC;Ee5qCM;IFLN,oBAAsC;IAItC,qBAAuC;EbirCvC;EehrCM;IFLN,oBAAsC;IAItC,qBAAuC;EbqrCvC;EeprCM;IFLN,cAAsC;IAItC,eAAuC;EbyrCvC;EenrCI;IAAwB,SAAS;EfsrCrC;EeprCI;IAAuB,SZ6KG;EH0gC9B;EeprCM;IAAwB,QADZ;EfwrClB;EevrCM;IAAwB,QADZ;Ef2rClB;Ee1rCM;IAAwB,QADZ;Ef8rClB;Ee7rCM;IAAwB,QADZ;EfisClB;EehsCM;IAAwB,QADZ;EfosClB;EensCM;IAAwB,QADZ;EfusClB;EetsCM;IAAwB,QADZ;Ef0sClB;EezsCM;IAAwB,QADZ;Ef6sClB;Ee5sCM;IAAwB,QADZ;EfgtClB;Ee/sCM;IAAwB,QADZ;EfmtClB;EeltCM;IAAwB,SADZ;EfstClB;EertCM;IAAwB,SADZ;EfytClB;EextCM;IAAwB,SADZ;Ef4tClB;EertCQ;IFNR,eAA6B;Eb8tC7B;EextCQ;IFNR,uBAA+C;EbiuC/C;Ee3tCQ;IFNR,wBAA+C;EbouC/C;Ee9tCQ;IFNR,iBAA+C;EbuuC/C;EejuCQ;IFNR,wBAA+C;Eb0uC/C;EepuCQ;IFNR,wBAA+C;Eb6uC/C;EevuCQ;IFNR,iBAA+C;EbgvC/C;Ee1uCQ;IFNR,wBAA+C;EbmvC/C;Ee7uCQ;IFNR,wBAA+C;EbsvC/C;EehvCQ;IFNR,iBAA+C;EbyvC/C;EenvCQ;IFNR,wBAA+C;Eb4vC/C;EetvCQ;IFNR,wBAA+C;Eb+vC/C;AACF;;Ac7vCI;EC9BE;IACE,aAAa;IACb,YAAY;IACZ,eAAe;Ef+xCrB;Ee3xCM;IF8BJ,cAAuB;IACvB,eAAwB;EbgwC1B;Ee/xCM;IF8BJ,aAAuB;IACvB,cAAwB;EbowC1B;EenyCM;IF8BJ,oBAAuB;IACvB,qBAAwB;EbwwC1B;EevyCM;IF8BJ,aAAuB;IACvB,cAAwB;Eb4wC1B;Ee3yCM;IF8BJ,aAAuB;IACvB,cAAwB;EbgxC1B;Ee/yCM;IF8BJ,oBAAuB;IACvB,qBAAwB;EboxC1B;Ee9yCI;IFQJ,cAAc;IACd,WAAW;IACX,eAAe;EbyyCf;Ee9yCM;IFLN,mBAAsC;IAItC,oBAAuC;EbmzCvC;EelzCM;IFLN,oBAAsC;IAItC,qBAAuC;EbuzCvC;EetzCM;IFLN,aAAsC;IAItC,cAAuC;Eb2zCvC;Ee1zCM;IFLN,oBAAsC;IAItC,qBAAuC;Eb+zCvC;Ee9zCM;IFLN,oBAAsC;IAItC,qBAAuC;Ebm0CvC;Eel0CM;IFLN,aAAsC;IAItC,cAAuC;Ebu0CvC;Eet0CM;IFLN,oBAAsC;IAItC,qBAAuC;Eb20CvC;Ee10CM;IFLN,oBAAsC;IAItC,qBAAuC;Eb+0CvC;Ee90CM;IFLN,aAAsC;IAItC,cAAuC;Ebm1CvC;Eel1CM;IFLN,oBAAsC;IAItC,qBAAuC;Ebu1CvC;Eet1CM;IFLN,oBAAsC;IAItC,qBAAuC;Eb21CvC;Ee11CM;IFLN,cAAsC;IAItC,eAAuC;Eb+1CvC;Eez1CI;IAAwB,SAAS;Ef41CrC;Ee11CI;IAAuB,SZ6KG;EHgrC9B;Ee11CM;IAAwB,QADZ;Ef81ClB;Ee71CM;IAAwB,QADZ;Efi2ClB;Eeh2CM;IAAwB,QADZ;Efo2ClB;Een2CM;IAAwB,QADZ;Efu2ClB;Eet2CM;IAAwB,QADZ;Ef02ClB;Eez2CM;IAAwB,QADZ;Ef62ClB;Ee52CM;IAAwB,QADZ;Efg3ClB;Ee/2CM;IAAwB,QADZ;Efm3ClB;Eel3CM;IAAwB,QADZ;Efs3ClB;Eer3CM;IAAwB,QADZ;Efy3ClB;Eex3CM;IAAwB,SADZ;Ef43ClB;Ee33CM;IAAwB,SADZ;Ef+3ClB;Ee93CM;IAAwB,SADZ;Efk4ClB;Ee33CQ;IFNR,eAA6B;Ebo4C7B;Ee93CQ;IFNR,uBAA+C;Ebu4C/C;Eej4CQ;IFNR,wBAA+C;Eb04C/C;Eep4CQ;IFNR,iBAA+C;Eb64C/C;Eev4CQ;IFNR,wBAA+C;Ebg5C/C;Ee14CQ;IFNR,wBAA+C;Ebm5C/C;Ee74CQ;IFNR,iBAA+C;Ebs5C/C;Eeh5CQ;IFNR,wBAA+C;Eby5C/C;Een5CQ;IFNR,wBAA+C;Eb45C/C;Eet5CQ;IFNR,iBAA+C;Eb+5C/C;Eez5CQ;IFNR,wBAA+C;Ebk6C/C;Ee55CQ;IFNR,wBAA+C;Ebq6C/C;AACF;;AgB39CA;EACE,WAAW;EACX,mBbkIW;EajIX,cbSgB;AHq9ClB;;AgBj+CA;;EAQI,gBbsVgC;EarVhC,mBAAmB;EACnB,6BbJc;AHk+ClB;;AgBx+CA;EAcI,sBAAsB;EACtB,gCbTc;AHu+ClB;;AgB7+CA;EAmBI,6Bbbc;AH2+ClB;;AgBr9CA;;EAGI,ebgU+B;AHupCnC;;AgB98CA;EACE,yBbnCgB;AHo/ClB;;AgBl9CA;;EAKI,yBbvCc;AHy/ClB;;AgBv9CA;;EAWM,wBAA4C;AhBi9ClD;;AgB58CA;;;;EAKI,SAAS;AhB88Cb;;AgBt8CA;EAEI,qCb1DW;AHkgDf;;AKvgDE;EW2EI,cbvEY;EawEZ,sCbvES;AHugDf;;AiBnhDE;;;EAII,yBCsF4D;AlB+7ClE;;AiBzhDE;;;;EAYM,qBC8E0D;AlBs8ClE;;AKzhDE;EYiBM,yBAJsC;AjBghD9C;;AiBjhDE;;EASQ,yBARoC;AjBqhD9C;;AiBziDE;;;EAII,yBCsF4D;AlBq9ClE;;AiB/iDE;;;;EAYM,qBC8E0D;AlB49ClE;;AK/iDE;EYiBM,yBAJsC;AjBsiD9C;;AiBviDE;;EASQ,yBARoC;AjB2iD9C;;AiB/jDE;;;EAII,yBCsF4D;AlB2+ClE;;AiBrkDE;;;;EAYM,qBC8E0D;AlBk/ClE;;AKrkDE;EYiBM,yBAJsC;AjB4jD9C;;AiB7jDE;;EASQ,yBARoC;AjBikD9C;;AiBrlDE;;;EAII,yBCsF4D;AlBigDlE;;AiB3lDE;;;;EAYM,qBC8E0D;AlBwgDlE;;AK3lDE;EYiBM,yBAJsC;AjBklD9C;;AiBnlDE;;EASQ,yBARoC;AjBulD9C;;AiB3mDE;;;EAII,yBCsF4D;AlBuhDlE;;AiBjnDE;;;;EAYM,qBC8E0D;AlB8hDlE;;AKjnDE;EYiBM,yBAJsC;AjBwmD9C;;AiBzmDE;;EASQ,yBARoC;AjB6mD9C;;AiBjoDE;;;EAII,yBCsF4D;AlB6iDlE;;AiBvoDE;;;;EAYM,qBC8E0D;AlBojDlE;;AKvoDE;EYiBM,yBAJsC;AjB8nD9C;;AiB/nDE;;EASQ,yBARoC;AjBmoD9C;;AiBvpDE;;;EAII,yBCsF4D;AlBmkDlE;;AiB7pDE;;;;EAYM,qBC8E0D;AlB0kDlE;;AK7pDE;EYiBM,yBAJsC;AjBopD9C;;AiBrpDE;;EASQ,yBARoC;AjBypD9C;;AiB7qDE;;;EAII,yBCsF4D;AlBylDlE;;AiBnrDE;;;;EAYM,qBC8E0D;AlBgmDlE;;AKnrDE;EYiBM,yBAJsC;AjB0qD9C;;AiB3qDE;;EASQ,yBARoC;AjB+qD9C;;AiBnsDE;;;EAII,sCdQS;AH6rDf;;AKlsDE;EYiBM,sCAJsC;AjByrD9C;;AiB1rDE;;EASQ,sCARoC;AjB8rD9C;;AgBxmDA;EAGM,Wb3GS;Ea4GT,yBbpGY;EaqGZ,qBbmQqD;AHs2C3D;;AgB9mDA;EAWM,cb5GY;Ea6GZ,yBblHY;EamHZ,qBblHY;AHytDlB;;AgBlmDA;EACE,Wb3Ha;Ea4Hb,yBbpHgB;AHytDlB;;AgBvmDA;;;EAOI,qBb+OuD;AHu3C3D;;AgB7mDA;EAWI,SAAS;AhBsmDb;;AgBjnDA;EAgBM,2Cb1IS;AH+uDf;;AK1uDE;EW4IM,WbjJO;EakJP,4CblJO;AHovDf;;AclrDI;EEiGA;IAEI,cAAc;IACd,WAAW;IACX,gBAAgB;IAChB,iCAAiC;EhBolDvC;EgBzlDG;IASK,SAAS;EhBmlDjB;AACF;;Ac9rDI;EEiGA;IAEI,cAAc;IACd,WAAW;IACX,gBAAgB;IAChB,iCAAiC;EhBgmDvC;EgBrmDG;IASK,SAAS;EhB+lDjB;AACF;;Ac1sDI;EEiGA;IAEI,cAAc;IACd,WAAW;IACX,gBAAgB;IAChB,iCAAiC;EhB4mDvC;EgBjnDG;IASK,SAAS;EhB2mDjB;AACF;;ActtDI;EEiGA;IAEI,cAAc;IACd,WAAW;IACX,gBAAgB;IAChB,iCAAiC;EhBwnDvC;EgB7nDG;IASK,SAAS;EhBunDjB;AACF;;AgBtoDA;EAOQ,cAAc;EACd,WAAW;EACX,gBAAgB;EAChB,iCAAiC;AhBmoDzC;;AgB7oDA;EAcU,SAAS;AhBmoDnB;;AmBhzDA;EACE,cAAc;EACd,WAAW;EACX,mCDuG8D;ECtG9D,yBhB4XkC;ECvQ9B,eAtCY;Ee5EhB,gBhBsR+B;EgBrR/B,gBhB0R+B;EgBzR/B,chBDgB;EgBEhB,sBhBTa;EgBUb,4BAA4B;EAC5B,yBhBPgB;EONd,sBP6OgC;EiB5O9B,wEjBof4F;AH40ClG;;AoB3zDI;EDLJ;ICMM,gBAAgB;EpB+zDpB;AACF;;AmBt0DA;EAsBI,6BAA6B;EAC7B,SAAS;AnBozDb;;AmB30DA;EA4BI,kBAAkB;EAClB,0BhBrBc;AHw0DlB;;AqBz0DE;EACE,clBAc;EkBCd,sBlBRW;EkBSX,qBlBwdsE;EkBvdtE,UAAU;EAKR,gDlBcW;AH0zDjB;;AmBx1DA;EAqCI,chB9Bc;EgBgCd,UAAU;AnBszDd;;AmB71DA;EAqCI,chB9Bc;EgBgCd,UAAU;AnBszDd;;AmB71DA;EAqCI,chB9Bc;EgBgCd,UAAU;AnBszDd;;AmB71DA;EAqCI,chB9Bc;EgBgCd,UAAU;AnBszDd;;AmB71DA;EAqCI,chB9Bc;EgBgCd,UAAU;AnBszDd;;AmB71DA;EAiDI,yBhB9Cc;EgBgDd,UAAU;AnB+yDd;;AmB3yDA;EAOI,chBtDc;EgBuDd,sBhB9DW;AHs2Df;;AmBnyDA;;EAEE,cAAc;EACd,WAAW;AnBsyDb;;AmB5xDA;EACE,iCDwB8D;ECvB9D,oCDuB8D;ECtB9D,gBAAgB;EflBd,kBAAW;EeoBb,gBhB4M+B;AHmlDjC;;AmB5xDA;EACE,+BDgB8D;ECf9D,kCDe8D;Ede1D,kBAtCY;EeUhB,gBhByI+B;AHspDjC;;AmB5xDA;EACE,gCDS8D;ECR9D,mCDQ8D;Ede1D,mBAtCY;EeiBhB,gBhBmI+B;AH4pDjC;;AmBtxDA;EACE,cAAc;EACd,WAAW;EACX,mBAA2B;EAC3B,gBAAgB;EfQZ,eAtCY;EegChB,gBhB+K+B;EgB9K/B,chB1GgB;EgB2GhB,6BAA6B;EAC7B,yBAAyB;EACzB,mBAAmC;AnByxDrC;;AmBnyDA;EAcI,gBAAgB;EAChB,eAAe;AnByxDnB;;AmB7wDA;EACE,kCD/B8D;ECgC9D,uBhBgQiC;ECjR7B,mBAtCY;EeyDhB,gBhB2F+B;EOxO7B,qBP+O+B;AH+qDnC;;AmB7wDA;EACE,gCDvC8D;ECwC9D,oBhB6PgC;ECtR5B,kBAtCY;EeiEhB,gBhBkF+B;EOvO7B,qBP8O+B;AHwrDnC;;AmB5wDA;EAGI,YAAY;AnB6wDhB;;AmBzwDA;EACE,YAAY;AnB4wDd;;AmBpwDA;EACE,mBhBsV0C;AHi7C5C;;AmBpwDA;EACE,cAAc;EACd,mBhBuU4C;AHg8C9C;;AmB/vDA;EACE,aAAa;EACb,eAAe;EACf,kBAA0C;EAC1C,iBAAyC;AnBkwD3C;;AmBtwDA;;EAQI,kBAA0C;EAC1C,iBAAyC;AnBmwD7C;;AmB1vDA;EACE,kBAAkB;EAClB,cAAc;EACd,qBhB4S6C;AHi9C/C;;AmB1vDA;EACE,kBAAkB;EAClB,kBhBwS2C;EgBvS3C,qBhBsS6C;AHu9C/C;;AmBhwDA;;EAQI,chBhNc;AH68DlB;;AmBzvDA;EACE,gBAAgB;AnB4vDlB;;AmBzvDA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,eAAe;EACf,qBhByR4C;AHm+C9C;;AmBhwDA;EAQI,gBAAgB;EAChB,aAAa;EACb,uBhBoR4C;EgBnR5C,cAAc;AnB4vDlB;;AqBh8DE;EACE,aAAa;EACb,WAAW;EACX,mBlB6c0C;ECpb1C,cAAW;EiBvBX,clBNa;AHy8DjB;;AqBh8DE;EACE,kBAAkB;EAClB,SAAS;EACT,UAAU;EACV,aAAa;EACb,eAAe;EACf,uBlBmyBqC;EkBlyBrC,iBAAiB;EjBoEf,mBAtCY;EiB5Bd,gBlB2O6B;EkB1O7B,WlBvDW;EkBwDX,wClBpBa;EOtCb,sBP6OgC;AHixDpC;;AqBn+DI;;;;EAsCE,cAAc;ArBo8DpB;;AqB1+DI;EA4CE,qBlBjCW;EkBoCT,oCHiCwD;EGhCxD,iRHpCmI;EGqCnI,4BAA4B;EAC5B,2DAA6D;EAC7D,gEH6BwD;AlBm6DhE;;AqBn/DI;EAuDI,qBlB5CS;EkB6CT,gDlB7CS;AH6+DjB;;AqBx/DI;EAiEI,oCHewD;EGdxD,kFHcwD;AlB66DhE;;AqB7/DI;EAyEE,qBlB9DW;EkBiET,uCHIwD;EGHxD,ujBAA8J;ArBs7DtK;;AqBngEI;EAiFI,qBlBtES;EkBuET,gDlBvES;AH6/DjB;;AqBxgEI;EA0FI,clB/ES;AHigEjB;;AqB5gEI;;;EA+FI,cAAc;ArBm7DtB;;AqBlhEI;EAuGI,clB5FS;AH2gEjB;;AqBthEI;EA0GM,qBlB/FO;AH+gEjB;;AqB1hEI;EAgHM,qBAAkC;EC1IxC,yBD2I+C;ArB86DnD;;AqB/hEI;EAuHM,gDlB5GO;AHwhEjB;;AqBniEI;EA2HM,qBlBhHO;AH4hEjB;;AqBviEI;EAqII,qBlB1HS;AHgiEjB;;AqB3iEI;EA0IM,qBlB/HO;EkBgIP,gDlBhIO;AHqiEjB;;AqBpiEE;EACE,aAAa;EACb,WAAW;EACX,mBlB6c0C;ECpb1C,cAAW;EiBvBX,clBTa;AHgjEjB;;AqBpiEE;EACE,kBAAkB;EAClB,SAAS;EACT,UAAU;EACV,aAAa;EACb,eAAe;EACf,uBlBmyBqC;EkBlyBrC,iBAAiB;EjBoEf,mBAtCY;EiB5Bd,gBlB2O6B;EkB1O7B,WlBvDW;EkBwDX,wClBvBa;EOnCb,sBP6OgC;AHq3DpC;;AqBvkEI;;;;EAsCE,cAAc;ArBwiEpB;;AqB9kEI;EA4CE,qBlBpCW;EkBuCT,oCHiCwD;EGhCxD,4UHpCmI;EGqCnI,4BAA4B;EAC5B,2DAA6D;EAC7D,gEH6BwD;AlBugEhE;;AqBvlEI;EAuDI,qBlB/CS;EkBgDT,gDlBhDS;AHolEjB;;AqB5lEI;EAiEI,oCHewD;EGdxD,kFHcwD;AlBihEhE;;AqBjmEI;EAyEE,qBlBjEW;EkBoET,uCHIwD;EGHxD,knBAA8J;ArB0hEtK;;AqBvmEI;EAiFI,qBlBzES;EkB0ET,gDlB1ES;AHomEjB;;AqB5mEI;EA0FI,clBlFS;AHwmEjB;;AqBhnEI;;;EA+FI,cAAc;ArBuhEtB;;AqBtnEI;EAuGI,clB/FS;AHknEjB;;AqB1nEI;EA0GM,qBlBlGO;AHsnEjB;;AqB9nEI;EAgHM,qBAAkC;EC1IxC,yBD2I+C;ArBkhEnD;;AqBnoEI;EAuHM,gDlB/GO;AH+nEjB;;AqBvoEI;EA2HM,qBlBnHO;AHmoEjB;;AqB3oEI;EAqII,qBlB7HS;AHuoEjB;;AqB/oEI;EA0IM,qBlBlIO;EkBmIP,gDlBnIO;AH4oEjB;;AmB36DA;EACE,aAAa;EACb,mBAAmB;EACnB,mBAAmB;AnB86DrB;;AmBj7DA;EASI,WAAW;AnB46Df;;AcloEI;EK6MJ;IAeM,aAAa;IACb,mBAAmB;IACnB,uBAAuB;IACvB,gBAAgB;EnB26DpB;EmB77DF;IAuBM,aAAa;IACb,cAAc;IACd,mBAAmB;IACnB,mBAAmB;IACnB,gBAAgB;EnBy6DpB;EmBp8DF;IAgCM,qBAAqB;IACrB,WAAW;IACX,sBAAsB;EnBu6D1B;EmBz8DF;IAuCM,qBAAqB;EnBq6DzB;EmB58DF;;IA4CM,WAAW;EnBo6Df;EmBh9DF;IAkDM,aAAa;IACb,mBAAmB;IACnB,uBAAuB;IACvB,WAAW;IACX,eAAe;EnBi6DnB;EmBv9DF;IAyDM,kBAAkB;IAClB,cAAc;IACd,aAAa;IACb,qBhB2LwC;IgB1LxC,cAAc;EnBi6DlB;EmB99DF;IAiEM,mBAAmB;IACnB,uBAAuB;EnBg6D3B;EmBl+DF;IAqEM,gBAAgB;EnBg6DpB;AACF;;AuBzuEA;EACE,qBAAqB;EAErB,gBpB0R+B;EoBzR/B,cpBMgB;EoBLhB,kBAAkB;EAElB,sBAAsB;EACtB,eAAsD;EACtD,yBAAiB;EAAjB,sBAAiB;EAAjB,qBAAiB;EAAjB,iBAAiB;EACjB,6BAA6B;EAC7B,6BAA2C;ECuF3C,yBrB8RkC;ECvQ9B,eAtCY;EoBiBhB,gBrB8L+B;EOnS7B,sBP6OgC;EiB5O9B,qIjB6b6I;AH6zDnJ;;AoBrvEI;EGLJ;IHMM,gBAAgB;EpByvEpB;AACF;;AK1vEE;EkBUE,cpBNc;EoBOd,qBAAqB;AvBovEzB;;AuBrwEA;EAsBI,UAAU;EACV,gDpBOa;AH4uEjB;;AuB1wEA;EA6BI,apBoZ6B;AH61DjC;;AuBluEA;;EAEE,oBAAoB;AvBquEtB;;AuB5tEE;ECvDA,WrBCa;EmBDX,yBnB8Ba;EqB5Bf,qBrB4Be;AH2vEjB;;AKnxEE;EmBAE,WrBLW;EmBDX,yBEDoF;EASpF,qBATyH;AxBgyE7H;;AwBpxEE;EAEE,WrBZW;EmBDX,yBEDoF;EAgBpF,qBAhByH;EAqBvH,gDAAiF;AxBkxEvF;;AwB7wEE;EAEE,WrB1BW;EqB2BX,yBrBEa;EqBDb,qBrBCa;AH8wEjB;;AwBxwEE;;EAGE,WrBtCW;EqBuCX,yBAzCuK;EA6CvK,qBA7C+M;AxBozEnN;;AwBrwEI;;EAKI,gDAAiF;AxBqwEzF;;AuBjwEE;ECvDA,WrBCa;EmBDX,yBnBOc;EqBLhB,qBrBKgB;AHuzElB;;AKxzEE;EmBAE,WrBLW;EmBDX,yBEDoF;EASpF,qBATyH;AxBq0E7H;;AwBzzEE;EAEE,WrBZW;EmBDX,yBEDoF;EAgBpF,qBAhByH;EAqBvH,iDAAiF;AxBuzEvF;;AwBlzEE;EAEE,WrB1BW;EqB2BX,yBrBrBc;EqBsBd,qBrBtBc;AH00ElB;;AwB7yEE;;EAGE,WrBtCW;EqBuCX,yBAzCuK;EA6CvK,qBA7C+M;AxBy1EnN;;AwB1yEI;;EAKI,iDAAiF;AxB0yEzF;;AuBtyEE;ECvDA,WrBCa;EmBDX,yBnBqCa;EqBnCf,qBrBmCe;AH8zEjB;;AK71EE;EmBAE,WrBLW;EmBDX,yBEDoF;EASpF,qBATyH;AxB02E7H;;AwB91EE;EAEE,WrBZW;EmBDX,yBEDoF;EAgBpF,qBAhByH;EAqBvH,+CAAiF;AxB41EvF;;AwBv1EE;EAEE,WrB1BW;EqB2BX,yBrBSa;EqBRb,qBrBQa;AHi1EjB;;AwBl1EE;;EAGE,WrBtCW;EqBuCX,yBAzCuK;EA6CvK,qBA7C+M;AxB83EnN;;AwB/0EI;;EAKI,+CAAiF;AxB+0EzF;;AuB30EE;ECvDA,WrBCa;EmBDX,yBnBuCa;EqBrCf,qBrBqCe;AHi2EjB;;AKl4EE;EmBAE,WrBLW;EmBDX,yBEDoF;EASpF,qBATyH;AxB+4E7H;;AwBn4EE;EAEE,WrBZW;EmBDX,yBEDoF;EAgBpF,qBAhByH;EAqBvH,gDAAiF;AxBi4EvF;;AwB53EE;EAEE,WrB1BW;EqB2BX,yBrBWa;EqBVb,qBrBUa;AHo3EjB;;AwBv3EE;;EAGE,WrBtCW;EqBuCX,yBAzCuK;EA6CvK,qBA7C+M;AxBm6EnN;;AwBp3EI;;EAKI,gDAAiF;AxBo3EzF;;AuBh3EE;ECvDA,crBUgB;EmBVd,yBnBoCa;EqBlCf,qBrBkCe;AHy4EjB;;AKv6EE;EmBAE,crBIc;EmBVd,yBEDoF;EASpF,qBATyH;AxBo7E7H;;AwBx6EE;EAEE,crBHc;EmBVd,yBEDoF;EAgBpF,qBAhByH;EAqBvH,gDAAiF;AxBs6EvF;;AwBj6EE;EAEE,crBjBc;EqBkBd,yBrBQa;EqBPb,qBrBOa;AH45EjB;;AwB55EE;;EAGE,crB7Bc;EqB8Bd,yBAzCuK;EA6CvK,qBA7C+M;AxBw8EnN;;AwBz5EI;;EAKI,gDAAiF;AxBy5EzF;;AuBr5EE;ECvDA,WrBCa;EmBDX,yBnBkCa;EqBhCf,qBrBgCe;AHg7EjB;;AK58EE;EmBAE,WrBLW;EmBDX,yBEDoF;EASpF,qBATyH;AxBy9E7H;;AwB78EE;EAEE,WrBZW;EmBDX,yBEDoF;EAgBpF,qBAhByH;EAqBvH,+CAAiF;AxB28EvF;;AwBt8EE;EAEE,WrB1BW;EqB2BX,yBrBMa;EqBLb,qBrBKa;AHm8EjB;;AwBj8EE;;EAGE,WrBtCW;EqBuCX,yBAzCuK;EA6CvK,qBA7C+M;AxB6+EnN;;AwB97EI;;EAKI,+CAAiF;AxB87EzF;;AuB17EE;ECvDA,crBUgB;EmBVd,yBnBEc;EqBAhB,qBrBAgB;AHq/ElB;;AKj/EE;EmBAE,crBIc;EmBVd,yBEDoF;EASpF,qBATyH;AxB8/E7H;;AwBl/EE;EAEE,crBHc;EmBVd,yBEDoF;EAgBpF,qBAhByH;EAqBvH,iDAAiF;AxBg/EvF;;AwB3+EE;EAEE,crBjBc;EqBkBd,yBrB1Bc;EqB2Bd,qBrB3Bc;AHwgFlB;;AwBt+EE;;EAGE,crB7Bc;EqB8Bd,yBAzCuK;EA6CvK,qBA7C+M;AxBkhFnN;;AwBn+EI;;EAKI,iDAAiF;AxBm+EzF;;AuB/9EE;ECvDA,WrBCa;EmBDX,yBnBSc;EqBPhB,qBrBOgB;AHmhFlB;;AKthFE;EmBAE,WrBLW;EmBDX,yBEDoF;EASpF,qBATyH;AxBmiF7H;;AwBvhFE;EAEE,WrBZW;EmBDX,yBEDoF;EAgBpF,qBAhByH;EAqBvH,8CAAiF;AxBqhFvF;;AwBhhFE;EAEE,WrB1BW;EqB2BX,yBrBnBc;EqBoBd,qBrBpBc;AHsiFlB;;AwB3gFE;;EAGE,WrBtCW;EqBuCX,yBAzCuK;EA6CvK,qBA7C+M;AxBujFnN;;AwBxgFI;;EAKI,8CAAiF;AxBwgFzF;;AuB9/EE;ECHA,crB5Be;EqB6Bf,qBrB7Be;AHkiFjB;;AK1jFE;EmBwDE,WrB7DW;EqB8DX,yBrBjCa;EqBkCb,qBrBlCa;AHwiFjB;;AwBngFE;EAEE,+CrBvCa;AH4iFjB;;AwBlgFE;EAEE,crB5Ca;EqB6Cb,6BAA6B;AxBogFjC;;AwBjgFE;;EAGE,WrBhFW;EqBiFX,yBrBpDa;EqBqDb,qBrBrDa;AHwjFjB;;AwBjgFI;;EAKI,+CrB5DS;AH6jFjB;;AuB9hFE;ECHA,crBnDgB;EqBoDhB,qBrBpDgB;AHylFlB;;AK1lFE;EmBwDE,WrB7DW;EqB8DX,yBrBxDc;EqByDd,qBrBzDc;AH+lFlB;;AwBniFE;EAEE,iDrB9Dc;AHmmFlB;;AwBliFE;EAEE,crBnEc;EqBoEd,6BAA6B;AxBoiFjC;;AwBjiFE;;EAGE,WrBhFW;EqBiFX,yBrB3Ec;EqB4Ed,qBrB5Ec;AH+mFlB;;AwBjiFI;;EAKI,iDrBnFU;AHonFlB;;AuB9jFE;ECHA,crBrBe;EqBsBf,qBrBtBe;AH2lFjB;;AK1nFE;EmBwDE,WrB7DW;EqB8DX,yBrB1Ba;EqB2Bb,qBrB3Ba;AHimFjB;;AwBnkFE;EAEE,+CrBhCa;AHqmFjB;;AwBlkFE;EAEE,crBrCa;EqBsCb,6BAA6B;AxBokFjC;;AwBjkFE;;EAGE,WrBhFW;EqBiFX,yBrB7Ca;EqB8Cb,qBrB9Ca;AHinFjB;;AwBjkFI;;EAKI,+CrBrDS;AHsnFjB;;AuB9lFE;ECHA,crBnBe;EqBoBf,qBrBpBe;AHynFjB;;AK1pFE;EmBwDE,WrB7DW;EqB8DX,yBrBxBa;EqByBb,qBrBzBa;AH+nFjB;;AwBnmFE;EAEE,gDrB9Ba;AHmoFjB;;AwBlmFE;EAEE,crBnCa;EqBoCb,6BAA6B;AxBomFjC;;AwBjmFE;;EAGE,WrBhFW;EqBiFX,yBrB3Ca;EqB4Cb,qBrB5Ca;AH+oFjB;;AwBjmFI;;EAKI,gDrBnDS;AHopFjB;;AuB9nFE;ECHA,crBtBe;EqBuBf,qBrBvBe;AH4pFjB;;AK1rFE;EmBwDE,crBpDc;EqBqDd,yBrB3Ba;EqB4Bb,qBrB5Ba;AHkqFjB;;AwBnoFE;EAEE,+CrBjCa;AHsqFjB;;AwBloFE;EAEE,crBtCa;EqBuCb,6BAA6B;AxBooFjC;;AwBjoFE;;EAGE,crBvEc;EqBwEd,yBrB9Ca;EqB+Cb,qBrB/Ca;AHkrFjB;;AwBjoFI;;EAKI,+CrBtDS;AHurFjB;;AuB9pFE;ECHA,crBxBe;EqByBf,qBrBzBe;AH8rFjB;;AK1tFE;EmBwDE,WrB7DW;EqB8DX,yBrB7Ba;EqB8Bb,qBrB9Ba;AHosFjB;;AwBnqFE;EAEE,+CrBnCa;AHwsFjB;;AwBlqFE;EAEE,crBxCa;EqByCb,6BAA6B;AxBoqFjC;;AwBjqFE;;EAGE,WrBhFW;EqBiFX,yBrBhDa;EqBiDb,qBrBjDa;AHotFjB;;AwBjqFI;;EAKI,+CrBxDS;AHytFjB;;AuB9rFE;ECHA,crBxDgB;EqByDhB,qBrBzDgB;AH8vFlB;;AK1vFE;EmBwDE,crBpDc;EqBqDd,yBrB7Dc;EqB8Dd,qBrB9Dc;AHowFlB;;AwBnsFE;EAEE,iDrBnEc;AHwwFlB;;AwBlsFE;EAEE,crBxEc;EqByEd,6BAA6B;AxBosFjC;;AwBjsFE;;EAGE,crBvEc;EqBwEd,yBrBhFc;EqBiFd,qBrBjFc;AHoxFlB;;AwBjsFI;;EAKI,iDrBxFU;AHyxFlB;;AuB9tFE;ECHA,crBjDgB;EqBkDhB,qBrBlDgB;AHuxFlB;;AK1xFE;EmBwDE,WrB7DW;EqB8DX,yBrBtDc;EqBuDd,qBrBvDc;AH6xFlB;;AwBnuFE;EAEE,8CrB5Dc;AHiyFlB;;AwBluFE;EAEE,crBjEc;EqBkEd,6BAA6B;AxBouFjC;;AwBjuFE;;EAGE,WrBhFW;EqBiFX,yBrBzEc;EqB0Ed,qBrB1Ec;AH6yFlB;;AwBjuFI;;EAKI,8CrBjFU;AHkzFlB;;AuBnvFA;EACE,gBpBoN+B;EoBnN/B,cpB5Ce;EoB6Cf,qBpBkG4C;AHopF9C;;AK3zFE;EkBwEE,cpBgG8D;EoB/F9D,0BpBgG+C;AHupFnD;;AuB9vFA;EAYI,0BpB2F+C;EoB1F/C,gBAAgB;AvBsvFpB;;AuBnwFA;EAkBI,cpBnFc;EoBoFd,oBAAoB;AvBqvFxB;;AuB1uFA;ECJE,oBrB6SgC;ECtR5B,kBAtCY;EoBiBhB,gBrBkI+B;EOvO7B,qBP8O+B;AH0mFnC;;AuB7uFA;ECRE,uBrBwSiC;ECjR7B,mBAtCY;EoBiBhB,gBrBmI+B;EOxO7B,qBP+O+B;AHgnFnC;;AuB3uFA;EACE,cAAc;EACd,WAAW;AvB8uFb;;AuBhvFA;EAMI,kBpB6T+B;AHi7EnC;;AuBzuFA;;;EAII,WAAW;AvB2uFf;;AyBn3FA;ELMM,gCjB8P2C;AHmnFjD;;AoB52FI;EKXJ;ILYM,gBAAgB;EpBg3FpB;AACF;;AyB73FA;EAII,UAAU;AzB63Fd;;AyBz3FA;EAEI,aAAa;AzB23FjB;;AyBv3FA;EACE,kBAAkB;EAClB,SAAS;EACT,gBAAgB;ELXZ,6BjB+PwC;AHuoF9C;;AoBj4FI;EKGJ;ILFM,gBAAgB;EpBq4FpB;AACF;;A0Bj5FA;;;;EAIE,kBAAkB;A1Bo5FpB;;A0Bj5FA;EACE,mBAAmB;A1Bo5FrB;;A2Bh4FI;EACE,qBAAqB;EACrB,oBxBkO0C;EwBjO1C,uBxBgO0C;EwB/N1C,WAAW;EAhCf,uBAA8B;EAC9B,qCAA4C;EAC5C,gBAAgB;EAChB,oCAA2C;A3Bo6F7C;;A2B/2FI;EACE,cAAc;A3Bk3FpB;;A0B55FA;EACE,kBAAkB;EAClB,SAAS;EACT,OAAO;EACP,avB4pBsC;EuB3pBtC,aAAa;EACb,WAAW;EACX,gBvBkuBuC;EuBjuBvC,iBAA8B;EAC9B,oBAA4B;EtBsGxB,eAtCY;EsB9DhB,cvBXgB;EuBYhB,gBAAgB;EAChB,gBAAgB;EAChB,sBvBvBa;EuBwBb,4BAA4B;EAC5B,qCvBfa;EOZX,sBP6OgC;AH8sFpC;;A0Bv5FI;EACE,WAAW;EACX,OAAO;A1B05Fb;;A0Bv5FI;EACE,QAAQ;EACR,UAAU;A1B05FhB;;Ac94FI;EYnBA;IACE,WAAW;IACX,OAAO;E1Bq6FX;E0Bl6FE;IACE,QAAQ;IACR,UAAU;E1Bo6Fd;AACF;;Acz5FI;EYnBA;IACE,WAAW;IACX,OAAO;E1Bg7FX;E0B76FE;IACE,QAAQ;IACR,UAAU;E1B+6Fd;AACF;;Acp6FI;EYnBA;IACE,WAAW;IACX,OAAO;E1B27FX;E0Bx7FE;IACE,QAAQ;IACR,UAAU;E1B07Fd;AACF;;Ac/6FI;EYnBA;IACE,WAAW;IACX,OAAO;E1Bs8FX;E0Bn8FE;IACE,QAAQ;IACR,UAAU;E1Bq8Fd;AACF;;A0B/7FA;EAEI,SAAS;EACT,YAAY;EACZ,aAAa;EACb,uBvB+rBuC;AHkwE3C;;A2Bh+FI;EACE,qBAAqB;EACrB,oBxBkO0C;EwBjO1C,uBxBgO0C;EwB/N1C,WAAW;EAzBf,aAAa;EACb,qCAA4C;EAC5C,0BAAiC;EACjC,oCAA2C;A3B6/F7C;;A2B/8FI;EACE,cAAc;A3Bk9FpB;;A0Bx8FA;EAEI,MAAM;EACN,WAAW;EACX,UAAU;EACV,aAAa;EACb,qBvBirBuC;AHyxE3C;;A2Bv/FI;EACE,qBAAqB;EACrB,oBxBkO0C;EwBjO1C,uBxBgO0C;EwB/N1C,WAAW;EAlBf,mCAA0C;EAC1C,eAAe;EACf,sCAA6C;EAC7C,wBAA+B;A3B6gGjC;;A2Bt+FI;EACE,cAAc;A3By+FpB;;A2BtgGI;EDmDE,iBAAiB;A1Bu9FvB;;A0Bl9FA;EAEI,MAAM;EACN,WAAW;EACX,UAAU;EACV,aAAa;EACb,sBvBgqBuC;AHozE3C;;A2BlhGI;EACE,qBAAqB;EACrB,oBxBkO0C;EwBjO1C,uBxBgO0C;EwB/N1C,WAAW;A3BqhGjB;;A2BzhGI;EAgBI,aAAa;A3B6gGrB;;A2B1gGM;EACE,qBAAqB;EACrB,qBxB+MwC;EwB9MxC,uBxB6MwC;EwB5MxC,WAAW;EA9BjB,mCAA0C;EAC1C,yBAAgC;EAChC,sCAA6C;A3B4iG/C;;A2B3gGI;EACE,cAAc;A3B8gGpB;;A2BxhGM;EDiDA,iBAAiB;A1B2+FvB;;A0Bp+FA;EAKI,WAAW;EACX,YAAY;A1Bm+FhB;;A0B99FA;EE9GE,SAAS;EACT,gBAAmB;EACnB,gBAAgB;EAChB,6BzBCgB;AH+kGlB;;A0B99FA;EACE,cAAc;EACd,WAAW;EACX,uBvBopBwC;EuBnpBxC,WAAW;EACX,gBvBoK+B;EuBnK/B,cvBhHgB;EuBiHhB,mBAAmB;EACnB,mBAAmB;EACnB,6BAA6B;EAC7B,SAAS;A1Bi+FX;;AKrlGE;EqBmIE,cvBqnBqD;EuBpnBrD,qBAAqB;EJ9IrB,yBnBEc;AHmmGlB;;A0Bj/FA;EAgCI,WvBnJW;EuBoJX,qBAAqB;EJrJrB,yBnB8Ba;AH6kGjB;;A0Bv/FA;EAuCI,cvBpJc;EuBqJd,oBAAoB;EACpB,6BAA6B;A1Bo9FjC;;A0B58FA;EACE,cAAc;A1B+8FhB;;A0B38FA;EACE,cAAc;EACd,sBvB+lBwC;EuB9lBxC,gBAAgB;EtBpDZ,mBAtCY;EsB4FhB,cvBxKgB;EuByKhB,mBAAmB;A1B88FrB;;A0B18FA;EACE,cAAc;EACd,uBvBqlBwC;EuBplBxC,cvB7KgB;AH0nGlB;;A6BvoGA;;EAEE,kBAAkB;EAClB,oBAAoB;EACpB,sBAAsB;A7B0oGxB;;A6B9oGA;;EAOI,kBAAkB;EAClB,cAAc;A7B4oGlB;;AK3oGE;;EwBII,UAAU;A7B4oGhB;;A6BzpGA;;;;EAkBM,UAAU;A7B8oGhB;;A6BxoGA;EACE,aAAa;EACb,eAAe;EACf,2BAA2B;A7B2oG7B;;A6B9oGA;EAMI,WAAW;A7B4oGf;;A6BxoGA;;EAII,iB1BsM6B;AHm8FjC;;A6B7oGA;;EnBhBI,0BmB0B8B;EnBzB9B,6BmByB8B;A7ByoGlC;;A6BnpGA;;EnBFI,yBmBiB6B;EnBhB7B,4BmBgB6B;A7B0oGjC;;A6B1nGA;EACE,wBAAmC;EACnC,uBAAkC;A7B6nGpC;;A6B/nGA;;;EAOI,cAAc;A7B8nGlB;;A6B3nGE;EACE,eAAe;A7B8nGnB;;A6B1nGA;EACE,uBAAsC;EACtC,sBAAqC;A7B6nGvC;;A6B1nGA;EACE,sBAAsC;EACtC,qBAAqC;A7B6nGvC;;A6BzmGA;EACE,sBAAsB;EACtB,uBAAuB;EACvB,uBAAuB;A7B4mGzB;;A6B/mGA;;EAOI,WAAW;A7B6mGf;;A6BpnGA;;EAYI,gB1BqH6B;AHw/FjC;;A6BznGA;;EnBlFI,6BmBoG+B;EnBnG/B,4BmBmG+B;A7B6mGnC;;A6B/nGA;;EnBhGI,yBmBuH4B;EnBtH5B,0BmBsH4B;A7B8mGhC;;A6B7lGA;;EAGI,gBAAgB;A7B+lGpB;;A6BlmGA;;;;EAOM,kBAAkB;EAClB,sBAAsB;EACtB,oBAAoB;A7BkmG1B;;A8B3vGA;EACE,kBAAkB;EAClB,aAAa;EACb,eAAe;EACf,oBAAoB;EACpB,WAAW;A9B8vGb;;A8BnwGA;;;;EAWI,kBAAkB;EAClB,YAAY;EACZ,YAAY;EACZ,gBAAgB;A9B+vGpB;;A8B7wGA;;;;;;;;;;;;EAmBM,iB3BsN2B;AHmjGjC;;A8B5xGA;;;EA2BI,UAAU;A9BuwGd;;A8BlyGA;EAgCI,UAAU;A9BswGd;;A8BtyGA;;EpBeI,0BoBsBmD;EpBrBnD,6BoBqBmD;A9BuwGvD;;A8B5yGA;;EpB6BI,yBoBSmD;EpBRnD,4BoBQmD;A9B4wGvD;;A8BlzGA;EA4CI,aAAa;EACb,mBAAmB;A9B0wGvB;;A8BvzGA;;EpBeI,0BoBiC6E;EpBhC7E,6BoBgC6E;A9B6wGjF;;A8B7zGA;EpB6BI,yBoBoBsE;EpBnBtE,4BoBmBsE;A9BixG1E;;A8BtwGA;;EAEE,aAAa;A9BywGf;;A8B3wGA;;EAQI,kBAAkB;EAClB,UAAU;A9BwwGd;;A8BjxGA;;EAYM,UAAU;A9B0wGhB;;A8BtxGA;;;;;;;;EAoBI,iB3ByJ6B;AHonGjC;;A8BzwGA;EAAuB,kB3BqJU;AHwnGjC;;A8B5wGA;EAAsB,iB3BoJW;AH4nGjC;;A8BxwGA;EACE,aAAa;EACb,mBAAmB;EACnB,yB3BgSkC;E2B/RlC,gBAAgB;E1BwBZ,eAtCY;E0BgBhB,gB3B0L+B;E2BzL/B,gB3B8L+B;E2B7L/B,c3B7FgB;E2B8FhB,kBAAkB;EAClB,mBAAmB;EACnB,yB3BrGgB;E2BsGhB,yB3BpGgB;EONd,sBP6OgC;AHyoGpC;;A8BxxGA;;EAkBI,aAAa;A9B2wGjB;;A8BjwGA;;EAEE,gCZjB8D;AlBqxGhE;;A8BjwGA;;;;;;EAME,oB3B2QgC;ECtR5B,kBAtCY;E0BmDhB,gB3BgG+B;EOvO7B,qBP8O+B;AH8pGnC;;A8BjwGA;;EAEE,kCZlC8D;AlBsyGhE;;A8BjwGA;;;;;;EAME,uB3BqPiC;ECjR7B,mBAtCY;E0BoEhB,gB3BgF+B;EOxO7B,qBP+O+B;AH8qGnC;;A8BjwGA;;EAEE,sBAA0E;A9BowG5E;;A8BzvGA;;;;;;EpBzJI,0BoB+J4B;EpB9J5B,6BoB8J4B;A9B6vGhC;;A8B1vGA;;;;;;EpBpJI,yBoB0J2B;EpBzJ3B,4BoByJ2B;A9B8vG/B;;A+Bl7GA;EACE,kBAAkB;EAClB,cAAc;EACd,kBAA+C;EAC/C,oBAAqE;A/Bq7GvE;;A+Bl7GA;EACE,oBAAoB;EACpB,kB5B6f0C;AHw7F5C;;A+Bl7GA;EACE,kBAAkB;EAClB,OAAO;EACP,WAAW;EACX,W5Byf0C;E4Bxf1C,eAAkF;EAClF,UAAU;A/Bq7GZ;;A+B37GA;EASI,W5BvBW;E4BwBX,qB5BKa;EmB9Bb,yBnB8Ba;AHk7GjB;;A+Bj8GA;EAoBM,gD5BLW;AHs7GjB;;A+Br8GA;EAyBI,qB5B0bsE;AHs/F1E;;A+Bz8GA;EA6BI,W5B3CW;E4B4CX,yB5Bsf8E;E4Brf9E,qB5Bqf8E;AH27FlF;;A+B/8GA;EAuCM,c5B/CY;AH29GlB;;A+Bn9GA;EA0CQ,yB5BtDU;AHm+GlB;;A+Bn6GA;EACE,kBAAkB;EAClB,gBAAgB;EAEhB,mBAAmB;A/Bq6GrB;;A+Bz6GA;EASI,kBAAkB;EAClB,YAA+E;EAC/E,aAA+D;EAC/D,cAAc;EACd,W5B4bwC;E4B3bxC,Y5B2bwC;E4B1bxC,oBAAoB;EACpB,WAAW;EACX,sB5BnFW;E4BoFX,yB5BoJ6B;AHgxGjC;;A+Bt7GA;EAwBI,kBAAkB;EAClB,YAA+E;EAC/E,aAA+D;EAC/D,cAAc;EACd,W5B6awC;E4B5axC,Y5B4awC;E4B3axC,WAAW;EACX,mCAAgE;A/Bk6GpE;;A+Bz5GA;ErB5GI,sBP6OgC;AH4xGpC;;A+B75GA;EAOM,kOb5EqI;AlBs+G3I;;A+Bj6GA;EAaM,qB5B1FW;EmB9Bb,yBnB8Ba;AHm/GjB;;A+Bt6GA;EAkBM,+KbvFqI;AlB++G3I;;A+B16GA;EAwBM,wC5BrGW;AH2/GjB;;A+B96GA;EA2BM,wC5BxGW;AH+/GjB;;A+B94GA;EAGI,kB5B8Z+C;AHi/FnD;;A+Bl5GA;EAQM,8KbjHqI;AlB+/G3I;;A+Bt5GA;EAcM,wC5B/HW;AH2gHjB;;A+Bl4GA;EACE,qBAA2D;A/Bq4G7D;;A+Bt4GA;EAKM,cAAqD;EACrD,c5BsY+E;E4BrY/E,mBAAmB;EAEnB,qB5BoY4E;AHggGlF;;A+B74GA;EAaM,wBb1E0D;Ea2E1D,0Bb3E0D;Ea4E1D,uBbxD0D;EayD1D,wBbzD0D;Ea0D1D,yB5BlLY;E4BoLZ,qB5B0X4E;EiBpjB5E,yIjBsgB+H;AHwjGrI;;AoBzjHI;EWkKJ;IXjKM,gBAAgB;EpB6jHpB;AACF;;A+B75GA;EA0BM,sB5BhMS;E4BiMT,8BAA4E;A/Bu4GlF;;A+Bl6GA;EAiCM,wC5B1KW;AH+iHjB;;A+Bz3GA;EACE,qBAAqB;EACrB,WAAW;EACX,mCb7G8D;Ea8G9D,0C5BwKkC;ECvQ9B,eAtCY;E2BwIhB,gB5BkE+B;E4BjE/B,gB5BsE+B;E4BrE/B,c5BrNgB;E4BsNhB,sBAAsB;EACtB,uO5BuW+I;E4BtW/I,yB5B3NgB;EONd,sBP6OgC;E4BTlC,wBAAgB;EAAhB,qBAAgB;EAAhB,gBAAgB;A/B03GlB;;A+Bz4GA;EAkBI,qB5B4PsE;E4B3PtE,UAAU;EAIR,gD5B7MW;AHqkHjB;;A+B/4GA;EAgCM,c5B5OY;E4B6OZ,sB5BpPS;AHumHf;;A+Bp5GA;EAuCI,YAAY;EACZ,sB5BoIgC;E4BnIhC,sBAAsB;A/Bi3G1B;;A+B15GA;EA6CI,c5B1Pc;E4B2Pd,yB5B/Pc;AHgnHlB;;A+B/5GA;EAmDI,aAAa;A/Bg3GjB;;A+Bn6GA;EAwDI,kBAAkB;EAClB,0B5BrQc;AHonHlB;;A+B32GA;EACE,kCbxK8D;EayK9D,oB5BsHkC;E4BrHlC,uB5BqHkC;E4BpHlC,oB5BqHiC;ECjR7B,mBAtCY;AJijHlB;;A+B32GA;EACE,gCbhL8D;EaiL9D,mB5BmHiC;E4BlHjC,sB5BkHiC;E4BjHjC,kB5BkHgC;ECtR5B,kBAtCY;AJyjHlB;;A+Bt2GA;EACE,kBAAkB;EAClB,qBAAqB;EACrB,WAAW;EACX,mCbhM8D;EaiM9D,gBAAgB;A/By2GlB;;A+Bt2GA;EACE,kBAAkB;EAClB,UAAU;EACV,WAAW;EACX,mCbxM8D;EayM9D,SAAS;EACT,UAAU;A/By2GZ;;A+B/2GA;EASI,qB5B2KsE;E4B1KtE,gD5B1Ra;AHooHjB;;A+Bp3GA;;EAgBI,yB5B3Tc;AHoqHlB;;A+Bz3GA;EAqBM,iB5BkUQ;AHsiGd;;A+B73GA;EA0BI,0BAA0B;A/Bu2G9B;;A+Bn2GA;EACE,kBAAkB;EAClB,MAAM;EACN,QAAQ;EACR,OAAO;EACP,UAAU;EACV,mCbxO8D;EayO9D,yB5B6CkC;E4B3ClC,gB5BxD+B;E4ByD/B,gB5BpD+B;E4BqD/B,c5B/UgB;E4BgVhB,sB5BvVa;E4BwVb,yB5BpVgB;EONd,sBP6OgC;AHm9GpC;;A+Bn3GA;EAkBI,kBAAkB;EAClB,MAAM;EACN,QAAQ;EACR,SAAS;EACT,UAAU;EACV,cAAc;EACd,6Bb1P4D;Ea2P5D,yB5B2BgC;E4B1BhC,gB5BpE6B;E4BqE7B,c5B/Vc;E4BgWd,iBAAiB;ETxWjB,yBnBGc;E4BuWd,oBAAoB;ErB3WpB,kCqB4WgF;A/Bq2GpF;;A+B31GA;EACE,WAAW;EACX,cbhR2B;EaiR3B,UAAU;EACV,6BAA6B;EAC7B,wBAAgB;EAAhB,qBAAgB;EAAhB,gBAAgB;A/B81GlB;;A+Bn2GA;EAQI,aAAa;A/B+1GjB;;A+Bv2GA;EAY8B,gE5BnWb;AHksHjB;;A+B32GA;EAa8B,gE5BpWb;AHssHjB;;A+B/2GA;EAc8B,gE5BrWb;AH0sHjB;;A+Bn3GA;EAkBI,SAAS;A/Bq2Gb;;A+Bv3GA;EAsBI,W5B2N6C;E4B1N7C,Y5B0N6C;E4BzN7C,oBAAyE;ET7YzE,yBnB8Ba;E4BiXb,S5B0N0C;EO1mB1C,mBP2mB6C;EiB1mB3C,oHjBsgB+H;EiBtgB/H,4GjBsgB+H;E4BnHjI,wBAAgB;EAAhB,gBAAgB;A/Bo2GpB;;AoBlvHI;EWgXJ;IX/WM,wBAAgB;IAAhB,gBAAgB;EpBsvHpB;AACF;;A+Bx4GA;ETrXI,yBnB8mB2E;AHmpG/E;;A+B54GA;EAsCI,W5BoMoC;E4BnMpC,c5BoMqC;E4BnMrC,kBAAkB;EAClB,e5BmMuC;E4BlMvC,yB5B3Zc;E4B4Zd,yBAAyB;ErBjazB,mBPomBoC;AHwqGxC;;A+Bt5GA;EAiDI,W5BgM6C;E4B/L7C,Y5B+L6C;EmBtmB7C,yBnB8Ba;E4B2Yb,S5BgM0C;EO1mB1C,mBP2mB6C;EiB1mB3C,iHjBsgB+H;EiBtgB/H,4GjBsgB+H;E4BzFjI,qBAAgB;EAAhB,gBAAgB;A/Bw2GpB;;AoBhxHI;EWgXJ;IX/WM,qBAAgB;IAAhB,gBAAgB;EpBoxHpB;AACF;;A+Bt6GA;ETrXI,yBnB8mB2E;AHirG/E;;A+B16GA;EAgEI,W5B0KoC;E4BzKpC,c5B0KqC;E4BzKrC,kBAAkB;EAClB,e5ByKuC;E4BxKvC,yB5Brbc;E4Bsbd,yBAAyB;ErB3bzB,mBPomBoC;AHssGxC;;A+Bp7GA;EA2EI,W5BsK6C;E4BrK7C,Y5BqK6C;E4BpK7C,aAAa;EACb,oB5B9D+B;E4B+D/B,mB5B/D+B;EmBrY/B,yBnB8Ba;E4Bwab,S5BmK0C;EO1mB1C,mBP2mB6C;EiB1mB3C,gHjBsgB+H;EiBtgB/H,4GjBsgB+H;E4B5DjI,gBAAgB;A/B42GpB;;AoBjzHI;EWgXJ;IX/WM,oBAAgB;IAAhB,gBAAgB;EpBqzHpB;AACF;;A+Bv8GA;ETrXI,yBnB8mB2E;AHktG/E;;A+B38GA;EA6FI,W5B6IoC;E4B5IpC,c5B6IqC;E4B5IrC,kBAAkB;EAClB,e5B4IuC;E4B3IvC,6BAA6B;EAC7B,yBAAyB;EACzB,oBAA4C;A/Bk3GhD;;A+Br9GA;EAwGI,yB5Bzdc;EOLd,mBPomBoC;AH4uGxC;;A+B19GA;EA6GI,kBAAkB;EAClB,yB5B/dc;EOLd,mBPomBoC;AHkvGxC;;A+Bh+GA;EAoHM,yB5BneY;AHm1HlB;;A+Bp+GA;EAwHM,eAAe;A/Bg3GrB;;A+Bx+GA;EA4HM,yB5B3eY;AH21HlB;;A+B5+GA;EAgIM,eAAe;A/Bg3GrB;;A+Bh/GA;EAoIM,yB5BnfY;AHm2HlB;;A+B32GA;;;EX9fM,4GjBsgB+H;AHy2GrI;;AoB12HI;EWyfJ;;;IXxfM,gBAAgB;EpBg3HpB;AACF;;AgCx3HA;EACE,aAAa;EACb,eAAe;EACf,eAAe;EACf,gBAAgB;EAChB,gBAAgB;AhC23HlB;;AgCx3HA;EACE,cAAc;EACd,oB7B6qBsC;AH8sGxC;;AK13HE;E2BEE,qBAAqB;AhC43HzB;;AgCj4HA;EAUI,c7BVc;E6BWd,oBAAoB;EACpB,eAAe;AhC23HnB;;AgCn3HA;EACE,gC7BxBgB;AH84HlB;;AgCv3HA;EAII,mB7B0M6B;AH6qHjC;;AgC33HA;EAQI,6BAAgD;EtB3BhD,+BPoOgC;EOnOhC,gCPmOgC;AHgrHpC;;AKl5HE;E2B6BI,qC7BnCY;AH45HlB;;AgCr4HA;EAgBM,c7BpCY;E6BqCZ,6BAA6B;EAC7B,yBAAyB;AhCy3H/B;;AgC34HA;;EAwBI,c7B3Cc;E6B4Cd,sB7BnDW;E6BoDX,kC7BpDW;AH46Hf;;AgCl5HA;EA+BI,gB7B+K6B;EOjO7B,yBsBoD4B;EtBnD5B,0BsBmD4B;AhCu3HhC;;AgC92HA;EtBtEI,sBP6OgC;AH2sHpC;;AgCl3HA;;EAOI,W7B3EW;E6B4EX,yB7B/Ca;AH+5HjB;;AgCv2HA;EAEI,cAAc;EACd,kBAAkB;AhCy2HtB;;AgCr2HA;EAEI,aAAa;EACb,YAAY;EACZ,kBAAkB;AhCu2HtB;;AgC91HA;EAEI,aAAa;AhCg2HjB;;AgCl2HA;EAKI,cAAc;AhCi2HlB;;AiCr8HA;EACE,kBAAkB;EAClB,aAAa;EACb,eAAe;EACf,mBAAmB;EACnB,8BAA8B;EAC9B,oB9BiHW;AHu1Hb;;AiC98HA;;EAWI,aAAa;EACb,eAAe;EACf,mBAAmB;EACnB,8BAA8B;AjCw8HlC;;AiCp7HA;EACE,qBAAqB;EACrB,sB9BqqB+E;E8BpqB/E,yB9BoqB+E;E8BnqB/E,kB9BiFW;ECTP,kBAtCY;E6BhChB,oBAAoB;EACpB,mBAAmB;AjCu7HrB;;AKj+HE;E4B6CE,qBAAqB;AjCw7HzB;;AiC/6HA;EACE,aAAa;EACb,sBAAsB;EACtB,eAAe;EACf,gBAAgB;EAChB,gBAAgB;AjCk7HlB;;AiCv7HA;EAQI,gBAAgB;EAChB,eAAe;AjCm7HnB;;AiC57HA;EAaI,gBAAgB;EAChB,WAAW;AjCm7Hf;;AiC16HA;EACE,qBAAqB;EACrB,mB9B4lBuC;E8B3lBvC,sB9B2lBuC;AHk1GzC;;AiCj6HA;EACE,gBAAgB;EAChB,YAAY;EAGZ,mBAAmB;AjCk6HrB;;AiC95HA;EACE,wB9BumBwC;EC9lBpC,kBAtCY;E6B+BhB,cAAc;EACd,6BAA6B;EAC7B,6BAAuC;EvBrHrC,sBP6OgC;AH0yHpC;;AK5gIE;E4B8GE,qBAAqB;AjCk6HzB;;AiC55HA;EACE,qBAAqB;EACrB,YAAY;EACZ,aAAa;EACb,sBAAsB;EACtB,WAAW;EACX,mCAAmC;EACnC,0BAA0B;AjC+5H5B;;Acj+HI;EmB4EC;;IAGK,gBAAgB;IAChB,eAAe;EjCw5HvB;AACF;;Act/HI;EmByFA;IAoBI,qBAAqB;IACrB,2BAA2B;EjC84HjC;EiCn6HG;IAwBK,mBAAmB;EjC84H3B;EiCt6HG;IA2BO,kBAAkB;EjC84H5B;EiCz6HG;IA+BO,qB9BgiB6B;I8B/hB7B,oB9B+hB6B;EH82GvC;EiC76HG;;IAsCK,iBAAiB;EjC24HzB;EiCj7HG;IAqDK,wBAAwB;IAGxB,gBAAgB;EjC63HxB;EiCr7HG;IA4DK,aAAa;EjC43HrB;AACF;;AcrgII;EmB4EC;;IAGK,gBAAgB;IAChB,eAAe;EjC47HvB;AACF;;Ac1hII;EmByFA;IAoBI,qBAAqB;IACrB,2BAA2B;EjCk7HjC;EiCv8HG;IAwBK,mBAAmB;EjCk7H3B;EiC18HG;IA2BO,kBAAkB;EjCk7H5B;EiC78HG;IA+BO,qB9BgiB6B;I8B/hB7B,oB9B+hB6B;EHk5GvC;EiCj9HG;;IAsCK,iBAAiB;EjC+6HzB;EiCr9HG;IAqDK,wBAAwB;IAGxB,gBAAgB;EjCi6HxB;EiCz9HG;IA4DK,aAAa;EjCg6HrB;AACF;;AcziII;EmB4EC;;IAGK,gBAAgB;IAChB,eAAe;EjCg+HvB;AACF;;Ac9jII;EmByFA;IAoBI,qBAAqB;IACrB,2BAA2B;EjCs9HjC;EiC3+HG;IAwBK,mBAAmB;EjCs9H3B;EiC9+HG;IA2BO,kBAAkB;EjCs9H5B;EiCj/HG;IA+BO,qB9BgiB6B;I8B/hB7B,oB9B+hB6B;EHs7GvC;EiCr/HG;;IAsCK,iBAAiB;EjCm9HzB;EiCz/HG;IAqDK,wBAAwB;IAGxB,gBAAgB;EjCq8HxB;EiC7/HG;IA4DK,aAAa;EjCo8HrB;AACF;;Ac7kII;EmB4EC;;IAGK,gBAAgB;IAChB,eAAe;EjCogIvB;AACF;;AclmII;EmByFA;IAoBI,qBAAqB;IACrB,2BAA2B;EjC0/HjC;EiC/gIG;IAwBK,mBAAmB;EjC0/H3B;EiClhIG;IA2BO,kBAAkB;EjC0/H5B;EiCrhIG;IA+BO,qB9BgiB6B;I8B/hB7B,oB9B+hB6B;EH09GvC;EiCzhIG;;IAsCK,iBAAiB;EjCu/HzB;EiC7hIG;IAqDK,wBAAwB;IAGxB,gBAAgB;EjCy+HxB;EiCjiIG;IA4DK,aAAa;EjCw+HrB;AACF;;AiC1iIA;EAyBQ,qBAAqB;EACrB,2BAA2B;AjCqhInC;;AiC/iIA;;EAQU,gBAAgB;EAChB,eAAe;AjC4iIzB;;AiCrjIA;EA6BU,mBAAmB;AjC4hI7B;;AiCzjIA;EAgCY,kBAAkB;AjC6hI9B;;AiC7jIA;EAoCY,qB9BgiB6B;E8B/hB7B,oB9B+hB6B;AH8/GzC;;AiClkIA;;EA2CU,iBAAiB;AjC4hI3B;;AiCvkIA;EA0DU,wBAAwB;EAGxB,gBAAgB;AjC+gI1B;;AiC5kIA;EAiEU,aAAa;AjC+gIvB;;AiClgIA;EAEI,yB9B/MW;AHmtIf;;AKptIE;E4BmNI,yB9BlNS;AHutIf;;AiC1gIA;EAWM,yB9BxNS;AH2tIf;;AK5tIE;E4B4NM,yB9B3NO;AH+tIf;;AiClhIA;EAkBQ,yB9B/NO;AHmuIf;;AiCthIA;;;;EA0BM,yB9BvOS;AH0uIf;;AiC7hIA;EA+BI,yB9B5OW;E8B6OX,gC9B7OW;AH+uIf;;AiCliIA;EAoCI,+QftNuI;AlBwtI3I;;AiCtiIA;EAwCI,yB9BrPW;AHuvIf;;AiC1iIA;EA0CM,yB9BvPS;AH2vIf;;AK5vIE;E4B2PM,yB9B1PO;AH+vIf;;AiC9/HA;EAEI,W9B7QW;AH6wIf;;AKpwIE;E4BuQI,W9BhRS;AHixIf;;AiCtgIA;EAWM,+B9BtRS;AHqxIf;;AK5wIE;E4BgRM,gC9BzRO;AHyxIf;;AiC9gIA;EAkBQ,gC9B7RO;AH6xIf;;AiClhIA;;;;EA0BM,W9BrSS;AHoyIf;;AiCzhIA;EA+BI,+B9B1SW;E8B2SX,sC9B3SW;AHyyIf;;AiC9hIA;EAoCI,qRf1QuI;AlBwwI3I;;AiCliIA;EAwCI,+B9BnTW;AHizIf;;AiCtiIA;EA0CM,W9BrTS;AHqzIf;;AK5yIE;E4B+SM,W9BxTO;AHyzIf;;AkC5zIA;EACE,kBAAkB;EAClB,aAAa;EACb,sBAAsB;EACtB,YAAY;EAEZ,qBAAqB;EACrB,sB/BJa;E+BKb,2BAA2B;EAC3B,sC/BIa;EOZX,sBP6OgC;AH0lIpC;;AkCx0IA;EAaI,eAAe;EACf,cAAc;AlC+zIlB;;AkC70IA;ExBUI,+BPoOgC;EOnOhC,gCPmOgC;AHomIpC;;AkCl1IA;ExBwBI,mCPsNgC;EOrNhC,kCPqNgC;AHymIpC;;AkCzzIA;EAGE,cAAc;EAGd,eAAe;EACf,gB/BsxByC;AHkiH3C;;AkCpzIA;EACE,sB/BgxBwC;AHuiH1C;;AkCpzIA;EACE,qBAA+B;EAC/B,gBAAgB;AlCuzIlB;;AkCpzIA;EACE,gBAAgB;AlCuzIlB;;AKl2IE;E6BgDE,qBAAqB;AlCszIzB;;AkCxzIA;EAMI,oB/B+vBuC;AHujH3C;;AkC9yIA;EACE,wB/BsvByC;E+BrvBzC,gBAAgB;EAEhB,qC/B3Da;E+B4Db,6C/B5Da;AH42If;;AkCrzIA;ExBnEI,0DwB2E8E;AlCizIlF;;AkCzzIA;EAaM,aAAa;AlCgzInB;;AkC3yIA;EACE,wB/BouByC;E+BnuBzC,qC/B3Ea;E+B4Eb,0C/B5Ea;AH03If;;AkCjzIA;ExBrFI,0DQ+H4D;AlB2wIhE;;AkCtyIA;EACE,uBAAiC;EACjC,uB/BmtBwC;E+BltBxC,sBAAgC;EAChC,gBAAgB;AlCyyIlB;;AkCtyIA;EACE,uBAAiC;EACjC,sBAAgC;AlCyyIlC;;AkCryIA;EACE,kBAAkB;EAClB,MAAM;EACN,QAAQ;EACR,SAAS;EACT,OAAO;EACP,gB/B8sByC;AH0lH3C;;AkCryIA;;;EAGE,cAAc;EACd,WAAW;AlCwyIb;;AkCryIA;;ExBxHI,2CQsH4D;ERrH5D,4CQqH4D;AlB6yIhE;;AkCtyIA;;ExB/GI,+CQwG4D;ERvG5D,8CQuG4D;AlBmzIhE;;AkCpyIA;EAEI,mB/BurBsD;AH+mH1D;;Ac/3II;EoBuFJ;IAMI,aAAa;IACb,mBAAmB;IACnB,mB/BirBsD;I+BhrBtD,kB/BgrBsD;EHunHxD;EkChzIF;IAaM,YAAY;IACZ,kB/B2qBoD;I+B1qBpD,gBAAgB;IAChB,iB/ByqBoD;EH6nHxD;AACF;;AkC7xIA;EAII,mB/B2pBsD;AHkoH1D;;Acl5II;EoBiHJ;IAQI,aAAa;IACb,mBAAmB;ElC8xIrB;EkCvyIF;IAcM,YAAY;IACZ,gBAAgB;ElC4xIpB;EkC3yIF;IAkBQ,cAAc;IACd,cAAc;ElC4xIpB;EkC/yIF;IxBxJI,0BwBiLoC;IxBhLpC,6BwBgLoC;ElC0xItC;EkCnzIF;;IA8BY,0BAA0B;ElCyxIpC;EkCvzIF;;IAmCY,6BAA6B;ElCwxIvC;EkC3zIF;IxB1II,yBwBkLmC;IxBjLnC,4BwBiLmC;ElCuxIrC;EkC/zIF;;IA6CY,yBAAyB;ElCsxInC;EkCn0IF;;IAkDY,4BAA4B;ElCqxItC;AACF;;AkCzwIA;EAEI,sB/BglBsC;AH2rH1C;;Ac77II;EoBgLJ;IAMI,oB/B6lBiC;I+B7lBjC,e/B6lBiC;I+B5lBjC,wB/B6lBuC;I+B7lBvC,mB/B6lBuC;I+B5lBvC,UAAU;IACV,SAAS;ElC4wIX;EkCrxIF;IAYM,qBAAqB;IACrB,WAAW;ElC4wIf;AACF;;AkCnwIA;EAEI,gBAAgB;AlCqwIpB;;AkCvwIA;EAKM,gBAAgB;ExB5OlB,6BwB6OiC;ExB5OjC,4BwB4OiC;AlCuwIrC;;AkC7wIA;ExBrPI,yBwB+P8B;ExB9P9B,0BwB8P8B;AlCwwIlC;;AkClxIA;ExB9PI,gBwB4Q0B;EACxB,mB/BnC2B;AH2yIjC;;AmC1hJA;EACE,aAAa;EACb,eAAe;EACf,qBhC+hCsC;EgC9hCtC,mBhCiiCsC;EgC/hCtC,gBAAgB;EAChB,yBhCEgB;EOJd,sBP6OgC;AHkzIpC;;AmCzhJA;EAGI,oBhCqhCqC;AHqgHzC;;AmC7hJA;EAMM,qBAAqB;EACrB,qBhCihCmC;EgChhCnC,chCNY;EgCOZ,YhCshCuC;AHqgH7C;;AmCpiJA;EAoBI,0BAA0B;AnCohJ9B;;AmCxiJA;EAwBI,qBAAqB;AnCohJzB;;AmC5iJA;EA4BI,chC1Bc;AH8iJlB;;AoC3jJA;EACE,aAAa;E7BGb,eAAe;EACf,gBAAgB;EGAd,sBP6OgC;AHg1IpC;;AoC5jJA;EACE,kBAAkB;EAClB,cAAc;EACd,uBjCgxBwC;EiC/wBxC,iBjCqO+B;EiCpO/B,iBjCmxBsC;EiClxBtC,cjCwBe;EiCvBf,sBjCNa;EiCOb,yBjCJgB;AHmkJlB;;AoCvkJA;EAWI,UAAU;EACV,cjCkK8D;EiCjK9D,qBAAqB;EACrB,yBjCXc;EiCYd,qBjCXc;AH2kJlB;;AoC/kJA;EAmBI,UAAU;EACV,UjC4wBiC;EiC3wBjC,gDjCSa;AHujJjB;;AoC5jJA;EAGM,cAAc;E1BChB,+BP+MgC;EO9MhC,kCP8MgC;AH+2IpC;;AoClkJA;E1BVI,gCP6NgC;EO5NhC,mCP4NgC;AHo3IpC;;AoCvkJA;EAcI,UAAU;EACV,WjCvCW;EiCwCX,yBjCXa;EiCYb,qBjCZa;AHykJjB;;AoC9kJA;EAqBI,cjCvCc;EiCwCd,oBAAoB;EAEpB,YAAY;EACZ,sBjCjDW;EiCkDX,qBjC/Cc;AH2mJlB;;AqClnJE;EACE,uBlCyxBsC;EC9pBpC,kBAtCY;EiCnFd,gBlCsO6B;AH+4IjC;;AqChnJM;E3BwBF,8BPgN+B;EO/M/B,iCP+M+B;AH64InC;;AqChnJM;E3BKF,+BP8N+B;EO7N/B,kCP6N+B;AHk5InC;;AqCloJE;EACE,uBlCuxBqC;EC5pBnC,mBAtCY;EiCnFd,gBlCuO6B;AH85IjC;;AqChoJM;E3BwBF,8BPiN+B;EOhN/B,iCPgN+B;AH45InC;;AqChoJM;E3BKF,+BP+N+B;EO9N/B,kCP8N+B;AHi6InC;;AsChpJA;EACE,qBAAqB;EACrB,qBnCw5BsC;ECv1BpC,cAAW;EkC/Db,gBnC2R+B;EmC1R/B,cAAc;EACd,kBAAkB;EAClB,mBAAmB;EACnB,wBAAwB;E5BRtB,sBP6OgC;EiB5O9B,qIjB6b6I;AH+tInJ;;AoBvpJI;EkBNJ;IlBOM,gBAAgB;EpB2pJpB;AACF;;AKxpJE;EiCGI,qBAAqB;AtCypJ3B;;AsCvqJA;EAoBI,aAAa;AtCupJjB;;AsClpJA;EACE,kBAAkB;EAClB,SAAS;AtCqpJX;;AsC9oJA;EACE,oBnC63BsC;EmC53BtC,mBnC43BsC;EOh6BpC,oBPm6BqC;AHmxHzC;;AsCzoJE;ECjDA,WpCMa;EoCLb,yBpCkCe;AH4pJjB;;AKhrJE;EkCVI,WpCCS;EoCAT,yBAAkC;AvC8rJxC;;AuCjsJU;EAQJ,UAAU;EACV,+CpCuBW;AHsqJjB;;AsCxpJE;ECjDA,WpCMa;EoCLb,yBpCWgB;AHksJlB;;AK/rJE;EkCVI,WpCCS;EoCAT,yBAAkC;AvC6sJxC;;AuChtJU;EAQJ,UAAU;EACV,iDpCAY;AH4sJlB;;AsCvqJE;ECjDA,WpCMa;EoCLb,yBpCyCe;AHmrJjB;;AK9sJE;EkCVI,WpCCS;EoCAT,yBAAkC;AvC4tJxC;;AuC/tJU;EAQJ,UAAU;EACV,+CpC8BW;AH6rJjB;;AsCtrJE;ECjDA,WpCMa;EoCLb,yBpC2Ce;AHgsJjB;;AK7tJE;EkCVI,WpCCS;EoCAT,yBAAkC;AvC2uJxC;;AuC9uJU;EAQJ,UAAU;EACV,gDpCgCW;AH0sJjB;;AsCrsJE;ECjDA,cpCegB;EoCdhB,yBpCwCe;AHktJjB;;AK5uJE;EkCVI,cpCUY;EoCTZ,yBAAkC;AvC0vJxC;;AuC7vJU;EAQJ,UAAU;EACV,+CpC6BW;AH4tJjB;;AsCptJE;ECjDA,WpCMa;EoCLb,yBpCsCe;AHmuJjB;;AK3vJE;EkCVI,WpCCS;EoCAT,yBAAkC;AvCywJxC;;AuC5wJU;EAQJ,UAAU;EACV,+CpC2BW;AH6uJjB;;AsCnuJE;ECjDA,cpCegB;EoCdhB,yBpCMgB;AHkxJlB;;AK1wJE;EkCVI,cpCUY;EoCTZ,yBAAkC;AvCwxJxC;;AuC3xJU;EAQJ,UAAU;EACV,iDpCLY;AH4xJlB;;AsClvJE;ECjDA,WpCMa;EoCLb,yBpCagB;AH0xJlB;;AKzxJE;EkCVI,WpCCS;EoCAT,yBAAkC;AvCuyJxC;;AuC1yJU;EAQJ,UAAU;EACV,8CpCEY;AHoyJlB;;AwCnzJA;EACE,kBAAoD;EACpD,mBrCqzBsC;EqCnzBtC,yBrCKgB;EOJd,qBP8O+B;AHukJnC;;Ac9vJI;E0B5DJ;IAQI,kBrC+yBoC;EHwgItC;AACF;;AwCpzJA;EACE,gBAAgB;EAChB,eAAe;E9BTb,gB8BUsB;AxCuzJ1B;;AyCl0JA;EACE,kBAAkB;EAClB,wBtCq9ByC;EsCp9BzC,mBtCq9BsC;EsCp9BtC,6BAA6C;E/BH3C,sBP6OgC;AH4lJpC;;AyCj0JA;EAEE,cAAc;AzCm0JhB;;AyC/zJA;EACE,gBtCgR+B;AHkjJjC;;AyC1zJA;EACE,mBAAsD;AzC6zJxD;;AyC9zJA;EAKI,kBAAkB;EAClB,MAAM;EACN,QAAQ;EACR,wBtCu7BuC;EsCt7BvC,cAAc;AzC6zJlB;;AyCnzJE;EC9CA,cxB8FgE;EIzF9D,yBJyF8D;EwB5FhE,qBxB4FgE;AlBywJlE;;A0Cn2JE;EACE,yBAAqC;A1Cs2JzC;;A0Cn2JE;EACE,cAA0B;A1Cs2J9B;;AyCj0JE;EC9CA,cxB8FgE;EIzF9D,yBJyF8D;EwB5FhE,qBxB4FgE;AlBuxJlE;;A0Cj3JE;EACE,yBAAqC;A1Co3JzC;;A0Cj3JE;EACE,cAA0B;A1Co3J9B;;AyC/0JE;EC9CA,cxB8FgE;EIzF9D,yBJyF8D;EwB5FhE,qBxB4FgE;AlBqyJlE;;A0C/3JE;EACE,yBAAqC;A1Ck4JzC;;A0C/3JE;EACE,cAA0B;A1Ck4J9B;;AyC71JE;EC9CA,cxB8FgE;EIzF9D,yBJyF8D;EwB5FhE,qBxB4FgE;AlBmzJlE;;A0C74JE;EACE,yBAAqC;A1Cg5JzC;;A0C74JE;EACE,cAA0B;A1Cg5J9B;;AyC32JE;EC9CA,cxB8FgE;EIzF9D,yBJyF8D;EwB5FhE,qBxB4FgE;AlBi0JlE;;A0C35JE;EACE,yBAAqC;A1C85JzC;;A0C35JE;EACE,cAA0B;A1C85J9B;;AyCz3JE;EC9CA,cxB8FgE;EIzF9D,yBJyF8D;EwB5FhE,qBxB4FgE;AlB+0JlE;;A0Cz6JE;EACE,yBAAqC;A1C46JzC;;A0Cz6JE;EACE,cAA0B;A1C46J9B;;AyCv4JE;EC9CA,cxB8FgE;EIzF9D,yBJyF8D;EwB5FhE,qBxB4FgE;AlB61JlE;;A0Cv7JE;EACE,yBAAqC;A1C07JzC;;A0Cv7JE;EACE,cAA0B;A1C07J9B;;AyCr5JE;EC9CA,cxB8FgE;EIzF9D,yBJyF8D;EwB5FhE,qBxB4FgE;AlB22JlE;;A0Cr8JE;EACE,yBAAqC;A1Cw8JzC;;A0Cr8JE;EACE,cAA0B;A1Cw8J9B;;A2Ch9JE;EACE;IAAO,2BAAuC;E3Co9JhD;E2Cn9JE;IAAK,wBAAwB;E3Cs9J/B;AACF;;A2Cz9JE;EACE;IAAO,2BAAuC;E3Co9JhD;E2Cn9JE;IAAK,wBAAwB;E3Cs9J/B;AACF;;A2Cn9JA;EACE,aAAa;EACb,YxC89BsC;EwC79BtC,gBAAgB;EvCoHZ,kBAtCY;EuC5EhB,yBxCJgB;EOJd,sBP6OgC;AHkvJpC;;A2Cl9JA;EACE,aAAa;EACb,sBAAsB;EACtB,uBAAuB;EACvB,gBAAgB;EAChB,WxChBa;EwCiBb,kBAAkB;EAClB,mBAAmB;EACnB,yBxCUe;EiB9BX,2BjB0+B4C;AHggIlD;;AoBr+JI;EuBOJ;IvBNM,gBAAgB;EpBy+JpB;AACF;;A2Cx9JA;ErBaE,qMAA6I;EqBX7I,0BxCw8BsC;AHmhIxC;;A2Cv9JE;EACE,0DxC08BkD;EwC18BlD,kDxC08BkD;AHghItD;;A2Cv9JM;EAJJ;IAKM,uBAAe;IAAf,eAAe;E3C29JrB;AACF;;A4CrgKA;EACE,aAAa;EACb,uBAAuB;A5CwgKzB;;A4CrgKA;EACE,OAAO;A5CwgKT;;A6C1gKA;EACE,aAAa;EACb,sBAAsB;EAGtB,eAAe;EACf,gBAAgB;A7C2gKlB;;A6ClgKA;EACE,WAAW;EACX,c1CPgB;E0CQhB,mBAAmB;A7CqgKrB;;AK3gKE;EwCUE,UAAU;EACV,c1Cbc;E0Ccd,qBAAqB;EACrB,yB1CrBc;AH0hKlB;;A6C/gKA;EAcI,c1CjBc;E0CkBd,yB1CzBc;AH8hKlB;;A6C5/JA;EACE,kBAAkB;EAClB,cAAc;EACd,wB1C88ByC;E0C58BzC,sB1CzCa;E0C0Cb,sC1ChCa;AH8hKf;;A6CpgKA;EnC7BI,+BPoOgC;EOnOhC,gCPmOgC;AHk0JpC;;A6CzgKA;EnCfI,mCPsNgC;EOrNhC,kCPqNgC;AHu0JpC;;A6C9gKA;EAkBI,c1ChDc;E0CiDd,oBAAoB;EACpB,sB1CxDW;AHwjKf;;A6CphKA;EAyBI,UAAU;EACV,W1C9DW;E0C+DX,yB1ClCa;E0CmCb,qB1CnCa;AHkiKjB;;A6C3hKA;EAgCI,mBAAmB;A7C+/JvB;;A6C/hKA;EAmCM,gB1CiK2B;E0ChK3B,qB1CgK2B;AHg2JjC;;A6Cl/JI;EACE,mBAAmB;A7Cq/JzB;;A6Ct/JI;EnCjCA,kCPsLgC;EOlMhC,0BmCmDwC;A7Cq/J5C;;A6C3/JI;EnC7CA,gCPkMgC;EOtLhC,4BmC4C0C;A7Cq/J9C;;A6ChgKI;EAeM,aAAa;A7Cq/JvB;;A6CpgKI;EAmBM,qB1C+HuB;E0C9HvB,oBAAoB;A7Cq/J9B;;A6CzgKI;EAuBQ,iB1C2HqB;E0C1HrB,sB1C0HqB;AH43JjC;;Ac/iKI;E+BiCA;IACE,mBAAmB;E7CkhKvB;E6CnhKE;InCjCA,kCPsLgC;IOlMhC,0BmCmDwC;E7CihK1C;E6CvhKE;InC7CA,gCPkMgC;IOtLhC,4BmC4C0C;E7CghK5C;E6C3hKE;IAeM,aAAa;E7C+gKrB;E6C9hKE;IAmBM,qB1C+HuB;I0C9HvB,oBAAoB;E7C8gK5B;E6CliKE;IAuBQ,iB1C2HqB;I0C1HrB,sB1C0HqB;EHo5J/B;AACF;;AcxkKI;E+BiCA;IACE,mBAAmB;E7C2iKvB;E6C5iKE;InCjCA,kCPsLgC;IOlMhC,0BmCmDwC;E7C0iK1C;E6ChjKE;InC7CA,gCPkMgC;IOtLhC,4BmC4C0C;E7CyiK5C;E6CpjKE;IAeM,aAAa;E7CwiKrB;E6CvjKE;IAmBM,qB1C+HuB;I0C9HvB,oBAAoB;E7CuiK5B;E6C3jKE;IAuBQ,iB1C2HqB;I0C1HrB,sB1C0HqB;EH66J/B;AACF;;AcjmKI;E+BiCA;IACE,mBAAmB;E7CokKvB;E6CrkKE;InCjCA,kCPsLgC;IOlMhC,0BmCmDwC;E7CmkK1C;E6CzkKE;InC7CA,gCPkMgC;IOtLhC,4BmC4C0C;E7CkkK5C;E6C7kKE;IAeM,aAAa;E7CikKrB;E6ChlKE;IAmBM,qB1C+HuB;I0C9HvB,oBAAoB;E7CgkK5B;E6CplKE;IAuBQ,iB1C2HqB;I0C1HrB,sB1C0HqB;EHs8J/B;AACF;;Ac1nKI;E+BiCA;IACE,mBAAmB;E7C6lKvB;E6C9lKE;InCjCA,kCPsLgC;IOlMhC,0BmCmDwC;E7C4lK1C;E6ClmKE;InC7CA,gCPkMgC;IOtLhC,4BmC4C0C;E7C2lK5C;E6CtmKE;IAeM,aAAa;E7C0lKrB;E6CzmKE;IAmBM,qB1C+HuB;I0C9HvB,oBAAoB;E7CylK5B;E6C7mKE;IAuBQ,iB1C2HqB;I0C1HrB,sB1C0HqB;EH+9J/B;AACF;;A6C5kKA;EAEI,qBAAqB;EACrB,oBAAoB;EnCjIpB,gBmCkIwB;A7C8kK5B;;A6CllKA;EAOM,mBAAmB;A7C+kKzB;;A6CtlKA;EAaM,sBAAsB;A7C6kK5B;;A8C1tKE;EACE,c5B2F8D;E4B1F9D,yB5B0F8D;AlBmoKlE;;AKltKE;EyCPM,c5BsF0D;E4BrF1D,yBAAyC;A9C6tKjD;;A8CpuKE;EAWM,W3CPO;E2CQP,yB5BgF0D;E4B/E1D,qB5B+E0D;AlB8oKlE;;A8C1uKE;EACE,c5B2F8D;E4B1F9D,yB5B0F8D;AlBmpKlE;;AKluKE;EyCPM,c5BsF0D;E4BrF1D,yBAAyC;A9C6uKjD;;A8CpvKE;EAWM,W3CPO;E2CQP,yB5BgF0D;E4B/E1D,qB5B+E0D;AlB8pKlE;;A8C1vKE;EACE,c5B2F8D;E4B1F9D,yB5B0F8D;AlBmqKlE;;AKlvKE;EyCPM,c5BsF0D;E4BrF1D,yBAAyC;A9C6vKjD;;A8CpwKE;EAWM,W3CPO;E2CQP,yB5BgF0D;E4B/E1D,qB5B+E0D;AlB8qKlE;;A8C1wKE;EACE,c5B2F8D;E4B1F9D,yB5B0F8D;AlBmrKlE;;AKlwKE;EyCPM,c5BsF0D;E4BrF1D,yBAAyC;A9C6wKjD;;A8CpxKE;EAWM,W3CPO;E2CQP,yB5BgF0D;E4B/E1D,qB5B+E0D;AlB8rKlE;;A8C1xKE;EACE,c5B2F8D;E4B1F9D,yB5B0F8D;AlBmsKlE;;AKlxKE;EyCPM,c5BsF0D;E4BrF1D,yBAAyC;A9C6xKjD;;A8CpyKE;EAWM,W3CPO;E2CQP,yB5BgF0D;E4B/E1D,qB5B+E0D;AlB8sKlE;;A8C1yKE;EACE,c5B2F8D;E4B1F9D,yB5B0F8D;AlBmtKlE;;AKlyKE;EyCPM,c5BsF0D;E4BrF1D,yBAAyC;A9C6yKjD;;A8CpzKE;EAWM,W3CPO;E2CQP,yB5BgF0D;E4B/E1D,qB5B+E0D;AlB8tKlE;;A8C1zKE;EACE,c5B2F8D;E4B1F9D,yB5B0F8D;AlBmuKlE;;AKlzKE;EyCPM,c5BsF0D;E4BrF1D,yBAAyC;A9C6zKjD;;A8Cp0KE;EAWM,W3CPO;E2CQP,yB5BgF0D;E4B/E1D,qB5B+E0D;AlB8uKlE;;A8C10KE;EACE,c5B2F8D;E4B1F9D,yB5B0F8D;AlBmvKlE;;AKl0KE;EyCPM,c5BsF0D;E4BrF1D,yBAAyC;A9C60KjD;;A8Cp1KE;EAWM,W3CPO;E2CQP,yB5BgF0D;E4B/E1D,qB5B+E0D;AlB8vKlE;;A+C71KA;EACE,YAAY;E3C8HR,iBAtCY;E2CtFhB,gB5CiS+B;E4ChS/B,cAAc;EACd,W5CYa;E4CXb,yB5CCa;E4CAb,WAAW;A/Cg2Kb;;AK31KE;E0CDE,W5CMW;E4CLX,qBAAqB;A/Cg2KzB;;AK51KE;E0CCI,YAAY;A/C+1KlB;;A+Cp1KA;EACE,UAAU;EACV,6BAA6B;EAC7B,SAAS;EACT,wBAAgB;EAAhB,qBAAgB;EAAhB,gBAAgB;A/Cu1KlB;;A+Cj1KA;EACE,oBAAoB;A/Co1KtB;;AgD33KA;EACE,gB7Cy4BuC;E6Cx4BvC,gBAAgB;E5C6HZ,mBAtCY;E4CpFhB,2C7CEa;E6CDb,4BAA4B;EAC5B,oC7C04BmD;E6Cz4BnD,gD7CSa;E6CRb,mCAA2B;EAA3B,2BAA2B;EAC3B,UAAU;EtCLR,sB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Na;EiDOb,4BAA4B;EAC5B,oCjDEa;EOZX,qBP8O+B;AH+gLnC;;AoDlwLA;EAoBI,kBAAkB;EAClB,cAAc;EACd,WjD22BoC;EiD12BpC,cjD22BqC;EiD12BrC,gBjD2N+B;AHuhLnC;;AoD1wLA;EA4BM,kBAAkB;EAClB,cAAc;EACd,WAAW;EACX,yBAAyB;EACzB,mBAAmB;ApDkvLzB;;AoD7uLA;EACE,qBjD41BuC;AHo5JzC;;AoDjvLA;EAII,2BlC2F4D;AlBspLhE;;AoDrvLA;EAOM,SAAS;EACT,6BAAgE;EAChE,qCjDu1BiE;AH25JvE;;AoD3vLA;EAaM,WjD6L2B;EiD5L3B,6BAAgE;EAChE,sBjD7CS;AH+xLf;;AoD7uLA;EACE,mBjDw0BuC;AHw6JzC;;AoDjvLA;EAII,yBlCuE4D;EkCtE5D,ajDo0BqC;EiDn0BrC,YjDk0BoC;EiDj0BpC,gBAAgC;ApDivLpC;;AoDxvLA;EAUM,OAAO;EACP,oCAA2F;EAC3F,uCjDg0BiE;AHk7JvE;;AoD9vLA;EAgBM,SjDsK2B;EiDrK3B,oCAA2F;EAC3F,wBjDpES;AHszLf;;AoD7uLA;EACE,kBjDizBuC;AH+7JzC;;AoDjvLA;EAII,wBlCgD4D;AlBisLhE;;AoDrvLA;EAOM,MAAM;EACN,oCAA2F;EAC3F,wCjD4yBiE;AHs8JvE;;AoD3vLA;EAaM,QjDkJ2B;EiDjJ3B,oCAA2F;EAC3F,yBjDxFS;AH00Lf;;AoDjwLA;EAqBI,kBAAkB;EAClB,MAAM;EACN,SAAS;EACT,cAAc;EACd,WjDwxBoC;EiDvxBpC,oBAAsC;EACtC,WAAW;EACX,gCjD4wBuD;AHo+J3D;;AoD5uLA;EACE,oBjDixBuC;AH89JzC;;AoDhvLA;EAII,0BlCgB4D;EkCf5D,ajD6wBqC;EiD5wBrC,YjD2wBoC;EiD1wBpC,gBAAgC;ApDgvLpC;;AoDvvLA;EAUM,QAAQ;EACR,oCjDuwBmC;EiDtwBnC,sCjDywBiE;AHw+JvE;;AoD7vLA;EAgBM,UjD+G2B;EiD9G3B,oCjDiwBmC;EiDhwBnC,uBjD3HS;AH42Lf;;AoD3tLA;EACE,uBjDkuBwC;EiDjuBxC,gBAAgB;Eh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ACE,WpD4hC4B;EoD3hC5B,YpD2hC4B;AHkiK9B;;AwDhnMA;EAAqB,mCAAmC;AxDonMxD;;AwDnnMA;EAAqB,8BAA8B;AxDunMnD;;AwDtnMA;EAAqB,iCAAiC;AxD0nMtD;;AwDznMA;EAAqB,iCAAiC;AxD6nMtD;;AwD5nMA;EAAqB,sCAAsC;AxDgoM3D;;AwD/nMA;EAAqB,mCAAmC;AxDmoMxD;;AyDroME;EACE,oCAAmC;AzDwoMvC;;AK9nME;;;EoDLI,oCAAgD;AzDyoMtD;;AyD/oME;EACE,oCAAmC;AzDkpMvC;;AKxoME;;;EoDLI,oCAAgD;AzDmpMtD;;AyDzpME;EACE,oCAAmC;AzD4pMvC;;AKlpME;;;EoDLI,oCAAgD;AzD6pMtD;;AyDnqME;EACE,oCAAmC;AzDsqMvC;;AK5pME;;;EoDLI,oCAAgD;AzDuqMtD;;AyD7qME;EACE,oCAAmC;AzDgrMvC;;AKtqME;;;EoDLI,oCAAgD;AzDirMtD;;AyDvrME;EACE,oCAAmC;AzD0rMvC;;AKhrME;;;EoDLI,oCAAgD;AzD2rMtD;;AyDjsME;EACE,oCAAmC;AzDosMvC;;AK1rME;;;EoDLI,oCAAgD;AzDqsMtD;;AyD3sME;EACE,oCAAmC;AzD8sMvC;;AKpsME;;;EoDLI,oCAAgD;AzD+sMtD;;A0D9sMA;EACE,iCAAmC;A1DitMrC;;A0D9sMA;EACE,wCAAwC;A1DitM1C;;A2D5tMA;EAAkB,oCAAoD;A3DguMtE;;A2D/tMA;EAAkB,wCAAwD;A3DmuM1E;;A2DluMA;EAAkB,0CAA0D;A3DsuM5E;;A2DruMA;EAAkB,2CAA2D;A3DyuM7E;;A2DxuMA;EAAkB,yCAAyD;A3D4uM3E;;A2D1uMA;EAAmB,oBAAoB;A3D8uMvC;;A2D7uMA;EAAmB,wBAAwB;A3DivM3C;;A2DhvMA;EAAmB,0BAA0B;A3DovM7C;;A2DnvMA;EAAmB,2BAA2B;A3DuvM9C;;A2DtvMA;EAAmB,yBAAyB;A3D0vM5C;;A2DvvME;EACE,gCAA+B;A3D0vMnC;;A2D3vME;EACE,gCAA+B;A3D8vMnC;;A2D/vME;EACE,gCAA+B;A3DkwMnC;;A2DnwME;EACE,gCAA+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zpNI;EAAgC,8BAA8B;A9D6pNlE;;AcjpNI;EgDlDA;IAAgC,8BAA8B;E9DwsNhE;E8DvsNE;IAAgC,iCAAiC;E9D0sNnE;E8DzsNE;IAAgC,sCAAsC;E9D4sNxE;E8D3sNE;IAAgC,yCAAyC;E9D8sN3E;E8D5sNE;IAA8B,0BAA0B;E9D+sN1D;E8D9sNE;IAA8B,4BAA4B;E9DitN5D;E8DhtNE;IAA8B,kCAAkC;E9DmtNlE;E8DltNE;IAA8B,yBAAyB;E9DqtNzD;E8DptNE;IAA8B,uBAAuB;E9DutNvD;E8DttNE;IAA8B,uBAAuB;E9DytNvD;E8DxtNE;IAA8B,yBAAyB;E9D2tNzD;E8D1tNE;IAA8B,yBAAyB;E9D6tNzD;E8D3tNE;IAAoC,sCAAsC;E9D8tN5E;E8D7tNE;IAAoC,oCAAoC;E9DguN1E;E8D/tNE;IAAoC,kCAAkC;E9DkuNxE;E8DjuNE;IAAoC,yCAAyC;E9DouN/E;E8DnuNE;IAAoC,wCAAwC;E9DsuN9E;E8DpuNE;IAAiC,kCAAkC;E9DuuNrE;E8DtuNE;IAAiC,gCAAgC;E9DyuNnE;E8DxuNE;IAAiC,8BAA8B;E9D2uNjE;E8D1uNE;IAAiC,gCAAgC;E9D6uNnE;E8D5uNE;IAAiC,+BAA+B;E9D+uNlE;E8D7uNE;IAAkC,oCAAoC;E9DgvNxE;E8D/uNE;IAAkC,kCAAkC;E9DkvNtE;E8DjvNE;IAAkC,gCAAgC;E9DovNpE;E8DnvNE;IAAkC,uCAAuC;E9DsvN3E;E8DrvNE;IAAkC,sCAAsC;E9DwvN1E;E8DvvNE;IAAkC,iCAAiC;E9D0vNrE;E8DxvNE;IAAgC,2BAA2B;E9D2vN7D;E8D1vNE;IAAgC,iCAAiC;E9D6vNnE;E8D5vNE;IAAgC,+BAA+B;E9D+vNjE;E8D9vNE;IAAgC,6BAA6B;E9DiwN/D;E8DhwNE;IAAgC,+BAA+B;E9DmwNjE;E8DlwNE;IAAgC,8BAA8B;E9DqwNhE;AACF;;Ac1vNI;EgDlDA;IAAgC,8BAA8B;E9DizNhE;E8DhzNE;IAAgC,iCAAiC;E9DmzNnE;E8DlzNE;IAAgC,sCAAsC;E9DqzNxE;E8DpzNE;IAAgC,yCAAyC;E9DuzN3E;E8DrzNE;IAA8B,0BAA0B;E9DwzN1D;E8DvzNE;IAA8B,4BAA4B;E9D0zN5D;E8DzzNE;IAA8B,kCAAkC;E9D4zNlE;E8D3zNE;IAA8B,yBAAyB;E9D8zNzD;E8D7zNE;IAA8B,uBAAuB;E9Dg0NvD;E8D/zNE;IAA8B,uBAAuB;E9Dk0NvD;E8Dj0NE;IAA8B,yBAAyB;E9Do0NzD;E8Dn0NE;IAA8B,yBAAyB;E9Ds0NzD;E8Dp0NE;IAAoC,sCAAsC;E9Du0N5E;E8Dt0NE;IAAoC,oCAAoC;E9Dy0N1E;E8Dx0NE;IAAoC,kCAAkC;E9D20NxE;E8D10NE;IAAoC,yCAAyC;E9D60N/E;E8D50NE;IAAoC,wCAAwC;E9D+0N9E;E8D70NE;IAAiC,kCAAkC;E9Dg1NrE;E8D/0NE;IAAiC,gCAAgC;E9Dk1NnE;E8Dj1NE;IAAiC,8BAA8B;E9Do1NjE;E8Dn1NE;IAAiC,gCAAgC;E9Ds1NnE;E8Dr1NE;IAAiC,+BAA+B;E9Dw1NlE;E8Dt1NE;IAAkC,oCAAoC;E9Dy1NxE;E8Dx1NE;IAAkC,kCAAkC;E9D21NtE;E8D11NE;IAAkC,gCAAgC;E9D61NpE;E8D51NE;IAAkC,uCAAuC;E9D+1N3E;E8D91NE;IAAkC,sCAAsC;E9Di2N1E;E8Dh2NE;IAAkC,iCAAiC;E9Dm2NrE;E8Dj2NE;IAAgC,2BAA2B;E9Do2N7D;E8Dn2NE;IAAgC,iCAAiC;E9Ds2NnE;E8Dr2NE;IAAgC,+BAA+B;E9Dw2NjE;E8Dv2NE;IAAgC,6BAA6B;E9D02N/D;E8Dz2NE;IAAgC,+BAA+B;E9D42NjE;E8D32NE;IAAgC,8BAA8B;E9D82NhE;AACF;;Acn2NI;EgDlDA;IAAgC,8BAA8B;E9D05NhE;E8Dz5NE;IAAgC,iCAAiC;E9D45NnE;E8D35NE;IAAgC,sCAAsC;E9D85NxE;E8D75NE;IAAgC,yCAAyC;E9Dg6N3E;E8D95NE;IAA8B,0BAA0B;E9Di6N1D;E8Dh6NE;IAA8B,4BAA4B;E9Dm6N5D;E8Dl6NE;IAA8B,kCAAkC;E9Dq6NlE;E8Dp6NE;IAA8B,yBAAyB;E9Du6NzD;E8Dt6NE;IAA8B,uBAAuB;E9Dy6NvD;E8Dx6NE;IAA8B,uBAAuB;E9D26NvD;E8D16NE;IAA8B,yBAAyB;E9D66NzD;E8D56NE;IAA8B,yBAAyB;E9D+6NzD;E8D76NE;IAAoC,sCAAsC;E9Dg7N5E;E8D/6NE;IAAoC,oCAAoC;E9Dk7N1E;E8Dj7NE;IAAoC,kCAAkC;E9Do7NxE;E8Dn7NE;IAAoC,yCAAyC;E9Ds7N/E;E8Dr7NE;IAAoC,wCAAwC;E9Dw7N9E;E8Dt7NE;IAAiC,kCAAkC;E9Dy7NrE;E8Dx7NE;IAAiC,gCAAgC;E9D27NnE;E8D17NE;IAAiC,8BAA8B;E9D67NjE;E8D57NE;IAAiC,gCAAgC;E9D+7NnE;E8D97NE;IAAiC,+BAA+B;E9Di8NlE;E8D/7NE;IAAkC,oCAAoC;E9Dk8NxE;E8Dj8NE;IAAkC,kCAAkC;E9Do8NtE;E8Dn8NE;IAAkC,gCAAgC;E9Ds8NpE;E8Dr8NE;IAAkC,uCAAuC;E9Dw8N3E;E8Dv8NE;IAAkC,sCAAsC;E9D08N1E;E8Dz8NE;IAAkC,iCAAiC;E9D48NrE;E8D18NE;IAAgC,2BAA2B;E9D68N7D;E8D58NE;IAAgC,iCAAiC;E9D+8NnE;E8D98NE;IAAgC,+BAA+B;E9Di9NjE;E8Dh9NE;IAAgC,6BAA6B;E9Dm9N/D;E8Dl9NE;IAAgC,+BAA+B;E9Dq9NjE;E8Dp9NE;IAAgC,8BAA8B;E9Du9NhE;AACF;;Ac58NI;EgDlDA;IAAgC,8BAA8B;E9DmgOhE;E8DlgOE;IAAgC,iCAAiC;E9DqgOnE;E8DpgOE;IAAgC,sCAAsC;E9DugOxE;E8DtgOE;IAAgC,yCAAyC;E9DygO3E;E8DvgOE;IAA8B,0BAA0B;E9D0gO1D;E8DzgOE;IAA8B,4BAA4B;E9D4gO5D;E8D3gOE;IAA8B,kCAAkC;E9D8gOlE;E8D7gOE;IAA8B,yBAAyB;E9DghOzD;E8D/gOE;IAA8B,uBAAuB;E9DkhOvD;E8DjhOE;IAA8B,uBAAuB;E9DohOvD;E8DnhOE;IAA8B,yBAAyB;E9DshOzD;E8DrhOE;IAA8B,yBAAyB;E9DwhOzD;E8DthOE;IAAoC,sCAAsC;E9DyhO5E;E8DxhOE;IAAoC,oCAAoC;E9D2hO1E;E8D1hOE;IAAoC,kCAAkC;E9D6hOxE;E8D5hOE;IAAoC,yCAAyC;E9D+hO/E;E8D9hOE;IAAoC,wCAAwC;E9DiiO9E;E8D/hOE;IAAiC,kCAAkC;E9DkiOrE;E8DjiOE;IAAiC,gCAAgC;E9DoiOnE;E8DniOE;IAAiC,8BAA8B;E9DsiOjE;E8DriOE;IAAiC,gCAAgC;E9DwiOnE;E8DviOE;IAAiC,+BAA+B;E9D0iOlE;E8DxiOE;IAAkC,oCAAoC;E9D2iOxE;E8D1iOE;IAAkC,kCAAkC;E9D6iOtE;E8D5iOE;IAAkC,gCAAgC;E9D+iOpE;E8D9iOE;IAAkC,uCAAuC;E9DijO3E;E8DhjOE;IAAkC,sCAAsC;E9DmjO1E;E8DljOE;IAAkC,iCAAiC;E9DqjOrE;E8DnjOE;IAAgC,2BAA2B;E9DsjO7D;E8DrjOE;IAAgC,iCAAiC;E9DwjOnE;E8DvjOE;IAAgC,+BAA+B;E9D0jOjE;E8DzjOE;IAAgC,6BAA6B;E9D4jO/D;E8D3jOE;IAAgC,+BAA+B;E9D8jOjE;E8D7jOE;IAAgC,8BAA8B;E9DgkOhE;AACF;;A+D3mOI;EAAwB,sBAAsB;A/D+mOlD;;A+D9mOI;EAAwB,uBAAuB;A/DknOnD;;A+DjnOI;EAAwB,sBAAsB;A/DqnOlD;;AcjkOI;EiDtDA;IAAwB,sBAAsB;E/D4nOhD;E+D3nOE;IAAwB,uBAAuB;E/D8nOjD;E+D7nOE;IAAwB,sBAAsB;E/DgoOhD;AACF;;Ac7kOI;EiDtDA;IAAwB,sBAAsB;E/DwoOhD;E+DvoOE;IAAwB,uBAAuB;E/D0oOjD;E+DzoOE;IAAwB,sBAAsB;E/D4oOhD;AACF;;AczlOI;EiDtDA;IAAwB,sBAAsB;E/DopOhD;E+DnpOE;IAAwB,uBAAuB;E/DspOjD;E+DrpOE;IAAwB,sBAAsB;E/DwpOhD;AACF;;AcrmOI;EiDtDA;IAAwB,sBAAsB;E/DgqOhD;E+D/pOE;IAAwB,uBAAuB;E/DkqOjD;E+DjqOE;IAAwB,sBAAsB;E/DoqOhD;AACF;;AgE1qOE;EAAsB,yBAA2B;AhE8qOnD;;AgE9qOE;EAAsB,2BAA2B;AhEkrOnD;;AiEjrOE;EAAyB,2BAA8B;AjEqrOzD;;AiErrOE;EAAyB,6BAA8B;AjEyrOzD;;AiEzrOE;EAAyB,6BAA8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iCAAwC;AvEu/OlD;;AuEr/OQ;;EAEE,kCAA0C;AvEw/OpD;;AuEt/OQ;;EAEE,gCAAsC;AvEy/OhD;;AuExgPQ;EAAgC,0BAA4B;AvE4gPpE;;AuE3gPQ;;EAEE,8BAAoC;AvE8gP9C;;AuE5gPQ;;EAEE,gCAAwC;AvE+gPlD;;AuE7gPQ;;EAEE,iCAA0C;AvEghPpD;;AuE9gPQ;;EAEE,+BAAsC;AvEihPhD;;AuEhiPQ;EAAgC,wBAA4B;AvEoiPpE;;AuEniPQ;;EAEE,4BAAoC;AvEsiP9C;;AuEpiPQ;;EAEE,8BAAwC;AvEuiPlD;;AuEriPQ;;EAEE,+BAA0C;AvEwiPpD;;AuEtiPQ;;EAEE,6BAAsC;AvEyiPhD;;AuExjPQ;EAAgC,0BAA4B;AvE4jPpE;;AuE3jPQ;;EAEE,8BAAoC;AvE8jP9C;;AuE5jPQ;;EAEE,gCAAwC;AvE+jPlD;;AuE7jPQ;;EAEE,iCAA0C;AvEgkPpD;;AuE9jPQ;;EAEE,+BAAsC;AvEikPhD;;AuEhlPQ;EAAgC,wBAA4B;AvEolPpE;;AuEnlPQ;;EAEE,4BAAoC;AvEslP9C;;AuEplPQ;;EAEE,8BAAwC;AvEulPlD;;AuErlPQ;;EAEE,+BAA0C;AvEwlPpD;;AuEtlPQ;;EAEE,6BAAsC;AvEylPhD;;AuEjlPQ;EAAwB,2BAA2B;AvEqlP3D;;AuEplPQ;;EAEE,+BAA+B;AvEulPzC;;AuErlPQ;;EAEE,iCAAiC;AvEwlP3C;;AuEtlPQ;;EAEE,kCAAkC;AvEylP5C;;AuEvlPQ;;EAEE,gCAAgC;AvE0lP1C;;AuEzmPQ;EAAwB,0BAA2B;AvE6mP3D;;AuE5mPQ;;EAEE,8BAA+B;AvE+mPzC;;AuE7mPQ;;EAEE,gCAAiC;AvEgnP3C;;AuE9mPQ;;EAEE,iCAAkC;AvEinP5C;;AuE/mPQ;;EAEE,+BAAgC;AvEknP1C;;AuEjoPQ;EAAwB,wBAA2B;AvEqoP3D;;AuEpoPQ;;EAEE,4BAA+B;AvEuoPzC;;AuEroPQ;;EAEE,8BAAiC;AvEwoP3C;;AuEtoPQ;;EAEE,+BAAkC;AvEyoP5C;;AuEvoPQ;;EAEE,6BAAgC;AvE0oP1C;;AuEzpPQ;EAAwB,0BAA2B;AvE6pP3D;;AuE5pPQ;;EAEE,8BAA+B;AvE+pPzC;;AuE7pPQ;;EAEE,gCAAiC;AvEgqP3C;;AuE9pPQ;;EAEE,iCAAkC;AvEiqP5C;;AuE/pPQ;;EAEE,+BAAgC;AvEkqP1C;;AuEjrPQ;EAAwB,wBAA2B;AvEqrP3D;;AuEprPQ;;EAEE,4BAA+B;AvEurPzC;;AuErrPQ;;EAEE,8BAAiC;AvEwrP3C;;AuEtrPQ;;EAEE,+BAAkC;AvEyrP5C;;AuEvrPQ;;EAEE,6BAAgC;AvE0rP1C;;AuEprPI;EAAmB,uBAAuB;AvEwrP9C;;AuEvrPI;;EAEE,2BAA2B;AvE0rPjC;;AuExrPI;;EAEE,6BAA6B;AvE2rPnC;;AuEzrPI;;EAEE,8BAA8B;AvE4rPpC;;AuE1rPI;;EAEE,4BAA4B;AvE6rPlC;;ActsPI;EyDlDI;IAAgC,oBAA4B;EvE6vPlE;EuE5vPM;;IAEE,wBAAoC;EvE8vP5C;EuE5vPM;;IAEE,0BAAwC;EvE8vPhD;EuE5vPM;;IAEE,2BAA0C;EvE8vPlD;EuE5vPM;;IAEE,yBAAsC;EvE8vP9C;EuE7wPM;IAAgC,0BAA4B;EvEgxPlE;EuE/wPM;;IAEE,8BAAoC;EvEixP5C;EuE/wPM;;IAEE,gCAAwC;EvEixPhD;EuE/wPM;;IAEE,iCAA0C;EvEixPlD;EuE/wPM;;IAEE,+BAAsC;EvEixP9C;EuEhyPM;IAAgC,yBAA4B;EvEmyPlE;EuElyPM;;IAEE,6BAAoC;EvEoyP5C;EuElyPM;;IAEE,+BAAwC;EvEoyPhD;EuElyPM;;IAEE,gCAA0C;EvEoyPlD;EuElyPM;;IAEE,8BAAsC;EvEoyP9C;EuEnzPM;IAAgC,uBAA4B;EvEszPlE;EuErzPM;;IAEE,2BAAoC;EvEuzP5C;EuErzPM;;IAEE,6BAAwC;EvEuzPhD;EuErzPM;;IAEE,8BAA0C;EvEuzPlD;EuErzPM;;IAEE,4BAAsC;EvEuzP9C;EuEt0PM;IAAgC,yBAA4B;EvEy0PlE;EuEx0PM;;IAEE,6BAAoC;EvE00P5C;EuEx0PM;;IAEE,+BAAwC;EvE00PhD;EuEx0PM;;IAEE,gCAA0C;EvE00PlD;EuEx0PM;;IAEE,8BAAsC;EvE00P9C;EuEz1PM;IAAgC,uBAA4B;EvE41PlE;EuE31PM;;IAEE,2BAAoC;EvE61P5C;EuE31PM;;IAEE,6BAAwC;EvE61PhD;EuE31PM;;IAEE,8BAA0C;EvE61PlD;EuE31PM;;IAEE,4BAAsC;EvE61P9C;EuE52PM;IAAgC,qBAA4B;EvE+2PlE;EuE92PM;;IAEE,yBAAoC;EvEg3P5C;EuE92PM;;IAEE,2BAAwC;EvEg3PhD;EuE92PM;;IAEE,4BAA0C;EvEg3PlD;EuE92PM;;IAEE,0BAAsC;EvEg3P9C;EuE/3PM;IAAgC,2BAA4B;EvEk4PlE;EuEj4PM;;IAEE,+BAAoC;EvEm4P5C;EuEj4PM;;IAEE,iCAAwC;EvEm4PhD;EuEj4PM;;IAEE,kCAA0C;EvEm4PlD;EuEj4PM;;IAEE,gCAAsC;EvEm4P9C;EuEl5PM;IAAgC,0BAA4B;EvEq5PlE;EuEp5PM;;IAEE,8BAAoC;EvEs5P5C;EuEp5PM;;IAEE,gCAAwC;EvEs5PhD;EuEp5PM;;IAEE,iCAA0C;EvEs5PlD;EuEp5PM;;IAEE,+BAAsC;EvEs5P9C;EuEr6PM;IAAgC,wBAA4B;EvEw6PlE;EuEv6PM;;IAEE,4BAAoC;EvEy6P5C;EuEv6PM;;IAEE,8BAAwC;EvEy6PhD;EuEv6PM;;IAEE,+BAA0C;EvEy6PlD;EuEv6PM;;IAEE,6BAAsC;EvEy6P9C;EuEx7PM;IAAgC,0BAA4B;EvE27PlE;EuE17PM;;IAEE,8BAAoC;EvE47P5C;EuE17PM;;IAEE,gCAAwC;EvE47PhD;EuE17PM;;IAEE,iCAA0C;EvE47PlD;EuE17PM;;IAEE,+BAAsC;EvE47P9C;EuE38PM;IAAgC,wBAA4B;EvE88PlE;EuE78PM;;IAEE,4BAAoC;EvE+8P5C;EuE78PM;;IAEE,8BAAwC;EvE+8PhD;EuE78PM;;IAEE,+BAA0C;EvE+8PlD;EuE78PM;;IAEE,6BAAsC;EvE+8P9C;EuEv8PM;IAAwB,2BAA2B;EvE08PzD;EuEz8PM;;IAEE,+BAA+B;EvE28PvC;EuEz8PM;;IAEE,iCAAiC;EvE28PzC;EuEz8PM;;IAEE,kCAAkC;EvE28P1C;EuEz8PM;;IAEE,gCAAgC;EvE28PxC;EuE19PM;IAAwB,0BAA2B;EvE69PzD;EuE59PM;;IAEE,8BAA+B;EvE89PvC;EuE59PM;;IAEE,gCAAiC;EvE89PzC;EuE59PM;;IAEE,iCAAkC;EvE89P1C;EuE59PM;;IAEE,+BAAgC;EvE89PxC;EuE7+PM;IAAwB,wBAA2B;EvEg/PzD;EuE/+PM;;IAEE,4BAA+B;EvEi/PvC;EuE/+PM;;IAEE,8BAAiC;EvEi/PzC;EuE/+PM;;IAEE,+BAAkC;EvEi/P1C;EuE/+PM;;IAEE,6BAAgC;EvEi/PxC;EuEhgQM;IAAwB,0BAA2B;EvEmgQzD;EuElgQM;;IAEE,8BAA+B;EvEogQvC;EuElgQM;;IAEE,gCAAiC;EvEogQzC;EuElgQM;;IAEE,iCAAkC;EvEogQ1C;EuElgQM;;IAEE,+BAAgC;EvEogQxC;EuEnhQM;IAAwB,wBAA2B;EvEshQzD;EuErhQM;;IAEE,4BAA+B;EvEuhQvC;EuErhQM;;IAEE,8BAAiC;EvEuhQzC;EuErhQM;;IAEE,+BAAkC;EvEuhQ1C;EuErhQM;;IAEE,6BAAgC;EvEuhQxC;EuEjhQE;IAAmB,uBAAuB;EvEohQ5C;EuEnhQE;;IAEE,2BAA2B;EvEqhQ/B;EuEnhQE;;IAEE,6BAA6B;EvEqhQjC;EuEnhQE;;IAEE,8BAA8B;EvEqhQlC;EuEnhQE;;IAEE,4BAA4B;EvEqhQhC;AACF;;Ac/hQI;EyDlDI;IAAgC,oBAA4B;EvEslQlE;EuErlQM;;IAEE,wBAAoC;EvEulQ5C;EuErlQM;;IAEE,0BAAwC;EvEulQhD;EuErlQM;;IAEE,2BAA0C;EvEulQlD;EuErlQM;;IAEE,yBAAsC;EvEulQ9C;EuEtmQM;IAAgC,0BAA4B;EvEymQlE;EuExmQM;;IAEE,8BAAoC;EvE0mQ5C;EuExmQM;;IAEE,gCAAwC;EvE0mQhD;EuExmQM;;IAEE,iCAA0C;EvE0mQlD;EuExmQM;;IAEE,+BAAsC;EvE0mQ9C;EuEznQM;IAAgC,yBAA4B;EvE4nQlE;EuE3nQM;;IAEE,6BAAoC;EvE6nQ5C;EuE3nQM;;IAEE,+BAAwC;EvE6nQhD;EuE3nQM;;IAEE,gCAA0C;EvE6nQlD;EuE3nQM;;IAEE,8BAAsC;EvE6nQ9C;EuE5oQM;IAAgC,uBAA4B;EvE+oQlE;EuE9oQM;;IAEE,2BAAoC;EvEgpQ5C;EuE9oQM;;IAEE,6BAAwC;EvEgpQhD;EuE9oQM;;IAEE,8BAA0C;EvEgpQlD;EuE9oQM;;IAEE,4BAAsC;EvEgpQ9C;EuE/pQM;IAAgC,yBAA4B;EvEkqQlE;EuEjqQM;;IAEE,6BAAoC;EvEmqQ5C;EuEjqQM;;IAEE,+BAAwC;EvEmqQhD;EuEjqQM;;IAEE,gCAA0C;EvEmqQlD;EuEjqQM;;IAEE,8BAAsC;EvEmqQ9C;EuElrQM;IAAgC,uBAA4B;EvEqrQlE;EuEprQM;;IAEE,2BAAoC;EvEsrQ5C;EuEprQM;;IAEE,6BAAwC;EvEsrQhD;EuEprQM;;IAEE,8BAA0C;EvEsrQlD;EuEprQM;;IAEE,4BAAsC;EvEsrQ9C;EuErsQM;IAAgC,qBAA4B;EvEwsQlE;EuEvsQM;;IAEE,yBAAoC;EvEysQ5C;EuEvsQM;;IAEE,2BAAwC;EvEysQhD;EuEvsQM;;IAEE,4BAA0C;EvEysQlD;EuEvsQM;;IAEE,0BAAsC;EvEysQ9C;EuExtQM;IAAgC,2BAA4B;EvE2tQlE;EuE1tQM;;IAEE,+BAAoC;EvE4tQ5C;EuE1tQM;;IAEE,iCAAwC;EvE4tQhD;EuE1tQM;;IAEE,kCAA0C;EvE4tQlD;EuE1tQM;;IAEE,gCAAsC;EvE4tQ9C;EuE3uQM;IAAgC,0BAA4B;EvE8uQlE;EuE7uQM;;IAEE,8BAAoC;EvE+uQ5C;EuE7uQM;;IAEE,gCAAwC;EvE+uQhD;EuE7uQM;;IAEE,iCAA0C;EvE+uQlD;EuE7uQM;;IAEE,+BAAsC;EvE+uQ9C;EuE9vQM;IAAgC,wBAA4B;EvEiwQlE;EuEhwQM;;IAEE,4BAAoC;EvEkwQ5C;EuEhwQM;;IAEE,8BAAwC;EvEkwQhD;EuEhwQM;;IAEE,+BAA0C;EvEkwQlD;EuEhwQM;;IAEE,6BAAsC;EvEkwQ9C;EuEjxQM;IAAgC,0BAA4B;EvEoxQlE;EuEnxQM;;IAEE,8BAAoC;EvEqxQ5C;EuEnxQM;;IAEE,gCAAwC;EvEqxQhD;EuEnxQM;;IAEE,iCAA0C;EvEqxQlD;EuEnxQM;;IAEE,+BAAsC;EvEqxQ9C;EuEpyQM;IAAgC,wBAA4B;EvEuyQlE;EuEtyQM;;IAEE,4BAAoC;EvEwyQ5C;EuEtyQM;;IAEE,8BAAwC;EvEwyQhD;EuEtyQM;;IAEE,+BAA0C;EvEwyQlD;EuEtyQM;;IAEE,6BAAsC;EvEwyQ9C;EuEhyQM;IAAwB,2BAA2B;EvEmyQzD;EuElyQM;;IAEE,+BAA+B;EvEoyQvC;EuElyQM;;IAEE,iCAAiC;EvEoyQzC;EuElyQM;;IAEE,kCAAkC;EvEoyQ1C;EuElyQM;;IAEE,gCAAgC;EvEoyQxC;EuEnzQM;IAAwB,0BAA2B;EvEszQzD;EuErzQM;;IAEE,8BAA+B;EvEuzQvC;EuErzQM;;IAEE,gCAAiC;EvEuzQzC;EuErzQM;;IAEE,iCAAkC;EvEuzQ1C;EuErzQM;;IAEE,+BAAgC;EvEuzQxC;EuEt0QM;IAAwB,wBAA2B;EvEy0QzD;EuEx0QM;;IAEE,4BAA+B;EvE00QvC;EuEx0QM;;IAEE,8BAAiC;EvE00QzC;EuEx0QM;;IAEE,+BAAkC;EvE00Q1C;EuEx0QM;;IAEE,6BAAgC;EvE00QxC;EuEz1QM;IAAwB,0BAA2B;EvE41QzD;EuE31QM;;IAEE,8BAA+B;EvE61QvC;EuE31QM;;IAEE,gCAAiC;EvE61QzC;EuE31QM;;IAEE,iCAAkC;EvE61Q1C;EuE31QM;;IAEE,+BAAgC;EvE61QxC;EuE52QM;IAAwB,wBAA2B;EvE+2QzD;EuE92QM;;IAEE,4BAA+B;EvEg3QvC;EuE92QM;;IAEE,8BAAiC;EvEg3QzC;EuE92QM;;IAEE,+BAAkC;EvEg3Q1C;EuE92QM;;IAEE,6BAAgC;EvEg3QxC;EuE12QE;IAAmB,uBAAuB;EvE62Q5C;EuE52QE;;IAEE,2BAA2B;EvE82Q/B;EuE52QE;;IAEE,6BAA6B;EvE82QjC;EuE52QE;;IAEE,8BAA8B;EvE82QlC;EuE52QE;;IAEE,4BAA4B;EvE82QhC;AACF;;Acx3QI;EyDlDI;IAAgC,oBAA4B;EvE+6QlE;EuE96QM;;IAEE,wBAAoC;EvEg7Q5C;EuE96QM;;IAEE,0BAAwC;EvEg7QhD;EuE96QM;;IAEE,2BAA0C;EvEg7QlD;EuE96QM;;IAEE,yBAAsC;EvEg7Q9C;EuE/7QM;IAAgC,0BAA4B;EvEk8QlE;EuEj8QM;;IAEE,8BAAoC;EvEm8Q5C;EuEj8QM;;IAEE,gCAAwC;EvEm8QhD;EuEj8QM;;IAEE,iCAA0C;EvEm8QlD;EuEj8QM;;IAEE,+BAAsC;EvEm8Q9C;EuEl9QM;IAAgC,yBAA4B;EvEq9QlE;EuEp9QM;;IAEE,6BAAoC;EvEs9Q5C;EuEp9QM;;IAEE,+BAAwC;EvEs9QhD;EuEp9QM;;IAEE,gCAA0C;EvEs9QlD;EuEp9QM;;IAEE,8BAAsC;EvEs9Q9C;EuEr+QM;IAAgC,uBAA4B;EvEw+QlE;EuEv+QM;;IAEE,2BAAoC;EvEy+Q5C;EuEv+QM;;IAEE,6BAAwC;EvEy+QhD;EuEv+QM;;IAEE,8BAA0C;EvEy+QlD;EuEv+QM;;IAEE,4BAAsC;EvEy+Q9C;EuEx/QM;IAAgC,yBAA4B;EvE2/QlE;EuE1/QM;;IAEE,6BAAoC;EvE4/Q5C;EuE1/QM;;IAEE,+BAAwC;EvE4/QhD;EuE1/QM;;IAEE,gCAA0C;EvE4/QlD;EuE1/QM;;IAEE,8BAAsC;EvE4/Q9C;EuE3gRM;IAAgC,uBAA4B;EvE8gRlE;EuE7gRM;;IAEE,2BAAoC;EvE+gR5C;EuE7gRM;;IAEE,6BAAwC;EvE+gRhD;EuE7gRM;;IAEE,8BAA0C;EvE+gRlD;EuE7gRM;;IAEE,4BAAsC;EvE+gR9C;EuE9hRM;IAAgC,qBAA4B;EvEiiRlE;EuEhiRM;;IAEE,yBAAoC;EvEkiR5C;EuEhiRM;;IAEE,2BAAwC;EvEkiRhD;EuEhiRM;;IAEE,4BAA0C;EvEkiRlD;EuEhiRM;;IAEE,0BAAsC;EvEkiR9C;EuEjjRM;IAAgC,2BAA4B;EvEojRlE;EuEnjRM;;IAEE,+BAAoC;EvEqjR5C;EuEnjRM;;IAEE,iCAAwC;EvEqjRhD;EuEnjRM;;IAEE,kCAA0C;EvEqjRlD;EuEnjRM;;IAEE,gCAAsC;EvEqjR9C;EuEpkRM;IAAgC,0BAA4B;EvEukRlE;EuEtkRM;;IAEE,8BAAoC;EvEwkR5C;EuEtkRM;;IAEE,gCAAwC;EvEwkRhD;EuEtkRM;;IAEE,iCAA0C;EvEwkRlD;EuEtkRM;;IAEE,+BAAsC;EvEwkR9C;EuEvlRM;IAAgC,wBAA4B;EvE0lRlE;EuEzlRM;;IAEE,4BAAoC;EvE2lR5C;EuEzlRM;;IAEE,8BAAwC;EvE2lRhD;EuEzlRM;;IAEE,+BAA0C;EvE2lRlD;EuEzlRM;;IAEE,6BAAsC;EvE2lR9C;EuE1mRM;IAAgC,0BAA4B;EvE6mRlE;EuE5mRM;;IAEE,8BAAoC;EvE8mR5C;EuE5mRM;;IAEE,gCAAwC;EvE8mRhD;EuE5mRM;;IAEE,iCAA0C;EvE8mRlD;EuE5mRM;;IAEE,+BAAsC;EvE8mR9C;EuE7nRM;IAAgC,wBAA4B;EvEgoRlE;EuE/nRM;;IAEE,4BAAoC;EvEioR5C;EuE/nRM;;IAEE,8BAAwC;EvEioRhD;EuE/nRM;;IAEE,+BAA0C;EvEioRlD;EuE/nRM;;IAEE,6BAAsC;EvEioR9C;EuEznRM;IAAwB,2BAA2B;EvE4nRzD;EuE3nRM;;IAEE,+BAA+B;EvE6nRvC;EuE3nRM;;IAEE,iCAAiC;EvE6nRzC;EuE3nRM;;IAEE,kCAAkC;EvE6nR1C;EuE3nRM;;IAEE,gCAAgC;EvE6nRxC;EuE5oRM;IAAwB,0BAA2B;EvE+oRzD;EuE9oRM;;IAEE,8BAA+B;EvEgpRvC;EuE9oRM;;IAEE,gCAAiC;EvEgpRzC;EuE9oRM;;IAEE,iCAAkC;EvEgpR1C;EuE9oRM;;IAEE,+BAAgC;EvEgpRxC;EuE/pRM;IAAwB,wBAA2B;EvEkqRzD;EuEjqRM;;IAEE,4BAA+B;EvEmqRvC;EuEjqRM;;IAEE,8BAAiC;EvEmqRzC;EuEjqRM;;IAEE,+BAAkC;EvEmqR1C;EuEjqRM;;IAEE,6BAAgC;EvEmqRxC;EuElrRM;IAAwB,0BAA2B;EvEqrRzD;EuEprRM;;IAEE,8BAA+B;EvEsrRvC;EuEprRM;;IAEE,gCAAiC;EvEsrRzC;EuEprRM;;IAEE,iCAAkC;EvEsrR1C;EuEprRM;;IAEE,+BAAgC;EvEsrRxC;EuErsRM;IAAwB,wBAA2B;EvEwsRzD;EuEvsRM;;IAEE,4BAA+B;EvEysRvC;EuEvsRM;;IAEE,8BAAiC;EvEysRzC;EuEvsRM;;IAEE,+BAAkC;EvEysR1C;EuEvsRM;;IAEE,6BAAgC;EvEysRxC;EuEnsRE;IAAmB,uBAAuB;EvEssR5C;EuErsRE;;IAEE,2BAA2B;EvEusR/B;EuErsRE;;IAEE,6BAA6B;EvEusRjC;EuErsRE;;IAEE,8BAA8B;EvEusRlC;EuErsRE;;IAEE,4BAA4B;EvEusRhC;AACF;;AcjtRI;EyDlDI;IAAgC,oBAA4B;EvEwwRlE;EuEvwRM;;IAEE,wBAAoC;EvEywR5C;EuEvwRM;;IAEE,0BAAwC;EvEywRhD;EuEvwRM;;IAEE,2BAA0C;EvEywRlD;EuEvwRM;;IAEE,yBAAsC;EvEywR9C;EuExxRM;IAAgC,0BAA4B;EvE2xRlE;EuE1xRM;;IAEE,8BAAoC;EvE4xR5C;EuE1xRM;;IAEE,gCAAwC;EvE4xRhD;EuE1xRM;;IAEE,iCAA0C;EvE4xRlD;EuE1xRM;;IAEE,+BAAsC;EvE4xR9C;EuE3yRM;IAAgC,yBAA4B;EvE8yRlE;EuE7yRM;;IAEE,6BAAoC;EvE+yR5C;EuE7yRM;;IAEE,+BAAwC;EvE+yRhD;EuE7yRM;;IAEE,gCAA0C;EvE+yRlD;EuE7yRM;;IAEE,8BAAsC;EvE+yR9C;EuE9zRM;IAAgC,uBAA4B;EvEi0RlE;EuEh0RM;;IAEE,2BAAoC;EvEk0R5C;EuEh0RM;;IAEE,6BAAwC;EvEk0RhD;EuEh0RM;;IAEE,8BAA0C;EvEk0RlD;EuEh0RM;;IAEE,4BAAsC;EvEk0R9C;EuEj1RM;IAAgC,yBAA4B;EvEo1RlE;EuEn1RM;;IAEE,6BAAoC;EvEq1R5C;EuEn1RM;;IAEE,+BAAwC;EvEq1RhD;EuEn1RM;;IAEE,gCAA0C;EvEq1RlD;EuEn1RM;;IAEE,8BAAsC;EvEq1R9C;EuEp2RM;IAAgC,uBAA4B;EvEu2RlE;EuEt2RM;;IAEE,2BAAoC;EvEw2R5C;EuEt2RM;;IAEE,6BAAwC;EvEw2RhD;EuEt2RM;;IAEE,8BAA0C;EvEw2RlD;EuEt2RM;;IAEE,4BAAsC;EvEw2R9C;EuEv3RM;IAAgC,qBAA4B;EvE03RlE;EuEz3RM;;IAEE,yBAAoC;EvE23R5C;EuEz3RM;;IAEE,2BAAwC;EvE23RhD;EuEz3RM;;IAEE,4BAA0C;EvE23RlD;EuEz3RM;;IAEE,0BAAsC;EvE23R9C;EuE14RM;IAAgC,2BAA4B;EvE64RlE;EuE54RM;;IAEE,+BAAoC;EvE84R5C;EuE54RM;;IAEE,iCAAwC;EvE84RhD;EuE54RM;;IAEE,kCAA0C;EvE84RlD;EuE54RM;;IAEE,gCAAsC;EvE84R9C;EuE75RM;IAAgC,0BAA4B;EvEg6RlE;EuE/5RM;;IAEE,8BAAoC;EvEi6R5C;EuE/5RM;;IAEE,gCAAwC;EvEi6RhD;EuE/5RM;;IAEE,iCAA0C;EvEi6RlD;EuE/5RM;;IAEE,+BAAsC;EvEi6R9C;EuEh7RM;IAAgC,wBAA4B;EvEm7RlE;EuEl7RM;;IAEE,4BAAoC;EvEo7R5C;EuEl7RM;;IAEE,8BAAwC;EvEo7RhD;EuEl7RM;;IAEE,+BAA0C;EvEo7RlD;EuEl7RM;;IAEE,6BAAsC;EvEo7R9C;EuEn8RM;IAAgC,0BAA4B;EvEs8RlE;EuEr8RM;;IAEE,8BAAoC;EvEu8R5C;EuEr8RM;;IAEE,gCAAwC;EvEu8RhD;EuEr8RM;;IAEE,iCAA0C;EvEu8RlD;EuEr8RM;;IAEE,+BAAsC;EvEu8R9C;EuEt9RM;IAAgC,wBAA4B;EvEy9RlE;EuEx9RM;;IAEE,4BAAoC;EvE09R5C;EuEx9RM;;IAEE,8BAAwC;EvE09RhD;EuEx9RM;;IAEE,+BAA0C;EvE09RlD;EuEx9RM;;IAEE,6BAAsC;EvE09R9C;EuEl9RM;IAAwB,2BAA2B;EvEq9RzD;EuEp9RM;;IAEE,+BAA+B;EvEs9RvC;EuEp9RM;;IAEE,iCAAiC;EvEs9RzC;EuEp9RM;;IAEE,kCAAkC;EvEs9R1C;EuEp9RM;;IAEE,gCAAgC;EvEs9RxC;EuEr+RM;IAAwB,0BAA2B;EvEw+RzD;EuEv+RM;;IAEE,8BAA+B;EvEy+RvC;EuEv+RM;;IAEE,gCAAiC;EvEy+RzC;EuEv+RM;;IAEE,iCAAkC;EvEy+R1C;EuEv+RM;;IAEE,+BAAgC;EvEy+RxC;EuEx/RM;IAAwB,wBAA2B;EvE2/RzD;EuE1/RM;;IAEE,4BAA+B;EvE4/RvC;EuE1/RM;;IAEE,8BAAiC;EvE4/RzC;EuE1/RM;;IAEE,+BAAkC;EvE4/R1C;EuE1/RM;;IAEE,6BAAgC;EvE4/RxC;EuE3gSM;IAAwB,0BAA2B;EvE8gSzD;EuE7gSM;;IAEE,8BAA+B;EvE+gSvC;EuE7gSM;;IAEE,gCAAiC;EvE+gSzC;EuE7gSM;;IAEE,iCAAkC;EvE+gS1C;EuE7gSM;;IAEE,+BAAgC;EvE+gSxC;EuE9hSM;IAAwB,wBAA2B;EvEiiSzD;EuEhiSM;;IAEE,4BAA+B;EvEkiSvC;EuEhiSM;;IAEE,8BAAiC;EvEkiSzC;EuEhiSM;;IAEE,+BAAkC;EvEkiS1C;EuEhiSM;;IAEE,6BAAgC;EvEkiSxC;EuE5hSE;IAAmB,uBAAuB;EvE+hS5C;EuE9hSE;;IAEE,2BAA2B;EvEgiS/B;EuE9hSE;;IAEE,6BAA6B;EvEgiSjC;EuE9hSE;;IAEE,8BAA8B;EvEgiSlC;EuE9hSE;;IAEE,4BAA4B;EvEgiShC;AACF;;AwEhmSA;EAAkB,4GAA8C;AxEomShE;;AwEhmSA;EAAiB,8BAA8B;AxEomS/C;;AwEnmSA;EAAiB,8BAA8B;AxEumS/C;;AwEtmSA;EAAiB,8BAA8B;AxE0mS/C;;AwEzmSA;ECTE,gBAAgB;EAChB,uBAAuB;EACvB,mBAAmB;AzEsnSrB;;AwEvmSI;EAAwB,2BAA2B;AxE2mSvD;;AwE1mSI;EAAwB,4BAA4B;AxE8mSxD;;AwE7mSI;EAAwB,6BAA6B;AxEinSzD;;Ac5kSI;E0DvCA;IAAwB,2BAA2B;ExEwnSrD;EwEvnSE;IAAwB,4BAA4B;ExE0nStD;EwEznSE;IAAwB,6BAA6B;ExE4nSvD;AACF;;AcxlSI;E0DvCA;IAAwB,2BAA2B;ExEooSrD;EwEnoSE;IAAwB,4BAA4B;ExEsoStD;EwEroSE;IAAwB,6BAA6B;ExEwoSvD;AACF;;AcpmSI;E0DvCA;IAAwB,2BAA2B;ExEgpSrD;EwE/oSE;IAAwB,4BAA4B;ExEkpStD;EwEjpSE;IAAwB,6BAA6B;ExEopSvD;AACF;;AchnSI;E0DvCA;IAAwB,2BAA2B;ExE4pSrD;EwE3pSE;IAAwB,4BAA4B;ExE8pStD;EwE7pSE;IAAwB,6BAA6B;ExEgqSvD;AACF;;AwE3pSA;EAAmB,oCAAoC;AxE+pSvD;;AwE9pSA;EAAmB,oCAAoC;AxEkqSvD;;AwEjqSA;EAAmB,qCAAqC;AxEqqSxD;;AwEjqSA;EAAuB,2BAA0C;AxEqqSjE;;AwEpqSA;EAAuB,+BAA4C;AxEwqSnE;;AwEvqSA;EAAuB,2BAA2C;AxE2qSlE;;AwE1qSA;EAAuB,2BAAyC;AxE8qShE;;AwE7qSA;EAAuB,8BAA2C;AxEirSlE;;AwEhrSA;EAAuB,6BAA6B;AxEorSpD;;AwEhrSA;EAAc,sBAAwB;AxEorStC;;A0E3tSE;EACE,yBAAwB;A1E8tS5B;;AKptSE;EqELM,yBAA0E;A1E6tSlF;;A0EnuSE;EACE,yBAAwB;A1EsuS5B;;AK5tSE;EqELM,yBAA0E;A1EquSlF;;A0E3uSE;EACE,yBAAwB;A1E8uS5B;;AKpuSE;EqELM,yBAA0E;A1E6uSlF;;A0EnvSE;EACE,yBAAwB;A1EsvS5B;;AK5uSE;EqELM,yBAA0E;A1EqvSlF;;A0E3vSE;EACE,yBAAwB;A1E8vS5B;;AKpvSE;EqELM,yBAA0E;A1E6vSlF;;A0EnwSE;EACE,yBAAwB;A1EswS5B;;AK5vSE;EqELM,yBAA0E;A1EqwSlF;;A0E3wSE;EACE,yBAAwB;A1E8wS5B;;AKpwSE;EqELM,yBAA0E;A1E6wSlF;;A0EnxSE;EACE,yBAAwB;A1EsxS5B;;AK5wSE;EqELM,yBAA0E;A1EqxSlF;;AwE9uSA;EAAa,yBAA6B;AxEkvS1C;;AwEjvSA;EAAc,yBAA6B;AxEqvS3C;;AwEnvSA;EAAiB,oCAAkC;AxEuvSnD;;AwEtvSA;EAAiB,0CAAkC;AxE0vSnD;;AwEtvSA;EGvDE,WAAW;EACX,kBAAkB;EAClB,iBAAiB;EACjB,6BAA6B;EAC7B,SAAS;A3EizSX;;AwE1vSA;EAAwB,gCAAgC;AxE8vSxD;;AwE5vSA;EACE,iCAAiC;EACjC,oCAAoC;AxE+vStC;;AwE1vSA;EAAc,yBAAyB;AxE8vSvC;;A4E/zSA;EACE,8BAA8B;A5Ek0ShC;;A4E/zSA;EACE,6BAA6B;A5Ek0S/B;;A6El0SE;E3EOF;;;I2EDM,4BAA4B;IAE5B,2BAA2B;E7Ek0S/B;E6E/zSE;IAEI,0BAA0B;E7Eg0ShC;E6EvzSE;IACE,6BAA6B;E7EyzSjC;EE3nSF;I2E/KM,gCAAgC;E7E6ySpC;E6E3ySE;;IAEE,yB1EzCY;I0E0CZ,wBAAwB;E7E6yS5B;E6ErySE;IACE,2BAA2B;E7EuyS/B;E6EpySE;;IAEE,wBAAwB;E7EsyS5B;E6EnySE;;;IAGE,UAAU;IACV,SAAS;E7EqySb;E6ElySE;;IAEE,uBAAuB;E7EoyS3B;E6E5xSE;IACE,Q1E4hCgC;EHkwQpC;EE10SF;I2E+CM,2BAA2C;E7E8xS/C;EYp3SA;IiEyFI,2BAA2C;E7E8xS/C;EiC52SF;I4CmFM,aAAa;E7E4xSjB;EsC33SF;IuCkGM,sB1EtFS;EHk3Sb;EgB/3SF;I6DuGM,oCAAoC;E7E2xSxC;E6E5xSE;;IAKI,iCAAmC;E7E2xSzC;EgB91SF;;I6D0EQ,oCAAsC;E7EwxS5C;EgB7wSF;I6DNM,cAAc;E7EsxSlB;EiB54SA;;;;I4D4HM,qB1EvHU;EH64ShB;EgBxySF;I6DuBM,cAAc;IACd,qB1E7HY;EHi5ShB;AACF;;A8E55SA;;EAEE,iBAAiB;EACjB,cAAc;A9E+5ShB;;A8El6SA;;EAMI,gBAAgB;A9Ei6SpB;;A8Ev6SA;;EAUI,YAAY;A9Ek6ShB;;A8E56SA;;EAcI,qBAAqB;EACrB,iBAAiB;A9Em6SrB;;A8El7SA;;EAmBI,iBAAiB;A9Eo6SrB;;A8Ev7SA;;EAuBI,sBAAsB;EACtB,kBAAkB;A9Eq6StB;;A8E77SA;;EA4BI,QAAQ;EACR,aAAa;EACb,iBAAiB;A9Es6SrB;;A8Ep8SA;;EAkCI,sBAAsB;EACtB,qBAAqB;A9Eu6SzB;;A8E18SA;;;;EAwCI,oBAAoB;EACpB,kB3EsM6B;AHmuSjC;;A8El9SA;;EA6CI,kCAAgD;A9E06SpD;;A8Ev9SA;;;;EAkDI,kC3EgMgC;AH4uSpC;;A8E99SA;;EAsDI,kC3E4LgC;AHivSpC;;A8En+SA;;EA0DI,qBAAqB;EACrB,qBAAqB;EACrB,qBAAqB;EACrB,iBAAiB;A9E86SrB;;A8E3+SA;;EAiEI,QAAQ;EACR,aAAa;A9E+6SjB;;A8Ej/SA;;EAsEI,cAAc;EACd,UAAU;EACV,gCAAgC;A9Eg7SpC;;A8Ex/SA;;;;EA6EI,cAAc;EACd,aAAa;A9Ek7SjB;;A8EhgTA;;EAkFI,0CAAiJ;EACjJ,+MAAqG;EACrG,yB3EqfwC;AH87R5C;;A8EvgTA;;EAwFI,sBAA4D;EAC5D,qBAAqB;A9Eo7SzB;;A8E7gTA;;EA6FQ,eAAsD;A9Eq7S9D;;A8ElhTA;;EAiGQ,2BAAgH;A9Es7SxH;;A8EvhTA;;EAuGQ,+BAA8E;A9Eq7StF;;A8E5hTA;;;;;;;;;;;;EAkHI,kCAAgD;A9Ey7SpD;;A8E3iTA;;;;;;;;;;;;EA2HI,kC3EuHgC;AHw0SpC;;A8E1jTA;;;;EAgII,kC3EkHgC;AH+0SpC;;A8EjkTA;;;;EAqII,kCAAgD;A9Em8SpD;;A8ExkTA;;;;EA0II,gBAAgB;A9Eq8SpB;;A8E/kTA;;;;;;;;EAiJI,sBAAsB;EACtB,oBAAoB;A9Ey8SxB;;A8E3lTA;;EAuJM,qB3E44BmC;E2E34BnC,eAAe;EAOf,c3ElJY;E2EmJZ,Y3E04BuC;AHyjR7C;;A8EnmTA;;EA2JQ,gBAAgB;EAChB,oB3Eu4BiC;AHskRzC;;A8EzmTA;;EAqKI,gBAAgB;EAChB,kBAAkB;A9Ey8StB;;A8E/mTA;;EA0KI,WAAW;A9E08Sf;;A8EpnTA;;EA8KI,8BAA8B;A9E28SlC;;A8EznTA;;EAmLM,oBAAoB;A9E28S1B;;A8E9nTA;;EAuLM,mBAAmB;A9E48SzB;;A8EnoTA;;EA2LM,eAAe;A9E68SrB;;A8ExoTA;;EA+LM,cAAc;A9E88SpB;;A8E7oTA;;EAoMI,cAAc;EACd,OAAO;A9E88SX;;A8EnpTA;;EAyMI,oBAAoB;EACpB,cAAc;A9E+8SlB;;A8EzpTA;;EA8MI,sBAAsB;EACtB,oBAAoB;A9Eg9SxB;;A8E/pTA;;EAmNI,sBAAsB;EACtB,qBAAqB;A9Ei9SzB;;A8ErqTA;;;;;;EA0NI,gBAAgB;EAChB,qBAAqB;A9Eo9SzB;;A8E/qTA;;EpEqBI,gCP6NgC;EO5NhC,mCP4NgC;EO/MhC,yBoEgMmC;EpE/LnC,4BoE+LmC;A9Eo9SvC;;A8EvrTA;;EpEqBI,0BoEoNoC;EpEnNpC,6BoEmNoC;EpEtMpC,+BP+MgC;EO9MhC,kCP8MgC;AH68SpC;;A8E/rTA;;EAkPI,uBAA+C;EAC/C,cAAc;A9Ek9SlB;;A8ErsTA;;EAkPI,wBAA+C;EAC/C,cAAc;A9Ew9SlB;;A8E3sTA;;EAkPI,iBAA+C;EAC/C,cAAc;A9E89SlB;;A8EjtTA;;EAkPI,wBAA+C;EAC/C,cAAc;A9Eo+SlB;;A8EvtTA;;EAkPI,wBAA+C;EAC/C,cAAc;A9E0+SlB;;A8E7tTA;;EAkPI,iBAA+C;EAC/C,cAAc;A9Eg/SlB;;A8EnuTA;;EAkPI,wBAA+C;EAC/C,cAAc;A9Es/SlB;;A8EzuTA;;EAkPI,wBAA+C;EAC/C,cAAc;A9E4/SlB;;A8E/uTA;;EAkPI,iBAA+C;EAC/C,cAAc;A9EkgTlB;;A8ErvTA;;EAkPI,wBAA+C;EAC/C,cAAc;A9EwgTlB;;A8E3vTA;;EAkPI,wBAA+C;EAC/C,cAAc;A9E8gTlB;;AcrsTI;EgE5DJ;;IAkPI,eAA6B;IAC7B,cAAc;E9EqhThB;E8ExwTF;;IAkPI,uBAA+C;IAC/C,cAAc;E9E0hThB;E8E7wTF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E+hThB;E8ElxTF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EoiThB;E8EvxTF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EyiThB;E8E5xTF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E8iThB;E8EjyTF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EmjThB;E8EtyTF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EwjThB;E8E3yTF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E6jThB;E8EhzTF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EkkThB;E8ErzTF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EukThB;E8E1zTF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E4kThB;AACF;;AcpwTI;EgE5DJ;;IAkPI,eAA6B;IAC7B,cAAc;E9EolThB;E8Ev0TF;;IAkPI,uBAA+C;IAC/C,cAAc;E9EylThB;E8E50TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E8lThB;E8Ej1TF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EmmThB;E8Et1TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EwmThB;E8E31TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E6mThB;E8Eh2TF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EknThB;E8Er2TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EunThB;E8E12TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E4nThB;E8E/2TF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EioThB;E8Ep3TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EsoThB;E8Ez3TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E2oThB;AACF;;Acn0TI;EgE5DJ;;IAkPI,eAA6B;IAC7B,cAAc;E9EmpThB;E8Et4TF;;IAkPI,uBAA+C;IAC/C,cAAc;E9EwpThB;E8E34TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E6pThB;E8Eh5TF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EkqThB;E8Er5TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EuqThB;E8E15TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E4qThB;E8E/5TF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EirThB;E8Ep6TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EsrThB;E8Ez6TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E2rThB;E8E96TF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EgsThB;E8En7TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EqsThB;E8Ex7TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E0sThB;AACF;;Acl4TI;EgE5DJ;;IAkPI,eAA6B;IAC7B,cAAc;E9EktThB;E8Er8TF;;IAkPI,uBAA+C;IAC/C,cAAc;E9EutThB;E8E18TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E4tThB;E8E/8TF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EiuThB;E8Ep9TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EsuThB;E8Ez9TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9E2uThB;E8E99TF;;IAkPI,iBAA+C;IAC/C,cAAc;E9EgvThB;E8En+TF;;IAkPI,wBAA+C;IAC/C,cAAc;E9EqvThB;E8Ex+TF;;IAkPI,wBAA+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","file":"bootstrap-rtl.css","sourcesContent":["/*!\n * Bootstrap v4.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n @import \"functions\";\n @import \"variables\";\n @import \"mixins\";\n @import \"root\";\n @import \"reboot\";\n @import \"type\";\n @import \"images\";\n @import \"code\";\n @import \"grid\";\n @import \"tables\";\n @import \"forms\";\n @import \"buttons\";\n @import \"transitions\";\n @import \"dropdown\";\n @import \"button-group\";\n @import \"input-group\";\n @import \"custom-forms\";\n @import \"nav\";\n @import \"navbar\";\n @import \"card\";\n @import \"breadcrumb\";\n @import \"pagination\";\n @import \"badge\";\n @import \"jumbotron\";\n @import \"alert\";\n @import \"progress\";\n @import \"media\";\n @import \"list-group\";\n @import \"close\";\n @import \"toasts\";\n @import \"modal\";\n @import \"tooltip\";\n @import \"popover\";\n @import \"carousel\";\n @import \"spinners\";\n @import \"utilities\";\n @import \"print\";\n\n@import \"rtl\";\n","/*!\n * Bootstrap v4.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n:root {\n --blue: #007bff;\n --indigo: #6610f2;\n --purple: #6f42c1;\n --pink: #e83e8c;\n --red: #dc3545;\n --orange: #fd7e14;\n --yellow: #ffc107;\n --green: #28a745;\n --teal: #20c997;\n --cyan: #17a2b8;\n --white: #fff;\n --gray: #6c757d;\n --gray-dark: #343a40;\n --primary: #007bff;\n --secondary: #6c757d;\n --success: #28a745;\n --info: #17a2b8;\n --warning: #ffc107;\n --danger: #dc3545;\n --light: #f8f9fa;\n --dark: #343a40;\n --breakpoint-xs: 0;\n --breakpoint-sm: 576px;\n --breakpoint-md: 768px;\n --breakpoint-lg: 992px;\n --breakpoint-xl: 1200px;\n --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg {\n overflow: hidden;\n vertical-align: middle;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 0.5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nselect {\n word-wrap: normal;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton:not(:disabled),\n[type=\"button\"]:not(:disabled),\n[type=\"reset\"]:not(:disabled),\n[type=\"submit\"]:not(:disabled) {\n cursor: pointer;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: 400;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #6c757d;\n}\n\n.blockquote-footer::before {\n content: \"\\2014\\00A0\";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #dee2e6;\n border-radius: 0.25rem;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #6c757d;\n}\n\ncode {\n font-size: 87.5%;\n color: #e83e8c;\n word-wrap: break-word;\n}\n\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 87.5%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n}\n\npre {\n display: block;\n font-size: 87.5%;\n color: #212529;\n}\n\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n\n.container-fluid, .container-sm, .container-md, .container-lg, .container-xl {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container, .container-sm {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container, .container-sm, .container-md {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container, .container-sm, .container-md, .container-lg {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container, .container-sm, .container-md, .container-lg, .container-xl {\n max-width: 1140px;\n }\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.row-cols-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-first {\n order: -1;\n}\n\n.order-last {\n order: 13;\n}\n\n.order-0 {\n order: 0;\n}\n\n.order-1 {\n order: 1;\n}\n\n.order-2 {\n order: 2;\n}\n\n.order-3 {\n order: 3;\n}\n\n.order-4 {\n order: 4;\n}\n\n.order-5 {\n order: 5;\n}\n\n.order-6 {\n order: 6;\n}\n\n.order-7 {\n order: 7;\n}\n\n.order-8 {\n order: 8;\n}\n\n.order-9 {\n order: 9;\n}\n\n.order-10 {\n order: 10;\n}\n\n.order-11 {\n order: 11;\n}\n\n.order-12 {\n order: 12;\n}\n\n.offset-1 {\n margin-right: 8.333333%;\n}\n\n.offset-2 {\n margin-right: 16.666667%;\n}\n\n.offset-3 {\n margin-right: 25%;\n}\n\n.offset-4 {\n margin-right: 33.333333%;\n}\n\n.offset-5 {\n margin-right: 41.666667%;\n}\n\n.offset-6 {\n margin-right: 50%;\n}\n\n.offset-7 {\n margin-right: 58.333333%;\n}\n\n.offset-8 {\n margin-right: 66.666667%;\n}\n\n.offset-9 {\n margin-right: 75%;\n}\n\n.offset-10 {\n margin-right: 83.333333%;\n}\n\n.offset-11 {\n margin-right: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n order: -1;\n }\n .order-sm-last {\n order: 13;\n }\n .order-sm-0 {\n order: 0;\n }\n .order-sm-1 {\n order: 1;\n }\n .order-sm-2 {\n order: 2;\n }\n .order-sm-3 {\n order: 3;\n }\n .order-sm-4 {\n order: 4;\n }\n .order-sm-5 {\n order: 5;\n }\n .order-sm-6 {\n order: 6;\n }\n .order-sm-7 {\n order: 7;\n }\n .order-sm-8 {\n order: 8;\n }\n .order-sm-9 {\n order: 9;\n }\n .order-sm-10 {\n order: 10;\n }\n .order-sm-11 {\n order: 11;\n }\n .order-sm-12 {\n order: 12;\n }\n .offset-sm-0 {\n margin-right: 0;\n }\n .offset-sm-1 {\n margin-right: 8.333333%;\n }\n .offset-sm-2 {\n margin-right: 16.666667%;\n }\n .offset-sm-3 {\n margin-right: 25%;\n }\n .offset-sm-4 {\n margin-right: 33.333333%;\n }\n .offset-sm-5 {\n margin-right: 41.666667%;\n }\n .offset-sm-6 {\n margin-right: 50%;\n }\n .offset-sm-7 {\n margin-right: 58.333333%;\n }\n .offset-sm-8 {\n margin-right: 66.666667%;\n }\n .offset-sm-9 {\n margin-right: 75%;\n }\n .offset-sm-10 {\n margin-right: 83.333333%;\n }\n .offset-sm-11 {\n margin-right: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-md-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n order: -1;\n }\n .order-md-last {\n order: 13;\n }\n .order-md-0 {\n order: 0;\n }\n .order-md-1 {\n order: 1;\n }\n .order-md-2 {\n order: 2;\n }\n .order-md-3 {\n order: 3;\n }\n .order-md-4 {\n order: 4;\n }\n .order-md-5 {\n order: 5;\n }\n .order-md-6 {\n order: 6;\n }\n .order-md-7 {\n order: 7;\n }\n .order-md-8 {\n order: 8;\n }\n .order-md-9 {\n order: 9;\n }\n .order-md-10 {\n order: 10;\n }\n .order-md-11 {\n order: 11;\n }\n .order-md-12 {\n order: 12;\n }\n .offset-md-0 {\n margin-right: 0;\n }\n .offset-md-1 {\n margin-right: 8.333333%;\n }\n .offset-md-2 {\n margin-right: 16.666667%;\n }\n .offset-md-3 {\n margin-right: 25%;\n }\n .offset-md-4 {\n margin-right: 33.333333%;\n }\n .offset-md-5 {\n margin-right: 41.666667%;\n }\n .offset-md-6 {\n margin-right: 50%;\n }\n .offset-md-7 {\n margin-right: 58.333333%;\n }\n .offset-md-8 {\n margin-right: 66.666667%;\n }\n .offset-md-9 {\n margin-right: 75%;\n }\n .offset-md-10 {\n margin-right: 83.333333%;\n }\n .offset-md-11 {\n margin-right: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n order: -1;\n }\n .order-lg-last {\n order: 13;\n }\n .order-lg-0 {\n order: 0;\n }\n .order-lg-1 {\n order: 1;\n }\n .order-lg-2 {\n order: 2;\n }\n .order-lg-3 {\n order: 3;\n }\n .order-lg-4 {\n order: 4;\n }\n .order-lg-5 {\n order: 5;\n }\n .order-lg-6 {\n order: 6;\n }\n .order-lg-7 {\n order: 7;\n }\n .order-lg-8 {\n order: 8;\n }\n .order-lg-9 {\n order: 9;\n }\n .order-lg-10 {\n order: 10;\n }\n .order-lg-11 {\n order: 11;\n }\n .order-lg-12 {\n order: 12;\n }\n .offset-lg-0 {\n margin-right: 0;\n }\n .offset-lg-1 {\n margin-right: 8.333333%;\n }\n .offset-lg-2 {\n margin-right: 16.666667%;\n }\n .offset-lg-3 {\n margin-right: 25%;\n }\n .offset-lg-4 {\n margin-right: 33.333333%;\n }\n .offset-lg-5 {\n margin-right: 41.666667%;\n }\n .offset-lg-6 {\n margin-right: 50%;\n }\n .offset-lg-7 {\n margin-right: 58.333333%;\n }\n .offset-lg-8 {\n margin-right: 66.666667%;\n }\n .offset-lg-9 {\n margin-right: 75%;\n }\n .offset-lg-10 {\n margin-right: 83.333333%;\n }\n .offset-lg-11 {\n margin-right: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n order: -1;\n }\n .order-xl-last {\n order: 13;\n }\n .order-xl-0 {\n order: 0;\n }\n .order-xl-1 {\n order: 1;\n }\n .order-xl-2 {\n order: 2;\n }\n .order-xl-3 {\n order: 3;\n }\n .order-xl-4 {\n order: 4;\n }\n .order-xl-5 {\n order: 5;\n }\n .order-xl-6 {\n order: 6;\n }\n .order-xl-7 {\n order: 7;\n }\n .order-xl-8 {\n order: 8;\n }\n .order-xl-9 {\n order: 9;\n }\n .order-xl-10 {\n order: 10;\n }\n .order-xl-11 {\n order: 11;\n }\n .order-xl-12 {\n order: 12;\n }\n .offset-xl-0 {\n margin-right: 0;\n }\n .offset-xl-1 {\n margin-right: 8.333333%;\n }\n .offset-xl-2 {\n margin-right: 16.666667%;\n }\n .offset-xl-3 {\n margin-right: 25%;\n }\n .offset-xl-4 {\n margin-right: 33.333333%;\n }\n .offset-xl-5 {\n margin-right: 41.666667%;\n }\n .offset-xl-6 {\n margin-right: 50%;\n }\n .offset-xl-7 {\n margin-right: 58.333333%;\n }\n .offset-xl-8 {\n margin-right: 66.666667%;\n }\n .offset-xl-9 {\n margin-right: 75%;\n }\n .offset-xl-10 {\n margin-right: 83.333333%;\n }\n .offset-xl-11 {\n margin-right: 91.666667%;\n }\n}\n\n.table {\n width: 100%;\n margin-bottom: 1rem;\n color: #212529;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #dee2e6;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #dee2e6;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #dee2e6;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-borderless th,\n.table-borderless td,\n.table-borderless thead th,\n.table-borderless tbody + tbody {\n border: 0;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n color: #212529;\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff;\n}\n\n.table-primary th,\n.table-primary td,\n.table-primary thead th,\n.table-primary tbody + tbody {\n border-color: #7abaff;\n}\n\n.table-hover .table-primary:hover {\n background-color: #9fcdff;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n background-color: #9fcdff;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #d6d8db;\n}\n\n.table-secondary th,\n.table-secondary td,\n.table-secondary thead th,\n.table-secondary tbody + tbody {\n border-color: #b3b7bb;\n}\n\n.table-hover .table-secondary:hover {\n background-color: #c8cbcf;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n background-color: #c8cbcf;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb;\n}\n\n.table-success th,\n.table-success td,\n.table-success thead th,\n.table-success tbody + tbody {\n border-color: #8fd19e;\n}\n\n.table-hover .table-success:hover {\n background-color: #b1dfbb;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #b1dfbb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb;\n}\n\n.table-info th,\n.table-info td,\n.table-info thead th,\n.table-info tbody + tbody {\n border-color: #86cfda;\n}\n\n.table-hover .table-info:hover {\n background-color: #abdde5;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #abdde5;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba;\n}\n\n.table-warning th,\n.table-warning td,\n.table-warning thead th,\n.table-warning tbody + tbody {\n border-color: #ffdf7e;\n}\n\n.table-hover .table-warning:hover {\n background-color: #ffe8a1;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #ffe8a1;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb;\n}\n\n.table-danger th,\n.table-danger td,\n.table-danger thead th,\n.table-danger tbody + tbody {\n border-color: #ed969e;\n}\n\n.table-hover .table-danger:hover {\n background-color: #f1b0b7;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #f1b0b7;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe;\n}\n\n.table-light th,\n.table-light td,\n.table-light thead th,\n.table-light tbody + tbody {\n border-color: #fbfcfc;\n}\n\n.table-hover .table-light:hover {\n background-color: #ececf6;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n background-color: #ececf6;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th,\n.table-dark tbody + tbody {\n border-color: #95999c;\n}\n\n.table-hover .table-dark:hover {\n background-color: #b9bbbe;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n background-color: #b9bbbe;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th {\n color: #fff;\n background-color: #343a40;\n border-color: #454d55;\n}\n\n.table .thead-light th {\n color: #495057;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.table-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n border-color: #454d55;\n}\n\n.table-dark.table-bordered {\n border: 0;\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-dark.table-hover tbody tr:hover {\n color: #fff;\n background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-sm > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 767.98px) {\n .table-responsive-md {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-md > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-lg > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-xl > .table-bordered {\n border: 0;\n }\n}\n\n.table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.table-responsive > .table-bordered {\n border: 0;\n}\n\n.form-control {\n display: block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n transition: none;\n }\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 #495057;\n}\n\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.form-control::placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n}\n\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + 1px);\n padding-bottom: calc(0.375rem + 1px);\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + 1px);\n padding-bottom: calc(0.5rem + 1px);\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + 1px);\n padding-bottom: calc(0.25rem + 1px);\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding: 0.375rem 0;\n margin-bottom: 0;\n font-size: 1rem;\n line-height: 1.5;\n color: #212529;\n background-color: transparent;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.form-control-lg {\n height: calc(1.5em + 1rem + 2px);\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\nselect.form-control[size], select.form-control[multiple] {\n height: auto;\n}\n\ntextarea.form-control {\n height: auto;\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n}\n\n.form-check {\n position: relative;\n display: block;\n padding-left: 1.25rem;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.3rem;\n margin-left: -1.25rem;\n}\n\n.form-check-input[disabled] ~ .form-check-label,\n.form-check-input:disabled ~ .form-check-label {\n color: #6c757d;\n}\n\n.form-check-label {\n margin-bottom: 0;\n}\n\n.form-check-inline {\n display: inline-flex;\n align-items: center;\n padding-left: 0;\n margin-right: 0.75rem;\n}\n\n.form-check-inline .form-check-input {\n position: static;\n margin-top: 0;\n margin-right: 0.3125rem;\n margin-left: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #28a745;\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(40, 167, 69, 0.9);\n border-radius: 0.25rem;\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n border-color: #28a745;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .custom-select:valid, .custom-select.is-valid {\n border-color: #28a745;\n padding-right: calc(0.75em + 2.3125rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: #28a745;\n}\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n border-color: #28a745;\n}\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n border-color: #34ce57;\n background-color: #34ce57;\n}\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #dc3545;\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.9);\n border-radius: 0.25rem;\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n border-color: #dc3545;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .custom-select:invalid, .custom-select.is-invalid {\n border-color: #dc3545;\n padding-right: calc(0.75em + 2.3125rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: #dc3545;\n}\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n border-color: #e4606d;\n background-color: #e4606d;\n}\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group,\n .form-inline .custom-select {\n width: auto;\n }\n .form-inline .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n flex-shrink: 0;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n align-items: center;\n justify-content: center;\n }\n .form-inline .custom-control-label {\n margin-bottom: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: 400;\n color: #212529;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n user-select: none;\n background-color: transparent;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .btn {\n transition: none;\n }\n}\n\n.btn:hover {\n color: #212529;\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #0062cc;\n border-color: #005cbf;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n color: #fff;\n background-color: #545b62;\n border-color: #4e555b;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #1e7e34;\n border-color: #1c7430;\n}\n\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #117a8b;\n border-color: #10707f;\n}\n\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n color: #212529;\n background-color: #d39e00;\n border-color: #c69500;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #bd2130;\n border-color: #b21f2d;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n color: #212529;\n background-color: #dae0e5;\n border-color: #d3d9df;\n}\n\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n color: #fff;\n background-color: #1d2124;\n border-color: #171a1d;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n\n.btn-outline-primary {\n color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-secondary {\n color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #6c757d;\n background-color: transparent;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-success {\n color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-info {\n color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-warning {\n color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:hover {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-danger {\n color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-light {\n color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:hover {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-dark {\n color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-link {\n font-weight: 400;\n color: #007bff;\n text-decoration: none;\n}\n\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n pointer-events: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n\n.fade {\n transition: opacity 0.15s linear;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fade {\n transition: none;\n }\n}\n\n.fade:not(.show) {\n opacity: 0;\n}\n\n.collapse:not(.show) {\n display: none;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .collapsing {\n transition: none;\n }\n}\n\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n@media (min-width: 576px) {\n .dropdown-menu-sm-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-sm-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 768px) {\n .dropdown-menu-md-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-md-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 992px) {\n .dropdown-menu-lg-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-lg-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 1200px) {\n .dropdown-menu-xl-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xl-right {\n right: 0;\n left: auto;\n }\n}\n\n.dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: 0.125rem;\n}\n\n.dropright .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n\n.dropright .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: 0.125rem;\n}\n\n.dropleft .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n\n.dropleft .dropdown-toggle::after {\n display: none;\n}\n\n.dropleft .dropdown-toggle::before {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n\n.dropleft .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-menu[x-placement^=\"top\"], .dropdown-menu[x-placement^=\"right\"], .dropdown-menu[x-placement^=\"bottom\"], .dropdown-menu[x-placement^=\"left\"] {\n right: auto;\n bottom: auto;\n}\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: 400;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n}\n\n.dropdown-item:hover, .dropdown-item:focus {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #6c757d;\n white-space: nowrap;\n}\n\n.dropdown-item-text {\n display: block;\n padding: 0.25rem 1.5rem;\n color: #212529;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 1 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 1;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n margin-left: -1px;\n}\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n\n.dropdown-toggle-split::after,\n.dropup .dropdown-toggle-split::after,\n.dropright .dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle-split::before {\n margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n margin-top: -1px;\n}\n\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n margin-bottom: 0;\n}\n\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n width: 100%;\n}\n\n.input-group > .form-control,\n.input-group > .form-control-plaintext,\n.input-group > .custom-select,\n.input-group > .custom-file {\n position: relative;\n flex: 1 1 0%;\n min-width: 0;\n margin-bottom: 0;\n}\n\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .form-control-plaintext + .form-control,\n.input-group > .form-control-plaintext + .custom-select,\n.input-group > .form-control-plaintext + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n margin-left: -1px;\n}\n\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {\n z-index: 3;\n}\n\n.input-group > .custom-file .custom-file-input:focus {\n z-index: 4;\n}\n\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group > .custom-file {\n display: flex;\n align-items: center;\n}\n\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::after {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .custom-file:not(:first-child) .custom-file-label {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group-prepend,\n.input-group-append {\n display: flex;\n}\n\n.input-group-prepend .btn,\n.input-group-append .btn {\n position: relative;\n z-index: 2;\n}\n\n.input-group-prepend .btn:focus,\n.input-group-append .btn:focus {\n z-index: 3;\n}\n\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n margin-left: -1px;\n}\n\n.input-group-prepend {\n margin-right: -1px;\n}\n\n.input-group-append {\n margin-left: -1px;\n}\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: 0.375rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n text-align: center;\n white-space: nowrap;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n margin-top: 0;\n}\n\n.input-group-lg > .form-control:not(textarea),\n.input-group-lg > .custom-select {\n height: calc(1.5em + 1rem + 2px);\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .custom-select,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.input-group-sm > .form-control:not(textarea),\n.input-group-sm > .custom-select {\n height: calc(1.5em + 0.5rem + 2px);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .custom-select,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.input-group-lg > .custom-select,\n.input-group-sm > .custom-select {\n padding-right: 1.75rem;\n}\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.custom-control {\n position: relative;\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n}\n\n.custom-control-inline {\n display: inline-flex;\n margin-right: 1rem;\n}\n\n.custom-control-input {\n position: absolute;\n left: 0;\n z-index: -1;\n width: 1rem;\n height: 1.25rem;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-label::before {\n color: #fff;\n border-color: #007bff;\n background-color: #007bff;\n}\n\n.custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-control-input:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #80bdff;\n}\n\n.custom-control-input:not(:disabled):active ~ .custom-control-label::before {\n color: #fff;\n background-color: #b3d7ff;\n border-color: #b3d7ff;\n}\n\n.custom-control-input[disabled] ~ .custom-control-label, .custom-control-input:disabled ~ .custom-control-label {\n color: #6c757d;\n}\n\n.custom-control-input[disabled] ~ .custom-control-label::before, .custom-control-input:disabled ~ .custom-control-label::before {\n background-color: #e9ecef;\n}\n\n.custom-control-label {\n position: relative;\n margin-bottom: 0;\n vertical-align: top;\n}\n\n.custom-control-label::before {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n content: \"\";\n background-color: #fff;\n border: #adb5bd solid 1px;\n}\n\n.custom-control-label::after {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n content: \"\";\n background: no-repeat 50% / 50% 50%;\n}\n\n.custom-checkbox .custom-control-label::before {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n border-color: #007bff;\n background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e\");\n}\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-radio .custom-control-label::before {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-switch {\n padding-left: 2.25rem;\n}\n\n.custom-switch .custom-control-label::before {\n left: -2.25rem;\n width: 1.75rem;\n pointer-events: all;\n border-radius: 0.5rem;\n}\n\n.custom-switch .custom-control-label::after {\n top: calc(0.25rem + 2px);\n left: calc(-2.25rem + 2px);\n width: calc(1rem - 4px);\n height: calc(1rem - 4px);\n background-color: #adb5bd;\n border-radius: 0.5rem;\n transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-switch .custom-control-label::after {\n transition: none;\n }\n}\n\n.custom-switch .custom-control-input:checked ~ .custom-control-label::after {\n background-color: #fff;\n transform: translateX(0.75rem);\n}\n\n.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-select {\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n appearance: none;\n}\n\n.custom-select:focus {\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: 0.75rem;\n background-image: none;\n}\n\n.custom-select:disabled {\n color: #6c757d;\n background-color: #e9ecef;\n}\n\n.custom-select::-ms-expand {\n display: none;\n}\n\n.custom-select:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 #495057;\n}\n\n.custom-select-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.5rem;\n font-size: 0.875rem;\n}\n\n.custom-select-lg {\n height: calc(1.5em + 1rem + 2px);\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin-bottom: 0;\n}\n\n.custom-file-input {\n position: relative;\n z-index: 2;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin: 0;\n opacity: 0;\n}\n\n.custom-file-input:focus ~ .custom-file-label {\n border-color: #80bdff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-file-input[disabled] ~ .custom-file-label,\n.custom-file-input:disabled ~ .custom-file-label {\n background-color: #e9ecef;\n}\n\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n content: \"Browse\";\n}\n\n.custom-file-input ~ .custom-file-label[data-browse]::after {\n content: attr(data-browse);\n}\n\n.custom-file-label {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.custom-file-label::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n display: block;\n height: calc(1.5em + 0.75rem);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n content: \"Browse\";\n background-color: #e9ecef;\n border-left: inherit;\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-range {\n width: 100%;\n height: 1.4rem;\n padding: 0;\n background-color: transparent;\n appearance: none;\n}\n\n.custom-range:focus {\n outline: none;\n}\n\n.custom-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range:focus::-ms-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range::-moz-focus-outer {\n border: 0;\n}\n\n.custom-range::-webkit-slider-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: -0.25rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-webkit-slider-thumb {\n transition: none;\n }\n}\n\n.custom-range::-webkit-slider-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-webkit-slider-runnable-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n\n.custom-range::-moz-range-thumb {\n width: 1rem;\n height: 1rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-moz-range-thumb {\n transition: none;\n }\n}\n\n.custom-range::-moz-range-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-moz-range-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n\n.custom-range::-ms-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: 0;\n margin-right: 0.2rem;\n margin-left: 0.2rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-ms-thumb {\n transition: none;\n }\n}\n\n.custom-range::-ms-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-ms-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: transparent;\n border-color: transparent;\n border-width: 0.5rem;\n}\n\n.custom-range::-ms-fill-lower {\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n\n.custom-range::-ms-fill-upper {\n margin-right: 15px;\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n\n.custom-range:disabled::-webkit-slider-thumb {\n background-color: #adb5bd;\n}\n\n.custom-range:disabled::-webkit-slider-runnable-track {\n cursor: default;\n}\n\n.custom-range:disabled::-moz-range-thumb {\n background-color: #adb5bd;\n}\n\n.custom-range:disabled::-moz-range-track {\n cursor: default;\n}\n\n.custom-range:disabled::-ms-thumb {\n background-color: #adb5bd;\n}\n\n.custom-control-label::before,\n.custom-file-label,\n.custom-select {\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-control-label::before,\n .custom-file-label,\n .custom-select {\n transition: none;\n }\n}\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n\n.nav-link:hover, .nav-link:focus {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #6c757d;\n pointer-events: none;\n cursor: default;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #dee2e6;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n border-color: #e9ecef #e9ecef #dee2e6;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #6c757d;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #dee2e6 #dee2e6 #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: #fff;\n background-color: #007bff;\n}\n\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n\n.navbar .container,\n.navbar .container-fluid, .navbar .container-sm, .navbar .container-md, .navbar .container-lg, .navbar .container-xl {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n}\n\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n\n.navbar-brand:hover, .navbar-brand:focus {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:hover, .navbar-toggler:focus {\n text-decoration: none;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n@media (max-width: 575.98px) {\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 767.98px) {\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 991.98px) {\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 1199.98px) {\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n}\n\n.navbar-expand {\n flex-flow: row nowrap;\n justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {\n flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-text a {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n color: #fff;\n}\n\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: #fff;\n}\n\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-text a {\n color: #fff;\n}\n\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n color: #fff;\n}\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n flex: 1 1 auto;\n min-height: 1px;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n flex-shrink: 0;\n width: 100%;\n}\n\n.card-img,\n.card-img-top {\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-bottom {\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-deck .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-deck {\n display: flex;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n flex: 1 0 0%;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}\n\n.card-group > .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n }\n .card-group > .card {\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-top,\n .card-group > .card:not(:last-child) .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-bottom,\n .card-group > .card:not(:last-child) .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-top,\n .card-group > .card:not(:first-child) .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-bottom,\n .card-group > .card:not(:first-child) .card-footer {\n border-bottom-left-radius: 0;\n }\n}\n\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n column-count: 3;\n column-gap: 1.25rem;\n orphans: 1;\n widows: 1;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n\n.accordion > .card {\n overflow: hidden;\n}\n\n.accordion > .card:not(:last-of-type) {\n border-bottom: 0;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.accordion > .card:not(:first-of-type) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.accordion > .card > .card-header {\n border-radius: 0;\n margin-bottom: -1px;\n}\n\n.breadcrumb {\n display: flex;\n flex-wrap: wrap;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n padding-left: 0.5rem;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n color: #6c757d;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #6c757d;\n}\n\n.pagination {\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #dee2e6;\n}\n\n.page-link:hover {\n z-index: 2;\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.page-link:focus {\n z-index: 3;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 3;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.page-item.disabled .page-link {\n color: #6c757d;\n pointer-events: none;\n cursor: auto;\n background-color: #fff;\n border-color: #dee2e6;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .badge {\n transition: none;\n }\n}\n\na.badge:hover, a.badge:focus {\n text-decoration: none;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\na.badge-primary:hover, a.badge-primary:focus {\n color: #fff;\n background-color: #0062cc;\n}\n\na.badge-primary:focus, a.badge-primary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #6c757d;\n}\n\na.badge-secondary:hover, a.badge-secondary:focus {\n color: #fff;\n background-color: #545b62;\n}\n\na.badge-secondary:focus, a.badge-secondary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\na.badge-success:hover, a.badge-success:focus {\n color: #fff;\n background-color: #1e7e34;\n}\n\na.badge-success:focus, a.badge-success.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\na.badge-info:hover, a.badge-info:focus {\n color: #fff;\n background-color: #117a8b;\n}\n\na.badge-info:focus, a.badge-info.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\n\na.badge-warning:hover, a.badge-warning:focus {\n color: #212529;\n background-color: #d39e00;\n}\n\na.badge-warning:focus, a.badge-warning.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\na.badge-danger:hover, a.badge-danger:focus {\n color: #fff;\n background-color: #bd2130;\n}\n\na.badge-danger:focus, a.badge-danger.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\n\na.badge-light:hover, a.badge-light:focus {\n color: #212529;\n background-color: #dae0e5;\n}\n\na.badge-light:focus, a.badge-light.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\na.badge-dark:hover, a.badge-dark:focus {\n color: #fff;\n background-color: #1d2124;\n}\n\na.badge-dark:focus, a.badge-dark.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n}\n\n.alert-dismissible {\n padding-right: 4rem;\n}\n\n.alert-dismissible .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n\n.alert-primary .alert-link {\n color: #002752;\n}\n\n.alert-secondary {\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n border-top-color: #c8cbcf;\n}\n\n.alert-secondary .alert-link {\n color: #202326;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n\n.alert-success .alert-link {\n color: #0b2e13;\n}\n\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n\n.alert-info .alert-link {\n color: #062c33;\n}\n\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-warning .alert-link {\n color: #533f03;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n\n.alert-danger .alert-link {\n color: #491217;\n}\n\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n\n.alert-light .alert-link {\n color: #686868;\n}\n\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n\n.alert-dark .alert-link {\n color: #040505;\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n.progress {\n display: flex;\n height: 1rem;\n overflow: hidden;\n font-size: 0.75rem;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n background-color: #007bff;\n transition: width 0.6s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n animation: none;\n }\n}\n\n.media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n\n.list-group {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n}\n\n.list-group-item-action:hover, .list-group-item-action:focus {\n z-index: 1;\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: #fff;\n}\n\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.list-group-item + .list-group-item {\n border-top-width: 0;\n}\n\n.list-group-item + .list-group-item.active {\n margin-top: -1px;\n border-top-width: 1px;\n}\n\n.list-group-horizontal {\n flex-direction: row;\n}\n\n.list-group-horizontal .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n}\n\n.list-group-horizontal .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n}\n\n.list-group-horizontal .list-group-item.active {\n margin-top: 0;\n}\n\n.list-group-horizontal .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n}\n\n.list-group-horizontal .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n}\n\n@media (min-width: 576px) {\n .list-group-horizontal-sm {\n flex-direction: row;\n }\n .list-group-horizontal-sm .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-sm .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-sm .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-sm .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-sm .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n\n@media (min-width: 768px) {\n .list-group-horizontal-md {\n flex-direction: row;\n }\n .list-group-horizontal-md .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-md .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-md .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-md .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-md .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n\n@media (min-width: 992px) {\n .list-group-horizontal-lg {\n flex-direction: row;\n }\n .list-group-horizontal-lg .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-lg .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-lg .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-lg .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-lg .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n flex-direction: row;\n }\n .list-group-horizontal-xl .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xl .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xl .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xl .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-xl .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n\n.list-group-flush .list-group-item {\n border-right-width: 0;\n border-left-width: 0;\n border-radius: 0;\n}\n\n.list-group-flush .list-group-item:first-child {\n border-top-width: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n color: #004085;\n background-color: #b8daff;\n}\n\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n color: #004085;\n background-color: #9fcdff;\n}\n\n.list-group-item-primary.list-group-item-action.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085;\n}\n\n.list-group-item-secondary {\n color: #383d41;\n background-color: #d6d8db;\n}\n\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n color: #383d41;\n background-color: #c8cbcf;\n}\n\n.list-group-item-secondary.list-group-item-action.active {\n color: #fff;\n background-color: #383d41;\n border-color: #383d41;\n}\n\n.list-group-item-success {\n color: #155724;\n background-color: #c3e6cb;\n}\n\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n color: #155724;\n background-color: #b1dfbb;\n}\n\n.list-group-item-success.list-group-item-action.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724;\n}\n\n.list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb;\n}\n\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n color: #0c5460;\n background-color: #abdde5;\n}\n\n.list-group-item-info.list-group-item-action.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460;\n}\n\n.list-group-item-warning {\n color: #856404;\n background-color: #ffeeba;\n}\n\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n color: #856404;\n background-color: #ffe8a1;\n}\n\n.list-group-item-warning.list-group-item-action.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404;\n}\n\n.list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb;\n}\n\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n color: #721c24;\n background-color: #f1b0b7;\n}\n\n.list-group-item-danger.list-group-item-action.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24;\n}\n\n.list-group-item-light {\n color: #818182;\n background-color: #fdfdfe;\n}\n\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n color: #818182;\n background-color: #ececf6;\n}\n\n.list-group-item-light.list-group-item-action.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182;\n}\n\n.list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca;\n}\n\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n color: #1b1e21;\n background-color: #b9bbbe;\n}\n\n.list-group-item-dark.list-group-item-action.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n\n.close:hover {\n color: #000;\n text-decoration: none;\n}\n\n.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {\n opacity: .75;\n}\n\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n appearance: none;\n}\n\na.close.disabled {\n pointer-events: none;\n}\n\n.toast {\n max-width: 350px;\n overflow: hidden;\n font-size: 0.875rem;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);\n backdrop-filter: blur(10px);\n opacity: 0;\n border-radius: 0.25rem;\n}\n\n.toast:not(:last-child) {\n margin-bottom: 0.75rem;\n}\n\n.toast.showing {\n opacity: 1;\n}\n\n.toast.show {\n display: block;\n opacity: 1;\n}\n\n.toast.hide {\n display: none;\n}\n\n.toast-header {\n display: flex;\n align-items: center;\n padding: 0.25rem 0.75rem;\n color: #6c757d;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n}\n\n.toast-body {\n padding: 0.75rem;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1050;\n display: none;\n width: 100%;\n height: 100%;\n overflow: hidden;\n outline: 0;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 0.5rem;\n pointer-events: none;\n}\n\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -50px);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n transition: none;\n }\n}\n\n.modal.show .modal-dialog {\n transform: none;\n}\n\n.modal.modal-static .modal-dialog {\n transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n display: flex;\n max-height: calc(100% - 1rem);\n}\n\n.modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 1rem);\n overflow: hidden;\n}\n\n.modal-dialog-scrollable .modal-header,\n.modal-dialog-scrollable .modal-footer {\n flex-shrink: 0;\n}\n\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - 1rem);\n}\n\n.modal-dialog-centered::before {\n display: block;\n height: calc(100vh - 1rem);\n content: \"\";\n}\n\n.modal-dialog-centered.modal-dialog-scrollable {\n flex-direction: column;\n justify-content: center;\n height: 100%;\n}\n\n.modal-dialog-centered.modal-dialog-scrollable .modal-content {\n max-height: none;\n}\n\n.modal-dialog-centered.modal-dialog-scrollable::before {\n content: none;\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1040;\n width: 100vw;\n height: 100vh;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 1rem 1rem;\n border-bottom: 1px solid #dee2e6;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.modal-header .close {\n padding: 1rem 1rem;\n margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: 1rem;\n}\n\n.modal-footer {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n padding: 0.75rem;\n border-top: 1px solid #dee2e6;\n border-bottom-right-radius: calc(0.3rem - 1px);\n border-bottom-left-radius: calc(0.3rem - 1px);\n}\n\n.modal-footer > * {\n margin: 0.25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 1.75rem auto;\n }\n .modal-dialog-scrollable {\n max-height: calc(100% - 3.5rem);\n }\n .modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 3.5rem);\n }\n .modal-dialog-centered {\n min-height: calc(100% - 3.5rem);\n }\n .modal-dialog-centered::before {\n height: calc(100vh - 3.5rem);\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg,\n .modal-xl {\n max-width: 800px;\n }\n}\n\n@media (min-width: 1200px) {\n .modal-xl {\n max-width: 1140px;\n }\n}\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 0.8rem;\n height: 0.4rem;\n}\n\n.tooltip .arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n top: 0;\n border-width: 0.4rem 0.4rem 0;\n border-top-color: #000;\n}\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n right: 0;\n border-width: 0.4rem 0.4rem 0.4rem 0;\n border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n bottom: 0;\n border-width: 0 0.4rem 0.4rem;\n border-bottom-color: #000;\n}\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n left: 0;\n border-width: 0.4rem 0 0.4rem 0.4rem;\n border-left-color: #000;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 0.25rem 0.5rem;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover .arrow {\n position: absolute;\n display: block;\n width: 1rem;\n height: 0.5rem;\n margin: 0 0.3rem;\n}\n\n.popover .arrow::before, .popover .arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n margin-bottom: 0.5rem;\n}\n\n.bs-popover-top > .arrow, .bs-popover-auto[x-placement^=\"top\"] > .arrow {\n bottom: calc(-0.5rem - 1px);\n}\n\n.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^=\"top\"] > .arrow::before {\n bottom: 0;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^=\"top\"] > .arrow::after {\n bottom: 1px;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: #fff;\n}\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n margin-left: 0.5rem;\n}\n\n.bs-popover-right > .arrow, .bs-popover-auto[x-placement^=\"right\"] > .arrow {\n left: calc(-0.5rem - 1px);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^=\"right\"] > .arrow::before {\n left: 0;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^=\"right\"] > .arrow::after {\n left: 1px;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: #fff;\n}\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n margin-top: 0.5rem;\n}\n\n.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow {\n top: calc(-0.5rem - 1px);\n}\n\n.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::before {\n top: 0;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::after {\n top: 1px;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: #fff;\n}\n\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 1rem;\n margin-left: -0.5rem;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n margin-right: 0.5rem;\n}\n\n.bs-popover-left > .arrow, .bs-popover-auto[x-placement^=\"left\"] > .arrow {\n right: calc(-0.5rem - 1px);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^=\"left\"] > .arrow::before {\n right: 0;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^=\"left\"] > .arrow::after {\n right: 1px;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: #fff;\n}\n\n.popover-header {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: 0.5rem 0.75rem;\n color: #212529;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-inner::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n backface-visibility: hidden;\n transition: transform 0.6s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n transition: none;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next:not(.carousel-item-left),\n.active.carousel-item-right {\n transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-right),\n.active.carousel-item-left {\n transform: translateX(-100%);\n}\n\n.carousel-fade .carousel-item {\n opacity: 0;\n transition-property: opacity;\n transform: none;\n}\n\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-left,\n.carousel-fade .carousel-item-prev.carousel-item-right {\n z-index: 1;\n opacity: 1;\n}\n\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-right {\n z-index: 0;\n opacity: 0;\n transition: opacity 0s 0.6s;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-left,\n .carousel-fade .active.carousel-item-right {\n transition: none;\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n transition: opacity 0.15s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-prev,\n .carousel-control-next {\n transition: none;\n }\n}\n\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: no-repeat 50% / 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n box-sizing: content-box;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #fff;\n background-clip: padding-box;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n opacity: .5;\n transition: opacity 0.6s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators li {\n transition: none;\n }\n}\n\n.carousel-indicators .active {\n opacity: 1;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n@keyframes spinner-border {\n to {\n transform: rotate(360deg);\n }\n}\n\n.spinner-border {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n border: 0.25em solid currentColor;\n border-right-color: transparent;\n border-radius: 50%;\n animation: spinner-border .75s linear infinite;\n}\n\n.spinner-border-sm {\n width: 1rem;\n height: 1rem;\n border-width: 0.2em;\n}\n\n@keyframes spinner-grow {\n 0% {\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n }\n}\n\n.spinner-grow {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n background-color: currentColor;\n border-radius: 50%;\n opacity: 0;\n animation: spinner-grow .75s linear infinite;\n}\n\n.spinner-grow-sm {\n width: 1rem;\n height: 1rem;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #545b62 !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n\n.border {\n border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #6c757d !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded-sm {\n border-radius: 0.2rem !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-lg {\n border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: 50rem !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media print {\n .d-print-none {\n display: none !important;\n }\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n}\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n\n.overflow-auto {\n overflow: auto !important;\n}\n\n.overflow-hidden {\n overflow: hidden !important;\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: sticky !important;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n@supports (position: sticky) {\n .sticky-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n}\n\n.shadow-sm {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow {\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-lg {\n box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.w-auto {\n width: auto !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.h-auto {\n height: auto !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.min-vw-100 {\n min-width: 100vw !important;\n}\n\n.min-vh-100 {\n min-height: 100vh !important;\n}\n\n.vw-100 {\n width: 100vw !important;\n}\n\n.vh-100 {\n height: 100vh !important;\n}\n\n.stretched-link::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n pointer-events: auto;\n content: \"\";\n background-color: rgba(0, 0, 0, 0);\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n\n.m-n1 {\n margin: -0.25rem !important;\n}\n\n.mt-n1,\n.my-n1 {\n margin-top: -0.25rem !important;\n}\n\n.mr-n1,\n.mx-n1 {\n margin-right: -0.25rem !important;\n}\n\n.mb-n1,\n.my-n1 {\n margin-bottom: -0.25rem !important;\n}\n\n.ml-n1,\n.mx-n1 {\n margin-left: -0.25rem !important;\n}\n\n.m-n2 {\n margin: -0.5rem !important;\n}\n\n.mt-n2,\n.my-n2 {\n margin-top: -0.5rem !important;\n}\n\n.mr-n2,\n.mx-n2 {\n margin-right: -0.5rem !important;\n}\n\n.mb-n2,\n.my-n2 {\n margin-bottom: -0.5rem !important;\n}\n\n.ml-n2,\n.mx-n2 {\n margin-left: -0.5rem !important;\n}\n\n.m-n3 {\n margin: -1rem !important;\n}\n\n.mt-n3,\n.my-n3 {\n margin-top: -1rem !important;\n}\n\n.mr-n3,\n.mx-n3 {\n margin-right: -1rem !important;\n}\n\n.mb-n3,\n.my-n3 {\n margin-bottom: -1rem !important;\n}\n\n.ml-n3,\n.mx-n3 {\n margin-left: -1rem !important;\n}\n\n.m-n4 {\n margin: -1.5rem !important;\n}\n\n.mt-n4,\n.my-n4 {\n margin-top: -1.5rem !important;\n}\n\n.mr-n4,\n.mx-n4 {\n margin-right: -1.5rem !important;\n}\n\n.mb-n4,\n.my-n4 {\n margin-bottom: -1.5rem !important;\n}\n\n.ml-n4,\n.mx-n4 {\n margin-left: -1.5rem !important;\n}\n\n.m-n5 {\n margin: -3rem !important;\n}\n\n.mt-n5,\n.my-n5 {\n margin-top: -3rem !important;\n}\n\n.mr-n5,\n.mx-n5 {\n margin-right: -3rem !important;\n}\n\n.mb-n5,\n.my-n5 {\n margin-bottom: -3rem !important;\n}\n\n.ml-n5,\n.mx-n5 {\n margin-left: -3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0,\n .my-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0,\n .mx-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0,\n .my-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0,\n .mx-sm-0 {\n margin-left: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1,\n .my-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1,\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1,\n .my-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1,\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2,\n .my-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2,\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2,\n .my-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2,\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3,\n .my-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3,\n .mx-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3,\n .my-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3,\n .mx-sm-3 {\n margin-left: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4,\n .my-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4,\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4,\n .my-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4,\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5,\n .my-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5,\n .mx-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5,\n .my-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5,\n .mx-sm-5 {\n margin-left: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0,\n .py-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0,\n .px-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0,\n .py-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0,\n .px-sm-0 {\n padding-left: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1,\n .py-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1,\n .px-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1,\n .py-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1,\n .px-sm-1 {\n padding-left: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2,\n .py-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2,\n .px-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2,\n .py-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2,\n .px-sm-2 {\n padding-left: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3,\n .py-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3,\n .px-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3,\n .py-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3,\n .px-sm-3 {\n padding-left: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4,\n .py-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4,\n .px-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4,\n .py-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4,\n .px-sm-4 {\n padding-left: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5,\n .py-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5,\n .px-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5,\n .py-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5,\n .px-sm-5 {\n padding-left: 3rem !important;\n }\n .m-sm-n1 {\n margin: -0.25rem !important;\n }\n .mt-sm-n1,\n .my-sm-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-sm-n1,\n .mx-sm-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-sm-n1,\n .my-sm-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-sm-n1,\n .mx-sm-n1 {\n margin-left: -0.25rem !important;\n }\n .m-sm-n2 {\n margin: -0.5rem !important;\n }\n .mt-sm-n2,\n .my-sm-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-sm-n2,\n .mx-sm-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-sm-n2,\n .my-sm-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-sm-n2,\n .mx-sm-n2 {\n margin-left: -0.5rem !important;\n }\n .m-sm-n3 {\n margin: -1rem !important;\n }\n .mt-sm-n3,\n .my-sm-n3 {\n margin-top: -1rem !important;\n }\n .mr-sm-n3,\n .mx-sm-n3 {\n margin-right: -1rem !important;\n }\n .mb-sm-n3,\n .my-sm-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-sm-n3,\n .mx-sm-n3 {\n margin-left: -1rem !important;\n }\n .m-sm-n4 {\n margin: -1.5rem !important;\n }\n .mt-sm-n4,\n .my-sm-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-sm-n4,\n .mx-sm-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-sm-n4,\n .my-sm-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-sm-n4,\n .mx-sm-n4 {\n margin-left: -1.5rem !important;\n }\n .m-sm-n5 {\n margin: -3rem !important;\n }\n .mt-sm-n5,\n .my-sm-n5 {\n margin-top: -3rem !important;\n }\n .mr-sm-n5,\n .mx-sm-n5 {\n margin-right: -3rem !important;\n }\n .mb-sm-n5,\n .my-sm-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-sm-n5,\n .mx-sm-n5 {\n margin-left: -3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto,\n .my-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto,\n .mx-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto,\n .my-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto,\n .mx-sm-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0,\n .my-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0,\n .mx-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0,\n .my-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0,\n .mx-md-0 {\n margin-left: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1,\n .my-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1,\n .mx-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1,\n .my-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1,\n .mx-md-1 {\n margin-left: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2,\n .my-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2,\n .mx-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2,\n .my-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2,\n .mx-md-2 {\n margin-left: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3,\n .my-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3,\n .mx-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3,\n .my-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3,\n .mx-md-3 {\n margin-left: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4,\n .my-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4,\n .mx-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4,\n .my-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4,\n .mx-md-4 {\n margin-left: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5,\n .my-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5,\n .mx-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5,\n .my-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5,\n .mx-md-5 {\n margin-left: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0,\n .py-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0,\n .px-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0,\n .py-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0,\n .px-md-0 {\n padding-left: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1,\n .py-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1,\n .px-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1,\n .py-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1,\n .px-md-1 {\n padding-left: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2,\n .py-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2,\n .px-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2,\n .py-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2,\n .px-md-2 {\n padding-left: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3,\n .py-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3,\n .px-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3,\n .py-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3,\n .px-md-3 {\n padding-left: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4,\n .py-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4,\n .px-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4,\n .py-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4,\n .px-md-4 {\n padding-left: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5,\n .py-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5,\n .px-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5,\n .py-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5,\n .px-md-5 {\n padding-left: 3rem !important;\n }\n .m-md-n1 {\n margin: -0.25rem !important;\n }\n .mt-md-n1,\n .my-md-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-md-n1,\n .mx-md-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-md-n1,\n .my-md-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-md-n1,\n .mx-md-n1 {\n margin-left: -0.25rem !important;\n }\n .m-md-n2 {\n margin: -0.5rem !important;\n }\n .mt-md-n2,\n .my-md-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-md-n2,\n .mx-md-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-md-n2,\n .my-md-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-md-n2,\n .mx-md-n2 {\n margin-left: -0.5rem !important;\n }\n .m-md-n3 {\n margin: -1rem !important;\n }\n .mt-md-n3,\n .my-md-n3 {\n margin-top: -1rem !important;\n }\n .mr-md-n3,\n .mx-md-n3 {\n margin-right: -1rem !important;\n }\n .mb-md-n3,\n .my-md-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-md-n3,\n .mx-md-n3 {\n margin-left: -1rem !important;\n }\n .m-md-n4 {\n margin: -1.5rem !important;\n }\n .mt-md-n4,\n .my-md-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-md-n4,\n .mx-md-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-md-n4,\n .my-md-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-md-n4,\n .mx-md-n4 {\n margin-left: -1.5rem !important;\n }\n .m-md-n5 {\n margin: -3rem !important;\n }\n .mt-md-n5,\n .my-md-n5 {\n margin-top: -3rem !important;\n }\n .mr-md-n5,\n .mx-md-n5 {\n margin-right: -3rem !important;\n }\n .mb-md-n5,\n .my-md-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-md-n5,\n .mx-md-n5 {\n margin-left: -3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto,\n .my-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto,\n .mx-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto,\n .my-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto,\n .mx-md-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0,\n .my-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0,\n .mx-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0,\n .my-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0,\n .mx-lg-0 {\n margin-left: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1,\n .my-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1,\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1,\n .my-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1,\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2,\n .my-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2,\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2,\n .my-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2,\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3,\n .my-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3,\n .mx-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3,\n .my-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3,\n .mx-lg-3 {\n margin-left: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4,\n .my-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4,\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4,\n .my-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4,\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5,\n .my-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5,\n .mx-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5,\n .my-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5,\n .mx-lg-5 {\n margin-left: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0,\n .py-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0,\n .px-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0,\n .py-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0,\n .px-lg-0 {\n padding-left: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1,\n .py-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1,\n .px-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1,\n .py-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1,\n .px-lg-1 {\n padding-left: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2,\n .py-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2,\n .px-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2,\n .py-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2,\n .px-lg-2 {\n padding-left: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3,\n .py-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3,\n .px-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3,\n .py-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3,\n .px-lg-3 {\n padding-left: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4,\n .py-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4,\n .px-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4,\n .py-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4,\n .px-lg-4 {\n padding-left: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5,\n .py-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5,\n .px-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5,\n .py-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5,\n .px-lg-5 {\n padding-left: 3rem !important;\n }\n .m-lg-n1 {\n margin: -0.25rem !important;\n }\n .mt-lg-n1,\n .my-lg-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-lg-n1,\n .mx-lg-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-lg-n1,\n .my-lg-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-lg-n1,\n .mx-lg-n1 {\n margin-left: -0.25rem !important;\n }\n .m-lg-n2 {\n margin: -0.5rem !important;\n }\n .mt-lg-n2,\n .my-lg-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-lg-n2,\n .mx-lg-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-lg-n2,\n .my-lg-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-lg-n2,\n .mx-lg-n2 {\n margin-left: -0.5rem !important;\n }\n .m-lg-n3 {\n margin: -1rem !important;\n }\n .mt-lg-n3,\n .my-lg-n3 {\n margin-top: -1rem !important;\n }\n .mr-lg-n3,\n .mx-lg-n3 {\n margin-right: -1rem !important;\n }\n .mb-lg-n3,\n .my-lg-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-lg-n3,\n .mx-lg-n3 {\n margin-left: -1rem !important;\n }\n .m-lg-n4 {\n margin: -1.5rem !important;\n }\n .mt-lg-n4,\n .my-lg-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-lg-n4,\n .mx-lg-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-lg-n4,\n .my-lg-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-lg-n4,\n .mx-lg-n4 {\n margin-left: -1.5rem !important;\n }\n .m-lg-n5 {\n margin: -3rem !important;\n }\n .mt-lg-n5,\n .my-lg-n5 {\n margin-top: -3rem !important;\n }\n .mr-lg-n5,\n .mx-lg-n5 {\n margin-right: -3rem !important;\n }\n .mb-lg-n5,\n .my-lg-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-lg-n5,\n .mx-lg-n5 {\n margin-left: -3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto,\n .my-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto,\n .mx-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto,\n .my-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto,\n .mx-lg-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0,\n .my-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0,\n .mx-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0,\n .my-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0,\n .mx-xl-0 {\n margin-left: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1,\n .my-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1,\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1,\n .my-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1,\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2,\n .my-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2,\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2,\n .my-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2,\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3,\n .my-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3,\n .mx-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3,\n .my-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3,\n .mx-xl-3 {\n margin-left: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4,\n .my-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4,\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4,\n .my-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4,\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5,\n .my-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5,\n .mx-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5,\n .my-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5,\n .mx-xl-5 {\n margin-left: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0,\n .py-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0,\n .px-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0,\n .py-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0,\n .px-xl-0 {\n padding-left: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1,\n .py-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1,\n .px-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1,\n .py-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1,\n .px-xl-1 {\n padding-left: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2,\n .py-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2,\n .px-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2,\n .py-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2,\n .px-xl-2 {\n padding-left: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3,\n .py-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3,\n .px-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3,\n .py-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3,\n .px-xl-3 {\n padding-left: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4,\n .py-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4,\n .px-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4,\n .py-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4,\n .px-xl-4 {\n padding-left: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5,\n .py-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5,\n .px-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5,\n .py-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5,\n .px-xl-5 {\n padding-left: 3rem !important;\n }\n .m-xl-n1 {\n margin: -0.25rem !important;\n }\n .mt-xl-n1,\n .my-xl-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-xl-n1,\n .mx-xl-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-xl-n1,\n .my-xl-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-xl-n1,\n .mx-xl-n1 {\n margin-left: -0.25rem !important;\n }\n .m-xl-n2 {\n margin: -0.5rem !important;\n }\n .mt-xl-n2,\n .my-xl-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-xl-n2,\n .mx-xl-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-xl-n2,\n .my-xl-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-xl-n2,\n .mx-xl-n2 {\n margin-left: -0.5rem !important;\n }\n .m-xl-n3 {\n margin: -1rem !important;\n }\n .mt-xl-n3,\n .my-xl-n3 {\n margin-top: -1rem !important;\n }\n .mr-xl-n3,\n .mx-xl-n3 {\n margin-right: -1rem !important;\n }\n .mb-xl-n3,\n .my-xl-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-xl-n3,\n .mx-xl-n3 {\n margin-left: -1rem !important;\n }\n .m-xl-n4 {\n margin: -1.5rem !important;\n }\n .mt-xl-n4,\n .my-xl-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-xl-n4,\n .mx-xl-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-xl-n4,\n .my-xl-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-xl-n4,\n .mx-xl-n4 {\n margin-left: -1.5rem !important;\n }\n .m-xl-n5 {\n margin: -3rem !important;\n }\n .mt-xl-n5,\n .my-xl-n5 {\n margin-top: -3rem !important;\n }\n .mr-xl-n5,\n .mx-xl-n5 {\n margin-right: -3rem !important;\n }\n .mb-xl-n5,\n .my-xl-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-xl-n5,\n .mx-xl-n5 {\n margin-left: -3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto,\n .my-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto,\n .mx-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto,\n .my-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto,\n .mx-xl-auto {\n margin-left: auto !important;\n }\n}\n\n.text-monospace {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !important;\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-wrap {\n white-space: normal !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-weight-lighter {\n font-weight: lighter !important;\n}\n\n.font-weight-normal {\n font-weight: 400 !important;\n}\n\n.font-weight-bold {\n font-weight: 700 !important;\n}\n\n.font-weight-bolder {\n font-weight: bolder !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n color: #0056b3 !important;\n}\n\n.text-secondary {\n color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n color: #494f54 !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n color: #19692c !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n color: #0f6674 !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n color: #ba8b00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n color: #a71d2a !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n color: #cbd3da !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n color: #121416 !important;\n}\n\n.text-body {\n color: #212529 !important;\n}\n\n.text-muted {\n color: #6c757d !important;\n}\n\n.text-black-50 {\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.text-decoration-none {\n text-decoration: none !important;\n}\n\n.text-break {\n word-break: break-word !important;\n overflow-wrap: break-word !important;\n}\n\n.text-reset {\n color: inherit !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a:not(.btn) {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #adb5bd;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n @page {\n size: a3;\n }\n body {\n min-width: 992px !important;\n }\n .container {\n min-width: 992px !important;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #dee2e6 !important;\n }\n .table-dark {\n color: inherit;\n }\n .table-dark th,\n .table-dark td,\n .table-dark thead th,\n .table-dark tbody + tbody {\n border-color: #dee2e6;\n }\n .table .thead-dark th {\n color: inherit;\n border-color: #dee2e6;\n }\n}\n\n.rtl,\n[dir=\"rtl\"] {\n text-align: right;\n direction: rtl;\n}\n\n.rtl .nav,\n[dir=\"rtl\"] .nav {\n padding-right: 0;\n}\n\n.rtl .navbar-nav .nav-item,\n[dir=\"rtl\"] .navbar-nav .nav-item {\n float: right;\n}\n\n.rtl .navbar-nav .nav-item + .nav-item,\n[dir=\"rtl\"] .navbar-nav .nav-item + .nav-item {\n margin-right: inherit;\n margin-left: 1rem;\n}\n\n.rtl th,\n[dir=\"rtl\"] th {\n text-align: right;\n}\n\n.rtl .alert-dismissible,\n[dir=\"rtl\"] .alert-dismissible {\n padding-right: 1.25rem;\n padding-left: 4rem;\n}\n\n.rtl .dropdown-menu,\n[dir=\"rtl\"] .dropdown-menu {\n right: 0;\n left: inherit;\n text-align: right;\n}\n\n.rtl .checkbox label,\n[dir=\"rtl\"] .checkbox label {\n padding-right: 1.25rem;\n padding-left: inherit;\n}\n\n.rtl .btn-group > .btn:not(:first-child),\n.rtl .btn-group > .btn-group:not(:first-child),\n[dir=\"rtl\"] .btn-group > .btn:not(:first-child),\n[dir=\"rtl\"] .btn-group > .btn-group:not(:first-child) {\n margin-left: initial;\n margin-right: -1px;\n}\n\n.rtl .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle),\n[dir=\"rtl\"] .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.rtl .btn-group > .btn:last-child:not(:first-child),\n.rtl .btn-group > .dropdown-toggle:not(:first-child),\n[dir=\"rtl\"] .btn-group > .btn:last-child:not(:first-child),\n[dir=\"rtl\"] .btn-group > .dropdown-toggle:not(:first-child) {\n border-radius: 0.25rem 0 0 0.25rem;\n}\n\n.rtl .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child,\n[dir=\"rtl\"] .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-radius: 0.25rem 0 0 0.25rem;\n}\n\n.rtl .custom-control,\n[dir=\"rtl\"] .custom-control {\n padding-right: 1.5rem;\n padding-left: inherit;\n margin-right: inherit;\n margin-left: 1rem;\n}\n\n.rtl .custom-control-indicator,\n[dir=\"rtl\"] .custom-control-indicator {\n right: 0;\n left: inherit;\n}\n\n.rtl .custom-file-label::after,\n[dir=\"rtl\"] .custom-file-label::after {\n right: initial;\n left: -1px;\n border-radius: .25rem 0 0 .25rem;\n}\n\n.rtl .custom-control-label::after,\n.rtl .custom-control-label::before,\n[dir=\"rtl\"] .custom-control-label::after,\n[dir=\"rtl\"] .custom-control-label::before {\n right: -1.5rem;\n left: inherit;\n}\n\n.rtl .custom-select,\n[dir=\"rtl\"] .custom-select {\n padding: 0.375rem 0.75rem 0.375rem 1.75rem;\n background: #fff url(\"data:image/svg+xml,\") no-repeat left 0.75rem center;\n background-size: 8px 10px;\n}\n\n.rtl .custom-switch,\n[dir=\"rtl\"] .custom-switch {\n padding-right: 2.25rem;\n padding-left: inherit;\n}\n\n.rtl .custom-switch .custom-control-label::before,\n[dir=\"rtl\"] .custom-switch .custom-control-label::before {\n right: -2.25rem;\n}\n\n.rtl .custom-switch .custom-control-label::after,\n[dir=\"rtl\"] .custom-switch .custom-control-label::after {\n right: calc(-2.25rem + 2px);\n}\n\n.rtl .custom-switch .custom-control-input:checked ~ .custom-control-label::after,\n[dir=\"rtl\"] .custom-switch .custom-control-input:checked ~ .custom-control-label::after {\n transform: translateX(-0.75rem);\n}\n\n.rtl .input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.rtl .input-group > .input-group-append:last-child > .input-group-text:not(:last-child),\n.rtl .input-group > .input-group-append:not(:last-child) > .btn,\n.rtl .input-group > .input-group-append:not(:last-child) > .input-group-text,\n.rtl .input-group > .input-group-prepend > .btn,\n.rtl .input-group > .input-group-prepend > .input-group-text,\n[dir=\"rtl\"] .input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n[dir=\"rtl\"] .input-group > .input-group-append:last-child > .input-group-text:not(:last-child),\n[dir=\"rtl\"] .input-group > .input-group-append:not(:last-child) > .btn,\n[dir=\"rtl\"] .input-group > .input-group-append:not(:last-child) > .input-group-text,\n[dir=\"rtl\"] .input-group > .input-group-prepend > .btn,\n[dir=\"rtl\"] .input-group > .input-group-prepend > .input-group-text {\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.rtl .input-group > .input-group-append > .btn,\n.rtl .input-group > .input-group-append > .input-group-text,\n.rtl .input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.rtl .input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child),\n.rtl .input-group > .input-group-prepend:not(:first-child) > .btn,\n.rtl .input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n[dir=\"rtl\"] .input-group > .input-group-append > .btn,\n[dir=\"rtl\"] .input-group > .input-group-append > .input-group-text,\n[dir=\"rtl\"] .input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n[dir=\"rtl\"] .input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child),\n[dir=\"rtl\"] .input-group > .input-group-prepend:not(:first-child) > .btn,\n[dir=\"rtl\"] .input-group > .input-group-prepend:not(:first-child) > .input-group-text {\n border-radius: 0.25rem 0 0 0.25rem;\n}\n\n.rtl .input-group > .custom-select:not(:first-child),\n.rtl .input-group > .form-control:not(:first-child),\n[dir=\"rtl\"] .input-group > .custom-select:not(:first-child),\n[dir=\"rtl\"] .input-group > .form-control:not(:first-child) {\n border-radius: 0.25rem 0 0 0.25rem;\n}\n\n.rtl .input-group > .custom-select:not(:last-child),\n.rtl .input-group > .form-control:not(:last-child),\n[dir=\"rtl\"] .input-group > .custom-select:not(:last-child),\n[dir=\"rtl\"] .input-group > .form-control:not(:last-child) {\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.rtl .input-group > .custom-select:not(:last-child):not(:first-child),\n.rtl .input-group > .form-control:not(:last-child):not(:first-child),\n[dir=\"rtl\"] .input-group > .custom-select:not(:last-child):not(:first-child),\n[dir=\"rtl\"] .input-group > .form-control:not(:last-child):not(:first-child) {\n border-radius: 0;\n}\n\n.rtl .radio input,\n.rtl .radio-inline,\n.rtl .checkbox input,\n.rtl .checkbox-inline input,\n[dir=\"rtl\"] .radio input,\n[dir=\"rtl\"] .radio-inline,\n[dir=\"rtl\"] .checkbox input,\n[dir=\"rtl\"] .checkbox-inline input {\n margin-right: -1.25rem;\n margin-left: inherit;\n}\n\n.rtl .breadcrumb-item + .breadcrumb-item,\n[dir=\"rtl\"] .breadcrumb-item + .breadcrumb-item {\n padding-right: 0.5rem;\n padding-left: 0;\n color: #6c757d;\n content: \"/\";\n}\n\n.rtl .breadcrumb-item + .breadcrumb-item::before,\n[dir=\"rtl\"] .breadcrumb-item + .breadcrumb-item::before {\n padding-right: 0;\n padding-left: 0.5rem;\n}\n\n.rtl .list-group,\n[dir=\"rtl\"] .list-group {\n padding-right: 0;\n padding-left: 40px;\n}\n\n.rtl .close,\n[dir=\"rtl\"] .close {\n float: left;\n}\n\n.rtl .modal-header .close,\n[dir=\"rtl\"] .modal-header .close {\n margin: -15px auto -15px -15px;\n}\n\n.rtl .modal-footer > :not(:first-child),\n[dir=\"rtl\"] .modal-footer > :not(:first-child) {\n margin-right: .25rem;\n}\n\n.rtl .modal-footer > :not(:last-child),\n[dir=\"rtl\"] .modal-footer > :not(:last-child) {\n margin-left: .25rem;\n}\n\n.rtl .modal-footer > :first-child,\n[dir=\"rtl\"] .modal-footer > :first-child {\n margin-right: 0;\n}\n\n.rtl .modal-footer > :last-child,\n[dir=\"rtl\"] .modal-footer > :last-child {\n margin-left: 0;\n}\n\n.rtl .alert-dismissible .close,\n[dir=\"rtl\"] .alert-dismissible .close {\n right: inherit;\n left: 0;\n}\n\n.rtl .dropdown-toggle::after,\n[dir=\"rtl\"] .dropdown-toggle::after {\n margin-right: .255em;\n margin-left: 0;\n}\n\n.rtl .form-check-input,\n[dir=\"rtl\"] .form-check-input {\n margin-right: -1.25rem;\n margin-left: inherit;\n}\n\n.rtl .form-check-label,\n[dir=\"rtl\"] .form-check-label {\n padding-right: 1.25rem;\n padding-left: inherit;\n}\n\n.rtl .pagination,\n.rtl .list-unstyled,\n.rtl .list-inline,\n[dir=\"rtl\"] .pagination,\n[dir=\"rtl\"] .list-unstyled,\n[dir=\"rtl\"] .list-inline {\n padding-right: 0;\n padding-left: inherit;\n}\n\n.rtl .pagination .page-item:first-child .page-link,\n[dir=\"rtl\"] .pagination .page-item:first-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.rtl .pagination .page-item:last-child .page-link,\n[dir=\"rtl\"] .pagination .page-item:last-child .page-link {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.rtl .offset-1,\n[dir=\"rtl\"] .offset-1 {\n margin-right: 8.333333%;\n margin-left: 0;\n}\n\n.rtl .offset-2,\n[dir=\"rtl\"] .offset-2 {\n margin-right: 16.666667%;\n margin-left: 0;\n}\n\n.rtl .offset-3,\n[dir=\"rtl\"] .offset-3 {\n margin-right: 25%;\n margin-left: 0;\n}\n\n.rtl .offset-4,\n[dir=\"rtl\"] .offset-4 {\n margin-right: 33.333333%;\n margin-left: 0;\n}\n\n.rtl .offset-5,\n[dir=\"rtl\"] .offset-5 {\n margin-right: 41.666667%;\n margin-left: 0;\n}\n\n.rtl .offset-6,\n[dir=\"rtl\"] .offset-6 {\n margin-right: 50%;\n margin-left: 0;\n}\n\n.rtl .offset-7,\n[dir=\"rtl\"] .offset-7 {\n margin-right: 58.333333%;\n margin-left: 0;\n}\n\n.rtl .offset-8,\n[dir=\"rtl\"] .offset-8 {\n margin-right: 66.666667%;\n margin-left: 0;\n}\n\n.rtl .offset-9,\n[dir=\"rtl\"] .offset-9 {\n margin-right: 75%;\n margin-left: 0;\n}\n\n.rtl .offset-10,\n[dir=\"rtl\"] .offset-10 {\n margin-right: 83.333333%;\n margin-left: 0;\n}\n\n.rtl .offset-11,\n[dir=\"rtl\"] .offset-11 {\n margin-right: 91.666667%;\n margin-left: 0;\n}\n\n@media (min-width: 576px) {\n .rtl .offset-sm-0,\n [dir=\"rtl\"] .offset-sm-0 {\n margin-right: 0;\n margin-left: 0;\n }\n .rtl .offset-sm-1,\n [dir=\"rtl\"] .offset-sm-1 {\n margin-right: 8.333333%;\n margin-left: 0;\n }\n .rtl .offset-sm-2,\n [dir=\"rtl\"] .offset-sm-2 {\n margin-right: 16.666667%;\n margin-left: 0;\n }\n .rtl .offset-sm-3,\n [dir=\"rtl\"] .offset-sm-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .rtl .offset-sm-4,\n [dir=\"rtl\"] .offset-sm-4 {\n margin-right: 33.333333%;\n margin-left: 0;\n }\n .rtl .offset-sm-5,\n [dir=\"rtl\"] .offset-sm-5 {\n margin-right: 41.666667%;\n margin-left: 0;\n }\n .rtl .offset-sm-6,\n [dir=\"rtl\"] .offset-sm-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .rtl .offset-sm-7,\n [dir=\"rtl\"] .offset-sm-7 {\n margin-right: 58.333333%;\n margin-left: 0;\n }\n .rtl .offset-sm-8,\n [dir=\"rtl\"] .offset-sm-8 {\n margin-right: 66.666667%;\n margin-left: 0;\n }\n .rtl .offset-sm-9,\n [dir=\"rtl\"] .offset-sm-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .rtl .offset-sm-10,\n [dir=\"rtl\"] .offset-sm-10 {\n margin-right: 83.333333%;\n margin-left: 0;\n }\n .rtl .offset-sm-11,\n [dir=\"rtl\"] .offset-sm-11 {\n margin-right: 91.666667%;\n margin-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .rtl .offset-md-0,\n [dir=\"rtl\"] .offset-md-0 {\n margin-right: 0;\n margin-left: 0;\n }\n .rtl .offset-md-1,\n [dir=\"rtl\"] .offset-md-1 {\n margin-right: 8.333333%;\n margin-left: 0;\n }\n .rtl .offset-md-2,\n [dir=\"rtl\"] .offset-md-2 {\n margin-right: 16.666667%;\n margin-left: 0;\n }\n .rtl .offset-md-3,\n [dir=\"rtl\"] .offset-md-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .rtl .offset-md-4,\n [dir=\"rtl\"] .offset-md-4 {\n margin-right: 33.333333%;\n margin-left: 0;\n }\n .rtl .offset-md-5,\n [dir=\"rtl\"] .offset-md-5 {\n margin-right: 41.666667%;\n margin-left: 0;\n }\n .rtl .offset-md-6,\n [dir=\"rtl\"] .offset-md-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .rtl .offset-md-7,\n [dir=\"rtl\"] .offset-md-7 {\n margin-right: 58.333333%;\n margin-left: 0;\n }\n .rtl .offset-md-8,\n [dir=\"rtl\"] .offset-md-8 {\n margin-right: 66.666667%;\n margin-left: 0;\n }\n .rtl .offset-md-9,\n [dir=\"rtl\"] .offset-md-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .rtl .offset-md-10,\n [dir=\"rtl\"] .offset-md-10 {\n margin-right: 83.333333%;\n margin-left: 0;\n }\n .rtl .offset-md-11,\n [dir=\"rtl\"] .offset-md-11 {\n margin-right: 91.666667%;\n margin-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .rtl .offset-lg-0,\n [dir=\"rtl\"] .offset-lg-0 {\n margin-right: 0;\n margin-left: 0;\n }\n .rtl .offset-lg-1,\n [dir=\"rtl\"] .offset-lg-1 {\n margin-right: 8.333333%;\n margin-left: 0;\n }\n .rtl .offset-lg-2,\n [dir=\"rtl\"] .offset-lg-2 {\n margin-right: 16.666667%;\n margin-left: 0;\n }\n .rtl .offset-lg-3,\n [dir=\"rtl\"] .offset-lg-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .rtl .offset-lg-4,\n [dir=\"rtl\"] .offset-lg-4 {\n margin-right: 33.333333%;\n margin-left: 0;\n }\n .rtl .offset-lg-5,\n [dir=\"rtl\"] .offset-lg-5 {\n margin-right: 41.666667%;\n margin-left: 0;\n }\n .rtl .offset-lg-6,\n [dir=\"rtl\"] .offset-lg-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .rtl .offset-lg-7,\n [dir=\"rtl\"] .offset-lg-7 {\n margin-right: 58.333333%;\n margin-left: 0;\n }\n .rtl .offset-lg-8,\n [dir=\"rtl\"] .offset-lg-8 {\n margin-right: 66.666667%;\n margin-left: 0;\n }\n .rtl .offset-lg-9,\n [dir=\"rtl\"] .offset-lg-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .rtl .offset-lg-10,\n [dir=\"rtl\"] .offset-lg-10 {\n margin-right: 83.333333%;\n margin-left: 0;\n }\n .rtl .offset-lg-11,\n [dir=\"rtl\"] .offset-lg-11 {\n margin-right: 91.666667%;\n margin-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .rtl .offset-xl-0,\n [dir=\"rtl\"] .offset-xl-0 {\n margin-right: 0;\n margin-left: 0;\n }\n .rtl .offset-xl-1,\n [dir=\"rtl\"] .offset-xl-1 {\n margin-right: 8.333333%;\n margin-left: 0;\n }\n .rtl .offset-xl-2,\n [dir=\"rtl\"] .offset-xl-2 {\n margin-right: 16.666667%;\n margin-left: 0;\n }\n .rtl .offset-xl-3,\n [dir=\"rtl\"] .offset-xl-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .rtl .offset-xl-4,\n [dir=\"rtl\"] .offset-xl-4 {\n margin-right: 33.333333%;\n margin-left: 0;\n }\n .rtl .offset-xl-5,\n [dir=\"rtl\"] .offset-xl-5 {\n margin-right: 41.666667%;\n margin-left: 0;\n }\n .rtl .offset-xl-6,\n [dir=\"rtl\"] .offset-xl-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .rtl .offset-xl-7,\n [dir=\"rtl\"] .offset-xl-7 {\n margin-right: 58.333333%;\n margin-left: 0;\n }\n .rtl .offset-xl-8,\n [dir=\"rtl\"] .offset-xl-8 {\n margin-right: 66.666667%;\n margin-left: 0;\n }\n .rtl .offset-xl-9,\n [dir=\"rtl\"] .offset-xl-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .rtl .offset-xl-10,\n [dir=\"rtl\"] .offset-xl-10 {\n margin-right: 83.333333%;\n margin-left: 0;\n }\n .rtl .offset-xl-11,\n [dir=\"rtl\"] .offset-xl-11 {\n margin-right: 91.666667%;\n margin-left: 0;\n }\n}\n\n.rtl .mr-0,\n[dir=\"rtl\"] .mr-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.rtl .ml-0,\n[dir=\"rtl\"] .ml-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.rtl mx-0,\n[dir=\"rtl\"] mx-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.rtl .mr-1,\n[dir=\"rtl\"] .mr-1 {\n margin-right: 0 !important;\n margin-left: 0.25rem !important;\n}\n\n.rtl .ml-1,\n[dir=\"rtl\"] .ml-1 {\n margin-left: 0 !important;\n margin-right: 0.25rem !important;\n}\n\n.rtl mx-1,\n[dir=\"rtl\"] mx-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n}\n\n.rtl .mr-2,\n[dir=\"rtl\"] .mr-2 {\n margin-right: 0 !important;\n margin-left: 0.5rem !important;\n}\n\n.rtl .ml-2,\n[dir=\"rtl\"] .ml-2 {\n margin-left: 0 !important;\n margin-right: 0.5rem !important;\n}\n\n.rtl mx-2,\n[dir=\"rtl\"] mx-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n}\n\n.rtl .mr-3,\n[dir=\"rtl\"] .mr-3 {\n margin-right: 0 !important;\n margin-left: 1rem !important;\n}\n\n.rtl .ml-3,\n[dir=\"rtl\"] .ml-3 {\n margin-left: 0 !important;\n margin-right: 1rem !important;\n}\n\n.rtl mx-3,\n[dir=\"rtl\"] mx-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n}\n\n.rtl .mr-4,\n[dir=\"rtl\"] .mr-4 {\n margin-right: 0 !important;\n margin-left: 1.5rem !important;\n}\n\n.rtl .ml-4,\n[dir=\"rtl\"] .ml-4 {\n margin-left: 0 !important;\n margin-right: 1.5rem !important;\n}\n\n.rtl mx-4,\n[dir=\"rtl\"] mx-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n}\n\n.rtl .mr-5,\n[dir=\"rtl\"] .mr-5 {\n margin-right: 0 !important;\n margin-left: 3rem !important;\n}\n\n.rtl .ml-5,\n[dir=\"rtl\"] .ml-5 {\n margin-left: 0 !important;\n margin-right: 3rem !important;\n}\n\n.rtl mx-5,\n[dir=\"rtl\"] mx-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n}\n\n.rtl .pr-0,\n[dir=\"rtl\"] .pr-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.rtl .pl-0,\n[dir=\"rtl\"] .pl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n.rtl px-0,\n[dir=\"rtl\"] px-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n.rtl .pr-1,\n[dir=\"rtl\"] .pr-1 {\n padding-right: 0 !important;\n padding-left: 0.25rem !important;\n}\n\n.rtl .pl-1,\n[dir=\"rtl\"] .pl-1 {\n padding-left: 0 !important;\n padding-right: 0.25rem !important;\n}\n\n.rtl px-1,\n[dir=\"rtl\"] px-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n}\n\n.rtl .pr-2,\n[dir=\"rtl\"] .pr-2 {\n padding-right: 0 !important;\n padding-left: 0.5rem !important;\n}\n\n.rtl .pl-2,\n[dir=\"rtl\"] .pl-2 {\n padding-left: 0 !important;\n padding-right: 0.5rem !important;\n}\n\n.rtl px-2,\n[dir=\"rtl\"] px-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n}\n\n.rtl .pr-3,\n[dir=\"rtl\"] .pr-3 {\n padding-right: 0 !important;\n padding-left: 1rem !important;\n}\n\n.rtl .pl-3,\n[dir=\"rtl\"] .pl-3 {\n padding-left: 0 !important;\n padding-right: 1rem !important;\n}\n\n.rtl px-3,\n[dir=\"rtl\"] px-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n}\n\n.rtl .pr-4,\n[dir=\"rtl\"] .pr-4 {\n padding-right: 0 !important;\n padding-left: 1.5rem !important;\n}\n\n.rtl .pl-4,\n[dir=\"rtl\"] .pl-4 {\n padding-left: 0 !important;\n padding-right: 1.5rem !important;\n}\n\n.rtl px-4,\n[dir=\"rtl\"] px-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n}\n\n.rtl .pr-5,\n[dir=\"rtl\"] .pr-5 {\n padding-right: 0 !important;\n padding-left: 3rem !important;\n}\n\n.rtl .pl-5,\n[dir=\"rtl\"] .pl-5 {\n padding-left: 0 !important;\n padding-right: 3rem !important;\n}\n\n.rtl px-5,\n[dir=\"rtl\"] px-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n}\n\n.rtl .mr-auto,\n[dir=\"rtl\"] .mr-auto {\n margin-right: 0 !important;\n margin-left: auto !important;\n}\n\n.rtl .ml-auto,\n[dir=\"rtl\"] .ml-auto {\n margin-right: auto !important;\n margin-left: 0 !important;\n}\n\n.rtl .mx-auto,\n[dir=\"rtl\"] .mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n .rtl .mr-sm-0,\n [dir=\"rtl\"] .mr-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .rtl .ml-sm-0,\n [dir=\"rtl\"] .ml-sm-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .rtl mx-sm-0,\n [dir=\"rtl\"] mx-sm-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .rtl .mr-sm-1,\n [dir=\"rtl\"] .mr-sm-1 {\n margin-right: 0 !important;\n margin-left: 0.25rem !important;\n }\n .rtl .ml-sm-1,\n [dir=\"rtl\"] .ml-sm-1 {\n margin-left: 0 !important;\n margin-right: 0.25rem !important;\n }\n .rtl mx-sm-1,\n [dir=\"rtl\"] mx-sm-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .rtl .mr-sm-2,\n [dir=\"rtl\"] .mr-sm-2 {\n margin-right: 0 !important;\n margin-left: 0.5rem !important;\n }\n .rtl .ml-sm-2,\n [dir=\"rtl\"] .ml-sm-2 {\n margin-left: 0 !important;\n margin-right: 0.5rem !important;\n }\n .rtl mx-sm-2,\n [dir=\"rtl\"] mx-sm-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .rtl .mr-sm-3,\n [dir=\"rtl\"] .mr-sm-3 {\n margin-right: 0 !important;\n margin-left: 1rem !important;\n }\n .rtl .ml-sm-3,\n [dir=\"rtl\"] .ml-sm-3 {\n margin-left: 0 !important;\n margin-right: 1rem !important;\n }\n .rtl mx-sm-3,\n [dir=\"rtl\"] mx-sm-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .rtl .mr-sm-4,\n [dir=\"rtl\"] .mr-sm-4 {\n margin-right: 0 !important;\n margin-left: 1.5rem !important;\n }\n .rtl .ml-sm-4,\n [dir=\"rtl\"] .ml-sm-4 {\n margin-left: 0 !important;\n margin-right: 1.5rem !important;\n }\n .rtl mx-sm-4,\n [dir=\"rtl\"] mx-sm-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .rtl .mr-sm-5,\n [dir=\"rtl\"] .mr-sm-5 {\n margin-right: 0 !important;\n margin-left: 3rem !important;\n }\n .rtl .ml-sm-5,\n [dir=\"rtl\"] .ml-sm-5 {\n margin-left: 0 !important;\n margin-right: 3rem !important;\n }\n .rtl mx-sm-5,\n [dir=\"rtl\"] mx-sm-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .rtl .pr-sm-0,\n [dir=\"rtl\"] .pr-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .rtl .pl-sm-0,\n [dir=\"rtl\"] .pl-sm-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .rtl px-sm-0,\n [dir=\"rtl\"] px-sm-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .rtl .pr-sm-1,\n [dir=\"rtl\"] .pr-sm-1 {\n padding-right: 0 !important;\n padding-left: 0.25rem !important;\n }\n .rtl .pl-sm-1,\n [dir=\"rtl\"] .pl-sm-1 {\n padding-left: 0 !important;\n padding-right: 0.25rem !important;\n }\n .rtl px-sm-1,\n [dir=\"rtl\"] px-sm-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .rtl .pr-sm-2,\n [dir=\"rtl\"] .pr-sm-2 {\n padding-right: 0 !important;\n padding-left: 0.5rem !important;\n }\n .rtl .pl-sm-2,\n [dir=\"rtl\"] .pl-sm-2 {\n padding-left: 0 !important;\n padding-right: 0.5rem !important;\n }\n .rtl px-sm-2,\n [dir=\"rtl\"] px-sm-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .rtl .pr-sm-3,\n [dir=\"rtl\"] .pr-sm-3 {\n padding-right: 0 !important;\n padding-left: 1rem !important;\n }\n .rtl .pl-sm-3,\n [dir=\"rtl\"] .pl-sm-3 {\n padding-left: 0 !important;\n padding-right: 1rem !important;\n }\n .rtl px-sm-3,\n [dir=\"rtl\"] px-sm-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .rtl .pr-sm-4,\n [dir=\"rtl\"] .pr-sm-4 {\n padding-right: 0 !important;\n padding-left: 1.5rem !important;\n }\n .rtl .pl-sm-4,\n [dir=\"rtl\"] .pl-sm-4 {\n padding-left: 0 !important;\n padding-right: 1.5rem !important;\n }\n .rtl px-sm-4,\n [dir=\"rtl\"] px-sm-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .rtl .pr-sm-5,\n [dir=\"rtl\"] .pr-sm-5 {\n padding-right: 0 !important;\n padding-left: 3rem !important;\n }\n .rtl .pl-sm-5,\n [dir=\"rtl\"] .pl-sm-5 {\n padding-left: 0 !important;\n padding-right: 3rem !important;\n }\n .rtl px-sm-5,\n [dir=\"rtl\"] px-sm-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .rtl .mr-sm-auto,\n [dir=\"rtl\"] .mr-sm-auto {\n margin-right: 0 !important;\n margin-left: auto !important;\n }\n .rtl .ml-sm-auto,\n [dir=\"rtl\"] .ml-sm-auto {\n margin-right: auto !important;\n margin-left: 0 !important;\n }\n .rtl .mx-sm-auto,\n [dir=\"rtl\"] .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .rtl .mr-md-0,\n [dir=\"rtl\"] .mr-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .rtl .ml-md-0,\n [dir=\"rtl\"] .ml-md-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .rtl mx-md-0,\n [dir=\"rtl\"] mx-md-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .rtl .mr-md-1,\n [dir=\"rtl\"] .mr-md-1 {\n margin-right: 0 !important;\n margin-left: 0.25rem !important;\n }\n .rtl .ml-md-1,\n [dir=\"rtl\"] .ml-md-1 {\n margin-left: 0 !important;\n margin-right: 0.25rem !important;\n }\n .rtl mx-md-1,\n [dir=\"rtl\"] mx-md-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .rtl .mr-md-2,\n [dir=\"rtl\"] .mr-md-2 {\n margin-right: 0 !important;\n margin-left: 0.5rem !important;\n }\n .rtl .ml-md-2,\n [dir=\"rtl\"] .ml-md-2 {\n margin-left: 0 !important;\n margin-right: 0.5rem !important;\n }\n .rtl mx-md-2,\n [dir=\"rtl\"] mx-md-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .rtl .mr-md-3,\n [dir=\"rtl\"] .mr-md-3 {\n margin-right: 0 !important;\n margin-left: 1rem !important;\n }\n .rtl .ml-md-3,\n [dir=\"rtl\"] .ml-md-3 {\n margin-left: 0 !important;\n margin-right: 1rem !important;\n }\n .rtl mx-md-3,\n [dir=\"rtl\"] mx-md-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .rtl .mr-md-4,\n [dir=\"rtl\"] .mr-md-4 {\n margin-right: 0 !important;\n margin-left: 1.5rem !important;\n }\n .rtl .ml-md-4,\n [dir=\"rtl\"] .ml-md-4 {\n margin-left: 0 !important;\n margin-right: 1.5rem !important;\n }\n .rtl mx-md-4,\n [dir=\"rtl\"] mx-md-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .rtl .mr-md-5,\n [dir=\"rtl\"] .mr-md-5 {\n margin-right: 0 !important;\n margin-left: 3rem !important;\n }\n .rtl .ml-md-5,\n [dir=\"rtl\"] .ml-md-5 {\n margin-left: 0 !important;\n margin-right: 3rem !important;\n }\n .rtl mx-md-5,\n [dir=\"rtl\"] mx-md-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .rtl .pr-md-0,\n [dir=\"rtl\"] .pr-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .rtl .pl-md-0,\n [dir=\"rtl\"] .pl-md-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .rtl px-md-0,\n [dir=\"rtl\"] px-md-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .rtl .pr-md-1,\n [dir=\"rtl\"] .pr-md-1 {\n padding-right: 0 !important;\n padding-left: 0.25rem !important;\n }\n .rtl .pl-md-1,\n [dir=\"rtl\"] .pl-md-1 {\n padding-left: 0 !important;\n padding-right: 0.25rem !important;\n }\n .rtl px-md-1,\n [dir=\"rtl\"] px-md-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .rtl .pr-md-2,\n [dir=\"rtl\"] .pr-md-2 {\n padding-right: 0 !important;\n padding-left: 0.5rem !important;\n }\n .rtl .pl-md-2,\n [dir=\"rtl\"] .pl-md-2 {\n padding-left: 0 !important;\n padding-right: 0.5rem !important;\n }\n .rtl px-md-2,\n [dir=\"rtl\"] px-md-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .rtl .pr-md-3,\n [dir=\"rtl\"] .pr-md-3 {\n padding-right: 0 !important;\n padding-left: 1rem !important;\n }\n .rtl .pl-md-3,\n [dir=\"rtl\"] .pl-md-3 {\n padding-left: 0 !important;\n padding-right: 1rem !important;\n }\n .rtl px-md-3,\n [dir=\"rtl\"] px-md-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .rtl .pr-md-4,\n [dir=\"rtl\"] .pr-md-4 {\n padding-right: 0 !important;\n padding-left: 1.5rem !important;\n }\n .rtl .pl-md-4,\n [dir=\"rtl\"] .pl-md-4 {\n padding-left: 0 !important;\n padding-right: 1.5rem !important;\n }\n .rtl px-md-4,\n [dir=\"rtl\"] px-md-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .rtl .pr-md-5,\n [dir=\"rtl\"] .pr-md-5 {\n padding-right: 0 !important;\n padding-left: 3rem !important;\n }\n .rtl .pl-md-5,\n [dir=\"rtl\"] .pl-md-5 {\n padding-left: 0 !important;\n padding-right: 3rem !important;\n }\n .rtl px-md-5,\n [dir=\"rtl\"] px-md-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .rtl .mr-md-auto,\n [dir=\"rtl\"] .mr-md-auto {\n margin-right: 0 !important;\n margin-left: auto !important;\n }\n .rtl .ml-md-auto,\n [dir=\"rtl\"] .ml-md-auto {\n margin-right: auto !important;\n margin-left: 0 !important;\n }\n .rtl .mx-md-auto,\n [dir=\"rtl\"] .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .rtl .mr-lg-0,\n [dir=\"rtl\"] .mr-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .rtl .ml-lg-0,\n [dir=\"rtl\"] .ml-lg-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .rtl mx-lg-0,\n [dir=\"rtl\"] mx-lg-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .rtl .mr-lg-1,\n [dir=\"rtl\"] .mr-lg-1 {\n margin-right: 0 !important;\n margin-left: 0.25rem !important;\n }\n .rtl .ml-lg-1,\n [dir=\"rtl\"] .ml-lg-1 {\n margin-left: 0 !important;\n margin-right: 0.25rem !important;\n }\n .rtl mx-lg-1,\n [dir=\"rtl\"] mx-lg-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .rtl .mr-lg-2,\n [dir=\"rtl\"] .mr-lg-2 {\n margin-right: 0 !important;\n margin-left: 0.5rem !important;\n }\n .rtl .ml-lg-2,\n [dir=\"rtl\"] .ml-lg-2 {\n margin-left: 0 !important;\n margin-right: 0.5rem !important;\n }\n .rtl mx-lg-2,\n [dir=\"rtl\"] mx-lg-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .rtl .mr-lg-3,\n [dir=\"rtl\"] .mr-lg-3 {\n margin-right: 0 !important;\n margin-left: 1rem !important;\n }\n .rtl .ml-lg-3,\n [dir=\"rtl\"] .ml-lg-3 {\n margin-left: 0 !important;\n margin-right: 1rem !important;\n }\n .rtl mx-lg-3,\n [dir=\"rtl\"] mx-lg-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .rtl .mr-lg-4,\n [dir=\"rtl\"] .mr-lg-4 {\n margin-right: 0 !important;\n margin-left: 1.5rem !important;\n }\n .rtl .ml-lg-4,\n [dir=\"rtl\"] .ml-lg-4 {\n margin-left: 0 !important;\n margin-right: 1.5rem !important;\n }\n .rtl mx-lg-4,\n [dir=\"rtl\"] mx-lg-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .rtl .mr-lg-5,\n [dir=\"rtl\"] .mr-lg-5 {\n margin-right: 0 !important;\n margin-left: 3rem !important;\n }\n .rtl .ml-lg-5,\n [dir=\"rtl\"] .ml-lg-5 {\n margin-left: 0 !important;\n margin-right: 3rem !important;\n }\n .rtl mx-lg-5,\n [dir=\"rtl\"] mx-lg-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .rtl .pr-lg-0,\n [dir=\"rtl\"] .pr-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .rtl .pl-lg-0,\n [dir=\"rtl\"] .pl-lg-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .rtl px-lg-0,\n [dir=\"rtl\"] px-lg-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .rtl .pr-lg-1,\n [dir=\"rtl\"] .pr-lg-1 {\n padding-right: 0 !important;\n padding-left: 0.25rem !important;\n }\n .rtl .pl-lg-1,\n [dir=\"rtl\"] .pl-lg-1 {\n padding-left: 0 !important;\n padding-right: 0.25rem !important;\n }\n .rtl px-lg-1,\n [dir=\"rtl\"] px-lg-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .rtl .pr-lg-2,\n [dir=\"rtl\"] .pr-lg-2 {\n padding-right: 0 !important;\n padding-left: 0.5rem !important;\n }\n .rtl .pl-lg-2,\n [dir=\"rtl\"] .pl-lg-2 {\n padding-left: 0 !important;\n padding-right: 0.5rem !important;\n }\n .rtl px-lg-2,\n [dir=\"rtl\"] px-lg-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .rtl .pr-lg-3,\n [dir=\"rtl\"] .pr-lg-3 {\n padding-right: 0 !important;\n padding-left: 1rem !important;\n }\n .rtl .pl-lg-3,\n [dir=\"rtl\"] .pl-lg-3 {\n padding-left: 0 !important;\n padding-right: 1rem !important;\n }\n .rtl px-lg-3,\n [dir=\"rtl\"] px-lg-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .rtl .pr-lg-4,\n [dir=\"rtl\"] .pr-lg-4 {\n padding-right: 0 !important;\n padding-left: 1.5rem !important;\n }\n .rtl .pl-lg-4,\n [dir=\"rtl\"] .pl-lg-4 {\n padding-left: 0 !important;\n padding-right: 1.5rem !important;\n }\n .rtl px-lg-4,\n [dir=\"rtl\"] px-lg-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .rtl .pr-lg-5,\n [dir=\"rtl\"] .pr-lg-5 {\n padding-right: 0 !important;\n padding-left: 3rem !important;\n }\n .rtl .pl-lg-5,\n [dir=\"rtl\"] .pl-lg-5 {\n padding-left: 0 !important;\n padding-right: 3rem !important;\n }\n .rtl px-lg-5,\n [dir=\"rtl\"] px-lg-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .rtl .mr-lg-auto,\n [dir=\"rtl\"] .mr-lg-auto {\n margin-right: 0 !important;\n margin-left: auto !important;\n }\n .rtl .ml-lg-auto,\n [dir=\"rtl\"] .ml-lg-auto {\n margin-right: auto !important;\n margin-left: 0 !important;\n }\n .rtl .mx-lg-auto,\n [dir=\"rtl\"] .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .rtl .mr-xl-0,\n [dir=\"rtl\"] .mr-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .rtl .ml-xl-0,\n [dir=\"rtl\"] .ml-xl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .rtl mx-xl-0,\n [dir=\"rtl\"] mx-xl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .rtl .mr-xl-1,\n [dir=\"rtl\"] .mr-xl-1 {\n margin-right: 0 !important;\n margin-left: 0.25rem !important;\n }\n .rtl .ml-xl-1,\n [dir=\"rtl\"] .ml-xl-1 {\n margin-left: 0 !important;\n margin-right: 0.25rem !important;\n }\n .rtl mx-xl-1,\n [dir=\"rtl\"] mx-xl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .rtl .mr-xl-2,\n [dir=\"rtl\"] .mr-xl-2 {\n margin-right: 0 !important;\n margin-left: 0.5rem !important;\n }\n .rtl .ml-xl-2,\n [dir=\"rtl\"] .ml-xl-2 {\n margin-left: 0 !important;\n margin-right: 0.5rem !important;\n }\n .rtl mx-xl-2,\n [dir=\"rtl\"] mx-xl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .rtl .mr-xl-3,\n [dir=\"rtl\"] .mr-xl-3 {\n margin-right: 0 !important;\n margin-left: 1rem !important;\n }\n .rtl .ml-xl-3,\n [dir=\"rtl\"] .ml-xl-3 {\n margin-left: 0 !important;\n margin-right: 1rem !important;\n }\n .rtl mx-xl-3,\n [dir=\"rtl\"] mx-xl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .rtl .mr-xl-4,\n [dir=\"rtl\"] .mr-xl-4 {\n margin-right: 0 !important;\n margin-left: 1.5rem !important;\n }\n .rtl .ml-xl-4,\n [dir=\"rtl\"] .ml-xl-4 {\n margin-left: 0 !important;\n margin-right: 1.5rem !important;\n }\n .rtl mx-xl-4,\n [dir=\"rtl\"] mx-xl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .rtl .mr-xl-5,\n [dir=\"rtl\"] .mr-xl-5 {\n margin-right: 0 !important;\n margin-left: 3rem !important;\n }\n .rtl .ml-xl-5,\n [dir=\"rtl\"] .ml-xl-5 {\n margin-left: 0 !important;\n margin-right: 3rem !important;\n }\n .rtl mx-xl-5,\n [dir=\"rtl\"] mx-xl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .rtl .pr-xl-0,\n [dir=\"rtl\"] .pr-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .rtl .pl-xl-0,\n [dir=\"rtl\"] .pl-xl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .rtl px-xl-0,\n [dir=\"rtl\"] px-xl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .rtl .pr-xl-1,\n [dir=\"rtl\"] .pr-xl-1 {\n padding-right: 0 !important;\n padding-left: 0.25rem !important;\n }\n .rtl .pl-xl-1,\n [dir=\"rtl\"] .pl-xl-1 {\n padding-left: 0 !important;\n padding-right: 0.25rem !important;\n }\n .rtl px-xl-1,\n [dir=\"rtl\"] px-xl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .rtl .pr-xl-2,\n [dir=\"rtl\"] .pr-xl-2 {\n padding-right: 0 !important;\n padding-left: 0.5rem !important;\n }\n .rtl .pl-xl-2,\n [dir=\"rtl\"] .pl-xl-2 {\n padding-left: 0 !important;\n padding-right: 0.5rem !important;\n }\n .rtl px-xl-2,\n [dir=\"rtl\"] px-xl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .rtl .pr-xl-3,\n [dir=\"rtl\"] .pr-xl-3 {\n padding-right: 0 !important;\n padding-left: 1rem !important;\n }\n .rtl .pl-xl-3,\n [dir=\"rtl\"] .pl-xl-3 {\n padding-left: 0 !important;\n padding-right: 1rem !important;\n }\n .rtl px-xl-3,\n [dir=\"rtl\"] px-xl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .rtl .pr-xl-4,\n [dir=\"rtl\"] .pr-xl-4 {\n padding-right: 0 !important;\n padding-left: 1.5rem !important;\n }\n .rtl .pl-xl-4,\n [dir=\"rtl\"] .pl-xl-4 {\n padding-left: 0 !important;\n padding-right: 1.5rem !important;\n }\n .rtl px-xl-4,\n [dir=\"rtl\"] px-xl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .rtl .pr-xl-5,\n [dir=\"rtl\"] .pr-xl-5 {\n padding-right: 0 !important;\n padding-left: 3rem !important;\n }\n .rtl .pl-xl-5,\n [dir=\"rtl\"] .pl-xl-5 {\n padding-left: 0 !important;\n padding-right: 3rem !important;\n }\n .rtl px-xl-5,\n [dir=\"rtl\"] px-xl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .rtl .mr-xl-auto,\n [dir=\"rtl\"] .mr-xl-auto {\n margin-right: 0 !important;\n margin-left: auto !important;\n }\n .rtl .ml-xl-auto,\n [dir=\"rtl\"] .ml-xl-auto {\n margin-right: auto !important;\n margin-left: 0 !important;\n }\n .rtl .mx-xl-auto,\n [dir=\"rtl\"] .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n.rtl .text-right,\n[dir=\"rtl\"] .text-right {\n text-align: left !important;\n}\n\n.rtl .text-left,\n[dir=\"rtl\"] .text-left {\n text-align: right !important;\n}\n\n@media (min-width: 576px) {\n .rtl .text-sm-right,\n [dir=\"rtl\"] .text-sm-right {\n text-align: left !important;\n }\n .rtl .text-sm-left,\n [dir=\"rtl\"] .text-sm-left {\n text-align: right !important;\n }\n}\n\n@media (min-width: 768px) {\n .rtl .text-md-right,\n [dir=\"rtl\"] .text-md-right {\n text-align: left !important;\n }\n .rtl .text-md-left,\n [dir=\"rtl\"] .text-md-left {\n text-align: right !important;\n }\n}\n\n@media (min-width: 992px) {\n .rtl .text-lg-right,\n [dir=\"rtl\"] .text-lg-right {\n text-align: left !important;\n }\n .rtl .text-lg-left,\n [dir=\"rtl\"] .text-lg-left {\n text-align: right !important;\n }\n}\n\n@media (min-width: 1200px) {\n .rtl .text-xl-right,\n [dir=\"rtl\"] .text-xl-right {\n text-align: left !important;\n }\n .rtl .text-xl-left,\n [dir=\"rtl\"] .text-xl-left {\n text-align: right !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-rtl.css.map */","// Do not forget to update getting-started/theming.md!\n:root {\n // Custom variable values only support SassScript inside `#{}`.\n @each $color, $value in $colors {\n --#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$color}: #{$value};\n }\n\n @each $bp, $value in $grid-breakpoints {\n --breakpoint-#{$bp}: #{$value};\n }\n\n // Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --font-family-sans-serif: #{inspect($font-family-sans-serif)};\n --font-family-monospace: #{inspect($font-family-monospace)};\n}\n","// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Change the default tap highlight to be completely transparent in iOS.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box; // 1\n}\n\nhtml {\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -webkit-tap-highlight-color: rgba($black, 0); // 5\n}\n\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\n// TODO: remove in v5\n// stylelint-disable-next-line selector-list-comma-newline-after\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Set an explicit initial text-align value so that we can later use\n// the `inherit` value on things like `` elements.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: left; // 3\n background-color: $body-bg; // 2\n}\n\n// Future-proof rule: in browsers that support :focus-visible, suppress the focus outline\n// on elements that programmatically receive focus but wouldn't normally show a visible\n// focus outline. In general, this would mean that the outline is only applied if the\n// interaction that led to the element receiving programmatic focus was a keyboard interaction,\n// or the browser has somehow determined that the user is primarily a keyboard user and/or\n// wants focus outlines to always be presented.\n//\n// See https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible\n// and https://developer.paciellogroup.com/blog/2018/03/focus-visible-and-backwards-compatibility/\n[tabindex=\"-1\"]:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `

    `-`

    ` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n// stylelint-disable-next-line selector-list-comma-newline-after\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: $headings-margin-bottom;\n}\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

    `s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Remove the bottom border in Firefox 39-.\n// 5. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-original-title] { // 1\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 4\n text-decoration-skip-ink: none; // 5\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n\nsmall {\n @include font-size(80%); // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n @include font-size(75%);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n\n @include hover() {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]) {\n color: inherit;\n text-decoration: none;\n\n @include hover() {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n//\n// Code\n//\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-monospace;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg {\n // Workaround for the SVG overflow bug in IE10/11 is still required.\n // See https://github.com/twbs/bootstrap/issues/26878\n overflow: hidden;\n vertical-align: middle;\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $table-caption-color;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `` alignment by inheriting from the ``, or the\n // closest parent with a set `text-align`.\n text-align: inherit;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: $label-margin-bottom;\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24093\nbutton {\n // stylelint-disable-next-line property-blacklist\n border-radius: 0;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// Remove the inheritance of word-wrap in Safari.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24990\nselect {\n word-wrap: normal;\n}\n\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\nbutton,\n[type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n}\n\n// Opinionated: add \"hand\" cursor to non-disabled button elements.\n@if $enable-pointer-cursor-for-buttons {\n button,\n [type=\"button\"],\n [type=\"reset\"],\n [type=\"submit\"] {\n &:not(:disabled) {\n cursor: pointer;\n }\n }\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\n padding: 0; // 2. Remove the padding in IE 10-\n}\n\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n // Remove the default appearance of temporal inputs to avoid a Mobile Safari\n // bug where setting a custom line-height prevents text from being vertically\n // centered within the input.\n // See https://bugs.webkit.org/show_bug.cgi?id=139848\n // and https://github.com/twbs/bootstrap/issues/11266\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto; // Remove the default vertical scrollbar in IE.\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n resize: vertical;\n}\n\nfieldset {\n // Browsers set a default `min-width: min-content;` on fieldsets,\n // unlike e.g. `

    `s, which have `min-width: 0;` by default.\n // So we reset that to ensure fieldsets behave more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359\n // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n min-width: 0;\n // Reset the default outline behavior of fieldsets so they don't affect page layout.\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n// 1. Correct the text wrapping in Edge and IE.\n// 2. Correct the color inheritance from `fieldset` elements in IE.\nlegend {\n display: block;\n width: 100%;\n max-width: 100%; // 1\n padding: 0;\n margin-bottom: .5rem;\n @include font-size(1.5rem);\n line-height: inherit;\n color: inherit; // 2\n white-space: normal; // 1\n}\n\nprogress {\n vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n}\n\n// Correct the cursor style of increment and decrement buttons in Chrome.\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n outline-offset: -2px; // 2. Correct the outline style in Safari.\n -webkit-appearance: none;\n}\n\n//\n// Remove the inner padding in Chrome and Safari on macOS.\n//\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// 1. Correct the inability to style clickable types in iOS and Safari.\n// 2. Change font properties to `inherit` in Safari.\n//\n\n::-webkit-file-upload-button {\n font: inherit; // 2\n -webkit-appearance: button; // 1\n}\n\n//\n// Correct element displays\n//\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item; // Add the correct display in all browsers\n cursor: pointer;\n}\n\ntemplate {\n display: none; // Add the correct display in IE\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n// Needed for proper display in IE 10-.\n[hidden] {\n display: none !important;\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$grays: map-merge(\n (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n ),\n $grays\n);\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: map-merge(\n (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n ),\n $colors\n);\n\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$theme-colors: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$theme-colors: map-merge(\n (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n ),\n $theme-colors\n);\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n// The yiq lightness value that determines when the lightness of color changes from \"dark\" to \"light\". Acceptable values are between 0 and 255.\n$yiq-contrasted-threshold: 150 !default;\n\n// Customize the light and dark text colors for use in our YIQ color contrast function.\n$yiq-text-dark: $gray-900 !default;\n$yiq-text-light: $white !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\",\"%3c\"),\n (\">\",\"%3e\"),\n (\"#\",\"%23\"),\n) !default;\n\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-prefers-reduced-motion-media-query: true !default;\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\n$enable-grid-classes: true !default;\n$enable-pointer-cursor-for-buttons: true !default;\n$enable-print-styles: true !default;\n$enable-responsive-font-sizes: false !default;\n$enable-validation-icons: true !default;\n$enable-deprecation-messages: true !default;\n\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n$spacer: 1rem !default;\n$spacers: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$spacers: map-merge(\n (\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n ),\n $spacers\n);\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$sizes: map-merge(\n (\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%,\n auto: auto\n ),\n $sizes\n);\n\n\n// Body\n//\n// Settings for the `` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: underline !default;\n// Darken percentage for links with `.text-*` class (e.g. `.text-success`)\n$emphasized-link-hover-darken-percentage: 15% !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px\n) !default;\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px\n) !default;\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 30px !default;\n$grid-row-columns: 6 !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n$line-height-lg: 1.5 !default;\n$line-height-sm: 1.5 !default;\n\n$border-width: 1px !default;\n$border-color: $gray-300 !default;\n\n$border-radius: .25rem !default;\n$border-radius-lg: .3rem !default;\n$border-radius-sm: .2rem !default;\n\n$rounded-pill: 50rem !default;\n\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n\n$component-active-color: $white !default;\n$component-active-bg: theme-color(\"primary\") !default;\n\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n$transition-collapse: height .35s ease !default;\n\n$embed-responsive-aspect-ratios: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$embed-responsive-aspect-ratios: join(\n (\n (21 9),\n (16 9),\n (4 3),\n (1 1),\n ),\n $embed-responsive-aspect-ratios\n);\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n$font-family-base: $font-family-sans-serif !default;\n// stylelint-enable value-keyword-case\n\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-lg: $font-size-base * 1.25 !default;\n$font-size-sm: $font-size-base * .875 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n$line-height-base: 1.5 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n\n$headings-margin-bottom: $spacer / 2 !default;\n$headings-font-family: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: null !default;\n\n$display1-size: 6rem !default;\n$display2-size: 5.5rem !default;\n$display3-size: 4.5rem !default;\n$display4-size: 3.5rem !default;\n\n$display1-weight: 300 !default;\n$display2-weight: 300 !default;\n$display3-weight: 300 !default;\n$display4-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: 80% !default;\n\n$text-muted: $gray-600 !default;\n\n$blockquote-small-color: $gray-600 !default;\n$blockquote-small-font-size: $small-font-size !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n\n$hr-border-color: rgba($black, .1) !default;\n$hr-border-width: $border-width !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$kbd-box-shadow: inset 0 -.1rem 0 rgba($black, .25) !default;\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-bg: #fcf8e3 !default;\n\n$hr-margin-y: $spacer !default;\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n$table-cell-padding: .75rem !default;\n$table-cell-padding-sm: .3rem !default;\n\n$table-color: $body-color !default;\n$table-bg: null !default;\n$table-accent-bg: rgba($black, .05) !default;\n$table-hover-color: $table-color !default;\n$table-hover-bg: rgba($black, .075) !default;\n$table-active-bg: $table-hover-bg !default;\n\n$table-border-width: $border-width !default;\n$table-border-color: $border-color !default;\n\n$table-head-bg: $gray-200 !default;\n$table-head-color: $gray-700 !default;\n\n$table-dark-color: $white !default;\n$table-dark-bg: $gray-800 !default;\n$table-dark-accent-bg: rgba($white, .05) !default;\n$table-dark-hover-color: $table-dark-color !default;\n$table-dark-hover-bg: rgba($white, .075) !default;\n$table-dark-border-color: lighten($table-dark-bg, 7.5%) !default;\n\n$table-striped-order: odd !default;\n\n$table-caption-color: $text-muted !default;\n\n$table-bg-level: -9 !default;\n$table-border-level: -6 !default;\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .2rem !default;\n$input-btn-focus-color: rgba($component-active-bg, .25) !default;\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n$input-btn-line-height-sm: $line-height-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n$input-btn-line-height-lg: $line-height-lg !default;\n\n$input-btn-border-width: $border-width !default;\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n$btn-line-height-sm: $input-btn-line-height-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n$btn-line-height-lg: $input-btn-line-height-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-disabled-color: $gray-600 !default;\n\n$btn-block-spacing-y: .5rem !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n\n// Forms\n\n$label-margin-bottom: .5rem !default;\n\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n$input-line-height-sm: $input-btn-line-height-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n$input-line-height-lg: $input-btn-line-height-lg !default;\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n\n$input-color: $gray-700 !default;\n$input-border-color: $gray-400 !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: inset 0 1px 1px rgba($black, .075) !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-lg: $border-radius-lg !default;\n$input-border-radius-sm: $border-radius-sm !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: lighten($component-active-bg, 25%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: $gray-600 !default;\n$input-plaintext-color: $body-color !default;\n\n$input-height-border: $input-border-width * 2 !default;\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y / 2) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height-sm * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height-lg * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-text-margin-top: .25rem !default;\n\n$form-check-input-gutter: 1.25rem !default;\n$form-check-input-margin-y: .3rem !default;\n$form-check-input-margin-x: .25rem !default;\n\n$form-check-inline-margin-x: .75rem !default;\n$form-check-inline-input-margin-x: .3125rem !default;\n\n$form-grid-gutter-width: 10px !default;\n$form-group-margin-bottom: 1rem !default;\n\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n\n$custom-forms-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$custom-control-gutter: .5rem !default;\n$custom-control-spacer-x: 1rem !default;\n$custom-control-cursor: null !default;\n\n$custom-control-indicator-size: 1rem !default;\n$custom-control-indicator-bg: $input-bg !default;\n\n$custom-control-indicator-bg-size: 50% 50% !default;\n$custom-control-indicator-box-shadow: $input-box-shadow !default;\n$custom-control-indicator-border-color: $gray-500 !default;\n$custom-control-indicator-border-width: $input-border-width !default;\n\n$custom-control-label-color: null !default;\n\n$custom-control-indicator-disabled-bg: $input-disabled-bg !default;\n$custom-control-label-disabled-color: $gray-600 !default;\n\n$custom-control-indicator-checked-color: $component-active-color !default;\n$custom-control-indicator-checked-bg: $component-active-bg !default;\n$custom-control-indicator-checked-disabled-bg: rgba(theme-color(\"primary\"), .5) !default;\n$custom-control-indicator-checked-box-shadow: none !default;\n$custom-control-indicator-checked-border-color: $custom-control-indicator-checked-bg !default;\n\n$custom-control-indicator-focus-box-shadow: $input-focus-box-shadow !default;\n$custom-control-indicator-focus-border-color: $input-focus-border-color !default;\n\n$custom-control-indicator-active-color: $component-active-color !default;\n$custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;\n$custom-control-indicator-active-box-shadow: none !default;\n$custom-control-indicator-active-border-color: $custom-control-indicator-active-bg !default;\n\n$custom-checkbox-indicator-border-radius: $border-radius !default;\n$custom-checkbox-indicator-icon-checked: url(\"data:image/svg+xml,\") !default;\n\n$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;\n$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;\n$custom-checkbox-indicator-icon-indeterminate: url(\"data:image/svg+xml,\") !default;\n$custom-checkbox-indicator-indeterminate-box-shadow: none !default;\n$custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicator-indeterminate-bg !default;\n\n$custom-radio-indicator-border-radius: 50% !default;\n$custom-radio-indicator-icon-checked: url(\"data:image/svg+xml,\") !default;\n\n$custom-switch-width: $custom-control-indicator-size * 1.75 !default;\n$custom-switch-indicator-border-radius: $custom-control-indicator-size / 2 !default;\n$custom-switch-indicator-size: subtract($custom-control-indicator-size, $custom-control-indicator-border-width * 4) !default;\n\n$custom-select-padding-y: $input-padding-y !default;\n$custom-select-padding-x: $input-padding-x !default;\n$custom-select-font-family: $input-font-family !default;\n$custom-select-font-size: $input-font-size !default;\n$custom-select-height: $input-height !default;\n$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator\n$custom-select-font-weight: $input-font-weight !default;\n$custom-select-line-height: $input-line-height !default;\n$custom-select-color: $input-color !default;\n$custom-select-disabled-color: $gray-600 !default;\n$custom-select-bg: $input-bg !default;\n$custom-select-disabled-bg: $gray-200 !default;\n$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions\n$custom-select-indicator-color: $gray-800 !default;\n$custom-select-indicator: url(\"data:image/svg+xml,\") !default;\n$custom-select-background: escape-svg($custom-select-indicator) no-repeat right $custom-select-padding-x center / $custom-select-bg-size !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)\n\n$custom-select-feedback-icon-padding-right: add(1em * .75, (2 * $custom-select-padding-y * .75) + $custom-select-padding-x + $custom-select-indicator-padding) !default;\n$custom-select-feedback-icon-position: center right ($custom-select-padding-x + $custom-select-indicator-padding) !default;\n$custom-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$custom-select-border-width: $input-border-width !default;\n$custom-select-border-color: $input-border-color !default;\n$custom-select-border-radius: $border-radius !default;\n$custom-select-box-shadow: inset 0 1px 2px rgba($black, .075) !default;\n\n$custom-select-focus-border-color: $input-focus-border-color !default;\n$custom-select-focus-width: $input-focus-width !default;\n$custom-select-focus-box-shadow: 0 0 0 $custom-select-focus-width $input-btn-focus-color !default;\n\n$custom-select-padding-y-sm: $input-padding-y-sm !default;\n$custom-select-padding-x-sm: $input-padding-x-sm !default;\n$custom-select-font-size-sm: $input-font-size-sm !default;\n$custom-select-height-sm: $input-height-sm !default;\n\n$custom-select-padding-y-lg: $input-padding-y-lg !default;\n$custom-select-padding-x-lg: $input-padding-x-lg !default;\n$custom-select-font-size-lg: $input-font-size-lg !default;\n$custom-select-height-lg: $input-height-lg !default;\n\n$custom-range-track-width: 100% !default;\n$custom-range-track-height: .5rem !default;\n$custom-range-track-cursor: pointer !default;\n$custom-range-track-bg: $gray-300 !default;\n$custom-range-track-border-radius: 1rem !default;\n$custom-range-track-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default;\n\n$custom-range-thumb-width: 1rem !default;\n$custom-range-thumb-height: $custom-range-thumb-width !default;\n$custom-range-thumb-bg: $component-active-bg !default;\n$custom-range-thumb-border: 0 !default;\n$custom-range-thumb-border-radius: 1rem !default;\n$custom-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$custom-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$custom-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in IE/Edge\n$custom-range-thumb-active-bg: lighten($component-active-bg, 35%) !default;\n$custom-range-thumb-disabled-bg: $gray-500 !default;\n\n$custom-file-height: $input-height !default;\n$custom-file-height-inner: $input-height-inner !default;\n$custom-file-focus-border-color: $input-focus-border-color !default;\n$custom-file-focus-box-shadow: $input-focus-box-shadow !default;\n$custom-file-disabled-bg: $input-disabled-bg !default;\n\n$custom-file-padding-y: $input-padding-y !default;\n$custom-file-padding-x: $input-padding-x !default;\n$custom-file-line-height: $input-line-height !default;\n$custom-file-font-family: $input-font-family !default;\n$custom-file-font-weight: $input-font-weight !default;\n$custom-file-color: $input-color !default;\n$custom-file-bg: $input-bg !default;\n$custom-file-border-width: $input-border-width !default;\n$custom-file-border-color: $input-border-color !default;\n$custom-file-border-radius: $input-border-radius !default;\n$custom-file-box-shadow: $input-box-shadow !default;\n$custom-file-button-color: $custom-file-color !default;\n$custom-file-button-bg: $input-group-addon-bg !default;\n$custom-file-text: (\n en: \"Browse\"\n) !default;\n\n\n// Form validation\n\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $small-font-size !default;\n$form-feedback-valid-color: theme-color(\"success\") !default;\n$form-feedback-invalid-color: theme-color(\"danger\") !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n\n$form-validation-states: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-validation-states: map-merge(\n (\n \"valid\": (\n \"color\": $form-feedback-valid-color,\n \"icon\": $form-feedback-icon-valid\n ),\n \"invalid\": (\n \"color\": $form-feedback-invalid-color,\n \"icon\": $form-feedback-icon-invalid\n ),\n ),\n $form-validation-states\n);\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-modal-backdrop: 1040 !default;\n$zindex-modal: 1050 !default;\n$zindex-popover: 1060 !default;\n$zindex-tooltip: 1070 !default;\n\n\n// Navs\n\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: $gray-300 !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n$nav-divider-color: $gray-200 !default;\n$nav-divider-margin-y: $spacer / 2 !default;\n\n\n// Navbar\n\n$navbar-padding-y: $spacer / 2 !default;\n$navbar-padding-x: $spacer !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n\n$navbar-dark-color: rgba($white, .5) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n\n$navbar-light-color: rgba($black, .5) !default;\n$navbar-light-hover-color: rgba($black, .7) !default;\n$navbar-light-active-color: rgba($black, .9) !default;\n$navbar-light-disabled-color: rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: $body-color !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black, .15) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-inner-border-radius: subtract($dropdown-border-radius, $dropdown-border-width) !default;\n$dropdown-divider-bg: $gray-200 !default;\n$dropdown-divider-margin-y: $nav-divider-margin-y !default;\n$dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: darken($gray-900, 5%) !default;\n$dropdown-link-hover-bg: $gray-100 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-600 !default;\n\n$dropdown-item-padding-y: .25rem !default;\n$dropdown-item-padding-x: 1.5rem !default;\n\n$dropdown-header-color: $gray-600 !default;\n\n\n// Pagination\n\n$pagination-padding-y: .5rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n$pagination-line-height: 1.25 !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-color: $gray-300 !default;\n\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: $gray-300 !default;\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $pagination-active-bg !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: $gray-300 !default;\n\n\n// Jumbotron\n\n$jumbotron-padding: 2rem !default;\n$jumbotron-color: null !default;\n$jumbotron-bg: $gray-200 !default;\n\n\n// Cards\n\n$card-spacer-y: .75rem !default;\n$card-spacer-x: 1.25rem !default;\n$card-border-width: $border-width !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black, .125) !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: $white !default;\n\n$card-img-overlay-padding: 1.25rem !default;\n\n$card-group-margin: $grid-gutter-width / 2 !default;\n$card-deck-margin: $card-group-margin !default;\n\n$card-columns-count: 3 !default;\n$card-columns-gap: 1.25rem !default;\n$card-columns-margin: $card-spacer-y !default;\n\n\n// Tooltips\n\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-border-radius: $border-radius !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: .25rem !default;\n$tooltip-padding-x: .5rem !default;\n$tooltip-margin: 0 !default;\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n\n// Form tooltips must come after regular tooltips\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: $line-height-base !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n\n\n// Popovers\n\n$popover-font-size: $font-size-sm !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black, .2) !default;\n$popover-border-radius: $border-radius-lg !default;\n$popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width) !default;\n$popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;\n\n$popover-header-bg: darken($popover-bg, 3%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: .75rem !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: $popover-header-padding-y !default;\n$popover-body-padding-x: $popover-header-padding-x !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n\n\n// Toasts\n\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .25rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba($white, .85) !default;\n$toast-border-width: 1px !default;\n$toast-border-color: rgba(0, 0, 0, .1) !default;\n$toast-border-radius: .25rem !default;\n$toast-box-shadow: 0 .25rem .75rem rgba($black, .1) !default;\n\n$toast-header-color: $gray-600 !default;\n$toast-header-background-color: rgba($white, .85) !default;\n$toast-header-border-color: rgba(0, 0, 0, .05) !default;\n\n\n// Badges\n\n$badge-font-size: 75% !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-padding-y: .25em !default;\n$badge-padding-x: .4em !default;\n$badge-border-radius: $border-radius !default;\n\n$badge-transition: $btn-transition !default;\n$badge-focus-width: $input-btn-focus-width !default;\n\n$badge-pill-padding-x: .6em !default;\n// Use a higher than normal value to ensure completely rounded edges when\n// customizing padding or font-size on labels.\n$badge-pill-border-radius: 10rem !default;\n\n\n// Modals\n\n// Padding applied to the modal body\n$modal-inner-padding: 1rem !default;\n\n// Margin between elements in footer, must be lower than or equal to 2 * $modal-inner-padding\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black, .2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-border-radius: $border-radius-lg !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;\n$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $border-color !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding-y: 1rem !default;\n$modal-header-padding-x: 1rem !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-xl: 1140px !default;\n$modal-lg: 800px !default;\n$modal-md: 500px !default;\n$modal-sm: 300px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n$alert-padding-y: .75rem !default;\n$alert-padding-x: 1.25rem !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n\n$alert-bg-level: -10 !default;\n$alert-border-level: -9 !default;\n$alert-color-level: 6 !default;\n\n\n// Progress bars\n\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: inset 0 .1rem .1rem rgba($black, .1) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: theme-color(\"primary\") !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n\n\n// List group\n\n$list-group-color: null !default;\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black, .125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: .75rem !default;\n$list-group-item-padding-x: 1.25rem !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n\n\n// Image thumbnails\n\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: $gray-300 !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: 0 1px 2px rgba($black, .075) !default;\n\n\n// Figures\n\n$figure-caption-font-size: 90% !default;\n$figure-caption-color: $gray-600 !default;\n\n\n// Breadcrumbs\n\n$breadcrumb-font-size: null !default;\n\n$breadcrumb-padding-y: .75rem !default;\n$breadcrumb-padding-x: 1rem !default;\n$breadcrumb-item-padding: .5rem !default;\n\n$breadcrumb-margin-bottom: 1rem !default;\n\n$breadcrumb-bg: $gray-200 !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: quote(\"/\") !default;\n\n$breadcrumb-border-radius: $border-radius !default;\n\n\n// Carousel\n\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n\n$carousel-control-icon-width: 20px !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n\n// Spinners\n\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-border-width: .25em !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n\n\n// Close\n\n$close-font-size: $font-size-base * 1.5 !default;\n$close-font-weight: $font-weight-bold !default;\n$close-color: $black !default;\n$close-text-shadow: 0 1px 0 $white !default;\n\n\n// Code\n\n$code-font-size: 87.5% !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .2rem !default;\n$kbd-padding-x: .4rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: $gray-900 !default;\n$pre-scrollable-max-height: 340px !default;\n\n\n// Utilities\n\n$displays: none, inline, inline-block, block, table, table-row, table-cell, flex, inline-flex !default;\n$overflows: auto, hidden !default;\n$positions: static, relative, absolute, fixed, sticky !default;\n\n\n// Printing\n\n$print-page-size: a3 !default;\n$print-body-min-width: map-get($grid-breakpoints, \"lg\") !default;\n","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated font-resizing\n//\n// See https://github.com/twbs/rfs\n\n// Configuration\n\n// Base font size\n$rfs-base-font-size: 1.25rem !default;\n$rfs-font-size-unit: rem !default;\n\n// Breakpoint at where font-size starts decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n// Resize font-size based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != \"number\" or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-responsive-font-sizes to false\n$enable-responsive-font-sizes: true !default;\n\n// Cache $rfs-base-font-size unit\n$rfs-base-font-size-unit: unit($rfs-base-font-size);\n\n// Remove px-unit from $rfs-base-font-size for calculations\n@if $rfs-base-font-size-unit == \"px\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);\n}\n@else if $rfs-base-font-size-unit == \"rem\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == \"px\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == \"rem\" or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);\n}\n\n// Responsive font-size mixin\n@mixin rfs($fs, $important: false) {\n // Cache $fs unit\n $fs-unit: if(type-of($fs) == \"number\", unit($fs), false);\n\n // Add !important suffix if needed\n $rfs-suffix: if($important, \" !important\", \"\");\n\n // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $fs-unit or $fs-unit != \"\" and $fs-unit != \"px\" and $fs-unit != \"rem\" or $fs == 0 {\n font-size: #{$fs}#{$rfs-suffix};\n }\n @else {\n // Variables for storing static and fluid rescaling\n $rfs-static: null;\n $rfs-fluid: null;\n\n // Remove px-unit from $fs for calculations\n @if $fs-unit == \"px\" {\n $fs: $fs / ($fs * 0 + 1);\n }\n @else if $fs-unit == \"rem\" {\n $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);\n }\n\n // Set default font-size\n @if $rfs-font-size-unit == rem {\n $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};\n }\n @else if $rfs-font-size-unit == px {\n $rfs-static: #{$fs}px#{$rfs-suffix};\n }\n @else {\n @error \"`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.\";\n }\n\n // Only add media query if font-size is bigger as the minimum font-size\n // If $rfs-factor == 1, no rescaling will take place\n @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {\n $min-width: null;\n $variable-unit: null;\n\n // Calculate minimum font-size for given font-size\n $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;\n\n // Calculate difference between given font-size and minimum font-size for given font-size\n $fs-diff: $fs - $fs-min;\n\n // Base font-size formatting\n // No need to check if the unit is valid, because we did that before\n $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);\n\n // If two-dimensional, use smallest of screen width and height\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};\n\n // Set the calculated font-size.\n $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};\n }\n\n // Rendering\n @if $rfs-fluid == null {\n // Only render static font-size if no fluid font-size is available\n font-size: $rfs-static;\n }\n @else {\n $mq-value: null;\n\n // RFS breakpoint formatting\n @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {\n $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};\n }\n @else if $rfs-breakpoint-unit == px {\n $mq-value: #{$rfs-breakpoint}px;\n }\n @else {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n }\n\n @if $rfs-class == \"disable\" {\n // Adding an extra class increases specificity,\n // which prevents the media query to override the font size\n &,\n .disable-responsive-font-size &,\n &.disable-responsive-font-size {\n font-size: $rfs-static;\n }\n }\n @else {\n font-size: $rfs-static;\n }\n\n @if $rfs-two-dimensional {\n @media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n @else {\n @media (max-width: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n }\n }\n}\n\n// The font-size & responsive-font-size mixin uses RFS to rescale font sizes\n@mixin font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n\n@mixin responsive-font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n","// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Originally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS-an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular pseudo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover() {\n &:hover { @content; }\n}\n\n@mixin hover-focus() {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus() {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active() {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n","// stylelint-disable declaration-no-important, selector-list-comma-newline-after\n\n//\n// Headings\n//\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1, .h1 { @include font-size($h1-font-size); }\nh2, .h2 { @include font-size($h2-font-size); }\nh3, .h3 { @include font-size($h3-font-size); }\nh4, .h4 { @include font-size($h4-font-size); }\nh5, .h5 { @include font-size($h5-font-size); }\nh6, .h6 { @include font-size($h6-font-size); }\n\n.lead {\n @include font-size($lead-font-size);\n font-weight: $lead-font-weight;\n}\n\n// Type display classes\n.display-1 {\n @include font-size($display1-size);\n font-weight: $display1-weight;\n line-height: $display-line-height;\n}\n.display-2 {\n @include font-size($display2-size);\n font-weight: $display2-weight;\n line-height: $display-line-height;\n}\n.display-3 {\n @include font-size($display3-size);\n font-weight: $display3-weight;\n line-height: $display-line-height;\n}\n.display-4 {\n @include font-size($display4-size);\n font-weight: $display4-weight;\n line-height: $display-line-height;\n}\n\n\n//\n// Horizontal rules\n//\n\nhr {\n margin-top: $hr-margin-y;\n margin-bottom: $hr-margin-y;\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n}\n\n\n//\n// Emphasis\n//\n\nsmall,\n.small {\n @include font-size($small-font-size);\n font-weight: $font-weight-normal;\n}\n\nmark,\n.mark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n//\n// Lists\n//\n\n.list-unstyled {\n @include list-unstyled();\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n @include list-unstyled();\n}\n.list-inline-item {\n display: inline-block;\n\n &:not(:last-child) {\n margin-right: $list-inline-padding;\n }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n @include font-size(90%);\n text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n margin-bottom: $spacer;\n @include font-size($blockquote-font-size);\n}\n\n.blockquote-footer {\n display: block;\n @include font-size($blockquote-small-font-size);\n color: $blockquote-small-color;\n\n &::before {\n content: \"\\2014\\00A0\"; // em dash, nbsp\n }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled() {\n padding-left: 0;\n list-style: none;\n}\n","// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all ``s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n @include img-fluid();\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n padding: $thumbnail-padding;\n background-color: $thumbnail-bg;\n border: $thumbnail-border-width solid $thumbnail-border-color;\n @include border-radius($thumbnail-border-radius);\n @include box-shadow($thumbnail-box-shadow);\n\n // Keep them at most 100% wide\n @include img-fluid();\n}\n\n//\n// Figures\n//\n\n.figure {\n // Ensures the caption's text aligns with the image.\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: $spacer / 2;\n line-height: 1;\n}\n\n.figure-caption {\n @include font-size($figure-caption-font-size);\n color: $figure-caption-color;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid() {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n background-image: url($file-1x);\n\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n // but doesn't convert dppx=>dpi.\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n // Compatibility info: https://caniuse.com/#feat=css-media-resolution\n @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n only screen and (min-resolution: 2dppx) { // Standardized\n background-image: url($file-2x);\n background-size: $width-1x $height-1x;\n }\n @include deprecate(\"`img-retina()`\", \"v4.3.0\", \"v5\");\n}\n","// stylelint-disable property-blacklist\n// Single side border-radius\n\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: $radius;\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-top-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n }\n}\n\n@mixin border-top-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-right-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-left-radius($radius) {\n @if $enable-rounded {\n border-bottom-left-radius: $radius;\n }\n}\n","// Inline code\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n @include box-shadow($kbd-box-shadow);\n\n kbd {\n padding: 0;\n @include font-size(100%);\n font-weight: $nested-kbd-font-weight;\n @include box-shadow(none);\n }\n}\n\n// Blocks of code\npre {\n display: block;\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: $pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n // Single container class with breakpoint max-widths\n .container {\n @include make-container();\n @include make-container-max-widths();\n }\n\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n @each $name, $width in $grid-breakpoints {\n @if ($container-max-width > $width or $breakpoint == $name) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n }\n }\n }\n }\n}\n\n\n// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n }\n\n // Remove the negative margin from default .row, then the horizontal padding\n // from all immediate children columns (to prevent runaway style inheritance).\n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n }\n}\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container($gutter: $grid-gutter-width) {\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n margin-right: auto;\n margin-left: auto;\n}\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths(\n $max-widths: $container-max-widths,\n $breakpoints: $grid-breakpoints\n) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row($gutter: $grid-gutter-width) {\n display: flex;\n flex-wrap: wrap;\n margin-right: -$gutter / 2;\n margin-left: -$gutter / 2;\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%; // Reset earlier grid tiers\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-right: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n & > * {\n flex: 0 0 100% / $count;\n max-width: 100% / $count;\n }\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n .order#{$infix}-first { order: -1; }\n\n .order#{$infix}-last { order: $columns + 1; }\n\n @for $i from 0 through $columns {\n .order#{$infix}-#{$i} { order: $i; }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n }\n}\n","//\n// Basic Bootstrap table\n//\n\n.table {\n width: 100%;\n margin-bottom: $spacer;\n color: $table-color;\n background-color: $table-bg; // Reset for nesting within parents with `background-color`.\n\n th,\n td {\n padding: $table-cell-padding;\n vertical-align: top;\n border-top: $table-border-width solid $table-border-color;\n }\n\n thead th {\n vertical-align: bottom;\n border-bottom: (2 * $table-border-width) solid $table-border-color;\n }\n\n tbody + tbody {\n border-top: (2 * $table-border-width) solid $table-border-color;\n }\n}\n\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n th,\n td {\n padding: $table-cell-padding-sm;\n }\n}\n\n\n// Border versions\n//\n// Add or remove borders all around the table and between all the columns.\n\n.table-bordered {\n border: $table-border-width solid $table-border-color;\n\n th,\n td {\n border: $table-border-width solid $table-border-color;\n }\n\n thead {\n th,\n td {\n border-bottom-width: 2 * $table-border-width;\n }\n }\n}\n\n.table-borderless {\n th,\n td,\n thead th,\n tbody + tbody {\n border: 0;\n }\n}\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n tbody tr:nth-of-type(#{$table-striped-order}) {\n background-color: $table-accent-bg;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n tbody tr {\n @include hover() {\n color: $table-hover-color;\n background-color: $table-hover-bg;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n@each $color, $value in $theme-colors {\n @include table-row-variant($color, theme-color-level($color, $table-bg-level), theme-color-level($color, $table-border-level));\n}\n\n@include table-row-variant(active, $table-active-bg);\n\n\n// Dark styles\n//\n// Same table markup, but inverted color scheme: dark background and light text.\n\n// stylelint-disable-next-line no-duplicate-selectors\n.table {\n .thead-dark {\n th {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n border-color: $table-dark-border-color;\n }\n }\n\n .thead-light {\n th {\n color: $table-head-color;\n background-color: $table-head-bg;\n border-color: $table-border-color;\n }\n }\n}\n\n.table-dark {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n\n th,\n td,\n thead th {\n border-color: $table-dark-border-color;\n }\n\n &.table-bordered {\n border: 0;\n }\n\n &.table-striped {\n tbody tr:nth-of-type(#{$table-striped-order}) {\n background-color: $table-dark-accent-bg;\n }\n }\n\n &.table-hover {\n tbody tr {\n @include hover() {\n color: $table-dark-hover-color;\n background-color: $table-dark-hover-bg;\n }\n }\n }\n}\n\n\n// Responsive tables\n//\n// Generate series of `.table-responsive-*` classes for configuring the screen\n// size of where your table will overflow.\n\n.table-responsive {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\n $infix: breakpoint-infix($next, $grid-breakpoints);\n\n &#{$infix} {\n @include media-breakpoint-down($breakpoint) {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n\n // Prevent double border on horizontal scroll due to use of `display: block;`\n > .table-bordered {\n border: 0;\n }\n }\n }\n }\n}\n","// Tables\n\n@mixin table-row-variant($state, $background, $border: null) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table-#{$state} {\n &,\n > th,\n > td {\n background-color: $background;\n }\n\n @if $border != null {\n th,\n td,\n thead th,\n tbody + tbody {\n border-color: $border;\n }\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover {\n $hover-background: darken($background, 5%);\n\n .table-#{$state} {\n @include hover() {\n background-color: $hover-background;\n\n > td,\n > th {\n background-color: $hover-background;\n }\n }\n }\n }\n}\n","// Bootstrap functions\n//\n// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.\n\n// Ascending\n// Used to evaluate Sass maps like our grid breakpoints.\n@mixin _assert-ascending($map, $map-name) {\n $prev-key: null;\n $prev-num: null;\n @each $key, $num in $map {\n @if $prev-num == null or unit($num) == \"%\" or unit($prev-num) == \"%\" {\n // Do nothing\n } @else if not comparable($prev-num, $num) {\n @warn \"Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n } @else if $prev-num >= $num {\n @warn \"Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n }\n $prev-key: $key;\n $prev-num: $num;\n }\n}\n\n// Starts at zero\n// Used to ensure the min-width of the lowest breakpoint starts at 0.\n@mixin _assert-starts-at-zero($map, $map-name: \"$grid-breakpoints\") {\n $values: map-values($map);\n $first-value: nth($values, 1);\n @if $first-value != 0 {\n @warn \"First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.\";\n }\n}\n\n// Replace `$search` with `$replace` in `$string`\n// Used on our SVG icon backgrounds for custom forms.\n//\n// @author Hugo Giraudel\n// @param {String} $string - Initial string\n// @param {String} $search - Substring to replace\n// @param {String} $replace ('') - New value\n// @return {String} - Updated string\n@function str-replace($string, $search, $replace: \"\") {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n// See https://codepen.io/kevinweber/pen/dXWoRw\n@function escape-svg($string) {\n @if str-index($string, \"data:image/svg+xml\") {\n @each $char, $encoded in $escaped-characters {\n $string: str-replace($string, $char, $encoded);\n }\n }\n\n @return $string;\n}\n\n// Color contrast\n@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {\n $r: red($color);\n $g: green($color);\n $b: blue($color);\n\n $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;\n\n @if ($yiq >= $yiq-contrasted-threshold) {\n @return $dark;\n } @else {\n @return $light;\n }\n}\n\n// Retrieve color Sass maps\n@function color($key: \"blue\") {\n @return map-get($colors, $key);\n}\n\n@function theme-color($key: \"primary\") {\n @return map-get($theme-colors, $key);\n}\n\n@function gray($key: \"100\") {\n @return map-get($grays, $key);\n}\n\n// Request a theme color level\n@function theme-color-level($color-name: \"primary\", $level: 0) {\n $color: theme-color($color-name);\n $color-base: if($level > 0, $black, $white);\n $level: abs($level);\n\n @return mix($color-base, $color, $level * $theme-color-interval);\n}\n\n// Return valid calc\n@function add($value1, $value2, $return-calc: true) {\n @if $value1 == null {\n @return $value2;\n }\n\n @if $value2 == null {\n @return $value1;\n }\n\n @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {\n @return $value1 + $value2;\n }\n\n @return if($return-calc == true, calc(#{$value1} + #{$value2}), $value1 + unquote(\" + \") + $value2);\n}\n\n@function subtract($value1, $value2, $return-calc: true) {\n @if $value1 == null and $value2 == null {\n @return null;\n }\n\n @if $value1 == null {\n @return -$value2;\n }\n\n @if $value2 == null {\n @return $value1;\n }\n\n @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {\n @return $value1 - $value2;\n }\n\n @return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + unquote(\" - \") + $value2);\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Textual form controls\n//\n\n.form-control {\n display: block;\n width: 100%;\n height: $input-height;\n padding: $input-padding-y $input-padding-x;\n font-family: $input-font-family;\n @include font-size($input-font-size);\n font-weight: $input-font-weight;\n line-height: $input-line-height;\n color: $input-color;\n background-color: $input-bg;\n background-clip: padding-box;\n border: $input-border-width solid $input-border-color;\n\n // Note: This has no effect on `s in CSS.\n @include border-radius($input-border-radius, 0);\n\n @include box-shadow($input-box-shadow);\n @include transition($input-transition);\n\n // Unstyle the caret on ` receives focus\n // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to\n // match the appearance of the native widget.\n // See https://github.com/twbs/bootstrap/issues/19398.\n color: $input-color;\n background-color: $input-bg;\n }\n}\n\n// Make file inputs better match text inputs by forcing them to new lines.\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n\n//\n// Labels\n//\n\n// For use with horizontal and inline forms, when you need the label (or legend)\n// text to align with the form controls.\n.col-form-label {\n padding-top: add($input-padding-y, $input-border-width);\n padding-bottom: add($input-padding-y, $input-border-width);\n margin-bottom: 0; // Override the `` elements\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n\n//\n// Alternate buttons\n//\n\n@each $color, $value in $theme-colors {\n .btn-#{$color} {\n @include button-variant($value, $value);\n }\n}\n\n@each $color, $value in $theme-colors {\n .btn-outline-#{$color} {\n @include button-outline-variant($value);\n }\n}\n\n\n//\n// Link buttons\n//\n\n// Make a button look and behave like a link\n.btn-link {\n font-weight: $font-weight-normal;\n color: $link-color;\n text-decoration: $link-decoration;\n\n @include hover() {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n\n &:focus,\n &.focus {\n text-decoration: $link-hover-decoration;\n box-shadow: none;\n }\n\n &:disabled,\n &.disabled {\n color: $btn-link-disabled-color;\n pointer-events: none;\n }\n\n // No need for an active state here\n}\n\n\n//\n// Button Sizes\n//\n\n.btn-lg {\n @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-line-height-lg, $btn-border-radius-lg);\n}\n\n.btn-sm {\n @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-line-height-sm, $btn-border-radius-sm);\n}\n\n\n//\n// Block button\n//\n\n.btn-block {\n display: block;\n width: 100%;\n\n // Vertically space out multiple block buttons\n + .btn-block {\n margin-top: $btn-block-spacing-y;\n }\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {\n color: color-yiq($background);\n @include gradient-bg($background);\n border-color: $border;\n @include box-shadow($btn-box-shadow);\n\n @include hover() {\n color: color-yiq($hover-background);\n @include gradient-bg($hover-background);\n border-color: $hover-border;\n }\n\n &:focus,\n &.focus {\n color: color-yiq($hover-background);\n @include gradient-bg($hover-background);\n border-color: $hover-border;\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n color: color-yiq($background);\n background-color: $background;\n border-color: $border;\n // Remove CSS gradients if they're enabled\n @if $enable-gradients {\n background-image: none;\n }\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n @if $enable-gradients {\n background-image: none; // Remove the gradient for the pressed/active state\n }\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n }\n}\n\n@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {\n color: $color;\n border-color: $color;\n\n @include hover() {\n color: $color-hover;\n background-color: $active-background;\n border-color: $active-border;\n }\n\n &:focus,\n &.focus {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n\n &.disabled,\n &:disabled {\n color: $color;\n background-color: transparent;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n }\n }\n}\n\n// Button sizes\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n // Manually declare to provide an override to the browser default\n @include border-radius($border-radius, 0);\n}\n",".fade {\n @include transition($transition-fade);\n\n &:not(.show) {\n opacity: 0;\n }\n}\n\n.collapse {\n &:not(.show) {\n display: none;\n }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n @include transition($transition-collapse);\n}\n","// The dropdown wrapper (`
    `)\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n\n // Generate the caret automatically\n @include caret();\n}\n\n// The dropdown menu\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: $zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: $dropdown-min-width;\n padding: $dropdown-padding-y 0;\n margin: $dropdown-spacer 0 0; // override default ul\n @include font-size($dropdown-font-size);\n color: $dropdown-color;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n list-style: none;\n background-color: $dropdown-bg;\n background-clip: padding-box;\n border: $dropdown-border-width solid $dropdown-border-color;\n @include border-radius($dropdown-border-radius);\n @include box-shadow($dropdown-box-shadow);\n}\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .dropdown-menu#{$infix}-left {\n right: auto;\n left: 0;\n }\n\n .dropdown-menu#{$infix}-right {\n right: 0;\n left: auto;\n }\n }\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n// Just add .dropup after the standard .dropdown class and you're set.\n.dropup {\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: $dropdown-spacer;\n }\n\n .dropdown-toggle {\n @include caret(up);\n }\n}\n\n.dropright {\n .dropdown-menu {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: $dropdown-spacer;\n }\n\n .dropdown-toggle {\n @include caret(right);\n &::after {\n vertical-align: 0;\n }\n }\n}\n\n.dropleft {\n .dropdown-menu {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: $dropdown-spacer;\n }\n\n .dropdown-toggle {\n @include caret(left);\n &::before {\n vertical-align: 0;\n }\n }\n}\n\n// When enabled Popper.js, reset basic dropdown position\n// stylelint-disable-next-line no-duplicate-selectors\n.dropdown-menu {\n &[x-placement^=\"top\"],\n &[x-placement^=\"right\"],\n &[x-placement^=\"bottom\"],\n &[x-placement^=\"left\"] {\n right: auto;\n bottom: auto;\n }\n}\n\n// Dividers (basically an `
    `) within the dropdown\n.dropdown-divider {\n @include nav-divider($dropdown-divider-bg, $dropdown-divider-margin-y, true);\n}\n\n// Links, buttons, and more within the dropdown menu\n//\n// `
    ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Bt,popperConfig:null},$t={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Jt=function(){function t(t,e){if("undefined"==typeof kt)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var n=t.prototype;return n.enable=function(){this._isEnabled=!0},n.disable=function(){this._isEnabled=!1},n.toggleEnabled=function(){this._isEnabled=!this._isEnabled},n.toggle=function(t){if(this._isEnabled)if(t){var n=this.constructor.DATA_KEY,i=e(t.currentTarget).data(n);i||(i=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(e(this.getTipElement()).hasClass("show"))return void this._leave(null,this);this._enter(null,this)}},n.dispose=function(){clearTimeout(this._timeout),e.removeData(this.element,this.constructor.DATA_KEY),e(this.element).off(this.constructor.EVENT_KEY),e(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&e(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},n.show=function(){var t=this;if("none"===e(this.element).css("display"))throw new Error("Please use show on visible elements");var n=e.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){e(this.element).trigger(n);var i=s.findShadowRoot(this.element),o=e.contains(null!==i?i:this.element.ownerDocument.documentElement,this.element);if(n.isDefaultPrevented()||!o)return;var r=this.getTipElement(),a=s.getUID(this.constructor.NAME);r.setAttribute("id",a),this.element.setAttribute("aria-describedby",a),this.setContent(),this.config.animation&&e(r).addClass("fade");var l="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,c=this._getAttachment(l);this.addAttachmentClass(c);var h=this._getContainer();e(r).data(this.constructor.DATA_KEY,this),e.contains(this.element.ownerDocument.documentElement,this.tip)||e(r).appendTo(h),e(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new kt(this.element,r,this._getPopperConfig(c)),e(r).addClass("show"),"ontouchstart"in document.documentElement&&e(document.body).children().on("mouseover",null,e.noop);var u=function(){t.config.animation&&t._fixTransition();var n=t._hoverState;t._hoverState=null,e(t.element).trigger(t.constructor.Event.SHOWN),"out"===n&&t._leave(null,t)};if(e(this.tip).hasClass("fade")){var f=s.getTransitionDurationFromElement(this.tip);e(this.tip).one(s.TRANSITION_END,u).emulateTransitionEnd(f)}else u()}},n.hide=function(t){var n=this,i=this.getTipElement(),o=e.Event(this.constructor.Event.HIDE),r=function(){"show"!==n._hoverState&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),e(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),t&&t()};if(e(this.element).trigger(o),!o.isDefaultPrevented()){if(e(i).removeClass("show"),"ontouchstart"in document.documentElement&&e(document.body).children().off("mouseover",null,e.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,e(this.tip).hasClass("fade")){var a=s.getTransitionDurationFromElement(i);e(i).one(s.TRANSITION_END,r).emulateTransitionEnd(a)}else r();this._hoverState=""}},n.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},n.isWithContent=function(){return Boolean(this.getTitle())},n.addAttachmentClass=function(t){e(this.getTipElement()).addClass("bs-tooltip-"+t)},n.getTipElement=function(){return this.tip=this.tip||e(this.config.template)[0],this.tip},n.setContent=function(){var t=this.getTipElement();this.setElementContent(e(t.querySelectorAll(".tooltip-inner")),this.getTitle()),e(t).removeClass("fade show")},n.setElementContent=function(t,n){"object"!=typeof n||!n.nodeType&&!n.jquery?this.config.html?(this.config.sanitize&&(n=Wt(n,this.config.whiteList,this.config.sanitizeFn)),t.html(n)):t.text(n):this.config.html?e(n).parent().is(t)||t.empty().append(n):t.text(e(n).text())},n.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},n._getPopperConfig=function(t){var e=this;return o({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},n._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=o({},e.offsets,t.config.offset(e.offsets,t.element)||{}),e}:e.offset=this.config.offset,e},n._getContainer=function(){return!1===this.config.container?document.body:s.isElement(this.config.container)?e(this.config.container):e(document).find(this.config.container)},n._getAttachment=function(t){return Kt[t.toUpperCase()]},n._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(n){if("click"===n)e(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==n){var i="hover"===n?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,o="hover"===n?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;e(t.element).on(i,t.config.selector,(function(e){return t._enter(e)})).on(o,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},e(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=o({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},n._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},n._enter=function(t,n){var i=this.constructor.DATA_KEY;(n=n||e(t.currentTarget).data(i))||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(i,n)),t&&(n._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e(n.getTipElement()).hasClass("show")||"show"===n._hoverState?n._hoverState="show":(clearTimeout(n._timeout),n._hoverState="show",n.config.delay&&n.config.delay.show?n._timeout=setTimeout((function(){"show"===n._hoverState&&n.show()}),n.config.delay.show):n.show())},n._leave=function(t,n){var i=this.constructor.DATA_KEY;(n=n||e(t.currentTarget).data(i))||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(i,n)),t&&(n._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState="out",n.config.delay&&n.config.delay.hide?n._timeout=setTimeout((function(){"out"===n._hoverState&&n.hide()}),n.config.delay.hide):n.hide())},n._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},n._getConfig=function(t){var n=e(this.element).data();return Object.keys(n).forEach((function(t){-1!==zt.indexOf(t)&&delete n[t]})),"number"==typeof(t=o({},this.constructor.Default,n,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),s.typeCheckConfig(Ut,t,this.constructor.DefaultType),t.sanitize&&(t.template=Wt(t.template,t.whiteList,t.sanitizeFn)),t},n._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},n._cleanTipClass=function(){var t=e(this.getTipElement()),n=t.attr("class").match(Yt);null!==n&&n.length&&t.removeClass(n.join(""))},n._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},n._fixTransition=function(){var t=this.getTipElement(),n=this.config.animation;null===t.getAttribute("x-placement")&&(e(t).removeClass("fade"),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},t._jQueryInterface=function(n){return this.each((function(){var i=e(this).data("bs.tooltip"),o="object"==typeof n&&n;if((i||!/dispose|hide/.test(n))&&(i||(i=new t(this,o),e(this).data("bs.tooltip",i)),"string"==typeof n)){if("undefined"==typeof i[n])throw new TypeError('No method named "'+n+'"');i[n]()}}))},i(t,null,[{key:"VERSION",get:function(){return"4.5.2"}},{key:"Default",get:function(){return Gt}},{key:"NAME",get:function(){return Ut}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return $t}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Xt}}]),t}();e.fn[Ut]=Jt._jQueryInterface,e.fn[Ut].Constructor=Jt,e.fn[Ut].noConflict=function(){return e.fn[Ut]=Vt,Jt._jQueryInterface};var Zt="popover",te=e.fn[Zt],ee=new RegExp("(^|\\s)bs-popover\\S+","g"),ne=o({},Jt.Default,{placement:"right",trigger:"click",content:"",template:''}),ie=o({},Jt.DefaultType,{content:"(string|element|function)"}),oe={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},re=function(t){var n,o;function r(){return t.apply(this,arguments)||this}o=t,(n=r).prototype=Object.create(o.prototype),n.prototype.constructor=n,n.__proto__=o;var s=r.prototype;return s.isWithContent=function(){return this.getTitle()||this._getContent()},s.addAttachmentClass=function(t){e(this.getTipElement()).addClass("bs-popover-"+t)},s.getTipElement=function(){return this.tip=this.tip||e(this.config.template)[0],this.tip},s.setContent=function(){var t=e(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var n=this._getContent();"function"==typeof n&&(n=n.call(this.element)),this.setElementContent(t.find(".popover-body"),n),t.removeClass("fade show")},s._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},s._cleanTipClass=function(){var t=e(this.getTipElement()),n=t.attr("class").match(ee);null!==n&&n.length>0&&t.removeClass(n.join(""))},r._jQueryInterface=function(t){return this.each((function(){var n=e(this).data("bs.popover"),i="object"==typeof t?t:null;if((n||!/dispose|hide/.test(t))&&(n||(n=new r(this,i),e(this).data("bs.popover",n)),"string"==typeof t)){if("undefined"==typeof n[t])throw new TypeError('No method named "'+t+'"');n[t]()}}))},i(r,null,[{key:"VERSION",get:function(){return"4.5.2"}},{key:"Default",get:function(){return ne}},{key:"NAME",get:function(){return Zt}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return oe}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return ie}}]),r}(Jt);e.fn[Zt]=re._jQueryInterface,e.fn[Zt].Constructor=re,e.fn[Zt].noConflict=function(){return e.fn[Zt]=te,re._jQueryInterface};var se="scrollspy",ae=e.fn[se],le={offset:10,method:"auto",target:""},ce={offset:"number",method:"string",target:"(string|element)"},he=function(){function t(t,n){var i=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(n),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,e(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return i._process(t)})),this.refresh(),this._process()}var n=t.prototype;return n.refresh=function(){var t=this,n=this._scrollElement===this._scrollElement.window?"offset":"position",i="auto"===this._config.method?n:this._config.method,o="position"===i?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var n,r=s.getSelectorFromElement(t);if(r&&(n=document.querySelector(r)),n){var a=n.getBoundingClientRect();if(a.width||a.height)return[e(n)[i]().top+o,r]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},n.dispose=function(){e.removeData(this._element,"bs.scrollspy"),e(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},n._getConfig=function(t){if("string"!=typeof(t=o({},le,"object"==typeof t&&t?t:{})).target&&s.isElement(t.target)){var n=e(t.target).attr("id");n||(n=s.getUID(se),e(t.target).attr("id",n)),t.target="#"+n}return s.typeCheckConfig(se,t,ce),t},n._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},n._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},n._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},n._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t li > .active":".active";i=(i=e.makeArray(e(o).find(a)))[i.length-1]}var l=e.Event("hide.bs.tab",{relatedTarget:this._element}),c=e.Event("show.bs.tab",{relatedTarget:i});if(i&&e(i).trigger(l),e(this._element).trigger(c),!c.isDefaultPrevented()&&!l.isDefaultPrevented()){r&&(n=document.querySelector(r)),this._activate(this._element,o);var h=function(){var n=e.Event("hidden.bs.tab",{relatedTarget:t._element}),o=e.Event("shown.bs.tab",{relatedTarget:i});e(i).trigger(n),e(t._element).trigger(o)};n?this._activate(n,n.parentNode,h):h()}}},n.dispose=function(){e.removeData(this._element,"bs.tab"),this._element=null},n._activate=function(t,n,i){var o=this,r=(!n||"UL"!==n.nodeName&&"OL"!==n.nodeName?e(n).children(".active"):e(n).find("> li > .active"))[0],a=i&&r&&e(r).hasClass("fade"),l=function(){return o._transitionComplete(t,r,i)};if(r&&a){var c=s.getTransitionDurationFromElement(r);e(r).removeClass("show").one(s.TRANSITION_END,l).emulateTransitionEnd(c)}else l()},n._transitionComplete=function(t,n,i){if(n){e(n).removeClass("active");var o=e(n.parentNode).find("> .dropdown-menu .active")[0];o&&e(o).removeClass("active"),"tab"===n.getAttribute("role")&&n.setAttribute("aria-selected",!1)}if(e(t).addClass("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),s.reflow(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&e(t.parentNode).hasClass("dropdown-menu")){var r=e(t).closest(".dropdown")[0];if(r){var a=[].slice.call(r.querySelectorAll(".dropdown-toggle"));e(a).addClass("active")}t.setAttribute("aria-expanded",!0)}i&&i()},t._jQueryInterface=function(n){return this.each((function(){var i=e(this),o=i.data("bs.tab");if(o||(o=new t(this),i.data("bs.tab",o)),"string"==typeof n){if("undefined"==typeof o[n])throw new TypeError('No method named "'+n+'"');o[n]()}}))},i(t,null,[{key:"VERSION",get:function(){return"4.5.2"}}]),t}();e(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),fe._jQueryInterface.call(e(this),"show")})),e.fn.tab=fe._jQueryInterface,e.fn.tab.Constructor=fe,e.fn.tab.noConflict=function(){return e.fn.tab=ue,fe._jQueryInterface};var de=e.fn.toast,pe={animation:"boolean",autohide:"boolean",delay:"number"},me={animation:!0,autohide:!0,delay:500},ge=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var n=t.prototype;return n.show=function(){var t=this,n=e.Event("show.bs.toast");if(e(this._element).trigger(n),!n.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var i=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),e(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),s.reflow(this._element),this._element.classList.add("showing"),this._config.animation){var o=s.getTransitionDurationFromElement(this._element);e(this._element).one(s.TRANSITION_END,i).emulateTransitionEnd(o)}else i()}},n.hide=function(){if(this._element.classList.contains("show")){var t=e.Event("hide.bs.toast");e(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},n.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),e(this._element).off("click.dismiss.bs.toast"),e.removeData(this._element,"bs.toast"),this._element=null,this._config=null},n._getConfig=function(t){return t=o({},me,e(this._element).data(),"object"==typeof t&&t?t:{}),s.typeCheckConfig("toast",t,this.constructor.DefaultType),t},n._setListeners=function(){var t=this;e(this._element).on("click.dismiss.bs.toast",'[data-dismiss="toast"]',(function(){return t.hide()}))},n._close=function(){var t=this,n=function(){t._element.classList.add("hide"),e(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var i=s.getTransitionDurationFromElement(this._element);e(this._element).one(s.TRANSITION_END,n).emulateTransitionEnd(i)}else n()},n._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(n){return this.each((function(){var i=e(this),o=i.data("bs.toast");if(o||(o=new t(this,"object"==typeof n&&n),i.data("bs.toast",o)),"string"==typeof n){if("undefined"==typeof o[n])throw new TypeError('No method named "'+n+'"');o[n](this)}}))},i(t,null,[{key:"VERSION",get:function(){return"4.5.2"}},{key:"DefaultType",get:function(){return pe}},{key:"Default",get:function(){return me}}]),t}();e.fn.toast=ge._jQueryInterface,e.fn.toast.Constructor=ge,e.fn.toast.noConflict=function(){return e.fn.toast=de,ge._jQueryInterface},t.Alert=c,t.Button=u,t.Carousel=v,t.Collapse=T,t.Dropdown=Lt,t.Modal=Ht,t.Popover=re,t.Scrollspy=he,t.Tab=fe,t.Toast=ge,t.Tooltip=Jt,t.Util=s,Object.defineProperty(t,"__esModule",{value:!0})})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap={},t.jQuery)}(this,(function(t,e){"use strict";function n(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var i=n(e);function o(t,e){for(var n=0;n=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};u.jQueryDetection(),i.default.fn.emulateTransitionEnd=function(t){var e=this,n=!1;return i.default(this).one(u.TRANSITION_END,(function(){n=!0})),setTimeout((function(){n||u.triggerTransitionEnd(e)}),t),this},i.default.event.special[u.TRANSITION_END]={bindType:l,delegateType:l,handle:function(t){if(i.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var f="bs.alert",d=i.default.fn.alert,c=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){i.default.removeData(this._element,f),this._element=null},e._getRootElement=function(t){var e=u.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=i.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=i.default.Event("close.bs.alert");return i.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(i.default(t).removeClass("show"),i.default(t).hasClass("fade")){var n=u.getTransitionDurationFromElement(t);i.default(t).one(u.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){i.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data(f);o||(o=new t(this),n.data(f,o)),"close"===e&&o[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},r(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();i.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',c._handleDismiss(new c)),i.default.fn.alert=c._jQueryInterface,i.default.fn.alert.Constructor=c,i.default.fn.alert.noConflict=function(){return i.default.fn.alert=d,c._jQueryInterface};var h="bs.button",p=i.default.fn.button,m="active",g='[data-toggle^="button"]',_='input:not([type="hidden"])',v=".btn",b=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=i.default(this._element).closest('[data-toggle="buttons"]')[0];if(n){var o=this._element.querySelector(_);if(o){if("radio"===o.type)if(o.checked&&this._element.classList.contains(m))t=!1;else{var r=n.querySelector(".active");r&&i.default(r).removeClass(m)}t&&("checkbox"!==o.type&&"radio"!==o.type||(o.checked=!this._element.classList.contains(m)),this.shouldAvoidTriggerChange||i.default(o).trigger("change")),o.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(m)),t&&i.default(this._element).toggleClass(m))},e.dispose=function(){i.default.removeData(this._element,h),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var o=i.default(this),r=o.data(h);r||(r=new t(this),o.data(h,r)),r.shouldAvoidTriggerChange=n,"toggle"===e&&r[e]()}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();i.default(document).on("click.bs.button.data-api",g,(function(t){var e=t.target,n=e;if(i.default(e).hasClass("btn")||(e=i.default(e).closest(v)[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var o=e.querySelector(_);if(o&&(o.hasAttribute("disabled")||o.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||b._jQueryInterface.call(i.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",g,(function(t){var e=i.default(t.target).closest(v)[0];i.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),i.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide(C)},e.nextWhenVisible=function(){var t=i.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide(S)},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(u.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(D);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)i.default(this._element).one(N,(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var o=t>n?C:S;this._slide(o,this._items[t])}},e.dispose=function(){i.default(this._element).off(".bs.carousel"),i.default.removeData(this._element,E),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=a({},A,t),u.typeCheckConfig(y,t,k),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&i.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&i.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&I[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&I[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};i.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(i.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),i.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(i.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),i.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){t.touchDeltaX=e.originalEvent.touches&&e.originalEvent.touches.length>1?0:e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),i.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n=t===C,i=t===S,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var a=(o+(t===S?-1:1))%this._items.length;return-1===a?this._items[this._items.length-1]:this._items[a]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),o=this._getItemIndex(this._element.querySelector(D)),r=i.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:o,to:n});return i.default(this._element).trigger(r),r},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));i.default(e).removeClass(T);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&i.default(n).addClass(T)}},e._updateInterval=function(){var t=this._activeElement||this._element.querySelector(D);if(t){var e=parseInt(t.getAttribute("data-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}},e._slide=function(t,e){var n,o,r,a=this,s=this._element.querySelector(D),l=this._getItemIndex(s),f=e||s&&this._getItemByDirection(t,s),d=this._getItemIndex(f),c=Boolean(this._interval);if(t===C?(n="carousel-item-left",o="carousel-item-next",r="left"):(n="carousel-item-right",o="carousel-item-prev",r="right"),f&&i.default(f).hasClass(T))this._isSliding=!1;else if(!this._triggerSlideEvent(f,r).isDefaultPrevented()&&s&&f){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(f),this._activeElement=f;var h=i.default.Event(N,{relatedTarget:f,direction:r,from:l,to:d});if(i.default(this._element).hasClass("slide")){i.default(f).addClass(o),u.reflow(f),i.default(s).addClass(n),i.default(f).addClass(n);var p=u.getTransitionDurationFromElement(s);i.default(s).one(u.TRANSITION_END,(function(){i.default(f).removeClass(n+" "+o).addClass(T),i.default(s).removeClass("active "+o+" "+n),a._isSliding=!1,setTimeout((function(){return i.default(a._element).trigger(h)}),0)})).emulateTransitionEnd(p)}else i.default(s).removeClass(T),i.default(f).addClass(T),this._isSliding=!1,i.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this).data(E),o=a({},A,i.default(this).data());"object"==typeof e&&(o=a({},o,e));var r="string"==typeof e?e:o.slide;if(n||(n=new t(this,o),i.default(this).data(E,n)),"number"==typeof e)n.to(e);else if("string"==typeof r){if("undefined"==typeof n[r])throw new TypeError('No method named "'+r+'"');n[r]()}else o.interval&&o.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=u.getSelectorFromElement(this);if(n){var o=i.default(n)[0];if(o&&i.default(o).hasClass("carousel")){var r=a({},i.default(o).data(),i.default(this).data()),s=this.getAttribute("data-slide-to");s&&(r.interval=!1),t._jQueryInterface.call(i.default(o),r),s&&i.default(o).data(E).to(s),e.preventDefault()}}},r(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return A}}]),t}();i.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",O._dataApiClickHandler),i.default(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e0&&(this._selector=a,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){i.default(this._element).hasClass(P)?this.hide():this.show()},e.show=function(){var e,n,o=this;if(!(this._isTransitioning||i.default(this._element).hasClass(P)||(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof o._config.parent?t.getAttribute("data-parent")===o._config.parent:t.classList.contains(F)}))).length&&(e=null),e&&(n=i.default(e).not(this._selector).data(j))&&n._isTransitioning))){var r=i.default.Event("show.bs.collapse");if(i.default(this._element).trigger(r),!r.isDefaultPrevented()){e&&(t._jQueryInterface.call(i.default(e).not(this._selector),"hide"),n||i.default(e).data(j,null));var a=this._getDimension();i.default(this._element).removeClass(F).addClass(R),this._element.style[a]=0,this._triggerArray.length&&i.default(this._triggerArray).removeClass(H).attr("aria-expanded",!0),this.setTransitioning(!0);var s="scroll"+(a[0].toUpperCase()+a.slice(1)),l=u.getTransitionDurationFromElement(this._element);i.default(this._element).one(u.TRANSITION_END,(function(){i.default(o._element).removeClass(R).addClass("collapse show"),o._element.style[a]="",o.setTransitioning(!1),i.default(o._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(l),this._element.style[a]=this._element[s]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&i.default(this._element).hasClass(P)){var e=i.default.Event("hide.bs.collapse");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",u.reflow(this._element),i.default(this._element).addClass(R).removeClass("collapse show");var o=this._triggerArray.length;if(o>0)for(var r=0;r=0)return 1;return 0}(),Y=U&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),V))}};function z(t){return t&&"[object Function]"==={}.toString.call(t)}function K(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function X(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function G(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=K(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:G(X(t))}function $(t){return t&&t.referenceNode?t.referenceNode:t}var J=U&&!(!window.MSInputMethodContext||!document.documentMode),Z=U&&/MSIE 10/.test(navigator.userAgent);function tt(t){return 11===t?J:10===t?Z:J||Z}function et(t){if(!t)return document.documentElement;for(var e=tt(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===K(n,"position")?et(n):n:t?t.ownerDocument.documentElement:document.documentElement}function nt(t){return null!==t.parentNode?nt(t.parentNode):t}function it(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var a,s,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(s=(a=l).nodeName)||"HTML"!==s&&et(a.firstElementChild)!==a?et(l):l;var u=nt(t);return u.host?it(u.host,e):it(t,nt(e).host)}function ot(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===e?"scrollTop":"scrollLeft",i=t.nodeName;if("BODY"===i||"HTML"===i){var o=t.ownerDocument.documentElement,r=t.ownerDocument.scrollingElement||o;return r[n]}return t[n]}function rt(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=ot(e,"top"),o=ot(e,"left"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}function at(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+i+"Width"])}function st(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],tt(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function lt(t){var e=t.body,n=t.documentElement,i=tt(10)&&getComputedStyle(n);return{height:st("Height",e,n,i),width:st("Width",e,n,i)}}var ut=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},ft=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=tt(10),o="HTML"===e.nodeName,r=pt(t),a=pt(e),s=G(t),l=K(e),u=parseFloat(l.borderTopWidth),f=parseFloat(l.borderLeftWidth);n&&o&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var d=ht({top:r.top-a.top-u,left:r.left-a.left-f,width:r.width,height:r.height});if(d.marginTop=0,d.marginLeft=0,!i&&o){var c=parseFloat(l.marginTop),h=parseFloat(l.marginLeft);d.top-=u-c,d.bottom-=u-c,d.left-=f-h,d.right-=f-h,d.marginTop=c,d.marginLeft=h}return(i&&!n?e.contains(s):e===s&&"BODY"!==s.nodeName)&&(d=rt(d,e)),d}function gt(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=mt(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:ot(n),s=e?0:ot(n,"left"),l={top:a-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:o,height:r};return ht(l)}function _t(t){var e=t.nodeName;if("BODY"===e||"HTML"===e)return!1;if("fixed"===K(t,"position"))return!0;var n=X(t);return!!n&&_t(n)}function vt(t){if(!t||!t.parentElement||tt())return document.documentElement;for(var e=t.parentElement;e&&"none"===K(e,"transform");)e=e.parentElement;return e||document.documentElement}function bt(t,e,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},a=o?vt(t):it(t,$(e));if("viewport"===i)r=gt(a,o);else{var s=void 0;"scrollParent"===i?"BODY"===(s=G(X(e))).nodeName&&(s=t.ownerDocument.documentElement):s="window"===i?t.ownerDocument.documentElement:i;var l=mt(s,a,o);if("HTML"!==s.nodeName||_t(a))r=l;else{var u=lt(t.ownerDocument),f=u.height,d=u.width;r.top+=l.top-l.marginTop,r.bottom=f+l.top,r.left+=l.left-l.marginLeft,r.right=d+l.left}}var c="number"==typeof(n=n||0);return r.left+=c?n:n.left||0,r.top+=c?n:n.top||0,r.right-=c?n:n.right||0,r.bottom-=c?n:n.bottom||0,r}function yt(t){return t.width*t.height}function Et(t,e,n,i,o){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var a=bt(n,i,r,o),s={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},l=Object.keys(s).map((function(t){return ct({key:t},s[t],{area:yt(s[t])})})).sort((function(t,e){return e.area-t.area})),u=l.filter((function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight})),f=u.length>0?u[0].key:l[0].key,d=t.split("-")[1];return f+(d?"-"+d:"")}function wt(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=i?vt(e):it(e,$(n));return mt(n,o,i)}function Tt(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function Ct(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function St(t,e,n){n=n.split("-")[0];var i=Tt(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),a=r?"top":"left",s=r?"left":"top",l=r?"height":"width",u=r?"width":"height";return o[a]=e[a]+e[l]/2-i[l]/2,o[s]=n===s?e[s]-i[u]:e[Ct(s)],o}function Nt(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function Dt(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex((function(t){return t.name===n}));var i=Nt(t,(function(t){return t.name===n}));return t.indexOf(i)}(t,0,n))).forEach((function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&z(n)&&(e.offsets.popper=ht(e.offsets.popper),e.offsets.reference=ht(e.offsets.reference),e=n(e,t))})),e}function At(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=wt(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=Et(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=St(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=Dt(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function kt(t,e){return t.some((function(t){var n=t.name;return t.enabled&&n===e}))}function It(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=Qt.indexOf(t),i=Qt.slice(n+1).concat(Qt.slice(0,n));return e?i.reverse():i}var Ut={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,r=o.reference,a=o.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",u=s?"width":"height",f={start:dt({},l,r[l]),end:dt({},l,r[l]+r[u]-a[u])};t.offsets.popper=ct({},a,f[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n,i=e.offset,o=t.placement,r=t.offsets,a=r.popper,s=r.reference,l=o.split("-")[0];return n=Rt(+i)?[+i,0]:function(t,e,n,i){var o=[0,0],r=-1!==["right","left"].indexOf(i),a=t.split(/(\+|\-)/).map((function(t){return t.trim()})),s=a.indexOf(Nt(a,(function(t){return-1!==t.search(/,|\s/)})));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,u=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return u=u.map((function(t,i){var o=(1===i?!r:r)?"height":"width",a=!1;return t.reduce((function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,a=!0,t):a?(t[t.length-1]+=e,a=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],a=o[2];return r?0===a.indexOf("%")?ht("%p"===a?n:i)[e]/100*r:"vh"===a||"vw"===a?("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r:r:t}(t,o,e,n)}))})),u.forEach((function(t,e){t.forEach((function(n,i){Rt(n)&&(o[e]+=n*("-"===t[i-1]?-1:1))}))})),o}(i,a,s,l),"left"===l?(a.top+=n[0],a.left-=n[1]):"right"===l?(a.top+=n[0],a.left+=n[1]):"top"===l?(a.left+=n[0],a.top-=n[1]):"bottom"===l&&(a.left+=n[0],a.top+=n[1]),t.popper=a,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||et(t.instance.popper);t.instance.reference===n&&(n=et(n));var i=It("transform"),o=t.instance.popper.style,r=o.top,a=o.left,s=o[i];o.top="",o.left="",o[i]="";var l=bt(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=r,o.left=a,o[i]=s,e.boundaries=l;var u=e.priority,f=t.offsets.popper,d={primary:function(t){var n=f[t];return f[t]l[t]&&!e.escapeWithReference&&(i=Math.min(f[n],l[t]-("right"===t?f.width:f.height))),dt({},n,i)}};return u.forEach((function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";f=ct({},f,d[e](t))})),t.offsets.popper=f,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,a=-1!==["top","bottom"].indexOf(o),s=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[s]r(i[s])&&(t.offsets.popper[l]=r(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!qt(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,a=r.popper,s=r.reference,l=-1!==["left","right"].indexOf(o),u=l?"height":"width",f=l?"Top":"Left",d=f.toLowerCase(),c=l?"left":"top",h=l?"bottom":"right",p=Tt(i)[u];s[h]-pa[h]&&(t.offsets.popper[d]+=s[d]+p-a[h]),t.offsets.popper=ht(t.offsets.popper);var m=s[d]+s[u]/2-p/2,g=K(t.instance.popper),_=parseFloat(g["margin"+f]),v=parseFloat(g["border"+f+"Width"]),b=m-t.offsets.popper[d]-_-v;return b=Math.max(Math.min(a[u]-p,b),0),t.arrowElement=i,t.offsets.arrow=(dt(n={},d,Math.round(b)),dt(n,c,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(kt(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=bt(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split("-")[0],o=Ct(i),r=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case"flip":a=[i,o];break;case"clockwise":a=Wt(i);break;case"counterclockwise":a=Wt(i,!0);break;default:a=e.behavior}return a.forEach((function(s,l){if(i!==s||a.length===l+1)return t;i=t.placement.split("-")[0],o=Ct(i);var u=t.offsets.popper,f=t.offsets.reference,d=Math.floor,c="left"===i&&d(u.right)>d(f.left)||"right"===i&&d(u.left)d(f.top)||"bottom"===i&&d(u.top)d(n.right),m=d(u.top)d(n.bottom),_="left"===i&&h||"right"===i&&p||"top"===i&&m||"bottom"===i&&g,v=-1!==["top","bottom"].indexOf(i),b=!!e.flipVariations&&(v&&"start"===r&&h||v&&"end"===r&&p||!v&&"start"===r&&m||!v&&"end"===r&&g),y=!!e.flipVariationsByContent&&(v&&"start"===r&&p||v&&"end"===r&&h||!v&&"start"===r&&g||!v&&"end"===r&&m),E=b||y;(c||_||E)&&(t.flipped=!0,(c||_)&&(i=a[l+1]),E&&(r=function(t){return"end"===t?"start":"start"===t?"end":t}(r)),t.placement=i+(r?"-"+r:""),t.offsets.popper=ct({},t.offsets.popper,St(t.instance.popper,t.offsets.reference,t.placement)),t=Dt(t.instance.modifiers,t,"flip"))})),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return o[a?"left":"top"]=r[n]-(s?o[a?"width":"height"]:0),t.placement=Ct(e),t.offsets.popper=ht(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!qt(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=Nt(t.instance.modifiers,(function(t){return"preventOverflow"===t.name})).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};ut(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=Y(this.update.bind(this)),this.options=ct({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(ct({},t.Defaults.modifiers,o.modifiers)).forEach((function(e){i.options.modifiers[e]=ct({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return ct({name:t},i.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&z(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)})),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return ft(t,[{key:"update",value:function(){return At.call(this)}},{key:"destroy",value:function(){return Ot.call(this)}},{key:"enableEventListeners",value:function(){return Pt.call(this)}},{key:"disableEventListeners",value:function(){return Ft.call(this)}}]),t}();Vt.Utils=("undefined"!=typeof window?window:global).PopperUtils,Vt.placements=Bt,Vt.Defaults=Ut;var Yt=Vt,zt="dropdown",Kt="bs.dropdown",Xt=i.default.fn[zt],Gt=new RegExp("38|40|27"),$t="disabled",Jt="show",Zt="dropdown-menu-right",te="hide.bs.dropdown",ee="hidden.bs.dropdown",ne="click.bs.dropdown.data-api",ie="keydown.bs.dropdown.data-api",oe='[data-toggle="dropdown"]',re=".dropdown-menu",ae={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},se={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},le=function(){function t(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e=t.prototype;return e.toggle=function(){if(!this._element.disabled&&!i.default(this._element).hasClass($t)){var e=i.default(this._menu).hasClass(Jt);t._clearMenus(),e||this.show(!0)}},e.show=function(e){if(void 0===e&&(e=!1),!(this._element.disabled||i.default(this._element).hasClass($t)||i.default(this._menu).hasClass(Jt))){var n={relatedTarget:this._element},o=i.default.Event("show.bs.dropdown",n),r=t._getParentFromElement(this._element);if(i.default(r).trigger(o),!o.isDefaultPrevented()){if(!this._inNavbar&&e){if("undefined"==typeof Yt)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");var a=this._element;"parent"===this._config.reference?a=r:u.isElement(this._config.reference)&&(a=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(a=this._config.reference[0])),"scrollParent"!==this._config.boundary&&i.default(r).addClass("position-static"),this._popper=new Yt(a,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===i.default(r).closest(".navbar-nav").length&&i.default(document.body).children().on("mouseover",null,i.default.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),i.default(this._menu).toggleClass(Jt),i.default(r).toggleClass(Jt).trigger(i.default.Event("shown.bs.dropdown",n))}}},e.hide=function(){if(!this._element.disabled&&!i.default(this._element).hasClass($t)&&i.default(this._menu).hasClass(Jt)){var e={relatedTarget:this._element},n=i.default.Event(te,e),o=t._getParentFromElement(this._element);i.default(o).trigger(n),n.isDefaultPrevented()||(this._popper&&this._popper.destroy(),i.default(this._menu).toggleClass(Jt),i.default(o).toggleClass(Jt).trigger(i.default.Event(ee,e)))}},e.dispose=function(){i.default.removeData(this._element,Kt),i.default(this._element).off(".bs.dropdown"),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;i.default(this._element).on("click.bs.dropdown",(function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}))},e._getConfig=function(t){return t=a({},this.constructor.Default,i.default(this._element).data(),t),u.typeCheckConfig(zt,t,this.constructor.DefaultType),t},e._getMenuElement=function(){if(!this._menu){var e=t._getParentFromElement(this._element);e&&(this._menu=e.querySelector(re))}return this._menu},e._getPlacement=function(){var t=i.default(this._element.parentNode),e="bottom-start";return t.hasClass("dropup")?e=i.default(this._menu).hasClass(Zt)?"top-end":"top-start":t.hasClass("dropright")?e="right-start":t.hasClass("dropleft")?e="left-start":i.default(this._menu).hasClass(Zt)&&(e="bottom-end"),e},e._detectNavbar=function(){return i.default(this._element).closest(".navbar").length>0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=a({},e.offsets,t._config.offset(e.offsets,t._element)),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),a({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this).data(Kt);if(n||(n=new t(this,"object"==typeof e?e:null),i.default(this).data(Kt,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll(oe)),o=0,r=n.length;o0&&a--,40===e.which&&adocument.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add(pe);var o=u.getTransitionDurationFromElement(this._dialog);i.default(this._element).off(u.TRANSITION_END),i.default(this._element).one(u.TRANSITION_END,(function(){t._element.classList.remove(pe),n||i.default(t._element).one(u.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,o)})).emulateTransitionEnd(o),this._element.focus()}},e._showElement=function(t){var e=this,n=i.default(this._element).hasClass(ce),o=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),i.default(this._dialog).hasClass("modal-dialog-scrollable")&&o?o.scrollTop=0:this._element.scrollTop=0,n&&u.reflow(this._element),i.default(this._element).addClass(he),this._config.focus&&this._enforceFocus();var r=i.default.Event("shown.bs.modal",{relatedTarget:t}),a=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,i.default(e._element).trigger(r)};if(n){var s=u.getTransitionDurationFromElement(this._dialog);i.default(this._dialog).one(u.TRANSITION_END,a).emulateTransitionEnd(s)}else a()},e._enforceFocus=function(){var t=this;i.default(document).off(_e).on(_e,(function(e){document!==e.target&&t._element!==e.target&&0===i.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?i.default(this._element).on(ye,(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||i.default(this._element).off(ye)},e._setResizeEvent=function(){var t=this;this._isShown?i.default(window).on(ve,(function(e){return t.handleUpdate(e)})):i.default(window).off(ve)},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){i.default(document.body).removeClass(de),t._resetAdjustments(),t._resetScrollbar(),i.default(t._element).trigger(me)}))},e._removeBackdrop=function(){this._backdrop&&(i.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=i.default(this._element).hasClass(ce)?ce:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",n&&this._backdrop.classList.add(n),i.default(this._backdrop).appendTo(document.body),i.default(this._element).on(be,(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._triggerBackdropTransition():e.hide())})),n&&u.reflow(this._backdrop),i.default(this._backdrop).addClass(he),!t)return;if(!n)return void t();var o=u.getTransitionDurationFromElement(this._backdrop);i.default(this._backdrop).one(u.TRANSITION_END,t).emulateTransitionEnd(o)}else if(!this._isShown&&this._backdrop){i.default(this._backdrop).removeClass(he);var r=function(){e._removeBackdrop(),t&&t()};if(i.default(this._element).hasClass(ce)){var a=u.getTransitionDurationFromElement(this._backdrop);i.default(this._backdrop).one(u.TRANSITION_END,r).emulateTransitionEnd(a)}else r()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)
    ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},We={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},Ue={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Ve=function(){function t(t,e){if("undefined"==typeof Yt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=i.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(i.default(this.getTipElement()).hasClass(Fe))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),i.default.removeData(this.element,this.constructor.DATA_KEY),i.default(this.element).off(this.constructor.EVENT_KEY),i.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&i.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===i.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=i.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){i.default(this.element).trigger(e);var n=u.findShadowRoot(this.element),o=i.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!o)return;var r=this.getTipElement(),a=u.getUID(this.constructor.NAME);r.setAttribute("id",a),this.element.setAttribute("aria-describedby",a),this.setContent(),this.config.animation&&i.default(r).addClass(Pe);var s="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,l=this._getAttachment(s);this.addAttachmentClass(l);var f=this._getContainer();i.default(r).data(this.constructor.DATA_KEY,this),i.default.contains(this.element.ownerDocument.documentElement,this.tip)||i.default(r).appendTo(f),i.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new Yt(this.element,r,this._getPopperConfig(l)),i.default(r).addClass(Fe),i.default(r).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&i.default(document.body).children().on("mouseover",null,i.default.noop);var d=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,i.default(t.element).trigger(t.constructor.Event.SHOWN),e===He&&t._leave(null,t)};if(i.default(this.tip).hasClass(Pe)){var c=u.getTransitionDurationFromElement(this.tip);i.default(this.tip).one(u.TRANSITION_END,d).emulateTransitionEnd(c)}else d()}},e.hide=function(t){var e=this,n=this.getTipElement(),o=i.default.Event(this.constructor.Event.HIDE),r=function(){e._hoverState!==Re&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),i.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(i.default(this.element).trigger(o),!o.isDefaultPrevented()){if(i.default(n).removeClass(Fe),"ontouchstart"in document.documentElement&&i.default(document.body).children().off("mouseover",null,i.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,i.default(this.tip).hasClass(Pe)){var a=u.getTransitionDurationFromElement(n);i.default(n).one(u.TRANSITION_END,r).emulateTransitionEnd(a)}else r();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(i.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),i.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=ke(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?i.default(e).parent().is(t)||t.empty().append(e):t.text(i.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return a({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=a({},e.offsets,t.config.offset(e.offsets,t.element)),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:u.isElement(this.config.container)?i.default(this.config.container):i.default(document).find(this.config.container)},e._getAttachment=function(t){return Be[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)i.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n=e===Me?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,o=e===Me?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;i.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(o,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},i.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=a({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?qe:Me]=!0),i.default(e.getTipElement()).hasClass(Fe)||e._hoverState===Re?e._hoverState=Re:(clearTimeout(e._timeout),e._hoverState=Re,e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){e._hoverState===Re&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?qe:Me]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=He,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){e._hoverState===He&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=i.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Le.indexOf(t)&&delete e[t]})),"number"==typeof(t=a({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),u.typeCheckConfig(Ie,t,this.constructor.DefaultType),t.sanitize&&(t.template=ke(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(je);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(i.default(t).removeClass(Pe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data(Oe),r="object"==typeof e&&e;if((o||!/dispose|hide/.test(e))&&(o||(o=new t(this,r),n.data(Oe,o)),"string"==typeof e)){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return Qe}},{key:"NAME",get:function(){return Ie}},{key:"DATA_KEY",get:function(){return Oe}},{key:"Event",get:function(){return Ue}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return We}}]),t}();i.default.fn.tooltip=Ve._jQueryInterface,i.default.fn.tooltip.Constructor=Ve,i.default.fn.tooltip.noConflict=function(){return i.default.fn.tooltip=xe,Ve._jQueryInterface};var Ye="bs.popover",ze=i.default.fn.popover,Ke=new RegExp("(^|\\s)bs-popover\\S+","g"),Xe=a({},Ve.Default,{placement:"right",trigger:"click",content:"",template:''}),Ge=a({},Ve.DefaultType,{content:"(string|element|function)"}),$e={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},Je=function(t){var e,n;function o(){return t.apply(this,arguments)||this}n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,s(e,n);var a=o.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-popover-"+t)},a.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},a.setContent=function(){var t=i.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(Ke);null!==e&&e.length>0&&t.removeClass(e.join(""))},o._jQueryInterface=function(t){return this.each((function(){var e=i.default(this).data(Ye),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new o(this,n),i.default(this).data(Ye,e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},r(o,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return Xe}},{key:"NAME",get:function(){return"popover"}},{key:"DATA_KEY",get:function(){return Ye}},{key:"Event",get:function(){return $e}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Ge}}]),o}(Ve);i.default.fn.popover=Je._jQueryInterface,i.default.fn.popover.Constructor=Je,i.default.fn.popover.noConflict=function(){return i.default.fn.popover=ze,Je._jQueryInterface};var Ze="scrollspy",tn="bs.scrollspy",en=i.default.fn[Ze],nn="active",on="position",rn=".nav, .list-group",an={offset:10,method:"auto",target:""},sn={offset:"number",method:"string",target:"(string|element)"},ln=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,i.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":on,n="auto"===this._config.method?e:this._config.method,o=n===on?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,r=u.getSelectorFromElement(t);if(r&&(e=document.querySelector(r)),e){var a=e.getBoundingClientRect();if(a.width||a.height)return[i.default(e)[n]().top+o,r]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){i.default.removeData(this._element,tn),i.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=a({},an,"object"==typeof t&&t?t:{})).target&&u.isElement(t.target)){var e=i.default(t.target).attr("id");e||(e=u.getUID(Ze),i.default(t.target).attr("id",e)),t.target="#"+e}return u.typeCheckConfig(Ze,t,sn),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t li > .active",gn=function(){function t(t){this._element=t}var e=t.prototype;return e.show=function(){var t=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&i.default(this._element).hasClass(dn)||i.default(this._element).hasClass("disabled"))){var e,n,o=i.default(this._element).closest(".nav, .list-group")[0],r=u.getSelectorFromElement(this._element);if(o){var a="UL"===o.nodeName||"OL"===o.nodeName?mn:pn;n=(n=i.default.makeArray(i.default(o).find(a)))[n.length-1]}var s=i.default.Event("hide.bs.tab",{relatedTarget:this._element}),l=i.default.Event("show.bs.tab",{relatedTarget:n});if(n&&i.default(n).trigger(s),i.default(this._element).trigger(l),!l.isDefaultPrevented()&&!s.isDefaultPrevented()){r&&(e=document.querySelector(r)),this._activate(this._element,o);var f=function(){var e=i.default.Event("hidden.bs.tab",{relatedTarget:t._element}),o=i.default.Event("shown.bs.tab",{relatedTarget:n});i.default(n).trigger(e),i.default(t._element).trigger(o)};e?this._activate(e,e.parentNode,f):f()}}},e.dispose=function(){i.default.removeData(this._element,un),this._element=null},e._activate=function(t,e,n){var o=this,r=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?i.default(e).children(pn):i.default(e).find(mn))[0],a=n&&r&&i.default(r).hasClass(cn),s=function(){return o._transitionComplete(t,r,n)};if(r&&a){var l=u.getTransitionDurationFromElement(r);i.default(r).removeClass(hn).one(u.TRANSITION_END,s).emulateTransitionEnd(l)}else s()},e._transitionComplete=function(t,e,n){if(e){i.default(e).removeClass(dn);var o=i.default(e.parentNode).find("> .dropdown-menu .active")[0];o&&i.default(o).removeClass(dn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}i.default(t).addClass(dn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),u.reflow(t),t.classList.contains(cn)&&t.classList.add(hn);var r=t.parentNode;if(r&&"LI"===r.nodeName&&(r=r.parentNode),r&&i.default(r).hasClass("dropdown-menu")){var a=i.default(t).closest(".dropdown")[0];if(a){var s=[].slice.call(a.querySelectorAll(".dropdown-toggle"));i.default(s).addClass(dn)}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data(un);if(o||(o=new t(this),n.data(un,o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();i.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),gn._jQueryInterface.call(i.default(this),"show")})),i.default.fn.tab=gn._jQueryInterface,i.default.fn.tab.Constructor=gn,i.default.fn.tab.noConflict=function(){return i.default.fn.tab=fn,gn._jQueryInterface};var _n="bs.toast",vn=i.default.fn.toast,bn="hide",yn="show",En="showing",wn="click.dismiss.bs.toast",Tn={animation:!0,autohide:!0,delay:500},Cn={animation:"boolean",autohide:"boolean",delay:"number"},Sn=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=i.default.Event("show.bs.toast");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove(En),t._element.classList.add(yn),i.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove(bn),u.reflow(this._element),this._element.classList.add(En),this._config.animation){var o=u.getTransitionDurationFromElement(this._element);i.default(this._element).one(u.TRANSITION_END,n).emulateTransitionEnd(o)}else n()}},e.hide=function(){if(this._element.classList.contains(yn)){var t=i.default.Event("hide.bs.toast");i.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains(yn)&&this._element.classList.remove(yn),i.default(this._element).off(wn),i.default.removeData(this._element,_n),this._element=null,this._config=null},e._getConfig=function(t){return t=a({},Tn,i.default(this._element).data(),"object"==typeof t&&t?t:{}),u.typeCheckConfig("toast",t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;i.default(this._element).on(wn,'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add(bn),i.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove(yn),this._config.animation){var n=u.getTransitionDurationFromElement(this._element);i.default(this._element).one(u.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data(_n);if(o||(o=new t(this,"object"==typeof e&&e),n.data(_n,o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e](this)}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"DefaultType",get:function(){return Cn}},{key:"Default",get:function(){return Tn}}]),t}();i.default.fn.toast=Sn._jQueryInterface,i.default.fn.toast.Constructor=Sn,i.default.fn.toast.noConflict=function(){return i.default.fn.toast=vn,Sn._jQueryInterface},t.Alert=c,t.Button=b,t.Carousel=O,t.Collapse=W,t.Dropdown=le,t.Modal=Se,t.Popover=Je,t.Scrollspy=ln,t.Tab=gn,t.Toast=Sn,t.Tooltip=Ve,t.Util=u,Object.defineProperty(t,"__esModule",{value:!0})})); //# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/js/bootstrap.bundle.min.js.map b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/js/bootstrap.bundle.min.js.map index 6fd7db178f..0c7d8e0e95 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/js/bootstrap.bundle.min.js.map +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/bootstrap/js/bootstrap.bundle.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/popper.js/dist/esm/popper.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tools/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"names":["transitionEndEmulator","duration","_this","this","called","$","one","Util","TRANSITION_END","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","err","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","obj","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","call","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","jQueryDetection","TypeError","version","fn","jquery","emulateTransitionEnd","event","special","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","NAME","JQUERY_NO_CONFLICT","Alert","_element","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","Event","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","Constructor","noConflict","Button","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","classList","contains","activeElement","focus","hasAttribute","setAttribute","toggleClass","button","initialButton","inputBtn","tagName","window","buttons","slice","querySelectorAll","i","len","length","add","EVENT_KEY","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","direction","off","_extends","_handleSwipe","absDeltax","abs","_this2","_keydown","_addTouchEventListeners","_this3","start","originalEvent","pointerType","clientX","touches","end","clearTimeout","e","move","which","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","addClass","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","nextElementInterval","parseInt","defaultInterval","CLASS_NAME_ACTIVE","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","filter","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","style","attr","setTransitioning","scrollSize","CLASS_NAME_COLLAPSE","getBoundingClientRect","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","selectors","$target","isBrowser","timeoutDuration","longerTimeoutBrowsers","userAgent","debounce","Promise","resolve","then","scheduled","isFunction","functionToCheck","getStyleComputedProperty","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","element1root","getScroll","side","undefined","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","getSize","computedStyle","max","getWindowSizes","height","width","classCallCheck","instance","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","key","protoProps","staticProps","assign","source","getClientRect","offsets","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","offset","isFixed","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","padding","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","placement","refRect","rects","sortedAreas","keys","map","area","sort","a","b","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","runModifiers","modifiers","ends","prop","findIndex","cur","forEach","console","warn","enabled","update","isDestroyed","arrowStyles","attributes","flipped","options","positionFixed","flip","originalPlacement","position","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toCheck","destroy","removeAttribute","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","setupEventListeners","updateBound","addEventListener","passive","scrollElement","attachToScrollParents","callback","scrollParents","isBody","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","removeEventListener","isNumeric","n","isNaN","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","concat","reverse","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","Defaults","shift","shiftvariation","_data$offsets","isVertical","shiftOffsets","preventOverflow","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","min","keepTogether","floor","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","v","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","x-placement","applyStyle","onLoad","modifierOptions","Popper","requestAnimationFrame","Utils","global","PopperUtils","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","boundary","display","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","noop","hideEvent","stopPropagation","constructor","_getPlacement","$parentDropdown","_getOffset","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","item","EVENT_CLICK_DATA_API","backdrop","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","defaultPrevented","isModalOverflowing","scrollHeight","modalTransitionDuration","modalBody","ELEMENT_NODE","appendChild","_enforceFocus","shownEvent","transitionComplete","_this5","has","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","createElement","className","appendTo","backdropTransitionDuration","callbackRemove","paddingLeft","paddingRight","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","elements","margin","scrollDiv","scrollbarWidth","_this11","uriAttrs","DefaultWhitelist","*","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","innerHTML","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","container","fallbackPlacement","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX","setElementContent","CLASS_NAME_FADE","content","text","empty","append","_handlePopperPlacementChange","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","join","popperData","initConfigAnimation","Popover","_getContent","method","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","pageYOffset","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","parents","SELECTOR_NAV_LINKS","scrollSpys","$spy","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","autohide","Toast","_clearTimeout","_close"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (err) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n // TODO: Remove in v5\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n },\n\n jQueryDetection() {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const maxMajor = 4\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n }\n }\n}\n\nUtil.jQueryDetection()\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst SELECTOR_DISMISS = '[data-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n let rootElement = this._element\n if (element) {\n rootElement = this._getRootElement(element)\n }\n\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n if (!parent) {\n parent = $(element).closest(`.${CLASS_NAME_ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(EVENT_CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(CLASS_NAME_SHOW)\n\n if (!$(element).hasClass(CLASS_NAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n $(element)\n .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n .emulateTransitionEnd(transitionDuration)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(EVENT_CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(\n EVENT_CLICK_DATA_API,\n SELECTOR_DISMISS,\n Alert._handleDismiss(new Alert())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n}\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_BUTTON = 'btn'\nconst CLASS_NAME_FOCUS = 'focus'\n\nconst SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]'\nconst SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]'\nconst SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn'\nconst SELECTOR_INPUT = 'input:not([type=\"hidden\"])'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_BUTTON = '.btn'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUS_BLUR_DATA_API = `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n const rootElement = $(this._element).closest(\n SELECTOR_DATA_TOGGLES\n )[0]\n\n if (rootElement) {\n const input = this._element.querySelector(SELECTOR_INPUT)\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked &&\n this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = rootElement.querySelector(SELECTOR_ACTIVE)\n\n if (activeElement) {\n $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE)\n }\n $(input).trigger('change')\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed',\n !this._element.classList.contains(CLASS_NAME_ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, (event) => {\n let button = event.target\n const initialButton = button\n\n if (!$(button).hasClass(CLASS_NAME_BUTTON)) {\n button = $(button).closest(SELECTOR_BUTTON)[0]\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault() // work around Firefox bug #1540995\n } else {\n const inputBtn = button.querySelector(SELECTOR_INPUT)\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault() // work around Firefox bug #1540995\n return\n }\n\n if (initialButton.tagName !== 'LABEL' || inputBtn && inputBtn.type !== 'checkbox') {\n Button._jQueryInterface.call($(button), 'toggle')\n }\n }\n })\n .on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, (event) => {\n const button = $(event.target).closest(SELECTOR_BUTTON)[0]\n $(button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n // ensure correct active class is set to match the controls' actual values/states\n\n // find all checkboxes/readio buttons inside data-toggle groups\n let buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n const input = button.querySelector(SELECTOR_INPUT)\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE)\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n\n // find all button toggles\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n if (button.getAttribute('aria-pressed') === 'true') {\n button.classList.add(CLASS_NAME_ACTIVE)\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n}\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true,\n touch : true\n}\n\nconst DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean',\n touch : 'boolean'\n}\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_RIGHT = 'carousel-item-right'\nconst CLASS_NAME_LEFT = 'carousel-item-left'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]'\n\nconst PointerType = {\n TOUCH : 'touch',\n PEN : 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._element = element\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex\n ? DIRECTION_NEXT\n : DIRECTION_PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element).on(EVENT_KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(EVENT_MOUSEENTER, (event) => this.pause(event))\n .on(EVENT_MOUSELEAVE, (event) => this.cycle(event))\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n if (!this._touchSupported) {\n return\n }\n\n const start = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchStartX = event.originalEvent.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.originalEvent.touches[0].clientX\n }\n }\n\n const move = (event) => {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.originalEvent.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n $(this._element.querySelectorAll(SELECTOR_ITEM_IMG))\n .on(EVENT_DRAG_START, (e) => e.preventDefault())\n\n if (this._pointerEvent) {\n $(this._element).on(EVENT_POINTERDOWN, (event) => start(event))\n $(this._element).on(EVENT_POINTERUP, (event) => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n $(this._element).on(EVENT_TOUCHSTART, (event) => start(event))\n $(this._element).on(EVENT_TOUCHMOVE, (event) => move(event))\n $(this._element).on(EVENT_TOUCHEND, (event) => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode\n ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM))\n : []\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === DIRECTION_NEXT\n const isPrevDirection = direction === DIRECTION_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === DIRECTION_PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1\n ? this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM))\n const slideEvent = $.Event(EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE))\n $(indicators).removeClass(CLASS_NAME_ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT\n orderClassName = CLASS_NAME_NEXT\n eventDirectionName = DIRECTION_LEFT\n } else {\n directionalClassName = CLASS_NAME_RIGHT\n orderClassName = CLASS_NAME_PREV\n eventDirectionName = DIRECTION_RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n\n const slidEvent = $.Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(CLASS_NAME_SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n const nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10)\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = nextElementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(CLASS_NAME_ACTIVE)\n\n $(activeElement).removeClass(`${CLASS_NAME_ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n $(nextElement).addClass(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n}\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n toggle : true,\n parent : ''\n}\n\nconst DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst DIMENSION_WIDTH = 'width'\nconst DIMENSION_HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = [].slice.call(document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = Util.getSelectorFromElement(elem)\n const filterElement = [].slice.call(document.querySelectorAll(selector))\n .filter((foundElem) => foundElem === element)\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES))\n .filter((elem) => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(EVENT_SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSE)\n .addClass(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(CLASS_NAME_COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSING)\n .addClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = $.Event(EVENT_HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(CLASS_NAME_COLLAPSING)\n .removeClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const $elem = $([].slice.call(document.querySelectorAll(selector)))\n if (!$elem.hasClass(CLASS_NAME_SHOW)) {\n $(trigger).addClass(CLASS_NAME_COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSING)\n .addClass(CLASS_NAME_COLLAPSE)\n .trigger(EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(DIMENSION_WIDTH)\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT\n }\n\n _getParent() {\n let parent\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = document.querySelector(this._config.parent)\n }\n\n const selector = `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n const children = [].slice.call(parent.querySelectorAll(selector))\n\n $(children).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n const isOpen = $(element).hasClass(CLASS_NAME_SHOW)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(CLASS_NAME_COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? document.querySelector(selector) : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n const selectors = [].slice.call(document.querySelectorAll(selector))\n\n $(selectors).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n}\n\nexport default Collapse\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
    \n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.
    \n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.
    \n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
    \n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
    \n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
    \n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
    \n * It will read the variation of the `placement` property.
    \n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
    \n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
    \n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
    \n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
    \n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
    \n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.
    \n * These can be overridden using the `options` argument of Popper.js.
    \n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
    \n * By default, it is set to no-op.
    \n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
    \n * By default, it is set to no-op.
    \n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
    \n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPRIGHT = 'dropright'\nconst CLASS_NAME_DROPLEFT = 'dropleft'\nconst CLASS_NAME_MENURIGHT = 'dropdown-menu-right'\nconst CLASS_NAME_POSITION_STATIC = 'position-static'\n\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = 'top-start'\nconst PLACEMENT_TOPEND = 'top-end'\nconst PLACEMENT_BOTTOM = 'bottom-start'\nconst PLACEMENT_BOTTOMEND = 'bottom-end'\nconst PLACEMENT_RIGHT = 'right-start'\nconst PLACEMENT_LEFT = 'left-start'\n\nconst Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent',\n reference : 'toggle',\n display : 'dynamic',\n popperConfig : null\n}\n\nconst DefaultType = {\n offset : '(number|string|function)',\n flip : 'boolean',\n boundary : '(string|element)',\n reference : '(string|element)',\n display : 'string',\n popperConfig : '(null|object)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = $(this._menu).hasClass(CLASS_NAME_SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show(true)\n }\n\n show(usePopper = false) {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || $(this._menu).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(EVENT_SHOW, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar && usePopper) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(CLASS_NAME_POSITION_STATIC)\n }\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW)\n $(parent)\n .toggleClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_SHOWN, relatedTarget))\n }\n\n hide() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || !$(this._menu).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW)\n $(parent)\n .toggleClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(EVENT_CLICK, (event) => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU)\n }\n }\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element.parentNode)\n let placement = PLACEMENT_BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $(this._menu).hasClass(CLASS_NAME_MENURIGHT)\n ? PLACEMENT_TOPEND\n : PLACEMENT_TOP\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT\n } else if ($(this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND\n }\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this._config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets, this._element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this._config.offset\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n // Disable Popper.js if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n }\n }\n\n return {\n ...popperConfig,\n ...this._config.popperConfig\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n $(dropdownMenu).removeClass(CLASS_NAME_SHOW)\n $(parent)\n .removeClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName)\n ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n if (this.disabled || $(this).hasClass(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(CLASS_NAME_SHOW)\n\n if (!isActive && event.which === ESCAPE_KEYCODE) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n $(parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS))\n .filter((item) => $(item).is(':visible'))\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler)\n .on(`${EVENT_CLICK_DATA_API} ${EVENT_KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, (e) => {\n e.stopPropagation()\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n}\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n}\n\nconst DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable'\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = element.querySelector(SELECTOR_DIALOG)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(EVENT_SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n EVENT_CLICK_DISMISS,\n SELECTOR_DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, () => {\n $(this._element).one(EVENT_MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = $.Event(EVENT_HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(EVENT_FOCUSIN)\n\n $(this._element).removeClass(CLASS_NAME_SHOW)\n\n $(this._element).off(EVENT_CLICK_DISMISS)\n $(this._dialog).off(EVENT_MOUSEDOWN_DISMISS)\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach((htmlElement) => $(htmlElement).off(EVENT_KEY))\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n $(document).off(EVENT_FOCUSIN)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _triggerBackdropTransition() {\n if (this._config.backdrop === 'static') {\n const hideEventPrevented = $.Event(EVENT_HIDE_PREVENTED)\n\n $(this._element).trigger(hideEventPrevented)\n if (hideEventPrevented.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n\n const modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n $(this._element).off(Util.TRANSITION_END)\n\n $(this._element).one(Util.TRANSITION_END, () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n $(this._element).one(Util.TRANSITION_END, () => {\n this._element.style.overflowY = ''\n })\n .emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n .emulateTransitionEnd(modalTransitionDuration)\n this._element.focus()\n } else {\n this.hide()\n }\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n const modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n\n if ($(this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0\n } else {\n this._element.scrollTop = 0\n }\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(EVENT_SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n $(this._element).on(EVENT_KEYDOWN_DISMISS, (event) => {\n if (this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n this._triggerBackdropTransition()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(EVENT_RESIZE, (event) => this.handleUpdate(event))\n } else {\n $(window).off(EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(CLASS_NAME_FADE)\n ? CLASS_NAME_FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(EVENT_CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(CLASS_NAME_SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n\n $(document.body).addClass(CLASS_NAME_OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n // Restore sticky content\n const elements = [].slice.call(document.querySelectorAll(`${SELECTOR_STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(EVENT_SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(EVENT_HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter((attrRegex) => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const whitelistKeys = Object.keys(whiteList)\n const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].slice.call(el.attributes)\n const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n attributeList.forEach((attr) => {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n DefaultWhitelist,\n sanitizeHtml\n} from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|element|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : '(number|string|function)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)',\n sanitize : 'boolean',\n sanitizeFn : '(null|function)',\n whiteList : 'object',\n popperConfig : '(null|object)'\n}\n\nconst AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n}\n\nconst Default = {\n animation : true,\n template : '
    ' +\n '
    ' +\n '
    ',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent',\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist,\n popperConfig : null\n}\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_ARROW = '.arrow'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const shadowRoot = Util.findShadowRoot(this.element)\n const isInTheDom = $.contains(\n shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function'\n ? this.config.placement.call(this, tip, this.element)\n : this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this._getContainer()\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment))\n\n $(tip).addClass(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent($(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle())\n $(tip).removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n }\n\n setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n }\n\n $element.html(content)\n } else {\n $element.text(content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function'\n ? this.config.title.call(this.element)\n : this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getPopperConfig(attachment) {\n const defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: (data) => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: (data) => this._handlePopperPlacementChange(data)\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this.config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this.config.offset(data.offsets, this.element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this.config.offset\n }\n\n return offset\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container)\n }\n\n return $(document).find(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach((trigger) => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n (event) => this.toggle(event)\n )\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER\n ? this.constructor.Event.MOUSEENTER\n : this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER\n ? this.constructor.Event.MOUSELEAVE\n : this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(eventIn, this.config.selector, (event) => this._enter(event))\n .on(eventOut, this.config.selector, (event) => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this.element) {\n this.hide()\n }\n }\n\n $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = $(this.element).data()\n\n Object.keys(dataAttributes)\n .forEach((dataAttr) => {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(popperData.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n\n $(tip).removeClass(CLASS_NAME_FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '
    ' +\n '
    ' +\n '

    ' +\n '
    '\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content : '(string|element|function)'\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n this.setElementContent($tip.find(SELECTOR_CONTENT), content)\n\n $tip.removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Popover._jQueryInterface\n$.fn[NAME].Constructor = Popover\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n}\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.5.2'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n offset : 10,\n method : 'auto',\n target : ''\n}\n\nconst DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_ITEMS = '.dropdown-item'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS},` +\n `${this._config.target} ${SELECTOR_LIST_ITEMS},` +\n `${this._config.target} ${SELECTOR_DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(EVENT_SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? METHOD_OFFSET : METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = document.querySelector(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector\n .split(',')\n .map((selector) => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN)\n .find(SELECTOR_DROPDOWN_TOGGLE)\n .addClass(CLASS_NAME_ACTIVE)\n $link.addClass(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE)\n // Set triggered links parents as active\n // With both