From: sadposter Date: Thu, 20 Feb 2020 13:50:56 +0000 (+0000) Subject: Merge branch 'develop' of https://git.pleroma.social/pleroma/pleroma into develop X-Git-Url: https://git.squeep.com/?a=commitdiff_plain;h=fae0d4ba9d63e5dffc4fee97da09d1ca3b320e04;p=akkoma Merge branch 'develop' of https://git.pleroma.social/pleroma/pleroma into develop --- fae0d4ba9d63e5dffc4fee97da09d1ca3b320e04 diff --cc config/config.exs index fcda1653a,0eff26653..897475df2 --- a/config/config.exs +++ b/config/config.exs @@@ -253,10 -239,9 +239,10 @@@ config :pleroma, :instance ], mrf_transparency: true, mrf_transparency_exclusions: [], + staff_transparency: [], autofollowed_nicknames: [], max_pinned_statuses: 1, - no_attachment_links: true, + attachment_links: false, welcome_user_nickname: nil, welcome_message: nil, max_report_comment_size: 1000, diff --cc priv/static/index.html index 4d25be810,6e1f751ce..62a188adc --- a/priv/static/index.html +++ b/priv/static/index.html @@@ -1,1 -1,1 +1,1 @@@ - Pleroma
-Pleroma
++Pleroma
diff --cc priv/static/static/css/app.1055039ce3f2fe4dd110.css index 05e3f2087,05e3f2087..1867ca81a --- a/priv/static/static/css/app.1055039ce3f2fe4dd110.css +++ b/priv/static/static/css/app.1055039ce3f2fe4dd110.css @@@ -64,6 -64,6 +64,10 @@@ padding-bottom: 99px; margin-bottom: -93px; white-space: nowrap; ++ color: #b9b9ba; ++ color: var(--tabText, #b9b9ba); ++ background-color: #182230; ++ background-color: var(--tab, #182230); } .tab-switcher .tabs .tab-wrapper .tab:not(.active) { z-index: 4; @@@ -74,6 -74,6 +78,8 @@@ .tab-switcher .tabs .tab-wrapper .tab.active { background: transparent; z-index: 5; ++ color: #b9b9ba; ++ color: var(--tabActiveText, #b9b9ba); } .tab-switcher .tabs .tab-wrapper .tab img { max-height: 26px; @@@ -99,4 -99,4 +105,4 @@@ font-size: 14px; } --/*# sourceMappingURL=app.ae04505b31bb0ee2765e.css.map*/ ++/*# sourceMappingURL=app.1055039ce3f2fe4dd110.css.map*/ diff --cc priv/static/static/css/app.1055039ce3f2fe4dd110.css.map index 000000000,000000000..861ee8313 new file mode 100644 --- /dev/null +++ b/priv/static/static/css/app.1055039ce3f2fe4dd110.css.map @@@ -1,0 -1,0 +1,1 @@@ ++{"version":3,"sources":["webpack:///./src/hocs/with_load_more/with_load_more.scss","webpack:///./src/components/tab_switcher/tab_switcher.scss","webpack:///./src/hocs/with_subscription/with_subscription.scss"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA,C","file":"static/css/app.1055039ce3f2fe4dd110.css","sourcesContent":[".with-load-more-footer {\n padding: 10px;\n text-align: center;\n border-top: 1px solid;\n border-top-color: #222;\n border-top-color: var(--border, #222);\n}\n.with-load-more-footer .error {\n font-size: 14px;\n}",".tab-switcher {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n.tab-switcher .contents {\n -ms-flex: 1 0 auto;\n flex: 1 0 auto;\n min-height: 0px;\n}\n.tab-switcher .contents .hidden {\n display: none;\n}\n.tab-switcher .contents.scrollable-tabs {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n overflow-y: auto;\n}\n.tab-switcher .tabs {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n width: 100%;\n overflow-y: hidden;\n overflow-x: auto;\n padding-top: 5px;\n box-sizing: border-box;\n}\n.tab-switcher .tabs::after, .tab-switcher .tabs::before {\n display: block;\n content: \"\";\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n border-bottom: 1px solid;\n border-bottom-color: #222;\n border-bottom-color: var(--border, #222);\n}\n.tab-switcher .tabs .tab-wrapper {\n height: 28px;\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n}\n.tab-switcher .tabs .tab-wrapper .tab {\n width: 100%;\n min-width: 1px;\n position: relative;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n padding: 6px 1em;\n padding-bottom: 99px;\n margin-bottom: -93px;\n white-space: nowrap;\n color: #b9b9ba;\n color: var(--tabText, #b9b9ba);\n background-color: #182230;\n background-color: var(--tab, #182230);\n}\n.tab-switcher .tabs .tab-wrapper .tab:not(.active) {\n z-index: 4;\n}\n.tab-switcher .tabs .tab-wrapper .tab:not(.active):hover {\n z-index: 6;\n}\n.tab-switcher .tabs .tab-wrapper .tab.active {\n background: transparent;\n z-index: 5;\n color: #b9b9ba;\n color: var(--tabActiveText, #b9b9ba);\n}\n.tab-switcher .tabs .tab-wrapper .tab img {\n max-height: 26px;\n vertical-align: top;\n margin-top: -5px;\n}\n.tab-switcher .tabs .tab-wrapper:not(.active)::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 7;\n border-bottom: 1px solid;\n border-bottom-color: #222;\n border-bottom-color: var(--border, #222);\n}",".with-subscription-loading {\n padding: 10px;\n text-align: center;\n}\n.with-subscription-loading .error {\n font-size: 14px;\n}"],"sourceRoot":""} diff --cc priv/static/static/css/app.ae04505b31bb0ee2765e.css.map index 72f33316e,72f33316e..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/app.ae04505b31bb0ee2765e.css.map +++ /dev/null @@@ -1,1 -1,1 +1,0 @@@ --{"version":3,"sources":["webpack:///./src/hocs/with_load_more/with_load_more.scss","webpack:///./src/components/tab_switcher/tab_switcher.scss","webpack:///./src/hocs/with_subscription/with_subscription.scss"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;AClFA;AACA;AACA;AACA;AACA;AACA;AACA,C","file":"static/css/app.ae04505b31bb0ee2765e.css","sourcesContent":[".with-load-more-footer {\n padding: 10px;\n text-align: center;\n border-top: 1px solid;\n border-top-color: #222;\n border-top-color: var(--border, #222);\n}\n.with-load-more-footer .error {\n font-size: 14px;\n}",".tab-switcher {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n.tab-switcher .contents {\n -ms-flex: 1 0 auto;\n flex: 1 0 auto;\n min-height: 0px;\n}\n.tab-switcher .contents .hidden {\n display: none;\n}\n.tab-switcher .contents.scrollable-tabs {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n overflow-y: auto;\n}\n.tab-switcher .tabs {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n width: 100%;\n overflow-y: hidden;\n overflow-x: auto;\n padding-top: 5px;\n box-sizing: border-box;\n}\n.tab-switcher .tabs::after, .tab-switcher .tabs::before {\n display: block;\n content: \"\";\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n border-bottom: 1px solid;\n border-bottom-color: #222;\n border-bottom-color: var(--border, #222);\n}\n.tab-switcher .tabs .tab-wrapper {\n height: 28px;\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n}\n.tab-switcher .tabs .tab-wrapper .tab {\n width: 100%;\n min-width: 1px;\n position: relative;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n padding: 6px 1em;\n padding-bottom: 99px;\n margin-bottom: -93px;\n white-space: nowrap;\n}\n.tab-switcher .tabs .tab-wrapper .tab:not(.active) {\n z-index: 4;\n}\n.tab-switcher .tabs .tab-wrapper .tab:not(.active):hover {\n z-index: 6;\n}\n.tab-switcher .tabs .tab-wrapper .tab.active {\n background: transparent;\n z-index: 5;\n}\n.tab-switcher .tabs .tab-wrapper .tab img {\n max-height: 26px;\n vertical-align: top;\n margin-top: -5px;\n}\n.tab-switcher .tabs .tab-wrapper:not(.active)::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 7;\n border-bottom: 1px solid;\n border-bottom-color: #222;\n border-bottom-color: var(--border, #222);\n}",".with-subscription-loading {\n padding: 10px;\n text-align: center;\n}\n.with-subscription-loading .error {\n font-size: 14px;\n}"],"sourceRoot":""} diff --cc priv/static/static/css/base16-3024.css index 91859e272,91859e272..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-3024.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #090300; } --.base01-background { background-color: #3a3432; } --.base02-background { background-color: #4a4543; } --.base03-background { background-color: #5c5855; } --.base04-background { background-color: #807d7c; } --.base05-background { background-color: #a5a2a2; } --.base06-background { background-color: #d6d5d4; } --.base07-background { background-color: #f7f7f7; } --.base08-background { background-color: #db2d20; } --.base09-background { background-color: #e8bbd0; } --.base0A-background { background-color: #fded02; } --.base0B-background { background-color: #01a252; } --.base0C-background { background-color: #b5e4f4; } --.base0D-background { background-color: #01a0e4; } --.base0E-background { background-color: #a16a94; } --.base0F-background { background-color: #cdab53; } -- --.base00 { color: #090300; } --.base01 { color: #3a3432; } --.base02 { color: #4a4543; } --.base03 { color: #5c5855; } --.base04 { color: #807d7c; } --.base05 { color: #a5a2a2; } --.base06 { color: #d6d5d4; } --.base07 { color: #f7f7f7; } --.base08 { color: #db2d20; } --.base09 { color: #e8bbd0; } --.base0A { color: #fded02; } --.base0B { color: #01a252; } --.base0C { color: #b5e4f4; } --.base0D { color: #01a0e4; } --.base0E { color: #a16a94; } --.base0F { color: #cdab53; } diff --cc priv/static/static/css/base16-apathy.css index 2e99ba1f0,2e99ba1f0..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-apathy.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #031A16; } --.base01-background { background-color: #0B342D; } --.base02-background { background-color: #184E45; } --.base03-background { background-color: #2B685E; } --.base04-background { background-color: #5F9C92; } --.base05-background { background-color: #81B5AC; } --.base06-background { background-color: #A7CEC8; } --.base07-background { background-color: #D2E7E4; } --.base08-background { background-color: #3E9688; } --.base09-background { background-color: #3E7996; } --.base0A-background { background-color: #3E4C96; } --.base0B-background { background-color: #883E96; } --.base0C-background { background-color: #963E4C; } --.base0D-background { background-color: #96883E; } --.base0E-background { background-color: #4C963E; } --.base0F-background { background-color: #3E965B; } -- --.base00 { color: #031A16; } --.base01 { color: #0B342D; } --.base02 { color: #184E45; } --.base03 { color: #2B685E; } --.base04 { color: #5F9C92; } --.base05 { color: #81B5AC; } --.base06 { color: #A7CEC8; } --.base07 { color: #D2E7E4; } --.base08 { color: #3E9688; } --.base09 { color: #3E7996; } --.base0A { color: #3E4C96; } --.base0B { color: #883E96; } --.base0C { color: #963E4C; } --.base0D { color: #96883E; } --.base0E { color: #4C963E; } --.base0F { color: #3E965B; } diff --cc priv/static/static/css/base16-ashes.css index d10e1918e,d10e1918e..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-ashes.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #1C2023; } --.base01-background { background-color: #393F45; } --.base02-background { background-color: #565E65; } --.base03-background { background-color: #747C84; } --.base04-background { background-color: #ADB3BA; } --.base05-background { background-color: #C7CCD1; } --.base06-background { background-color: #DFE2E5; } --.base07-background { background-color: #F3F4F5; } --.base08-background { background-color: #C7AE95; } --.base09-background { background-color: #C7C795; } --.base0A-background { background-color: #AEC795; } --.base0B-background { background-color: #95C7AE; } --.base0C-background { background-color: #95AEC7; } --.base0D-background { background-color: #AE95C7; } --.base0E-background { background-color: #C795AE; } --.base0F-background { background-color: #C79595; } -- --.base00 { color: #1C2023; } --.base01 { color: #393F45; } --.base02 { color: #565E65; } --.base03 { color: #747C84; } --.base04 { color: #ADB3BA; } --.base05 { color: #C7CCD1; } --.base06 { color: #DFE2E5; } --.base07 { color: #F3F4F5; } --.base08 { color: #C7AE95; } --.base09 { color: #C7C795; } --.base0A { color: #AEC795; } --.base0B { color: #95C7AE; } --.base0C { color: #95AEC7; } --.base0D { color: #AE95C7; } --.base0E { color: #C795AE; } --.base0F { color: #C79595; } diff --cc priv/static/static/css/base16-atelier-cave.css index 5ac17f97e,5ac17f97e..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-atelier-cave.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #19171c; } --.base01-background { background-color: #26232a; } --.base02-background { background-color: #585260; } --.base03-background { background-color: #655f6d; } --.base04-background { background-color: #7e7887; } --.base05-background { background-color: #8b8792; } --.base06-background { background-color: #e2dfe7; } --.base07-background { background-color: #efecf4; } --.base08-background { background-color: #be4678; } --.base09-background { background-color: #aa573c; } --.base0A-background { background-color: #a06e3b; } --.base0B-background { background-color: #2a9292; } --.base0C-background { background-color: #398bc6; } --.base0D-background { background-color: #576ddb; } --.base0E-background { background-color: #955ae7; } --.base0F-background { background-color: #bf40bf; } -- --.base00 { color: #19171c; } --.base01 { color: #26232a; } --.base02 { color: #585260; } --.base03 { color: #655f6d; } --.base04 { color: #7e7887; } --.base05 { color: #8b8792; } --.base06 { color: #e2dfe7; } --.base07 { color: #efecf4; } --.base08 { color: #be4678; } --.base09 { color: #aa573c; } --.base0A { color: #a06e3b; } --.base0B { color: #2a9292; } --.base0C { color: #398bc6; } --.base0D { color: #576ddb; } --.base0E { color: #955ae7; } --.base0F { color: #bf40bf; } diff --cc priv/static/static/css/base16-atelier-dune.css index cfb2d9a1e,cfb2d9a1e..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-atelier-dune.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #20201d; } --.base01-background { background-color: #292824; } --.base02-background { background-color: #6e6b5e; } --.base03-background { background-color: #7d7a68; } --.base04-background { background-color: #999580; } --.base05-background { background-color: #a6a28c; } --.base06-background { background-color: #e8e4cf; } --.base07-background { background-color: #fefbec; } --.base08-background { background-color: #d73737; } --.base09-background { background-color: #b65611; } --.base0A-background { background-color: #ae9513; } --.base0B-background { background-color: #60ac39; } --.base0C-background { background-color: #1fad83; } --.base0D-background { background-color: #6684e1; } --.base0E-background { background-color: #b854d4; } --.base0F-background { background-color: #d43552; } -- --.base00 { color: #20201d; } --.base01 { color: #292824; } --.base02 { color: #6e6b5e; } --.base03 { color: #7d7a68; } --.base04 { color: #999580; } --.base05 { color: #a6a28c; } --.base06 { color: #e8e4cf; } --.base07 { color: #fefbec; } --.base08 { color: #d73737; } --.base09 { color: #b65611; } --.base0A { color: #ae9513; } --.base0B { color: #60ac39; } --.base0C { color: #1fad83; } --.base0D { color: #6684e1; } --.base0E { color: #b854d4; } --.base0F { color: #d43552; } diff --cc priv/static/static/css/base16-atelier-estuary.css index 76d82c754,76d82c754..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-atelier-estuary.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #22221b; } --.base01-background { background-color: #302f27; } --.base02-background { background-color: #5f5e4e; } --.base03-background { background-color: #6c6b5a; } --.base04-background { background-color: #878573; } --.base05-background { background-color: #929181; } --.base06-background { background-color: #e7e6df; } --.base07-background { background-color: #f4f3ec; } --.base08-background { background-color: #ba6236; } --.base09-background { background-color: #ae7313; } --.base0A-background { background-color: #a5980d; } --.base0B-background { background-color: #7d9726; } --.base0C-background { background-color: #5b9d48; } --.base0D-background { background-color: #36a166; } --.base0E-background { background-color: #5f9182; } --.base0F-background { background-color: #9d6c7c; } -- --.base00 { color: #22221b; } --.base01 { color: #302f27; } --.base02 { color: #5f5e4e; } --.base03 { color: #6c6b5a; } --.base04 { color: #878573; } --.base05 { color: #929181; } --.base06 { color: #e7e6df; } --.base07 { color: #f4f3ec; } --.base08 { color: #ba6236; } --.base09 { color: #ae7313; } --.base0A { color: #a5980d; } --.base0B { color: #7d9726; } --.base0C { color: #5b9d48; } --.base0D { color: #36a166; } --.base0E { color: #5f9182; } --.base0F { color: #9d6c7c; } diff --cc priv/static/static/css/base16-atelier-forest.css index 8108ed8f6,8108ed8f6..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-atelier-forest.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #1b1918; } --.base01-background { background-color: #2c2421; } --.base02-background { background-color: #68615e; } --.base03-background { background-color: #766e6b; } --.base04-background { background-color: #9c9491; } --.base05-background { background-color: #a8a19f; } --.base06-background { background-color: #e6e2e0; } --.base07-background { background-color: #f1efee; } --.base08-background { background-color: #f22c40; } --.base09-background { background-color: #df5320; } --.base0A-background { background-color: #c38418; } --.base0B-background { background-color: #7b9726; } --.base0C-background { background-color: #3d97b8; } --.base0D-background { background-color: #407ee7; } --.base0E-background { background-color: #6666ea; } --.base0F-background { background-color: #c33ff3; } -- --.base00 { color: #1b1918; } --.base01 { color: #2c2421; } --.base02 { color: #68615e; } --.base03 { color: #766e6b; } --.base04 { color: #9c9491; } --.base05 { color: #a8a19f; } --.base06 { color: #e6e2e0; } --.base07 { color: #f1efee; } --.base08 { color: #f22c40; } --.base09 { color: #df5320; } --.base0A { color: #c38418; } --.base0B { color: #7b9726; } --.base0C { color: #3d97b8; } --.base0D { color: #407ee7; } --.base0E { color: #6666ea; } --.base0F { color: #c33ff3; } diff --cc priv/static/static/css/base16-atelier-heath.css index 8858cb807,8858cb807..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-atelier-heath.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #1b181b; } --.base01-background { background-color: #292329; } --.base02-background { background-color: #695d69; } --.base03-background { background-color: #776977; } --.base04-background { background-color: #9e8f9e; } --.base05-background { background-color: #ab9bab; } --.base06-background { background-color: #d8cad8; } --.base07-background { background-color: #f7f3f7; } --.base08-background { background-color: #ca402b; } --.base09-background { background-color: #a65926; } --.base0A-background { background-color: #bb8a35; } --.base0B-background { background-color: #918b3b; } --.base0C-background { background-color: #159393; } --.base0D-background { background-color: #516aec; } --.base0E-background { background-color: #7b59c0; } --.base0F-background { background-color: #cc33cc; } -- --.base00 { color: #1b181b; } --.base01 { color: #292329; } --.base02 { color: #695d69; } --.base03 { color: #776977; } --.base04 { color: #9e8f9e; } --.base05 { color: #ab9bab; } --.base06 { color: #d8cad8; } --.base07 { color: #f7f3f7; } --.base08 { color: #ca402b; } --.base09 { color: #a65926; } --.base0A { color: #bb8a35; } --.base0B { color: #918b3b; } --.base0C { color: #159393; } --.base0D { color: #516aec; } --.base0E { color: #7b59c0; } --.base0F { color: #cc33cc; } diff --cc priv/static/static/css/base16-atelier-lakeside.css index 77d44c5fa,77d44c5fa..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-atelier-lakeside.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #161b1d; } --.base01-background { background-color: #1f292e; } --.base02-background { background-color: #516d7b; } --.base03-background { background-color: #5a7b8c; } --.base04-background { background-color: #7195a8; } --.base05-background { background-color: #7ea2b4; } --.base06-background { background-color: #c1e4f6; } --.base07-background { background-color: #ebf8ff; } --.base08-background { background-color: #d22d72; } --.base09-background { background-color: #935c25; } --.base0A-background { background-color: #8a8a0f; } --.base0B-background { background-color: #568c3b; } --.base0C-background { background-color: #2d8f6f; } --.base0D-background { background-color: #257fad; } --.base0E-background { background-color: #6b6bb8; } --.base0F-background { background-color: #b72dd2; } -- --.base00 { color: #161b1d; } --.base01 { color: #1f292e; } --.base02 { color: #516d7b; } --.base03 { color: #5a7b8c; } --.base04 { color: #7195a8; } --.base05 { color: #7ea2b4; } --.base06 { color: #c1e4f6; } --.base07 { color: #ebf8ff; } --.base08 { color: #d22d72; } --.base09 { color: #935c25; } --.base0A { color: #8a8a0f; } --.base0B { color: #568c3b; } --.base0C { color: #2d8f6f; } --.base0D { color: #257fad; } --.base0E { color: #6b6bb8; } --.base0F { color: #b72dd2; } diff --cc priv/static/static/css/base16-atelier-plateau.css index a7445030b,a7445030b..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-atelier-plateau.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #1b1818; } --.base01-background { background-color: #292424; } --.base02-background { background-color: #585050; } --.base03-background { background-color: #655d5d; } --.base04-background { background-color: #7e7777; } --.base05-background { background-color: #8a8585; } --.base06-background { background-color: #e7dfdf; } --.base07-background { background-color: #f4ecec; } --.base08-background { background-color: #ca4949; } --.base09-background { background-color: #b45a3c; } --.base0A-background { background-color: #a06e3b; } --.base0B-background { background-color: #4b8b8b; } --.base0C-background { background-color: #5485b6; } --.base0D-background { background-color: #7272ca; } --.base0E-background { background-color: #8464c4; } --.base0F-background { background-color: #bd5187; } -- --.base00 { color: #1b1818; } --.base01 { color: #292424; } --.base02 { color: #585050; } --.base03 { color: #655d5d; } --.base04 { color: #7e7777; } --.base05 { color: #8a8585; } --.base06 { color: #e7dfdf; } --.base07 { color: #f4ecec; } --.base08 { color: #ca4949; } --.base09 { color: #b45a3c; } --.base0A { color: #a06e3b; } --.base0B { color: #4b8b8b; } --.base0C { color: #5485b6; } --.base0D { color: #7272ca; } --.base0E { color: #8464c4; } --.base0F { color: #bd5187; } diff --cc priv/static/static/css/base16-atelier-savanna.css index be728d07d,be728d07d..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-atelier-savanna.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #171c19; } --.base01-background { background-color: #232a25; } --.base02-background { background-color: #526057; } --.base03-background { background-color: #5f6d64; } --.base04-background { background-color: #78877d; } --.base05-background { background-color: #87928a; } --.base06-background { background-color: #dfe7e2; } --.base07-background { background-color: #ecf4ee; } --.base08-background { background-color: #b16139; } --.base09-background { background-color: #9f713c; } --.base0A-background { background-color: #a07e3b; } --.base0B-background { background-color: #489963; } --.base0C-background { background-color: #1c9aa0; } --.base0D-background { background-color: #478c90; } --.base0E-background { background-color: #55859b; } --.base0F-background { background-color: #867469; } -- --.base00 { color: #171c19; } --.base01 { color: #232a25; } --.base02 { color: #526057; } --.base03 { color: #5f6d64; } --.base04 { color: #78877d; } --.base05 { color: #87928a; } --.base06 { color: #dfe7e2; } --.base07 { color: #ecf4ee; } --.base08 { color: #b16139; } --.base09 { color: #9f713c; } --.base0A { color: #a07e3b; } --.base0B { color: #489963; } --.base0C { color: #1c9aa0; } --.base0D { color: #478c90; } --.base0E { color: #55859b; } --.base0F { color: #867469; } diff --cc priv/static/static/css/base16-atelier-seaside.css index 8b3914669,8b3914669..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-atelier-seaside.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #131513; } --.base01-background { background-color: #242924; } --.base02-background { background-color: #5e6e5e; } --.base03-background { background-color: #687d68; } --.base04-background { background-color: #809980; } --.base05-background { background-color: #8ca68c; } --.base06-background { background-color: #cfe8cf; } --.base07-background { background-color: #f4fbf4; } --.base08-background { background-color: #e6193c; } --.base09-background { background-color: #87711d; } --.base0A-background { background-color: #98981b; } --.base0B-background { background-color: #29a329; } --.base0C-background { background-color: #1999b3; } --.base0D-background { background-color: #3d62f5; } --.base0E-background { background-color: #ad2bee; } --.base0F-background { background-color: #e619c3; } -- --.base00 { color: #131513; } --.base01 { color: #242924; } --.base02 { color: #5e6e5e; } --.base03 { color: #687d68; } --.base04 { color: #809980; } --.base05 { color: #8ca68c; } --.base06 { color: #cfe8cf; } --.base07 { color: #f4fbf4; } --.base08 { color: #e6193c; } --.base09 { color: #87711d; } --.base0A { color: #98981b; } --.base0B { color: #29a329; } --.base0C { color: #1999b3; } --.base0D { color: #3d62f5; } --.base0E { color: #ad2bee; } --.base0F { color: #e619c3; } diff --cc priv/static/static/css/base16-atelier-sulphurpool.css index fb44d6e0f,fb44d6e0f..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-atelier-sulphurpool.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #202746; } --.base01-background { background-color: #293256; } --.base02-background { background-color: #5e6687; } --.base03-background { background-color: #6b7394; } --.base04-background { background-color: #898ea4; } --.base05-background { background-color: #979db4; } --.base06-background { background-color: #dfe2f1; } --.base07-background { background-color: #f5f7ff; } --.base08-background { background-color: #c94922; } --.base09-background { background-color: #c76b29; } --.base0A-background { background-color: #c08b30; } --.base0B-background { background-color: #ac9739; } --.base0C-background { background-color: #22a2c9; } --.base0D-background { background-color: #3d8fd1; } --.base0E-background { background-color: #6679cc; } --.base0F-background { background-color: #9c637a; } -- --.base00 { color: #202746; } --.base01 { color: #293256; } --.base02 { color: #5e6687; } --.base03 { color: #6b7394; } --.base04 { color: #898ea4; } --.base05 { color: #979db4; } --.base06 { color: #dfe2f1; } --.base07 { color: #f5f7ff; } --.base08 { color: #c94922; } --.base09 { color: #c76b29; } --.base0A { color: #c08b30; } --.base0B { color: #ac9739; } --.base0C { color: #22a2c9; } --.base0D { color: #3d8fd1; } --.base0E { color: #6679cc; } --.base0F { color: #9c637a; } diff --cc priv/static/static/css/base16-bespin.css index 48a9dcf76,48a9dcf76..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-bespin.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #28211c; } --.base01-background { background-color: #36312e; } --.base02-background { background-color: #5e5d5c; } --.base03-background { background-color: #666666; } --.base04-background { background-color: #797977; } --.base05-background { background-color: #8a8986; } --.base06-background { background-color: #9d9b97; } --.base07-background { background-color: #baae9e; } --.base08-background { background-color: #cf6a4c; } --.base09-background { background-color: #cf7d34; } --.base0A-background { background-color: #f9ee98; } --.base0B-background { background-color: #54be0d; } --.base0C-background { background-color: #afc4db; } --.base0D-background { background-color: #5ea6ea; } --.base0E-background { background-color: #9b859d; } --.base0F-background { background-color: #937121; } -- --.base00 { color: #28211c; } --.base01 { color: #36312e; } --.base02 { color: #5e5d5c; } --.base03 { color: #666666; } --.base04 { color: #797977; } --.base05 { color: #8a8986; } --.base06 { color: #9d9b97; } --.base07 { color: #baae9e; } --.base08 { color: #cf6a4c; } --.base09 { color: #cf7d34; } --.base0A { color: #f9ee98; } --.base0B { color: #54be0d; } --.base0C { color: #afc4db; } --.base0D { color: #5ea6ea; } --.base0E { color: #9b859d; } --.base0F { color: #937121; } diff --cc priv/static/static/css/base16-brewer.css index c88f219b7,c88f219b7..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-brewer.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #0c0d0e; } --.base01-background { background-color: #2e2f30; } --.base02-background { background-color: #515253; } --.base03-background { background-color: #737475; } --.base04-background { background-color: #959697; } --.base05-background { background-color: #b7b8b9; } --.base06-background { background-color: #dadbdc; } --.base07-background { background-color: #fcfdfe; } --.base08-background { background-color: #e31a1c; } --.base09-background { background-color: #e6550d; } --.base0A-background { background-color: #dca060; } --.base0B-background { background-color: #31a354; } --.base0C-background { background-color: #80b1d3; } --.base0D-background { background-color: #3182bd; } --.base0E-background { background-color: #756bb1; } --.base0F-background { background-color: #b15928; } -- --.base00 { color: #0c0d0e; } --.base01 { color: #2e2f30; } --.base02 { color: #515253; } --.base03 { color: #737475; } --.base04 { color: #959697; } --.base05 { color: #b7b8b9; } --.base06 { color: #dadbdc; } --.base07 { color: #fcfdfe; } --.base08 { color: #e31a1c; } --.base09 { color: #e6550d; } --.base0A { color: #dca060; } --.base0B { color: #31a354; } --.base0C { color: #80b1d3; } --.base0D { color: #3182bd; } --.base0E { color: #756bb1; } --.base0F { color: #b15928; } diff --cc priv/static/static/css/base16-bright.css index c2333b8d1,c2333b8d1..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-bright.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #000000; } --.base01-background { background-color: #303030; } --.base02-background { background-color: #505050; } --.base03-background { background-color: #b0b0b0; } --.base04-background { background-color: #d0d0d0; } --.base05-background { background-color: #e0e0e0; } --.base06-background { background-color: #f5f5f5; } --.base07-background { background-color: #ffffff; } --.base08-background { background-color: #fb0120; } --.base09-background { background-color: #fc6d24; } --.base0A-background { background-color: #fda331; } --.base0B-background { background-color: #a1c659; } --.base0C-background { background-color: #76c7b7; } --.base0D-background { background-color: #6fb3d2; } --.base0E-background { background-color: #d381c3; } --.base0F-background { background-color: #be643c; } -- --.base00 { color: #000000; } --.base01 { color: #303030; } --.base02 { color: #505050; } --.base03 { color: #b0b0b0; } --.base04 { color: #d0d0d0; } --.base05 { color: #e0e0e0; } --.base06 { color: #f5f5f5; } --.base07 { color: #ffffff; } --.base08 { color: #fb0120; } --.base09 { color: #fc6d24; } --.base0A { color: #fda331; } --.base0B { color: #a1c659; } --.base0C { color: #76c7b7; } --.base0D { color: #6fb3d2; } --.base0E { color: #d381c3; } --.base0F { color: #be643c; } diff --cc priv/static/static/css/base16-chalk.css index e3cb3c20c,e3cb3c20c..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-chalk.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #151515; } --.base01-background { background-color: #202020; } --.base02-background { background-color: #303030; } --.base03-background { background-color: #505050; } --.base04-background { background-color: #b0b0b0; } --.base05-background { background-color: #d0d0d0; } --.base06-background { background-color: #e0e0e0; } --.base07-background { background-color: #f5f5f5; } --.base08-background { background-color: #fb9fb1; } --.base09-background { background-color: #eda987; } --.base0A-background { background-color: #ddb26f; } --.base0B-background { background-color: #acc267; } --.base0C-background { background-color: #12cfc0; } --.base0D-background { background-color: #6fc2ef; } --.base0E-background { background-color: #e1a3ee; } --.base0F-background { background-color: #deaf8f; } -- --.base00 { color: #151515; } --.base01 { color: #202020; } --.base02 { color: #303030; } --.base03 { color: #505050; } --.base04 { color: #b0b0b0; } --.base05 { color: #d0d0d0; } --.base06 { color: #e0e0e0; } --.base07 { color: #f5f5f5; } --.base08 { color: #fb9fb1; } --.base09 { color: #eda987; } --.base0A { color: #ddb26f; } --.base0B { color: #acc267; } --.base0C { color: #12cfc0; } --.base0D { color: #6fc2ef; } --.base0E { color: #e1a3ee; } --.base0F { color: #deaf8f; } diff --cc priv/static/static/css/base16-codeschool.css index 00194bbfc,00194bbfc..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-codeschool.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #232c31; } --.base01-background { background-color: #1c3657; } --.base02-background { background-color: #2a343a; } --.base03-background { background-color: #3f4944; } --.base04-background { background-color: #84898c; } --.base05-background { background-color: #9ea7a6; } --.base06-background { background-color: #a7cfa3; } --.base07-background { background-color: #b5d8f6; } --.base08-background { background-color: #2a5491; } --.base09-background { background-color: #43820d; } --.base0A-background { background-color: #a03b1e; } --.base0B-background { background-color: #237986; } --.base0C-background { background-color: #b02f30; } --.base0D-background { background-color: #484d79; } --.base0E-background { background-color: #c59820; } --.base0F-background { background-color: #c98344; } -- --.base00 { color: #232c31; } --.base01 { color: #1c3657; } --.base02 { color: #2a343a; } --.base03 { color: #3f4944; } --.base04 { color: #84898c; } --.base05 { color: #9ea7a6; } --.base06 { color: #a7cfa3; } --.base07 { color: #b5d8f6; } --.base08 { color: #2a5491; } --.base09 { color: #43820d; } --.base0A { color: #a03b1e; } --.base0B { color: #237986; } --.base0C { color: #b02f30; } --.base0D { color: #484d79; } --.base0E { color: #c59820; } --.base0F { color: #c98344; } diff --cc priv/static/static/css/base16-darktooth.css index 534487064,534487064..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-darktooth.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #1D2021; } --.base01-background { background-color: #32302F; } --.base02-background { background-color: #504945; } --.base03-background { background-color: #665C54; } --.base04-background { background-color: #928374; } --.base05-background { background-color: #A89984; } --.base06-background { background-color: #D5C4A1; } --.base07-background { background-color: #FDF4C1; } --.base08-background { background-color: #FB543F; } --.base09-background { background-color: #FE8625; } --.base0A-background { background-color: #FAC03B; } --.base0B-background { background-color: #95C085; } --.base0C-background { background-color: #8BA59B; } --.base0D-background { background-color: #0D6678; } --.base0E-background { background-color: #8F4673; } --.base0F-background { background-color: #A87322; } -- --.base00 { color: #1D2021; } --.base01 { color: #32302F; } --.base02 { color: #504945; } --.base03 { color: #665C54; } --.base04 { color: #928374; } --.base05 { color: #A89984; } --.base06 { color: #D5C4A1; } --.base07 { color: #FDF4C1; } --.base08 { color: #FB543F; } --.base09 { color: #FE8625; } --.base0A { color: #FAC03B; } --.base0B { color: #95C085; } --.base0C { color: #8BA59B; } --.base0D { color: #0D6678; } --.base0E { color: #8F4673; } --.base0F { color: #A87322; } diff --cc priv/static/static/css/base16-default-dark.css index 3cd7e860c,3cd7e860c..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-default-dark.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #181818; } --.base01-background { background-color: #282828; } --.base02-background { background-color: #383838; } --.base03-background { background-color: #585858; } --.base04-background { background-color: #b8b8b8; } --.base05-background { background-color: #d8d8d8; } --.base06-background { background-color: #e8e8e8; } --.base07-background { background-color: #f8f8f8; } --.base08-background { background-color: #ab4642; } --.base09-background { background-color: #dc9656; } --.base0A-background { background-color: #f7ca88; } --.base0B-background { background-color: #a1b56c; } --.base0C-background { background-color: #86c1b9; } --.base0D-background { background-color: #7cafc2; } --.base0E-background { background-color: #ba8baf; } --.base0F-background { background-color: #a16946; } -- --.base00 { color: #181818; } --.base01 { color: #282828; } --.base02 { color: #383838; } --.base03 { color: #585858; } --.base04 { color: #b8b8b8; } --.base05 { color: #d8d8d8; } --.base06 { color: #e8e8e8; } --.base07 { color: #f8f8f8; } --.base08 { color: #ab4642; } --.base09 { color: #dc9656; } --.base0A { color: #f7ca88; } --.base0B { color: #a1b56c; } --.base0C { color: #86c1b9; } --.base0D { color: #7cafc2; } --.base0E { color: #ba8baf; } --.base0F { color: #a16946; } diff --cc priv/static/static/css/base16-default-light.css index 7e660c302,7e660c302..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-default-light.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #f8f8f8; } --.base01-background { background-color: #e8e8e8; } --.base02-background { background-color: #d8d8d8; } --.base03-background { background-color: #b8b8b8; } --.base04-background { background-color: #585858; } --.base05-background { background-color: #383838; } --.base06-background { background-color: #282828; } --.base07-background { background-color: #181818; } --.base08-background { background-color: #ab4642; } --.base09-background { background-color: #dc9656; } --.base0A-background { background-color: #f7ca88; } --.base0B-background { background-color: #a1b56c; } --.base0C-background { background-color: #86c1b9; } --.base0D-background { background-color: #7cafc2; } --.base0E-background { background-color: #ba8baf; } --.base0F-background { background-color: #a16946; } -- --.base00 { color: #f8f8f8; } --.base01 { color: #e8e8e8; } --.base02 { color: #d8d8d8; } --.base03 { color: #b8b8b8; } --.base04 { color: #585858; } --.base05 { color: #383838; } --.base06 { color: #282828; } --.base07 { color: #181818; } --.base08 { color: #ab4642; } --.base09 { color: #dc9656; } --.base0A { color: #f7ca88; } --.base0B { color: #a1b56c; } --.base0C { color: #86c1b9; } --.base0D { color: #7cafc2; } --.base0E { color: #ba8baf; } --.base0F { color: #a16946; } diff --cc priv/static/static/css/base16-eighties.css index 8ffcf04d9,8ffcf04d9..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-eighties.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #2d2d2d; } --.base01-background { background-color: #393939; } --.base02-background { background-color: #515151; } --.base03-background { background-color: #747369; } --.base04-background { background-color: #a09f93; } --.base05-background { background-color: #d3d0c8; } --.base06-background { background-color: #e8e6df; } --.base07-background { background-color: #f2f0ec; } --.base08-background { background-color: #f2777a; } --.base09-background { background-color: #f99157; } --.base0A-background { background-color: #ffcc66; } --.base0B-background { background-color: #99cc99; } --.base0C-background { background-color: #66cccc; } --.base0D-background { background-color: #6699cc; } --.base0E-background { background-color: #cc99cc; } --.base0F-background { background-color: #d27b53; } -- --.base00 { color: #2d2d2d; } --.base01 { color: #393939; } --.base02 { color: #515151; } --.base03 { color: #747369; } --.base04 { color: #a09f93; } --.base05 { color: #d3d0c8; } --.base06 { color: #e8e6df; } --.base07 { color: #f2f0ec; } --.base08 { color: #f2777a; } --.base09 { color: #f99157; } --.base0A { color: #ffcc66; } --.base0B { color: #99cc99; } --.base0C { color: #66cccc; } --.base0D { color: #6699cc; } --.base0E { color: #cc99cc; } --.base0F { color: #d27b53; } diff --cc priv/static/static/css/base16-embers.css index 74e9b7693,74e9b7693..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-embers.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #16130F; } --.base01-background { background-color: #2C2620; } --.base02-background { background-color: #433B32; } --.base03-background { background-color: #5A5047; } --.base04-background { background-color: #8A8075; } --.base05-background { background-color: #A39A90; } --.base06-background { background-color: #BEB6AE; } --.base07-background { background-color: #DBD6D1; } --.base08-background { background-color: #826D57; } --.base09-background { background-color: #828257; } --.base0A-background { background-color: #6D8257; } --.base0B-background { background-color: #57826D; } --.base0C-background { background-color: #576D82; } --.base0D-background { background-color: #6D5782; } --.base0E-background { background-color: #82576D; } --.base0F-background { background-color: #825757; } -- --.base00 { color: #16130F; } --.base01 { color: #2C2620; } --.base02 { color: #433B32; } --.base03 { color: #5A5047; } --.base04 { color: #8A8075; } --.base05 { color: #A39A90; } --.base06 { color: #BEB6AE; } --.base07 { color: #DBD6D1; } --.base08 { color: #826D57; } --.base09 { color: #828257; } --.base0A { color: #6D8257; } --.base0B { color: #57826D; } --.base0C { color: #576D82; } --.base0D { color: #6D5782; } --.base0E { color: #82576D; } --.base0F { color: #825757; } diff --cc priv/static/static/css/base16-flat.css index 72918a5df,72918a5df..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-flat.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #2C3E50; } --.base01-background { background-color: #34495E; } --.base02-background { background-color: #7F8C8D; } --.base03-background { background-color: #95A5A6; } --.base04-background { background-color: #BDC3C7; } --.base05-background { background-color: #e0e0e0; } --.base06-background { background-color: #f5f5f5; } --.base07-background { background-color: #ECF0F1; } --.base08-background { background-color: #E74C3C; } --.base09-background { background-color: #E67E22; } --.base0A-background { background-color: #F1C40F; } --.base0B-background { background-color: #2ECC71; } --.base0C-background { background-color: #1ABC9C; } --.base0D-background { background-color: #3498DB; } --.base0E-background { background-color: #9B59B6; } --.base0F-background { background-color: #be643c; } -- --.base00 { color: #2C3E50; } --.base01 { color: #34495E; } --.base02 { color: #7F8C8D; } --.base03 { color: #95A5A6; } --.base04 { color: #BDC3C7; } --.base05 { color: #e0e0e0; } --.base06 { color: #f5f5f5; } --.base07 { color: #ECF0F1; } --.base08 { color: #E74C3C; } --.base09 { color: #E67E22; } --.base0A { color: #F1C40F; } --.base0B { color: #2ECC71; } --.base0C { color: #1ABC9C; } --.base0D { color: #3498DB; } --.base0E { color: #9B59B6; } --.base0F { color: #be643c; } diff --cc priv/static/static/css/base16-github.css index 080ed34ce,080ed34ce..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-github.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #ffffff; } --.base01-background { background-color: #f5f5f5; } --.base02-background { background-color: #c8c8fa; } --.base03-background { background-color: #969896; } --.base04-background { background-color: #e8e8e8; } --.base05-background { background-color: #333333; } --.base06-background { background-color: #ffffff; } --.base07-background { background-color: #ffffff; } --.base08-background { background-color: #ed6a43; } --.base09-background { background-color: #0086b3; } --.base0A-background { background-color: #795da3; } --.base0B-background { background-color: #183691; } --.base0C-background { background-color: #183691; } --.base0D-background { background-color: #795da3; } --.base0E-background { background-color: #a71d5d; } --.base0F-background { background-color: #333333; } -- --.base00 { color: #ffffff; } --.base01 { color: #f5f5f5; } --.base02 { color: #c8c8fa; } --.base03 { color: #969896; } --.base04 { color: #e8e8e8; } --.base05 { color: #333333; } --.base06 { color: #ffffff; } --.base07 { color: #ffffff; } --.base08 { color: #ed6a43; } --.base09 { color: #0086b3; } --.base0A { color: #795da3; } --.base0B { color: #183691; } --.base0C { color: #183691; } --.base0D { color: #795da3; } --.base0E { color: #a71d5d; } --.base0F { color: #333333; } diff --cc priv/static/static/css/base16-google-dark.css index 988eac51d,988eac51d..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-google-dark.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #1d1f21; } --.base01-background { background-color: #282a2e; } --.base02-background { background-color: #373b41; } --.base03-background { background-color: #969896; } --.base04-background { background-color: #b4b7b4; } --.base05-background { background-color: #c5c8c6; } --.base06-background { background-color: #e0e0e0; } --.base07-background { background-color: #ffffff; } --.base08-background { background-color: #CC342B; } --.base09-background { background-color: #F96A38; } --.base0A-background { background-color: #FBA922; } --.base0B-background { background-color: #198844; } --.base0C-background { background-color: #3971ED; } --.base0D-background { background-color: #3971ED; } --.base0E-background { background-color: #A36AC7; } --.base0F-background { background-color: #3971ED; } -- --.base00 { color: #1d1f21; } --.base01 { color: #282a2e; } --.base02 { color: #373b41; } --.base03 { color: #969896; } --.base04 { color: #b4b7b4; } --.base05 { color: #c5c8c6; } --.base06 { color: #e0e0e0; } --.base07 { color: #ffffff; } --.base08 { color: #CC342B; } --.base09 { color: #F96A38; } --.base0A { color: #FBA922; } --.base0B { color: #198844; } --.base0C { color: #3971ED; } --.base0D { color: #3971ED; } --.base0E { color: #A36AC7; } --.base0F { color: #3971ED; } diff --cc priv/static/static/css/base16-google-light.css index 2ee2a6069,2ee2a6069..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-google-light.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #ffffff; } --.base01-background { background-color: #e0e0e0; } --.base02-background { background-color: #c5c8c6; } --.base03-background { background-color: #b4b7b4; } --.base04-background { background-color: #969896; } --.base05-background { background-color: #373b41; } --.base06-background { background-color: #282a2e; } --.base07-background { background-color: #1d1f21; } --.base08-background { background-color: #CC342B; } --.base09-background { background-color: #F96A38; } --.base0A-background { background-color: #FBA922; } --.base0B-background { background-color: #198844; } --.base0C-background { background-color: #3971ED; } --.base0D-background { background-color: #3971ED; } --.base0E-background { background-color: #A36AC7; } --.base0F-background { background-color: #3971ED; } -- --.base00 { color: #ffffff; } --.base01 { color: #e0e0e0; } --.base02 { color: #c5c8c6; } --.base03 { color: #b4b7b4; } --.base04 { color: #969896; } --.base05 { color: #373b41; } --.base06 { color: #282a2e; } --.base07 { color: #1d1f21; } --.base08 { color: #CC342B; } --.base09 { color: #F96A38; } --.base0A { color: #FBA922; } --.base0B { color: #198844; } --.base0C { color: #3971ED; } --.base0D { color: #3971ED; } --.base0E { color: #A36AC7; } --.base0F { color: #3971ED; } diff --cc priv/static/static/css/base16-grayscale-dark.css index dc0dd03a0,dc0dd03a0..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-grayscale-dark.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #101010; } --.base01-background { background-color: #252525; } --.base02-background { background-color: #464646; } --.base03-background { background-color: #525252; } --.base04-background { background-color: #ababab; } --.base05-background { background-color: #b9b9b9; } --.base06-background { background-color: #e3e3e3; } --.base07-background { background-color: #f7f7f7; } --.base08-background { background-color: #7c7c7c; } --.base09-background { background-color: #999999; } --.base0A-background { background-color: #a0a0a0; } --.base0B-background { background-color: #8e8e8e; } --.base0C-background { background-color: #868686; } --.base0D-background { background-color: #686868; } --.base0E-background { background-color: #747474; } --.base0F-background { background-color: #5e5e5e; } -- --.base00 { color: #101010; } --.base01 { color: #252525; } --.base02 { color: #464646; } --.base03 { color: #525252; } --.base04 { color: #ababab; } --.base05 { color: #b9b9b9; } --.base06 { color: #e3e3e3; } --.base07 { color: #f7f7f7; } --.base08 { color: #7c7c7c; } --.base09 { color: #999999; } --.base0A { color: #a0a0a0; } --.base0B { color: #8e8e8e; } --.base0C { color: #868686; } --.base0D { color: #686868; } --.base0E { color: #747474; } --.base0F { color: #5e5e5e; } diff --cc priv/static/static/css/base16-grayscale-light.css index f9fd213ae,f9fd213ae..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-grayscale-light.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #f7f7f7; } --.base01-background { background-color: #e3e3e3; } --.base02-background { background-color: #b9b9b9; } --.base03-background { background-color: #ababab; } --.base04-background { background-color: #525252; } --.base05-background { background-color: #464646; } --.base06-background { background-color: #252525; } --.base07-background { background-color: #101010; } --.base08-background { background-color: #7c7c7c; } --.base09-background { background-color: #999999; } --.base0A-background { background-color: #a0a0a0; } --.base0B-background { background-color: #8e8e8e; } --.base0C-background { background-color: #868686; } --.base0D-background { background-color: #686868; } --.base0E-background { background-color: #747474; } --.base0F-background { background-color: #5e5e5e; } -- --.base00 { color: #f7f7f7; } --.base01 { color: #e3e3e3; } --.base02 { color: #b9b9b9; } --.base03 { color: #ababab; } --.base04 { color: #525252; } --.base05 { color: #464646; } --.base06 { color: #252525; } --.base07 { color: #101010; } --.base08 { color: #7c7c7c; } --.base09 { color: #999999; } --.base0A { color: #a0a0a0; } --.base0B { color: #8e8e8e; } --.base0C { color: #868686; } --.base0D { color: #686868; } --.base0E { color: #747474; } --.base0F { color: #5e5e5e; } diff --cc priv/static/static/css/base16-green-screen.css index 205efeaec,205efeaec..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-green-screen.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #001100; } --.base01-background { background-color: #003300; } --.base02-background { background-color: #005500; } --.base03-background { background-color: #007700; } --.base04-background { background-color: #009900; } --.base05-background { background-color: #00bb00; } --.base06-background { background-color: #00dd00; } --.base07-background { background-color: #00ff00; } --.base08-background { background-color: #007700; } --.base09-background { background-color: #009900; } --.base0A-background { background-color: #007700; } --.base0B-background { background-color: #00bb00; } --.base0C-background { background-color: #005500; } --.base0D-background { background-color: #009900; } --.base0E-background { background-color: #00bb00; } --.base0F-background { background-color: #005500; } -- --.base00 { color: #001100; } --.base01 { color: #003300; } --.base02 { color: #005500; } --.base03 { color: #007700; } --.base04 { color: #009900; } --.base05 { color: #00bb00; } --.base06 { color: #00dd00; } --.base07 { color: #00ff00; } --.base08 { color: #007700; } --.base09 { color: #009900; } --.base0A { color: #007700; } --.base0B { color: #00bb00; } --.base0C { color: #005500; } --.base0D { color: #009900; } --.base0E { color: #00bb00; } --.base0F { color: #005500; } diff --cc priv/static/static/css/base16-harmonic16-dark.css index 0c2c7ce42,0c2c7ce42..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-harmonic16-dark.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #0b1c2c; } --.base01-background { background-color: #223b54; } --.base02-background { background-color: #405c79; } --.base03-background { background-color: #627e99; } --.base04-background { background-color: #aabcce; } --.base05-background { background-color: #cbd6e2; } --.base06-background { background-color: #e5ebf1; } --.base07-background { background-color: #f7f9fb; } --.base08-background { background-color: #bf8b56; } --.base09-background { background-color: #bfbf56; } --.base0A-background { background-color: #8bbf56; } --.base0B-background { background-color: #56bf8b; } --.base0C-background { background-color: #568bbf; } --.base0D-background { background-color: #8b56bf; } --.base0E-background { background-color: #bf568b; } --.base0F-background { background-color: #bf5656; } -- --.base00 { color: #0b1c2c; } --.base01 { color: #223b54; } --.base02 { color: #405c79; } --.base03 { color: #627e99; } --.base04 { color: #aabcce; } --.base05 { color: #cbd6e2; } --.base06 { color: #e5ebf1; } --.base07 { color: #f7f9fb; } --.base08 { color: #bf8b56; } --.base09 { color: #bfbf56; } --.base0A { color: #8bbf56; } --.base0B { color: #56bf8b; } --.base0C { color: #568bbf; } --.base0D { color: #8b56bf; } --.base0E { color: #bf568b; } --.base0F { color: #bf5656; } diff --cc priv/static/static/css/base16-harmonic16-light.css index 37bb7679a,37bb7679a..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-harmonic16-light.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #f7f9fb; } --.base01-background { background-color: #e5ebf1; } --.base02-background { background-color: #cbd6e2; } --.base03-background { background-color: #aabcce; } --.base04-background { background-color: #627e99; } --.base05-background { background-color: #405c79; } --.base06-background { background-color: #223b54; } --.base07-background { background-color: #0b1c2c; } --.base08-background { background-color: #bf8b56; } --.base09-background { background-color: #bfbf56; } --.base0A-background { background-color: #8bbf56; } --.base0B-background { background-color: #56bf8b; } --.base0C-background { background-color: #568bbf; } --.base0D-background { background-color: #8b56bf; } --.base0E-background { background-color: #bf568b; } --.base0F-background { background-color: #bf5656; } -- --.base00 { color: #f7f9fb; } --.base01 { color: #e5ebf1; } --.base02 { color: #cbd6e2; } --.base03 { color: #aabcce; } --.base04 { color: #627e99; } --.base05 { color: #405c79; } --.base06 { color: #223b54; } --.base07 { color: #0b1c2c; } --.base08 { color: #bf8b56; } --.base09 { color: #bfbf56; } --.base0A { color: #8bbf56; } --.base0B { color: #56bf8b; } --.base0C { color: #568bbf; } --.base0D { color: #8b56bf; } --.base0E { color: #bf568b; } --.base0F { color: #bf5656; } diff --cc priv/static/static/css/base16-hopscotch.css index f2ad232c5,f2ad232c5..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-hopscotch.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #322931; } --.base01-background { background-color: #433b42; } --.base02-background { background-color: #5c545b; } --.base03-background { background-color: #797379; } --.base04-background { background-color: #989498; } --.base05-background { background-color: #b9b5b8; } --.base06-background { background-color: #d5d3d5; } --.base07-background { background-color: #ffffff; } --.base08-background { background-color: #dd464c; } --.base09-background { background-color: #fd8b19; } --.base0A-background { background-color: #fdcc59; } --.base0B-background { background-color: #8fc13e; } --.base0C-background { background-color: #149b93; } --.base0D-background { background-color: #1290bf; } --.base0E-background { background-color: #c85e7c; } --.base0F-background { background-color: #b33508; } -- --.base00 { color: #322931; } --.base01 { color: #433b42; } --.base02 { color: #5c545b; } --.base03 { color: #797379; } --.base04 { color: #989498; } --.base05 { color: #b9b5b8; } --.base06 { color: #d5d3d5; } --.base07 { color: #ffffff; } --.base08 { color: #dd464c; } --.base09 { color: #fd8b19; } --.base0A { color: #fdcc59; } --.base0B { color: #8fc13e; } --.base0C { color: #149b93; } --.base0D { color: #1290bf; } --.base0E { color: #c85e7c; } --.base0F { color: #b33508; } diff --cc priv/static/static/css/base16-ir-black.css index 8d14ab9b8,8d14ab9b8..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-ir-black.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #000000; } --.base01-background { background-color: #242422; } --.base02-background { background-color: #484844; } --.base03-background { background-color: #6c6c66; } --.base04-background { background-color: #918f88; } --.base05-background { background-color: #b5b3aa; } --.base06-background { background-color: #d9d7cc; } --.base07-background { background-color: #fdfbee; } --.base08-background { background-color: #ff6c60; } --.base09-background { background-color: #e9c062; } --.base0A-background { background-color: #ffffb6; } --.base0B-background { background-color: #a8ff60; } --.base0C-background { background-color: #c6c5fe; } --.base0D-background { background-color: #96cbfe; } --.base0E-background { background-color: #ff73fd; } --.base0F-background { background-color: #b18a3d; } -- --.base00 { color: #000000; } --.base01 { color: #242422; } --.base02 { color: #484844; } --.base03 { color: #6c6c66; } --.base04 { color: #918f88; } --.base05 { color: #b5b3aa; } --.base06 { color: #d9d7cc; } --.base07 { color: #fdfbee; } --.base08 { color: #ff6c60; } --.base09 { color: #e9c062; } --.base0A { color: #ffffb6; } --.base0B { color: #a8ff60; } --.base0C { color: #c6c5fe; } --.base0D { color: #96cbfe; } --.base0E { color: #ff73fd; } --.base0F { color: #b18a3d; } diff --cc priv/static/static/css/base16-isotope.css index f7a4a0b4b,f7a4a0b4b..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-isotope.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #000000; } --.base01-background { background-color: #404040; } --.base02-background { background-color: #606060; } --.base03-background { background-color: #808080; } --.base04-background { background-color: #c0c0c0; } --.base05-background { background-color: #d0d0d0; } --.base06-background { background-color: #e0e0e0; } --.base07-background { background-color: #ffffff; } --.base08-background { background-color: #ff0000; } --.base09-background { background-color: #ff9900; } --.base0A-background { background-color: #ff0099; } --.base0B-background { background-color: #33ff00; } --.base0C-background { background-color: #00ffff; } --.base0D-background { background-color: #0066ff; } --.base0E-background { background-color: #cc00ff; } --.base0F-background { background-color: #3300ff; } -- --.base00 { color: #000000; } --.base01 { color: #404040; } --.base02 { color: #606060; } --.base03 { color: #808080; } --.base04 { color: #c0c0c0; } --.base05 { color: #d0d0d0; } --.base06 { color: #e0e0e0; } --.base07 { color: #ffffff; } --.base08 { color: #ff0000; } --.base09 { color: #ff9900; } --.base0A { color: #ff0099; } --.base0B { color: #33ff00; } --.base0C { color: #00ffff; } --.base0D { color: #0066ff; } --.base0E { color: #cc00ff; } --.base0F { color: #3300ff; } diff --cc priv/static/static/css/base16-london-tube.css index 0537d1ad5,0537d1ad5..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-london-tube.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #231f20; } --.base01-background { background-color: #1c3f95; } --.base02-background { background-color: #5a5758; } --.base03-background { background-color: #737171; } --.base04-background { background-color: #959ca1; } --.base05-background { background-color: #d9d8d8; } --.base06-background { background-color: #e7e7e8; } --.base07-background { background-color: #ffffff; } --.base08-background { background-color: #ee2e24; } --.base09-background { background-color: #f386a1; } --.base0A-background { background-color: #ffd204; } --.base0B-background { background-color: #00853e; } --.base0C-background { background-color: #85cebc; } --.base0D-background { background-color: #009ddc; } --.base0E-background { background-color: #98005d; } --.base0F-background { background-color: #b06110; } -- --.base00 { color: #231f20; } --.base01 { color: #1c3f95; } --.base02 { color: #5a5758; } --.base03 { color: #737171; } --.base04 { color: #959ca1; } --.base05 { color: #d9d8d8; } --.base06 { color: #e7e7e8; } --.base07 { color: #ffffff; } --.base08 { color: #ee2e24; } --.base09 { color: #f386a1; } --.base0A { color: #ffd204; } --.base0B { color: #00853e; } --.base0C { color: #85cebc; } --.base0D { color: #009ddc; } --.base0E { color: #98005d; } --.base0F { color: #b06110; } diff --cc priv/static/static/css/base16-macintosh.css index d5969fec2,d5969fec2..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-macintosh.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #000000; } --.base01-background { background-color: #404040; } --.base02-background { background-color: #404040; } --.base03-background { background-color: #808080; } --.base04-background { background-color: #808080; } --.base05-background { background-color: #c0c0c0; } --.base06-background { background-color: #c0c0c0; } --.base07-background { background-color: #ffffff; } --.base08-background { background-color: #dd0907; } --.base09-background { background-color: #ff6403; } --.base0A-background { background-color: #fbf305; } --.base0B-background { background-color: #1fb714; } --.base0C-background { background-color: #02abea; } --.base0D-background { background-color: #0000d3; } --.base0E-background { background-color: #4700a5; } --.base0F-background { background-color: #90713a; } -- --.base00 { color: #000000; } --.base01 { color: #404040; } --.base02 { color: #404040; } --.base03 { color: #808080; } --.base04 { color: #808080; } --.base05 { color: #c0c0c0; } --.base06 { color: #c0c0c0; } --.base07 { color: #ffffff; } --.base08 { color: #dd0907; } --.base09 { color: #ff6403; } --.base0A { color: #fbf305; } --.base0B { color: #1fb714; } --.base0C { color: #02abea; } --.base0D { color: #0000d3; } --.base0E { color: #4700a5; } --.base0F { color: #90713a; } diff --cc priv/static/static/css/base16-marrakesh.css index 91f0471fc,91f0471fc..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-marrakesh.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #201602; } --.base01-background { background-color: #302e00; } --.base02-background { background-color: #5f5b17; } --.base03-background { background-color: #6c6823; } --.base04-background { background-color: #86813b; } --.base05-background { background-color: #948e48; } --.base06-background { background-color: #ccc37a; } --.base07-background { background-color: #faf0a5; } --.base08-background { background-color: #c35359; } --.base09-background { background-color: #b36144; } --.base0A-background { background-color: #a88339; } --.base0B-background { background-color: #18974e; } --.base0C-background { background-color: #75a738; } --.base0D-background { background-color: #477ca1; } --.base0E-background { background-color: #8868b3; } --.base0F-background { background-color: #b3588e; } -- --.base00 { color: #201602; } --.base01 { color: #302e00; } --.base02 { color: #5f5b17; } --.base03 { color: #6c6823; } --.base04 { color: #86813b; } --.base05 { color: #948e48; } --.base06 { color: #ccc37a; } --.base07 { color: #faf0a5; } --.base08 { color: #c35359; } --.base09 { color: #b36144; } --.base0A { color: #a88339; } --.base0B { color: #18974e; } --.base0C { color: #75a738; } --.base0D { color: #477ca1; } --.base0E { color: #8868b3; } --.base0F { color: #b3588e; } diff --cc priv/static/static/css/base16-materia.css index 41d935dd1,41d935dd1..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-materia.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #263238; } --.base01-background { background-color: #2C393F; } --.base02-background { background-color: #37474F; } --.base03-background { background-color: #707880; } --.base04-background { background-color: #C9CCD3; } --.base05-background { background-color: #CDD3DE; } --.base06-background { background-color: #D5DBE5; } --.base07-background { background-color: #FFFFFF; } --.base08-background { background-color: #EC5F67; } --.base09-background { background-color: #EA9560; } --.base0A-background { background-color: #FFCC00; } --.base0B-background { background-color: #8BD649; } --.base0C-background { background-color: #80CBC4; } --.base0D-background { background-color: #89DDFF; } --.base0E-background { background-color: #82AAFF; } --.base0F-background { background-color: #EC5F67; } -- --.base00 { color: #263238; } --.base01 { color: #2C393F; } --.base02 { color: #37474F; } --.base03 { color: #707880; } --.base04 { color: #C9CCD3; } --.base05 { color: #CDD3DE; } --.base06 { color: #D5DBE5; } --.base07 { color: #FFFFFF; } --.base08 { color: #EC5F67; } --.base09 { color: #EA9560; } --.base0A { color: #FFCC00; } --.base0B { color: #8BD649; } --.base0C { color: #80CBC4; } --.base0D { color: #89DDFF; } --.base0E { color: #82AAFF; } --.base0F { color: #EC5F67; } diff --cc priv/static/static/css/base16-mexico-light.css index 1916c67bc,1916c67bc..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-mexico-light.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #f8f8f8; } --.base01-background { background-color: #e8e8e8; } --.base02-background { background-color: #d8d8d8; } --.base03-background { background-color: #b8b8b8; } --.base04-background { background-color: #585858; } --.base05-background { background-color: #383838; } --.base06-background { background-color: #282828; } --.base07-background { background-color: #181818; } --.base08-background { background-color: #ab4642; } --.base09-background { background-color: #dc9656; } --.base0A-background { background-color: #f79a0e; } --.base0B-background { background-color: #538947; } --.base0C-background { background-color: #4b8093; } --.base0D-background { background-color: #7cafc2; } --.base0E-background { background-color: #96609e; } --.base0F-background { background-color: #a16946; } -- --.base00 { color: #f8f8f8; } --.base01 { color: #e8e8e8; } --.base02 { color: #d8d8d8; } --.base03 { color: #b8b8b8; } --.base04 { color: #585858; } --.base05 { color: #383838; } --.base06 { color: #282828; } --.base07 { color: #181818; } --.base08 { color: #ab4642; } --.base09 { color: #dc9656; } --.base0A { color: #f79a0e; } --.base0B { color: #538947; } --.base0C { color: #4b8093; } --.base0D { color: #7cafc2; } --.base0E { color: #96609e; } --.base0F { color: #a16946; } diff --cc priv/static/static/css/base16-mocha.css index 6cb2fb580,6cb2fb580..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-mocha.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #3B3228; } --.base01-background { background-color: #534636; } --.base02-background { background-color: #645240; } --.base03-background { background-color: #7e705a; } --.base04-background { background-color: #b8afad; } --.base05-background { background-color: #d0c8c6; } --.base06-background { background-color: #e9e1dd; } --.base07-background { background-color: #f5eeeb; } --.base08-background { background-color: #cb6077; } --.base09-background { background-color: #d28b71; } --.base0A-background { background-color: #f4bc87; } --.base0B-background { background-color: #beb55b; } --.base0C-background { background-color: #7bbda4; } --.base0D-background { background-color: #8ab3b5; } --.base0E-background { background-color: #a89bb9; } --.base0F-background { background-color: #bb9584; } -- --.base00 { color: #3B3228; } --.base01 { color: #534636; } --.base02 { color: #645240; } --.base03 { color: #7e705a; } --.base04 { color: #b8afad; } --.base05 { color: #d0c8c6; } --.base06 { color: #e9e1dd; } --.base07 { color: #f5eeeb; } --.base08 { color: #cb6077; } --.base09 { color: #d28b71; } --.base0A { color: #f4bc87; } --.base0B { color: #beb55b; } --.base0C { color: #7bbda4; } --.base0D { color: #8ab3b5; } --.base0E { color: #a89bb9; } --.base0F { color: #bb9584; } diff --cc priv/static/static/css/base16-monokai.css index fc7ccf471,fc7ccf471..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-monokai.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #272822; } --.base01-background { background-color: #383830; } --.base02-background { background-color: #49483e; } --.base03-background { background-color: #75715e; } --.base04-background { background-color: #a59f85; } --.base05-background { background-color: #f8f8f2; } --.base06-background { background-color: #f5f4f1; } --.base07-background { background-color: #f9f8f5; } --.base08-background { background-color: #f92672; } --.base09-background { background-color: #fd971f; } --.base0A-background { background-color: #f4bf75; } --.base0B-background { background-color: #a6e22e; } --.base0C-background { background-color: #a1efe4; } --.base0D-background { background-color: #66d9ef; } --.base0E-background { background-color: #ae81ff; } --.base0F-background { background-color: #cc6633; } -- --.base00 { color: #272822; } --.base01 { color: #383830; } --.base02 { color: #49483e; } --.base03 { color: #75715e; } --.base04 { color: #a59f85; } --.base05 { color: #f8f8f2; } --.base06 { color: #f5f4f1; } --.base07 { color: #f9f8f5; } --.base08 { color: #f92672; } --.base09 { color: #fd971f; } --.base0A { color: #f4bf75; } --.base0B { color: #a6e22e; } --.base0C { color: #a1efe4; } --.base0D { color: #66d9ef; } --.base0E { color: #ae81ff; } --.base0F { color: #cc6633; } diff --cc priv/static/static/css/base16-ocean.css index 8622d17e0,8622d17e0..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-ocean.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #2b303b; } --.base01-background { background-color: #343d46; } --.base02-background { background-color: #4f5b66; } --.base03-background { background-color: #65737e; } --.base04-background { background-color: #a7adba; } --.base05-background { background-color: #c0c5ce; } --.base06-background { background-color: #dfe1e8; } --.base07-background { background-color: #eff1f5; } --.base08-background { background-color: #bf616a; } --.base09-background { background-color: #d08770; } --.base0A-background { background-color: #ebcb8b; } --.base0B-background { background-color: #a3be8c; } --.base0C-background { background-color: #96b5b4; } --.base0D-background { background-color: #8fa1b3; } --.base0E-background { background-color: #b48ead; } --.base0F-background { background-color: #ab7967; } -- --.base00 { color: #2b303b; } --.base01 { color: #343d46; } --.base02 { color: #4f5b66; } --.base03 { color: #65737e; } --.base04 { color: #a7adba; } --.base05 { color: #c0c5ce; } --.base06 { color: #dfe1e8; } --.base07 { color: #eff1f5; } --.base08 { color: #bf616a; } --.base09 { color: #d08770; } --.base0A { color: #ebcb8b; } --.base0B { color: #a3be8c; } --.base0C { color: #96b5b4; } --.base0D { color: #8fa1b3; } --.base0E { color: #b48ead; } --.base0F { color: #ab7967; } diff --cc priv/static/static/css/base16-oceanicnext.css index df4d9ef5e,df4d9ef5e..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-oceanicnext.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #1B2B34; } --.base01-background { background-color: #343D46; } --.base02-background { background-color: #4F5B66; } --.base03-background { background-color: #65737E; } --.base04-background { background-color: #A7ADBA; } --.base05-background { background-color: #C0C5CE; } --.base06-background { background-color: #CDD3DE; } --.base07-background { background-color: #D8DEE9; } --.base08-background { background-color: #EC5f67; } --.base09-background { background-color: #F99157; } --.base0A-background { background-color: #FAC863; } --.base0B-background { background-color: #99C794; } --.base0C-background { background-color: #5FB3B3; } --.base0D-background { background-color: #6699CC; } --.base0E-background { background-color: #C594C5; } --.base0F-background { background-color: #AB7967; } -- --.base00 { color: #1B2B34; } --.base01 { color: #343D46; } --.base02 { color: #4F5B66; } --.base03 { color: #65737E; } --.base04 { color: #A7ADBA; } --.base05 { color: #C0C5CE; } --.base06 { color: #CDD3DE; } --.base07 { color: #D8DEE9; } --.base08 { color: #EC5f67; } --.base09 { color: #F99157; } --.base0A { color: #FAC863; } --.base0B { color: #99C794; } --.base0C { color: #5FB3B3; } --.base0D { color: #6699CC; } --.base0E { color: #C594C5; } --.base0F { color: #AB7967; } diff --cc priv/static/static/css/base16-paraiso.css index b68c94071,b68c94071..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-paraiso.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #2f1e2e; } --.base01-background { background-color: #41323f; } --.base02-background { background-color: #4f424c; } --.base03-background { background-color: #776e71; } --.base04-background { background-color: #8d8687; } --.base05-background { background-color: #a39e9b; } --.base06-background { background-color: #b9b6b0; } --.base07-background { background-color: #e7e9db; } --.base08-background { background-color: #ef6155; } --.base09-background { background-color: #f99b15; } --.base0A-background { background-color: #fec418; } --.base0B-background { background-color: #48b685; } --.base0C-background { background-color: #5bc4bf; } --.base0D-background { background-color: #06b6ef; } --.base0E-background { background-color: #815ba4; } --.base0F-background { background-color: #e96ba8; } -- --.base00 { color: #2f1e2e; } --.base01 { color: #41323f; } --.base02 { color: #4f424c; } --.base03 { color: #776e71; } --.base04 { color: #8d8687; } --.base05 { color: #a39e9b; } --.base06 { color: #b9b6b0; } --.base07 { color: #e7e9db; } --.base08 { color: #ef6155; } --.base09 { color: #f99b15; } --.base0A { color: #fec418; } --.base0B { color: #48b685; } --.base0C { color: #5bc4bf; } --.base0D { color: #06b6ef; } --.base0E { color: #815ba4; } --.base0F { color: #e96ba8; } diff --cc priv/static/static/css/base16-phd.css index 54276ab11,54276ab11..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-phd.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #061229; } --.base01-background { background-color: #2a3448; } --.base02-background { background-color: #4d5666; } --.base03-background { background-color: #717885; } --.base04-background { background-color: #9a99a3; } --.base05-background { background-color: #b8bbc2; } --.base06-background { background-color: #dbdde0; } --.base07-background { background-color: #ffffff; } --.base08-background { background-color: #d07346; } --.base09-background { background-color: #f0a000; } --.base0A-background { background-color: #fbd461; } --.base0B-background { background-color: #99bf52; } --.base0C-background { background-color: #72b9bf; } --.base0D-background { background-color: #5299bf; } --.base0E-background { background-color: #9989cc; } --.base0F-background { background-color: #b08060; } -- --.base00 { color: #061229; } --.base01 { color: #2a3448; } --.base02 { color: #4d5666; } --.base03 { color: #717885; } --.base04 { color: #9a99a3; } --.base05 { color: #b8bbc2; } --.base06 { color: #dbdde0; } --.base07 { color: #ffffff; } --.base08 { color: #d07346; } --.base09 { color: #f0a000; } --.base0A { color: #fbd461; } --.base0B { color: #99bf52; } --.base0C { color: #72b9bf; } --.base0D { color: #5299bf; } --.base0E { color: #9989cc; } --.base0F { color: #b08060; } diff --cc priv/static/static/css/base16-pico.css index 86482b72d,86482b72d..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-pico.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #000000; } --.base01-background { background-color: #1d2b53; } --.base02-background { background-color: #7e2553; } --.base03-background { background-color: #008751; } --.base04-background { background-color: #ab5236; } --.base05-background { background-color: #5f574f; } --.base06-background { background-color: #c2c3c7; } --.base07-background { background-color: #fff1e8; } --.base08-background { background-color: #ff004d; } --.base09-background { background-color: #ffa300; } --.base0A-background { background-color: #fff024; } --.base0B-background { background-color: #00e756; } --.base0C-background { background-color: #29adff; } --.base0D-background { background-color: #83769c; } --.base0E-background { background-color: #ff77a8; } --.base0F-background { background-color: #ffccaa; } -- --.base00 { color: #000000; } --.base01 { color: #1d2b53; } --.base02 { color: #7e2553; } --.base03 { color: #008751; } --.base04 { color: #ab5236; } --.base05 { color: #5f574f; } --.base06 { color: #c2c3c7; } --.base07 { color: #fff1e8; } --.base08 { color: #ff004d; } --.base09 { color: #ffa300; } --.base0A { color: #fff024; } --.base0B { color: #00e756; } --.base0C { color: #29adff; } --.base0D { color: #83769c; } --.base0E { color: #ff77a8; } --.base0F { color: #ffccaa; } diff --cc priv/static/static/css/base16-pleroma-dark.css index e1d46f927,e1d46f927..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-pleroma-dark.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #161c20; } --.base01-background { background-color: #282e32; } --.base02-background { background-color: #343a3f; } --.base03-background { background-color: #4e5256; } --.base04-background { background-color: #ababab; } --.base05-background { background-color: #b9b9b9; } --.base06-background { background-color: #d0d0d0; } --.base07-background { background-color: #e7e7e7; } --.base08-background { background-color: #baaa9c; } --.base09-background { background-color: #999999; } --.base0A-background { background-color: #a0a0a0; } --.base0B-background { background-color: #8e8e8e; } --.base0C-background { background-color: #868686; } --.base0D-background { background-color: #686868; } --.base0E-background { background-color: #747474; } --.base0F-background { background-color: #5e5e5e; } -- --.base00 { color: #161c20; } --.base01 { color: #282e32; } --.base02 { color: #343a3f; } --.base03 { color: #4e5256; } --.base04 { color: #ababab; } --.base05 { color: #b9b9b9; } --.base06 { color: #d0d0d0; } --.base07 { color: #e7e7e7; } --.base08 { color: #baaa9c; } --.base09 { color: #999999; } --.base0A { color: #a0a0a0; } --.base0B { color: #8e8e8e; } --.base0C { color: #868686; } --.base0D { color: #686868; } --.base0E { color: #747474; } --.base0F { color: #5e5e5e; } diff --cc priv/static/static/css/base16-pleroma-light.css index 1a85689aa,1a85689aa..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-pleroma-light.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #f2f4f6; } --.base01-background { background-color: #dde2e6; } --.base02-background { background-color: #c0c6cb; } --.base03-background { background-color: #a4a4a4; } --.base04-background { background-color: #545454; } --.base05-background { background-color: #304055; } --.base06-background { background-color: #040404; } --.base07-background { background-color: #000000; } --.base08-background { background-color: #e92f2f; } --.base09-background { background-color: #e09448; } --.base0A-background { background-color: #dddd13; } --.base0B-background { background-color: #0ed839; } --.base0C-background { background-color: #23edda; } --.base0D-background { background-color: #3b48e3; } --.base0E-background { background-color: #f996e2; } --.base0F-background { background-color: #69542d; } -- --.base00 { color: #f2f4f6; } --.base01 { color: #dde2e6; } --.base02 { color: #c0c6cb; } --.base03 { color: #a4a4a4; } --.base04 { color: #545454; } --.base05 { color: #304055; } --.base06 { color: #040404; } --.base07 { color: #000000; } --.base08 { color: #e46f0f; } --.base09 { color: #e09448; } --.base0A { color: #dddd13; } --.base0B { color: #0ed839; } --.base0C { color: #23edda; } --.base0D { color: #3b48e3; } --.base0E { color: #f996e2; } --.base0F { color: #69542d; } diff --cc priv/static/static/css/base16-pop.css index 14acac171,14acac171..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-pop.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #000000; } --.base01-background { background-color: #202020; } --.base02-background { background-color: #303030; } --.base03-background { background-color: #505050; } --.base04-background { background-color: #b0b0b0; } --.base05-background { background-color: #d0d0d0; } --.base06-background { background-color: #e0e0e0; } --.base07-background { background-color: #ffffff; } --.base08-background { background-color: #eb008a; } --.base09-background { background-color: #f29333; } --.base0A-background { background-color: #f8ca12; } --.base0B-background { background-color: #37b349; } --.base0C-background { background-color: #00aabb; } --.base0D-background { background-color: #0e5a94; } --.base0E-background { background-color: #b31e8d; } --.base0F-background { background-color: #7a2d00; } -- --.base00 { color: #000000; } --.base01 { color: #202020; } --.base02 { color: #303030; } --.base03 { color: #505050; } --.base04 { color: #b0b0b0; } --.base05 { color: #d0d0d0; } --.base06 { color: #e0e0e0; } --.base07 { color: #ffffff; } --.base08 { color: #eb008a; } --.base09 { color: #f29333; } --.base0A { color: #f8ca12; } --.base0B { color: #37b349; } --.base0C { color: #00aabb; } --.base0D { color: #0e5a94; } --.base0E { color: #b31e8d; } --.base0F { color: #7a2d00; } diff --cc priv/static/static/css/base16-railscasts.css index 18f43bfd6,18f43bfd6..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-railscasts.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #2b2b2b; } --.base01-background { background-color: #272935; } --.base02-background { background-color: #3a4055; } --.base03-background { background-color: #5a647e; } --.base04-background { background-color: #d4cfc9; } --.base05-background { background-color: #e6e1dc; } --.base06-background { background-color: #f4f1ed; } --.base07-background { background-color: #f9f7f3; } --.base08-background { background-color: #da4939; } --.base09-background { background-color: #cc7833; } --.base0A-background { background-color: #ffc66d; } --.base0B-background { background-color: #a5c261; } --.base0C-background { background-color: #519f50; } --.base0D-background { background-color: #6d9cbe; } --.base0E-background { background-color: #b6b3eb; } --.base0F-background { background-color: #bc9458; } -- --.base00 { color: #2b2b2b; } --.base01 { color: #272935; } --.base02 { color: #3a4055; } --.base03 { color: #5a647e; } --.base04 { color: #d4cfc9; } --.base05 { color: #e6e1dc; } --.base06 { color: #f4f1ed; } --.base07 { color: #f9f7f3; } --.base08 { color: #da4939; } --.base09 { color: #cc7833; } --.base0A { color: #ffc66d; } --.base0B { color: #a5c261; } --.base0C { color: #519f50; } --.base0D { color: #6d9cbe; } --.base0E { color: #b6b3eb; } --.base0F { color: #bc9458; } diff --cc priv/static/static/css/base16-seti-ui.css index bd4f9cc42,bd4f9cc42..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-seti-ui.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #151718; } --.base01-background { background-color: #8ec43d; } --.base02-background { background-color: #3B758C; } --.base03-background { background-color: #41535B; } --.base04-background { background-color: #43a5d5; } --.base05-background { background-color: #d6d6d6; } --.base06-background { background-color: #eeeeee; } --.base07-background { background-color: #ffffff; } --.base08-background { background-color: #Cd3f45; } --.base09-background { background-color: #db7b55; } --.base0A-background { background-color: #e6cd69; } --.base0B-background { background-color: #9fca56; } --.base0C-background { background-color: #55dbbe; } --.base0D-background { background-color: #55b5db; } --.base0E-background { background-color: #a074c4; } --.base0F-background { background-color: #8a553f; } -- --.base00 { color: #151718; } --.base01 { color: #8ec43d; } --.base02 { color: #3B758C; } --.base03 { color: #41535B; } --.base04 { color: #43a5d5; } --.base05 { color: #d6d6d6; } --.base06 { color: #eeeeee; } --.base07 { color: #ffffff; } --.base08 { color: #Cd3f45; } --.base09 { color: #db7b55; } --.base0A { color: #e6cd69; } --.base0B { color: #9fca56; } --.base0C { color: #55dbbe; } --.base0D { color: #55b5db; } --.base0E { color: #a074c4; } --.base0F { color: #8a553f; } diff --cc priv/static/static/css/base16-shapeshifter.css index ded180691,ded180691..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-shapeshifter.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #f9f9f9; } --.base01-background { background-color: #e0e0e0; } --.base02-background { background-color: #ababab; } --.base03-background { background-color: #555555; } --.base04-background { background-color: #343434; } --.base05-background { background-color: #102015; } --.base06-background { background-color: #040404; } --.base07-background { background-color: #000000; } --.base08-background { background-color: #e92f2f; } --.base09-background { background-color: #e09448; } --.base0A-background { background-color: #dddd13; } --.base0B-background { background-color: #0ed839; } --.base0C-background { background-color: #23edda; } --.base0D-background { background-color: #3b48e3; } --.base0E-background { background-color: #f996e2; } --.base0F-background { background-color: #69542d; } -- --.base00 { color: #f9f9f9; } --.base01 { color: #e0e0e0; } --.base02 { color: #ababab; } --.base03 { color: #555555; } --.base04 { color: #343434; } --.base05 { color: #102015; } --.base06 { color: #040404; } --.base07 { color: #000000; } --.base08 { color: #e92f2f; } --.base09 { color: #e09448; } --.base0A { color: #dddd13; } --.base0B { color: #0ed839; } --.base0C { color: #23edda; } --.base0D { color: #3b48e3; } --.base0E { color: #f996e2; } --.base0F { color: #69542d; } diff --cc priv/static/static/css/base16-solar-flare.css index 7d1d38624,7d1d38624..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-solar-flare.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #18262F; } --.base01-background { background-color: #222E38; } --.base02-background { background-color: #586875; } --.base03-background { background-color: #667581; } --.base04-background { background-color: #85939E; } --.base05-background { background-color: #A6AFB8; } --.base06-background { background-color: #E8E9ED; } --.base07-background { background-color: #F5F7FA; } --.base08-background { background-color: #EF5253; } --.base09-background { background-color: #E66B2B; } --.base0A-background { background-color: #E4B51C; } --.base0B-background { background-color: #7CC844; } --.base0C-background { background-color: #52CBB0; } --.base0D-background { background-color: #33B5E1; } --.base0E-background { background-color: #A363D5; } --.base0F-background { background-color: #D73C9A; } -- --.base00 { color: #18262F; } --.base01 { color: #222E38; } --.base02 { color: #586875; } --.base03 { color: #667581; } --.base04 { color: #85939E; } --.base05 { color: #A6AFB8; } --.base06 { color: #E8E9ED; } --.base07 { color: #F5F7FA; } --.base08 { color: #EF5253; } --.base09 { color: #E66B2B; } --.base0A { color: #E4B51C; } --.base0B { color: #7CC844; } --.base0C { color: #52CBB0; } --.base0D { color: #33B5E1; } --.base0E { color: #A363D5; } --.base0F { color: #D73C9A; } diff --cc priv/static/static/css/base16-solarized-dark.css index ac16f12c9,ac16f12c9..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-solarized-dark.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #002b36; } --.base01-background { background-color: #073642; } --.base02-background { background-color: #586e75; } --.base03-background { background-color: #657b83; } --.base04-background { background-color: #839496; } --.base05-background { background-color: #93a1a1; } --.base06-background { background-color: #eee8d5; } --.base07-background { background-color: #fdf6e3; } --.base08-background { background-color: #dc322f; } --.base09-background { background-color: #cb4b16; } --.base0A-background { background-color: #b58900; } --.base0B-background { background-color: #859900; } --.base0C-background { background-color: #2aa198; } --.base0D-background { background-color: #268bd2; } --.base0E-background { background-color: #6c71c4; } --.base0F-background { background-color: #d33682; } -- --.base00 { color: #002b36; } --.base01 { color: #073642; } --.base02 { color: #586e75; } --.base03 { color: #657b83; } --.base04 { color: #839496; } --.base05 { color: #93a1a1; } --.base06 { color: #eee8d5; } --.base07 { color: #fdf6e3; } --.base08 { color: #dc322f; } --.base09 { color: #cb4b16; } --.base0A { color: #b58900; } --.base0B { color: #859900; } --.base0C { color: #2aa198; } --.base0D { color: #268bd2; } --.base0E { color: #6c71c4; } --.base0F { color: #d33682; } diff --cc priv/static/static/css/base16-solarized-light.css index 7164cb046,7164cb046..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-solarized-light.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #fdf6e3; } --.base01-background { background-color: #eee8d5; } --.base02-background { background-color: #93a1a1; } --.base03-background { background-color: #839496; } --.base04-background { background-color: #657b83; } --.base05-background { background-color: #586e75; } --.base06-background { background-color: #073642; } --.base07-background { background-color: #002b36; } --.base08-background { background-color: #dc322f; } --.base09-background { background-color: #cb4b16; } --.base0A-background { background-color: #b58900; } --.base0B-background { background-color: #859900; } --.base0C-background { background-color: #2aa198; } --.base0D-background { background-color: #268bd2; } --.base0E-background { background-color: #6c71c4; } --.base0F-background { background-color: #d33682; } -- --.base00 { color: #fdf6e3; } --.base01 { color: #eee8d5; } --.base02 { color: #93a1a1; } --.base03 { color: #839496; } --.base04 { color: #657b83; } --.base05 { color: #586e75; } --.base06 { color: #073642; } --.base07 { color: #002b36; } --.base08 { color: #dc322f; } --.base09 { color: #cb4b16; } --.base0A { color: #b58900; } --.base0B { color: #859900; } --.base0C { color: #2aa198; } --.base0D { color: #268bd2; } --.base0E { color: #6c71c4; } --.base0F { color: #d33682; } diff --cc priv/static/static/css/base16-spacemacs.css index 487376500,487376500..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-spacemacs.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #1f2022; } --.base01-background { background-color: #282828; } --.base02-background { background-color: #444155; } --.base03-background { background-color: #585858; } --.base04-background { background-color: #b8b8b8; } --.base05-background { background-color: #a3a3a3; } --.base06-background { background-color: #e8e8e8; } --.base07-background { background-color: #f8f8f8; } --.base08-background { background-color: #f2241f; } --.base09-background { background-color: #ffa500; } --.base0A-background { background-color: #b1951d; } --.base0B-background { background-color: #67b11d; } --.base0C-background { background-color: #2d9574; } --.base0D-background { background-color: #4f97d7; } --.base0E-background { background-color: #a31db1; } --.base0F-background { background-color: #b03060; } -- --.base00 { color: #1f2022; } --.base01 { color: #282828; } --.base02 { color: #444155; } --.base03 { color: #585858; } --.base04 { color: #b8b8b8; } --.base05 { color: #a3a3a3; } --.base06 { color: #e8e8e8; } --.base07 { color: #f8f8f8; } --.base08 { color: #f2241f; } --.base09 { color: #ffa500; } --.base0A { color: #b1951d; } --.base0B { color: #67b11d; } --.base0C { color: #2d9574; } --.base0D { color: #4f97d7; } --.base0E { color: #a31db1; } --.base0F { color: #b03060; } diff --cc priv/static/static/css/base16-summerfruit-dark.css index 1c8f2332e,1c8f2332e..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-summerfruit-dark.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #151515; } --.base01-background { background-color: #202020; } --.base02-background { background-color: #303030; } --.base03-background { background-color: #505050; } --.base04-background { background-color: #B0B0B0; } --.base05-background { background-color: #D0D0D0; } --.base06-background { background-color: #E0E0E0; } --.base07-background { background-color: #FFFFFF; } --.base08-background { background-color: #FF0086; } --.base09-background { background-color: #FD8900; } --.base0A-background { background-color: #ABA800; } --.base0B-background { background-color: #00C918; } --.base0C-background { background-color: #1FAAAA; } --.base0D-background { background-color: #3777E6; } --.base0E-background { background-color: #AD00A1; } --.base0F-background { background-color: #CC6633; } -- --.base00 { color: #151515; } --.base01 { color: #202020; } --.base02 { color: #303030; } --.base03 { color: #505050; } --.base04 { color: #B0B0B0; } --.base05 { color: #D0D0D0; } --.base06 { color: #E0E0E0; } --.base07 { color: #FFFFFF; } --.base08 { color: #FF0086; } --.base09 { color: #FD8900; } --.base0A { color: #ABA800; } --.base0B { color: #00C918; } --.base0C { color: #1FAAAA; } --.base0D { color: #3777E6; } --.base0E { color: #AD00A1; } --.base0F { color: #CC6633; } diff --cc priv/static/static/css/base16-summerfruit-light.css index cb54d4c54,cb54d4c54..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-summerfruit-light.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #FFFFFF; } --.base01-background { background-color: #E0E0E0; } --.base02-background { background-color: #D0D0D0; } --.base03-background { background-color: #B0B0B0; } --.base04-background { background-color: #000000; } --.base05-background { background-color: #101010; } --.base06-background { background-color: #151515; } --.base07-background { background-color: #202020; } --.base08-background { background-color: #FF0086; } --.base09-background { background-color: #FD8900; } --.base0A-background { background-color: #ABA800; } --.base0B-background { background-color: #00C918; } --.base0C-background { background-color: #1FAAAA; } --.base0D-background { background-color: #3777E6; } --.base0E-background { background-color: #AD00A1; } --.base0F-background { background-color: #CC6633; } -- --.base00 { color: #FFFFFF; } --.base01 { color: #E0E0E0; } --.base02 { color: #D0D0D0; } --.base03 { color: #B0B0B0; } --.base04 { color: #000000; } --.base05 { color: #101010; } --.base06 { color: #151515; } --.base07 { color: #202020; } --.base08 { color: #FF0086; } --.base09 { color: #FD8900; } --.base0A { color: #ABA800; } --.base0B { color: #00C918; } --.base0C { color: #1FAAAA; } --.base0D { color: #3777E6; } --.base0E { color: #AD00A1; } --.base0F { color: #CC6633; } diff --cc priv/static/static/css/base16-tomorrow-night.css index 09ecf08ef,09ecf08ef..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-tomorrow-night.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #1d1f21; } --.base01-background { background-color: #282a2e; } --.base02-background { background-color: #373b41; } --.base03-background { background-color: #969896; } --.base04-background { background-color: #b4b7b4; } --.base05-background { background-color: #c5c8c6; } --.base06-background { background-color: #e0e0e0; } --.base07-background { background-color: #ffffff; } --.base08-background { background-color: #cc6666; } --.base09-background { background-color: #de935f; } --.base0A-background { background-color: #f0c674; } --.base0B-background { background-color: #b5bd68; } --.base0C-background { background-color: #8abeb7; } --.base0D-background { background-color: #81a2be; } --.base0E-background { background-color: #b294bb; } --.base0F-background { background-color: #a3685a; } -- --.base00 { color: #1d1f21; } --.base01 { color: #282a2e; } --.base02 { color: #373b41; } --.base03 { color: #969896; } --.base04 { color: #b4b7b4; } --.base05 { color: #c5c8c6; } --.base06 { color: #e0e0e0; } --.base07 { color: #ffffff; } --.base08 { color: #cc6666; } --.base09 { color: #de935f; } --.base0A { color: #f0c674; } --.base0B { color: #b5bd68; } --.base0C { color: #8abeb7; } --.base0D { color: #81a2be; } --.base0E { color: #b294bb; } --.base0F { color: #a3685a; } diff --cc priv/static/static/css/base16-tomorrow.css index f14868230,f14868230..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-tomorrow.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #ffffff; } --.base01-background { background-color: #e0e0e0; } --.base02-background { background-color: #d6d6d6; } --.base03-background { background-color: #8e908c; } --.base04-background { background-color: #969896; } --.base05-background { background-color: #4d4d4c; } --.base06-background { background-color: #282a2e; } --.base07-background { background-color: #1d1f21; } --.base08-background { background-color: #c82829; } --.base09-background { background-color: #f5871f; } --.base0A-background { background-color: #eab700; } --.base0B-background { background-color: #718c00; } --.base0C-background { background-color: #3e999f; } --.base0D-background { background-color: #4271ae; } --.base0E-background { background-color: #8959a8; } --.base0F-background { background-color: #a3685a; } -- --.base00 { color: #ffffff; } --.base01 { color: #e0e0e0; } --.base02 { color: #d6d6d6; } --.base03 { color: #8e908c; } --.base04 { color: #969896; } --.base05 { color: #4d4d4c; } --.base06 { color: #282a2e; } --.base07 { color: #1d1f21; } --.base08 { color: #c82829; } --.base09 { color: #f5871f; } --.base0A { color: #eab700; } --.base0B { color: #718c00; } --.base0C { color: #3e999f; } --.base0D { color: #4271ae; } --.base0E { color: #8959a8; } --.base0F { color: #a3685a; } diff --cc priv/static/static/css/base16-twilight.css index c8dfda3f8,c8dfda3f8..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-twilight.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #1e1e1e; } --.base01-background { background-color: #323537; } --.base02-background { background-color: #464b50; } --.base03-background { background-color: #5f5a60; } --.base04-background { background-color: #838184; } --.base05-background { background-color: #a7a7a7; } --.base06-background { background-color: #c3c3c3; } --.base07-background { background-color: #ffffff; } --.base08-background { background-color: #cf6a4c; } --.base09-background { background-color: #cda869; } --.base0A-background { background-color: #f9ee98; } --.base0B-background { background-color: #8f9d6a; } --.base0C-background { background-color: #afc4db; } --.base0D-background { background-color: #7587a6; } --.base0E-background { background-color: #9b859d; } --.base0F-background { background-color: #9b703f; } -- --.base00 { color: #1e1e1e; } --.base01 { color: #323537; } --.base02 { color: #464b50; } --.base03 { color: #5f5a60; } --.base04 { color: #838184; } --.base05 { color: #a7a7a7; } --.base06 { color: #c3c3c3; } --.base07 { color: #ffffff; } --.base08 { color: #cf6a4c; } --.base09 { color: #cda869; } --.base0A { color: #f9ee98; } --.base0B { color: #8f9d6a; } --.base0C { color: #afc4db; } --.base0D { color: #7587a6; } --.base0E { color: #9b859d; } --.base0F { color: #9b703f; } diff --cc priv/static/static/css/base16-unikitty-dark.css index e6ef32e33,e6ef32e33..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-unikitty-dark.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #2e2a31; } --.base01-background { background-color: #4a464d; } --.base02-background { background-color: #666369; } --.base03-background { background-color: #838085; } --.base04-background { background-color: #9f9da2; } --.base05-background { background-color: #bcbabe; } --.base06-background { background-color: #d8d7da; } --.base07-background { background-color: #f5f4f7; } --.base08-background { background-color: #d8137f; } --.base09-background { background-color: #d65407; } --.base0A-background { background-color: #dc8a0e; } --.base0B-background { background-color: #17ad98; } --.base0C-background { background-color: #149bda; } --.base0D-background { background-color: #796af5; } --.base0E-background { background-color: #bb60ea; } --.base0F-background { background-color: #c720ca; } -- --.base00 { color: #2e2a31; } --.base01 { color: #4a464d; } --.base02 { color: #666369; } --.base03 { color: #838085; } --.base04 { color: #9f9da2; } --.base05 { color: #bcbabe; } --.base06 { color: #d8d7da; } --.base07 { color: #f5f4f7; } --.base08 { color: #d8137f; } --.base09 { color: #d65407; } --.base0A { color: #dc8a0e; } --.base0B { color: #17ad98; } --.base0C { color: #149bda; } --.base0D { color: #796af5; } --.base0E { color: #bb60ea; } --.base0F { color: #c720ca; } diff --cc priv/static/static/css/base16-unikitty-light.css index 7e4c51b7a,7e4c51b7a..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/base16-unikitty-light.css +++ /dev/null @@@ -1,33 -1,33 +1,0 @@@ --.base00-background { background-color: #ffffff; } --.base01-background { background-color: #e1e1e2; } --.base02-background { background-color: #c4c3c5; } --.base03-background { background-color: #a7a5a8; } --.base04-background { background-color: #89878b; } --.base05-background { background-color: #6c696e; } --.base06-background { background-color: #4f4b51; } --.base07-background { background-color: #322d34; } --.base08-background { background-color: #d8137f; } --.base09-background { background-color: #d65407; } --.base0A-background { background-color: #dc8a0e; } --.base0B-background { background-color: #17ad98; } --.base0C-background { background-color: #149bda; } --.base0D-background { background-color: #775dff; } --.base0E-background { background-color: #aa17e6; } --.base0F-background { background-color: #e013d0; } -- --.base00 { color: #ffffff; } --.base01 { color: #e1e1e2; } --.base02 { color: #c4c3c5; } --.base03 { color: #a7a5a8; } --.base04 { color: #89878b; } --.base05 { color: #6c696e; } --.base06 { color: #4f4b51; } --.base07 { color: #322d34; } --.base08 { color: #d8137f; } --.base09 { color: #d65407; } --.base0A { color: #dc8a0e; } --.base0B { color: #17ad98; } --.base0C { color: #149bda; } --.base0D { color: #775dff; } --.base0E { color: #aa17e6; } --.base0F { color: #e013d0; } diff --cc priv/static/static/css/themes.json index ea8e5a0c4,ea8e5a0c4..000000000 deleted file mode 100644,100644 --- a/priv/static/static/css/themes.json +++ /dev/null @@@ -1,66 -1,66 +1,0 @@@ --[ --"base16-pleroma-dark.css", --"base16-pleroma-light.css", --"base16-3024.css", --"base16-apathy.css", --"base16-ashes.css", --"base16-atelier-cave.css", --"base16-atelier-dune.css", --"base16-atelier-estuary.css", --"base16-atelier-forest.css", --"base16-atelier-heath.css", --"base16-atelier-lakeside.css", --"base16-atelier-plateau.css", --"base16-atelier-savanna.css", --"base16-atelier-seaside.css", --"base16-atelier-sulphurpool.css", --"base16-bespin.css", --"base16-brewer.css", --"base16-bright.css", --"base16-chalk.css", --"base16-codeschool.css", --"base16-darktooth.css", --"base16-default-dark.css", --"base16-default-light.css", --"base16-eighties.css", --"base16-embers.css", --"base16-flat.css", --"base16-github.css", --"base16-google-dark.css", --"base16-google-light.css", --"base16-grayscale-dark.css", --"base16-grayscale-light.css", --"base16-green-screen.css", --"base16-harmonic16-dark.css", --"base16-harmonic16-light.css", --"base16-hopscotch.css", --"base16-ir-black.css", --"base16-isotope.css", --"base16-london-tube.css", --"base16-macintosh.css", --"base16-marrakesh.css", --"base16-materia.css", --"base16-mexico-light.css", --"base16-mocha.css", --"base16-monokai.css", --"base16-ocean.css", --"base16-oceanicnext.css", --"base16-paraiso.css", --"base16-phd.css", --"base16-pico.css", --"base16-pop.css", --"base16-railscasts.css", --"base16-seti-ui.css", --"base16-shapeshifter.css", --"base16-solar-flare.css", --"base16-solarized-dark.css", --"base16-solarized-light.css", --"base16-spacemacs.css", --"base16-summerfruit-dark.css", --"base16-summerfruit-light.css", --"base16-tomorrow-night.css", --"base16-tomorrow.css", --"base16-twilight.css", --"base16-unikitty-dark.css", --"base16-unikitty-light.css" --] diff --cc priv/static/static/font/fontello.1582206587591.eot index 0fc4f848a,0de06da29..7101b3104 Binary files differ diff --cc priv/static/static/font/fontello.1582206587591.ttf index 7d614ac8d,5a9cefeec..8f0e51a13 Binary files differ diff --cc priv/static/static/font/fontello.1582206587591.woff index 000000000,28f4dda9d..74cd6c05b mode 000000,100644..100644 Binary files differ diff --cc priv/static/static/font/fontello.1582206587591.woff2 index 000000000,000000000..2f548b653 new file mode 100644 Binary files differ diff --cc priv/static/static/fontello.1582206587591.css index f89a6a156,70a43d019..7e3acd49e --- a/priv/static/static/fontello.1582206587591.css +++ b/priv/static/static/fontello.1582206587591.css @@@ -1,11 -1,11 +1,11 @@@ @font-face { font-family: "Icons"; - src: url("./font/fontello.1581272100487.eot"); - src: url("./font/fontello.1581272100487.eot") format("embedded-opentype"), - url("./font/fontello.1581272100487.woff2") format("woff2"), - url("./font/fontello.1581272100487.woff") format("woff"), - url("./font/fontello.1581272100487.ttf") format("truetype"), - url("./font/fontello.1581272100487.svg") format("svg"); - src: url("./font/fontello.1581425930672.eot"); - src: url("./font/fontello.1581425930672.eot") format("embedded-opentype"), - url("./font/fontello.1581425930672.woff2") format("woff2"), - url("./font/fontello.1581425930672.woff") format("woff"), - url("./font/fontello.1581425930672.ttf") format("truetype"), - url("./font/fontello.1581425930672.svg") format("svg"); ++ src: url("./font/fontello.1582206587591.eot"); ++ src: url("./font/fontello.1582206587591.eot") format("embedded-opentype"), ++ url("./font/fontello.1582206587591.woff2") format("woff2"), ++ url("./font/fontello.1582206587591.woff") format("woff"), ++ url("./font/fontello.1582206587591.ttf") format("truetype"), ++ url("./font/fontello.1582206587591.svg") format("svg"); font-weight: normal; font-style: normal; } diff --cc priv/static/static/js/2.9be9f9ec29f7536c73c3.js index d464dbf74,d464dbf74..000000000 deleted file mode 100644,100644 --- a/priv/static/static/js/2.9be9f9ec29f7536c73c3.js +++ /dev/null @@@ -1,2 -1,2 +1,0 @@@ --(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{576:function(t,e,i){var c=i(577);"string"==typeof c&&(c=[[t.i,c,""]]),c.locals&&(t.exports=c.locals);(0,i(3).default)("cc6cdea4",c,!0,{})},577:function(t,e,i){(t.exports=i(2)(!1)).push([t.i,".sticker-picker{width:100%}.sticker-picker .contents{min-height:250px}.sticker-picker .contents .sticker-picker-content{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0 4px}.sticker-picker .contents .sticker-picker-content .sticker{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;margin:4px;width:56px;height:56px}.sticker-picker .contents .sticker-picker-content .sticker img{height:100%}.sticker-picker .contents .sticker-picker-content .sticker img:hover{filter:drop-shadow(0 0 5px var(--link,#d8a070))}",""])},578:function(t,e,i){"use strict";i.r(e);var c=i(88),n={components:{TabSwitcher:i(51).a},data:function(){return{meta:{stickers:[]},path:""}},computed:{pack:function(){return this.$store.state.instance.stickers||[]}},methods:{clear:function(){this.meta={stickers:[]}},pick:function(t,e){var i=this,n=this.$store;fetch(t).then(function(t){t.blob().then(function(t){var a=new File([t],e,{mimetype:"image/png"}),s=new FormData;s.append("file",a),c.a.uploadMedia({store:n,formData:s}).then(function(t){i.$emit("uploaded",t),i.clear()},function(t){console.warn("Can't attach sticker"),console.warn(t),i.$emit("upload-failed","default")})})})}}},a=i(0);var s=function(t){i(576)},r=Object(a.a)(n,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"sticker-picker"},[i("tab-switcher",{staticClass:"tab-switcher",attrs:{"render-only-focused":!0,"scrollable-tabs":""}},t._l(t.pack,function(e){return i("div",{key:e.path,staticClass:"sticker-picker-content",attrs:{"image-tooltip":e.meta.title,image:e.path+e.meta.tabIcon}},t._l(e.meta.stickers,function(c){return i("div",{key:c,staticClass:"sticker",on:{click:function(i){i.stopPropagation(),i.preventDefault(),t.pick(e.path+c,e.meta.title)}}},[i("img",{attrs:{src:e.path+c}})])}),0)}),0)],1)},[],!1,s,null,null);e.default=r.exports}}]); --//# sourceMappingURL=2.9be9f9ec29f7536c73c3.js.map diff --cc priv/static/static/js/2.e44dd0959c37a28ce531.js index 000000000,000000000..c93165f91 new file mode 100644 --- /dev/null +++ b/priv/static/static/js/2.e44dd0959c37a28ce531.js @@@ -1,0 -1,0 +1,2 @@@ ++(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{579:function(t,e,i){var c=i(580);"string"==typeof c&&(c=[[t.i,c,""]]),c.locals&&(t.exports=c.locals);(0,i(4).default)("cc6cdea4",c,!0,{})},580:function(t,e,i){(t.exports=i(3)(!1)).push([t.i,".sticker-picker{width:100%}.sticker-picker .contents{min-height:250px}.sticker-picker .contents .sticker-picker-content{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0 4px}.sticker-picker .contents .sticker-picker-content .sticker{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;margin:4px;width:56px;height:56px}.sticker-picker .contents .sticker-picker-content .sticker img{height:100%}.sticker-picker .contents .sticker-picker-content .sticker img:hover{filter:drop-shadow(0 0 5px var(--accent,#d8a070))}",""])},581:function(t,e,i){"use strict";i.r(e);var c=i(88),a={components:{TabSwitcher:i(50).a},data:function(){return{meta:{stickers:[]},path:""}},computed:{pack:function(){return this.$store.state.instance.stickers||[]}},methods:{clear:function(){this.meta={stickers:[]}},pick:function(t,e){var i=this,a=this.$store;fetch(t).then(function(t){t.blob().then(function(t){var n=new File([t],e,{mimetype:"image/png"}),s=new FormData;s.append("file",n),c.a.uploadMedia({store:a,formData:s}).then(function(t){i.$emit("uploaded",t),i.clear()},function(t){console.warn("Can't attach sticker"),console.warn(t),i.$emit("upload-failed","default")})})})}}},n=i(0);var s=function(t){i(579)},r=Object(n.a)(a,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"sticker-picker"},[i("tab-switcher",{staticClass:"tab-switcher",attrs:{"render-only-focused":!0,"scrollable-tabs":""}},t._l(t.pack,function(e){return i("div",{key:e.path,staticClass:"sticker-picker-content",attrs:{"image-tooltip":e.meta.title,image:e.path+e.meta.tabIcon}},t._l(e.meta.stickers,function(c){return i("div",{key:c,staticClass:"sticker",on:{click:function(i){i.stopPropagation(),i.preventDefault(),t.pick(e.path+c,e.meta.title)}}},[i("img",{attrs:{src:e.path+c}})])}),0)}),0)],1)},[],!1,s,null,null);e.default=r.exports}}]); ++//# sourceMappingURL=2.e44dd0959c37a28ce531.js.map diff --cc priv/static/static/js/2.e44dd0959c37a28ce531.js.map index 21efd7ec8,21efd7ec8..c468d679d --- a/priv/static/static/js/2.e44dd0959c37a28ce531.js.map +++ b/priv/static/static/js/2.e44dd0959c37a28ce531.js.map @@@ -1,1 -1,1 +1,1 @@@ --{"version":3,"sources":["webpack:///./src/components/sticker_picker/sticker_picker.vue?d6cd","webpack:///./src/components/sticker_picker/sticker_picker.vue?d5ea","webpack:///./src/components/sticker_picker/sticker_picker.js","webpack:///./src/components/sticker_picker/sticker_picker.vue","webpack:///./src/components/sticker_picker/sticker_picker.vue?53f6"],"names":["content","__webpack_require__","module","i","locals","exports","add","default","push","StickerPicker","components","TabSwitcher","data","meta","stickers","path","computed","pack","this","$store","state","instance","methods","clear","pick","sticker","name","_this","store","fetch","then","res","blob","file","File","mimetype","formData","FormData","append","statusPosterService","uploadMedia","fileData","$emit","error","console","warn","__vue_styles__","context","Component","Object","component_normalizer","sticker_picker","_vm","_h","$createElement","_c","_self","staticClass","attrs","render-only-focused","scrollable-tabs","_l","stickerpack","key","image-tooltip","title","image","tabIcon","on","click","$event","stopPropagation","preventDefault","src","__webpack_exports__"],"mappings":"6EAGA,IAAAA,EAAcC,EAAQ,KACtB,iBAAAD,MAAA,EAA4CE,EAAAC,EAASH,EAAA,MACrDA,EAAAI,SAAAF,EAAAG,QAAAL,EAAAI,SAGAE,EADUL,EAAQ,GAAgEM,SAClF,WAAAP,GAAA,4BCRAE,EAAAG,QAA2BJ,EAAQ,EAARA,EAA0D,IAKrFO,KAAA,CAAcN,EAAAC,EAAS,0iBAA0iB,0DC8CljBM,EA/CO,CACpBC,WAAY,CACVC,qBAEFC,KAJoB,WAKlB,MAAO,CACLC,KAAM,CACJC,SAAU,IAEZC,KAAM,KAGVC,SAAU,CACRC,KADQ,WAEN,OAAOC,KAAKC,OAAOC,MAAMC,SAASP,UAAY,KAGlDQ,QAAS,CACPC,MADO,WAELL,KAAKL,KAAO,CACVC,SAAU,KAGdU,KANO,SAMDC,EAASC,GAAM,IAAAC,EAAAT,KACbU,EAAQV,KAAKC,OAEnBU,MAAMJ,GACHK,KAAK,SAACC,GACLA,EAAIC,OAAOF,KAAK,SAACE,GACf,IAAIC,EAAO,IAAIC,KAAK,CAACF,GAAON,EAAM,CAAES,SAAU,cAC1CC,EAAW,IAAIC,SACnBD,EAASE,OAAO,OAAQL,GACxBM,IAAoBC,YAAY,CAAEZ,QAAOQ,aACtCN,KAAK,SAACW,GACLd,EAAKe,MAAM,WAAYD,GACvBd,EAAKJ,SACJ,SAACoB,GACFC,QAAQC,KAAK,wBACbD,QAAQC,KAAKF,GACbhB,EAAKe,MAAM,gBAAiB,2BCnC5C,IAEAI,EAVA,SAAAC,GACE9C,EAAQ,MAeV+C,EAAgBC,OAAAC,EAAA,EAAAD,CACdE,ECjBF,WAA0B,IAAAC,EAAAlC,KAAamC,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,kBAA6B,CAAAF,EAAA,gBAAqBE,YAAA,eAAAC,MAAA,CAAkCC,uBAAA,EAAAC,kBAAA,KAAiDR,EAAAS,GAAAT,EAAA,cAAAU,GAAyC,OAAAP,EAAA,OAAiBQ,IAAAD,EAAA/C,KAAA0C,YAAA,yBAAAC,MAAA,CAAiEM,gBAAAF,EAAAjD,KAAAoD,MAAAC,MAAAJ,EAAA/C,KAAA+C,EAAAjD,KAAAsD,UAA4Ff,EAAAS,GAAAC,EAAAjD,KAAA,kBAAAY,GAAsD,OAAA8B,EAAA,OAAiBQ,IAAAtC,EAAAgC,YAAA,UAAAW,GAAA,CAAsCC,MAAA,SAAAC,GAAyBA,EAAAC,kBAAyBD,EAAAE,iBAAwBpB,EAAA5B,KAAAsC,EAAA/C,KAAAU,EAAAqC,EAAAjD,KAAAoD,UAA+D,CAAAV,EAAA,OAAYG,MAAA,CAAOe,IAAAX,EAAA/C,KAAAU,SAAsC,KAAK,QAC1vB,IDOA,EAaAqB,EATA,KAEA,MAYe4B,EAAA,QAAA1B,EAAiB","file":"static/js/2.9be9f9ec29f7536c73c3.js","sourcesContent":["// style-loader: Adds some css to the DOM by adding a \n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./checkbox.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./checkbox.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./checkbox.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-01a5cae8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./checkbox.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"checkbox\",class:{ disabled: _vm.disabled, indeterminate: _vm.indeterminate }},[_c('input',{attrs:{\"type\":\"checkbox\",\"disabled\":_vm.disabled},domProps:{\"checked\":_vm.checked,\"indeterminate\":_vm.indeterminate},on:{\"change\":function($event){_vm.$emit('change', $event.target.checked)}}}),_vm._v(\" \"),_c('i',{staticClass:\"checkbox-indicator\"}),_vm._v(\" \"),(!!_vm.$slots.default)?_c('span',{staticClass:\"label\"},[_vm._t(\"default\")],2):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","// TODO this func might as well take the entire file and use its mimetype\n// or the entire service could be just mimetype service that only operates\n// on mimetypes and not files. Currently the naming is confusing.\nconst fileType = mimetype => {\n if (mimetype.match(/text\\/html/)) {\n return 'html'\n }\n\n if (mimetype.match(/image/)) {\n return 'image'\n }\n\n if (mimetype.match(/video/)) {\n return 'video'\n }\n\n if (mimetype.match(/audio/)) {\n return 'audio'\n }\n\n return 'unknown'\n}\n\nconst fileMatchesSomeType = (types, file) =>\n types.some(type => fileType(file.mimetype) === type)\n\nconst fileTypeService = {\n fileType,\n fileMatchesSomeType\n}\n\nexport default fileTypeService\n","import { includes } from 'lodash'\n\nconst generateProfileLink = (id, screenName, restrictedNicknames) => {\n const complicated = !screenName || (isExternal(screenName) || includes(restrictedNicknames, screenName))\n return {\n name: (complicated ? 'external-user-profile' : 'user-profile'),\n params: (complicated ? { id } : { name: screenName })\n }\n}\n\nconst isExternal = screenName => screenName && screenName.includes('@')\n\nexport default generateProfileLink\n","const DialogModal = {\n props: {\n darkOverlay: {\n default: true,\n type: Boolean\n },\n onCancel: {\n default: () => {},\n type: Function\n }\n }\n}\n\nexport default DialogModal\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./dialog_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./dialog_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./dialog_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-70b9d662\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./dialog_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:{ 'dark-overlay': _vm.darkOverlay },on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }$event.stopPropagation();_vm.onCancel()}}},[_c('div',{staticClass:\"dialog-modal panel panel-default\",on:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',{staticClass:\"panel-heading dialog-modal-heading\"},[_c('div',{staticClass:\"title\"},[_vm._t(\"header\")],2)]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-modal-content\"},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('div',{staticClass:\"dialog-modal-footer user-interactions panel-footer\"},[_vm._t(\"footer\")],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import DialogModal from '../dialog_modal/dialog_modal.vue'\n\nconst FORCE_NSFW = 'mrf_tag:media-force-nsfw'\nconst STRIP_MEDIA = 'mrf_tag:media-strip'\nconst FORCE_UNLISTED = 'mrf_tag:force-unlisted'\nconst DISABLE_REMOTE_SUBSCRIPTION = 'mrf_tag:disable-remote-subscription'\nconst DISABLE_ANY_SUBSCRIPTION = 'mrf_tag:disable-any-subscription'\nconst SANDBOX = 'mrf_tag:sandbox'\nconst QUARANTINE = 'mrf_tag:quarantine'\n\nconst ModerationTools = {\n props: [\n 'user'\n ],\n data () {\n return {\n showDropDown: false,\n tags: {\n FORCE_NSFW,\n STRIP_MEDIA,\n FORCE_UNLISTED,\n DISABLE_REMOTE_SUBSCRIPTION,\n DISABLE_ANY_SUBSCRIPTION,\n SANDBOX,\n QUARANTINE\n },\n showDeleteUserDialog: false\n }\n },\n components: {\n DialogModal\n },\n computed: {\n tagsSet () {\n return new Set(this.user.tags)\n },\n hasTagPolicy () {\n return this.$store.state.instance.tagPolicyAvailable\n }\n },\n methods: {\n hasTag (tagName) {\n return this.tagsSet.has(tagName)\n },\n toggleTag (tag) {\n const store = this.$store\n if (this.tagsSet.has(tag)) {\n store.state.api.backendInteractor.untagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('untagUser', { user: this.user, tag })\n })\n } else {\n store.state.api.backendInteractor.tagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('tagUser', { user: this.user, tag })\n })\n }\n },\n toggleRight (right) {\n const store = this.$store\n if (this.user.rights[right]) {\n store.state.api.backendInteractor.deleteRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: false })\n })\n } else {\n store.state.api.backendInteractor.addRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: true })\n })\n }\n },\n toggleActivationStatus () {\n this.$store.dispatch('toggleActivationStatus', { user: this.user })\n },\n deleteUserDialog (show) {\n this.showDeleteUserDialog = show\n },\n deleteUser () {\n const store = this.$store\n const user = this.user\n const { id, name } = user\n store.state.api.backendInteractor.deleteUser({ user })\n .then(e => {\n this.$store.dispatch('markStatusesAsDeleted', status => user.id === status.user.id)\n const isProfile = this.$route.name === 'external-user-profile' || this.$route.name === 'user-profile'\n const isTargetUser = this.$route.params.name === name || this.$route.params.id === id\n if (isProfile && isTargetUser) {\n window.history.back()\n }\n })\n }\n }\n}\n\nexport default ModerationTools\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./moderation_tools.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./moderation_tools.js\"\nimport __vue_script__ from \"!!babel-loader!./moderation_tools.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-54c91820\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./moderation_tools.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-popover',{staticClass:\"moderation-tools-popover\",attrs:{\"trigger\":\"click\",\"placement\":\"bottom-end\"},on:{\"show\":function($event){_vm.showDropDown = true},\"hide\":function($event){_vm.showDropDown = false}}},[_c('div',{attrs:{\"slot\":\"popover\"},slot:\"popover\"},[_c('div',{staticClass:\"dropdown-menu\"},[(_vm.user.is_local)?_c('span',[_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){_vm.toggleRight(\"admin\")}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(!!_vm.user.rights.admin ? 'user_card.admin_menu.revoke_admin' : 'user_card.admin_menu.grant_admin'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){_vm.toggleRight(\"moderator\")}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(!!_vm.user.rights.moderator ? 'user_card.admin_menu.revoke_moderator' : 'user_card.admin_menu.grant_moderator'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}})]):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){_vm.toggleActivationStatus()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(!!_vm.user.deactivated ? 'user_card.admin_menu.activate_account' : 'user_card.admin_menu.deactivate_account'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){_vm.deleteUserDialog(true)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.delete_account'))+\"\\n \")]),_vm._v(\" \"),(_vm.hasTagPolicy)?_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasTagPolicy)?_c('span',[_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){_vm.toggleTag(_vm.tags.FORCE_NSFW)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.force_nsfw'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.FORCE_NSFW) }})]),_vm._v(\" \"),_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){_vm.toggleTag(_vm.tags.STRIP_MEDIA)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.strip_media'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.STRIP_MEDIA) }})]),_vm._v(\" \"),_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){_vm.toggleTag(_vm.tags.FORCE_UNLISTED)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.force_unlisted'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.FORCE_UNLISTED) }})]),_vm._v(\" \"),_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){_vm.toggleTag(_vm.tags.SANDBOX)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.sandbox'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.SANDBOX) }})]),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){_vm.toggleTag(_vm.tags.DISABLE_REMOTE_SUBSCRIPTION)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.disable_remote_subscription'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.DISABLE_REMOTE_SUBSCRIPTION) }})]):_vm._e(),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){_vm.toggleTag(_vm.tags.DISABLE_ANY_SUBSCRIPTION)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.disable_any_subscription'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.DISABLE_ANY_SUBSCRIPTION) }})]):_vm._e(),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){_vm.toggleTag(_vm.tags.QUARANTINE)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.quarantine'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.QUARANTINE) }})]):_vm._e()]):_vm._e()])]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default btn-block\",class:{ toggled: _vm.showDropDown }},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.moderation'))+\"\\n \")])]),_vm._v(\" \"),_c('portal',{attrs:{\"to\":\"modal\"}},[(_vm.showDeleteUserDialog)?_c('DialogModal',{attrs:{\"on-cancel\":_vm.deleteUserDialog.bind(this, false)}},[_c('template',{slot:\"header\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.delete_user'))+\"\\n \")]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('user_card.admin_menu.delete_user_confirmation')))]),_vm._v(\" \"),_c('template',{slot:\"footer\"},[_c('button',{staticClass:\"btn btn-default\",on:{\"click\":function($event){_vm.deleteUserDialog(false)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.cancel'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default danger\",on:{\"click\":function($event){_vm.deleteUser()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.delete_user'))+\"\\n \")])])],2):_vm._e()],1)],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import ProgressButton from '../progress_button/progress_button.vue'\n\nconst AccountActions = {\n props: [\n 'user'\n ],\n data () {\n return { }\n },\n components: {\n ProgressButton\n },\n methods: {\n showRepeats () {\n this.$store.dispatch('showReblogs', this.user.id)\n },\n hideRepeats () {\n this.$store.dispatch('hideReblogs', this.user.id)\n },\n blockUser () {\n this.$store.dispatch('blockUser', this.user.id)\n },\n unblockUser () {\n this.$store.dispatch('unblockUser', this.user.id)\n },\n reportUser () {\n this.$store.dispatch('openUserReportingModal', this.user.id)\n }\n }\n}\n\nexport default AccountActions\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./account_actions.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./account_actions.js\"\nimport __vue_script__ from \"!!babel-loader!./account_actions.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3967dbf7\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./account_actions.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"account-actions\"},[_c('v-popover',{staticClass:\"account-tools-popover\",attrs:{\"trigger\":\"click\",\"container\":false,\"placement\":\"bottom-end\",\"offset\":5}},[_c('div',{attrs:{\"slot\":\"popover\"},slot:\"popover\"},[_c('div',{staticClass:\"dropdown-menu\"},[(_vm.user.following)?[(_vm.user.showing_reblogs)?_c('button',{staticClass:\"btn btn-default dropdown-item\",on:{\"click\":_vm.hideRepeats}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.hide_repeats'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.user.showing_reblogs)?_c('button',{staticClass:\"btn btn-default dropdown-item\",on:{\"click\":_vm.showRepeats}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.show_repeats'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}})]:_vm._e(),_vm._v(\" \"),(_vm.user.statusnet_blocking)?_c('button',{staticClass:\"btn btn-default btn-block dropdown-item\",on:{\"click\":_vm.unblockUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.unblock'))+\"\\n \")]):_c('button',{staticClass:\"btn btn-default btn-block dropdown-item\",on:{\"click\":_vm.blockUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.block'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default btn-block dropdown-item\",on:{\"click\":_vm.reportUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.report'))+\"\\n \")])],2)]),_vm._v(\" \"),_c('div',{staticClass:\"btn btn-default ellipsis-button\"},[_c('i',{staticClass:\"icon-ellipsis trigger-button\"})])])],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\nimport ModerationTools from '../moderation_tools/moderation_tools.vue'\nimport AccountActions from '../account_actions/account_actions.vue'\nimport { hex2rgb } from '../../services/color_convert/color_convert.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters } from 'vuex'\n\nexport default {\n props: [\n 'user', 'switcher', 'selected', 'hideBio', 'rounded', 'bordered', 'allowZoomingAvatar'\n ],\n data () {\n return {\n followRequestInProgress: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter\n }\n },\n created () {\n this.$store.dispatch('fetchUserRelationship', this.user.id)\n },\n computed: {\n classes () {\n return [{\n 'user-card-rounded-t': this.rounded === 'top', // set border-top-left-radius and border-top-right-radius\n 'user-card-rounded': this.rounded === true, // set border-radius for all sides\n 'user-card-bordered': this.bordered === true // set border for all sides\n }]\n },\n style () {\n const color = this.$store.getters.mergedConfig.customTheme.colors\n ? this.$store.getters.mergedConfig.customTheme.colors.bg // v2\n : this.$store.getters.mergedConfig.colors.bg // v1\n\n if (color) {\n const rgb = (typeof color === 'string') ? hex2rgb(color) : color\n const tintColor = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .5)`\n\n return {\n backgroundColor: `rgb(${Math.floor(rgb.r * 0.53)}, ${Math.floor(rgb.g * 0.56)}, ${Math.floor(rgb.b * 0.59)})`,\n backgroundImage: [\n `linear-gradient(to bottom, ${tintColor}, ${tintColor})`,\n `url(${this.user.cover_photo})`\n ].join(', ')\n }\n }\n },\n isOtherUser () {\n return this.user.id !== this.$store.state.users.currentUser.id\n },\n subscribeUrl () {\n // eslint-disable-next-line no-undef\n const serverUrl = new URL(this.user.statusnet_profile_url)\n return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n dailyAvg () {\n const days = Math.ceil((new Date() - new Date(this.user.created_at)) / (60 * 60 * 24 * 1000))\n return Math.round(this.user.statuses_count / days)\n },\n userHighlightType: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return (data && data.type) || 'disabled'\n },\n set (type) {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n if (type !== 'disabled') {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: (data && data.color) || '#FFFFFF', type })\n } else {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: undefined })\n }\n },\n ...mapGetters(['mergedConfig'])\n },\n userHighlightColor: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return data && data.color\n },\n set (color) {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color })\n }\n },\n visibleRole () {\n const rights = this.user.rights\n if (!rights) { return }\n const validRole = rights.admin || rights.moderator\n const roleTitle = rights.admin ? 'admin' : 'moderator'\n return validRole && roleTitle\n },\n hideFollowsCount () {\n return this.isOtherUser && this.user.hide_follows_count\n },\n hideFollowersCount () {\n return this.isOtherUser && this.user.hide_followers_count\n },\n ...mapGetters(['mergedConfig'])\n },\n components: {\n UserAvatar,\n RemoteFollow,\n ModerationTools,\n AccountActions,\n ProgressButton,\n FollowButton\n },\n methods: {\n muteUser () {\n this.$store.dispatch('muteUser', this.user.id)\n },\n unmuteUser () {\n this.$store.dispatch('unmuteUser', this.user.id)\n },\n subscribeUser () {\n return this.$store.dispatch('subscribeUser', this.user.id)\n },\n unsubscribeUser () {\n return this.$store.dispatch('unsubscribeUser', this.user.id)\n },\n setProfileView (v) {\n if (this.switcher) {\n const store = this.$store\n store.commit('setProfileView', { v })\n }\n },\n linkClicked ({ target }) {\n if (target.tagName === 'SPAN') {\n target = target.parentNode\n }\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n userProfileLink (user) {\n return generateProfileLink(\n user.id, user.screen_name,\n this.$store.state.instance.restrictedNicknames\n )\n },\n zoomAvatar () {\n const attachment = {\n url: this.user.profile_image_url_original,\n mimetype: 'image'\n }\n this.$store.dispatch('setMedia', [attachment])\n this.$store.dispatch('setCurrent', attachment)\n },\n mentionUser () {\n this.$store.dispatch('openPostStatusModal', { replyTo: true, repliedUser: this.user })\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_card.js\"\nimport __vue_script__ from \"!!babel-loader!./user_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3ef38b32\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-card\",class:_vm.classes},[_c('div',{staticClass:\"background-image\",class:{ 'hide-bio': _vm.hideBio },style:(_vm.style)}),_vm._v(\" \"),_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"user-info\"},[_c('div',{staticClass:\"container\"},[(_vm.allowZoomingAvatar)?_c('a',{staticClass:\"user-info-avatar-link\",on:{\"click\":_vm.zoomAvatar}},[_c('UserAvatar',{attrs:{\"better-shadow\":_vm.betterShadow,\"user\":_vm.user}}),_vm._v(\" \"),_vm._m(0)],1):_c('router-link',{attrs:{\"to\":_vm.userProfileLink(_vm.user)}},[_c('UserAvatar',{attrs:{\"better-shadow\":_vm.betterShadow,\"user\":_vm.user}})],1),_vm._v(\" \"),_c('div',{staticClass:\"user-summary\"},[_c('div',{staticClass:\"top-line\"},[(_vm.user.name_html)?_c('div',{staticClass:\"user-name\",attrs:{\"title\":_vm.user.name},domProps:{\"innerHTML\":_vm._s(_vm.user.name_html)}}):_c('div',{staticClass:\"user-name\",attrs:{\"title\":_vm.user.name}},[_vm._v(\"\\n \"+_vm._s(_vm.user.name)+\"\\n \")]),_vm._v(\" \"),(!_vm.isOtherUser)?_c('router-link',{attrs:{\"to\":{ name: 'user-settings' }}},[_c('i',{staticClass:\"button-icon icon-wrench usersettings\",attrs:{\"title\":_vm.$t('tool_tip.user_settings')}})]):_vm._e(),_vm._v(\" \"),(_vm.isOtherUser && !_vm.user.is_local)?_c('a',{attrs:{\"href\":_vm.user.statusnet_profile_url,\"target\":\"_blank\"}},[_c('i',{staticClass:\"icon-link-ext usersettings\"})]):_vm._e(),_vm._v(\" \"),(_vm.isOtherUser && _vm.loggedIn)?_c('AccountActions',{attrs:{\"user\":_vm.user}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"bottom-line\"},[_c('router-link',{staticClass:\"user-screen-name\",attrs:{\"to\":_vm.userProfileLink(_vm.user)}},[_vm._v(\"\\n @\"+_vm._s(_vm.user.screen_name)+\"\\n \")]),_vm._v(\" \"),(!_vm.hideBio && !!_vm.visibleRole)?_c('span',{staticClass:\"alert staff\"},[_vm._v(_vm._s(_vm.visibleRole))]):_vm._e(),_vm._v(\" \"),(_vm.user.locked)?_c('span',[_c('i',{staticClass:\"icon icon-lock\"})]):_vm._e(),_vm._v(\" \"),(!_vm.mergedConfig.hideUserStats && !_vm.hideBio)?_c('span',{staticClass:\"dailyAvg\"},[_vm._v(_vm._s(_vm.dailyAvg)+\" \"+_vm._s(_vm.$t('user_card.per_day')))]):_vm._e()],1)])],1),_vm._v(\" \"),_c('div',{staticClass:\"user-meta\"},[(_vm.user.follows_you && _vm.loggedIn && _vm.isOtherUser)?_c('div',{staticClass:\"following\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.follows_you'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.isOtherUser && (_vm.loggedIn || !_vm.switcher))?_c('div',{staticClass:\"highlighter\"},[(_vm.userHighlightType !== 'disabled')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userHighlightColor),expression:\"userHighlightColor\"}],staticClass:\"userHighlightText\",attrs:{\"id\":'userHighlightColorTx'+_vm.user.id,\"type\":\"text\"},domProps:{\"value\":(_vm.userHighlightColor)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.userHighlightColor=$event.target.value}}}):_vm._e(),_vm._v(\" \"),(_vm.userHighlightType !== 'disabled')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userHighlightColor),expression:\"userHighlightColor\"}],staticClass:\"userHighlightCl\",attrs:{\"id\":'userHighlightColor'+_vm.user.id,\"type\":\"color\"},domProps:{\"value\":(_vm.userHighlightColor)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.userHighlightColor=$event.target.value}}}):_vm._e(),_vm._v(\" \"),_c('label',{staticClass:\"userHighlightSel select\",attrs:{\"for\":\"style-switcher\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userHighlightType),expression:\"userHighlightType\"}],staticClass:\"userHighlightSel\",attrs:{\"id\":'userHighlightSel'+_vm.user.id},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.userHighlightType=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"disabled\"}},[_vm._v(\"No highlight\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"solid\"}},[_vm._v(\"Solid bg\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"striped\"}},[_vm._v(\"Striped bg\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"side\"}},[_vm._v(\"Side stripe\")])]),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])]):_vm._e()]),_vm._v(\" \"),(_vm.loggedIn && _vm.isOtherUser)?_c('div',{staticClass:\"user-interactions\"},[_c('div',{staticClass:\"btn-group\"},[_c('FollowButton',{attrs:{\"user\":_vm.user}}),_vm._v(\" \"),(_vm.user.following)?[(!_vm.user.subscribed)?_c('ProgressButton',{staticClass:\"btn btn-default\",attrs:{\"click\":_vm.subscribeUser,\"title\":_vm.$t('user_card.subscribe')}},[_c('i',{staticClass:\"icon-bell-alt\"})]):_c('ProgressButton',{staticClass:\"btn btn-default toggled\",attrs:{\"click\":_vm.unsubscribeUser,\"title\":_vm.$t('user_card.unsubscribe')}},[_c('i',{staticClass:\"icon-bell-ringing-o\"})])]:_vm._e()],2),_vm._v(\" \"),_c('div',[(_vm.user.muted)?_c('button',{staticClass:\"btn btn-default btn-block toggled\",on:{\"click\":_vm.unmuteUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.muted'))+\"\\n \")]):_c('button',{staticClass:\"btn btn-default btn-block\",on:{\"click\":_vm.muteUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.mute'))+\"\\n \")])]),_vm._v(\" \"),_c('div',[_c('button',{staticClass:\"btn btn-default btn-block\",on:{\"click\":_vm.mentionUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.mention'))+\"\\n \")])]),_vm._v(\" \"),(_vm.loggedIn.role === \"admin\")?_c('ModerationTools',{attrs:{\"user\":_vm.user}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.loggedIn && _vm.user.is_local)?_c('div',{staticClass:\"user-interactions\"},[_c('RemoteFollow',{attrs:{\"user\":_vm.user}})],1):_vm._e()])]),_vm._v(\" \"),(!_vm.hideBio)?_c('div',{staticClass:\"panel-body\"},[(!_vm.mergedConfig.hideUserStats && _vm.switcher)?_c('div',{staticClass:\"user-counts\"},[_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();_vm.setProfileView('statuses')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.statuses')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.user.statuses_count)+\" \"),_c('br')])]),_vm._v(\" \"),_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();_vm.setProfileView('friends')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.followees')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.hideFollowsCount ? _vm.$t('user_card.hidden') : _vm.user.friends_count))])]),_vm._v(\" \"),_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();_vm.setProfileView('followers')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.followers')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.hideFollowersCount ? _vm.$t('user_card.hidden') : _vm.user.followers_count))])])]):_vm._e(),_vm._v(\" \"),(!_vm.hideBio && _vm.user.description_html)?_c('p',{staticClass:\"user-card-bio\",domProps:{\"innerHTML\":_vm._s(_vm.user.description_html)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}):(!_vm.hideBio)?_c('p',{staticClass:\"user-card-bio\"},[_vm._v(\"\\n \"+_vm._s(_vm.user.description)+\"\\n \")]):_vm._e()]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-info-avatar-link-overlay\"},[_c('i',{staticClass:\"button-icon icon-zoom-in\"})])}]\nexport { render, staticRenderFns }","import StillImage from '../still-image/still-image.vue'\n\nconst UserAvatar = {\n props: [\n 'user',\n 'betterShadow',\n 'compact'\n ],\n data () {\n return {\n showPlaceholder: false\n }\n },\n components: {\n StillImage\n },\n computed: {\n imgSrc () {\n return this.showPlaceholder ? '/images/avi.png' : this.user.profile_image_url_original\n }\n },\n methods: {\n imageLoadError () {\n this.showPlaceholder = true\n }\n },\n watch: {\n src () {\n this.showPlaceholder = false\n }\n }\n}\n\nexport default UserAvatar\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_avatar.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_avatar.js\"\nimport __vue_script__ from \"!!babel-loader!./user_avatar.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-056a5e34\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_avatar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('StillImage',{staticClass:\"avatar\",class:{ 'avatar-compact': _vm.compact, 'better-shadow': _vm.betterShadow },attrs:{\"alt\":_vm.user.screen_name,\"title\":_vm.user.screen_name,\"src\":_vm.imgSrc,\"image-load-error\":_vm.imageLoadError}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import StillImage from '../still-image/still-image.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport nsfwImage from '../../assets/nsfw.png'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { mapGetters } from 'vuex'\n\nconst Attachment = {\n props: [\n 'attachment',\n 'nsfw',\n 'statusId',\n 'size',\n 'allowPlay',\n 'setMedia',\n 'naturalSizeLoad'\n ],\n data () {\n return {\n nsfwImage: this.$store.state.instance.nsfwCensorImage || nsfwImage,\n hideNsfwLocal: this.$store.getters.mergedConfig.hideNsfw,\n preloadImage: this.$store.getters.mergedConfig.preloadImage,\n loading: false,\n img: fileTypeService.fileType(this.attachment.mimetype) === 'image' && document.createElement('img'),\n modalOpen: false,\n showHidden: false\n }\n },\n components: {\n StillImage,\n VideoAttachment\n },\n computed: {\n usePlaceHolder () {\n return this.size === 'hide' || this.type === 'unknown'\n },\n referrerpolicy () {\n return this.$store.state.instance.mediaProxyAvailable ? '' : 'no-referrer'\n },\n type () {\n return fileTypeService.fileType(this.attachment.mimetype)\n },\n hidden () {\n return this.nsfw && this.hideNsfwLocal && !this.showHidden\n },\n isEmpty () {\n return (this.type === 'html' && !this.attachment.oembed) || this.type === 'unknown'\n },\n isSmall () {\n return this.size === 'small'\n },\n fullwidth () {\n return this.type === 'html' || this.type === 'audio'\n },\n ...mapGetters(['mergedConfig'])\n },\n methods: {\n linkClicked ({ target }) {\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n openModal (event) {\n const modalTypes = this.mergedConfig.playVideosInModal\n ? ['image', 'video']\n : ['image']\n if (fileTypeService.fileMatchesSomeType(modalTypes, this.attachment) ||\n this.usePlaceHolder\n ) {\n event.stopPropagation()\n event.preventDefault()\n this.setMedia()\n this.$store.dispatch('setCurrent', this.attachment)\n }\n },\n toggleHidden (event) {\n if (\n (this.mergedConfig.useOneClickNsfw && !this.showHidden) &&\n (this.type !== 'video' || this.mergedConfig.playVideosInModal)\n ) {\n this.openModal(event)\n return\n }\n if (this.img && !this.preloadImage) {\n if (this.img.onload) {\n this.img.onload()\n } else {\n this.loading = true\n this.img.src = this.attachment.url\n this.img.onload = () => {\n this.loading = false\n this.showHidden = !this.showHidden\n }\n }\n } else {\n this.showHidden = !this.showHidden\n }\n },\n onImageLoad (image) {\n const width = image.naturalWidth\n const height = image.naturalHeight\n this.naturalSizeLoad && this.naturalSizeLoad({ width, height })\n }\n }\n}\n\nexport default Attachment\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./attachment.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./attachment.js\"\nimport __vue_script__ from \"!!babel-loader!./attachment.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-61e0eb0c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./attachment.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.usePlaceHolder)?_c('div',{on:{\"click\":_vm.openModal}},[(_vm.type !== 'html')?_c('a',{staticClass:\"placeholder\",attrs:{\"target\":\"_blank\",\"href\":_vm.attachment.url}},[_vm._v(\"\\n [\"+_vm._s(_vm.nsfw ? \"NSFW/\" : \"\")+_vm._s(_vm.type.toUpperCase())+\"]\\n \")]):_vm._e()]):_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isEmpty),expression:\"!isEmpty\"}],staticClass:\"attachment\",class:( _obj = {}, _obj[_vm.type] = true, _obj.loading = _vm.loading, _obj['fullwidth'] = _vm.fullwidth, _obj['nsfw-placeholder'] = _vm.hidden, _obj )},[(_vm.hidden)?_c('a',{staticClass:\"image-attachment\",attrs:{\"href\":_vm.attachment.url},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleHidden($event)}}},[_c('img',{key:_vm.nsfwImage,staticClass:\"nsfw\",class:{'small': _vm.isSmall},attrs:{\"src\":_vm.nsfwImage}}),_vm._v(\" \"),(_vm.type === 'video')?_c('i',{staticClass:\"play-icon icon-play-circled\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.nsfw && _vm.hideNsfwLocal && !_vm.hidden)?_c('div',{staticClass:\"hider\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleHidden($event)}}},[_vm._v(\"Hide\")])]):_vm._e(),_vm._v(\" \"),(_vm.type === 'image' && (!_vm.hidden || _vm.preloadImage))?_c('a',{staticClass:\"image-attachment\",class:{'hidden': _vm.hidden && _vm.preloadImage },attrs:{\"href\":_vm.attachment.url,\"target\":\"_blank\",\"title\":_vm.attachment.description},on:{\"click\":_vm.openModal}},[_c('StillImage',{attrs:{\"referrerpolicy\":_vm.referrerpolicy,\"mimetype\":_vm.attachment.mimetype,\"src\":_vm.attachment.large_thumb_url || _vm.attachment.url,\"image-load-handler\":_vm.onImageLoad}})],1):_vm._e(),_vm._v(\" \"),(_vm.type === 'video' && !_vm.hidden)?_c('a',{staticClass:\"video-container\",class:{'small': _vm.isSmall},attrs:{\"href\":_vm.allowPlay ? undefined : _vm.attachment.url},on:{\"click\":_vm.openModal}},[_c('VideoAttachment',{staticClass:\"video\",attrs:{\"attachment\":_vm.attachment,\"controls\":_vm.allowPlay}}),_vm._v(\" \"),(!_vm.allowPlay)?_c('i',{staticClass:\"play-icon icon-play-circled\"}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.type === 'audio')?_c('audio',{attrs:{\"src\":_vm.attachment.url,\"controls\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.type === 'html' && _vm.attachment.oembed)?_c('div',{staticClass:\"oembed\",on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}},[(_vm.attachment.thumb_url)?_c('div',{staticClass:\"image\"},[_c('img',{attrs:{\"src\":_vm.attachment.thumb_url}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text\"},[_c('h1',[_c('a',{attrs:{\"href\":_vm.attachment.url}},[_vm._v(_vm._s(_vm.attachment.oembed.title))])]),_vm._v(\" \"),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.attachment.oembed.oembedHTML)}})])]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\n\nconst FavoriteButton = {\n props: ['status', 'loggedIn'],\n data () {\n return {\n animated: false\n }\n },\n methods: {\n favorite () {\n if (!this.status.favorited) {\n this.$store.dispatch('favorite', { id: this.status.id })\n } else {\n this.$store.dispatch('unfavorite', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n }\n },\n computed: {\n classes () {\n return {\n 'icon-star-empty': !this.status.favorited,\n 'icon-star': this.status.favorited,\n 'animate-spin': this.animated\n }\n },\n ...mapGetters(['mergedConfig'])\n }\n}\n\nexport default FavoriteButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./favorite_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./favorite_button.js\"\nimport __vue_script__ from \"!!babel-loader!./favorite_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2ced002f\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./favorite_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.loggedIn)?_c('div',[_c('i',{staticClass:\"button-icon favorite-button fav-active\",class:_vm.classes,attrs:{\"title\":_vm.$t('tool_tip.favorite')},on:{\"click\":function($event){$event.preventDefault();_vm.favorite()}}}),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.fave_num > 0)?_c('span',[_vm._v(_vm._s(_vm.status.fave_num))]):_vm._e()]):_c('div',[_c('i',{staticClass:\"button-icon favorite-button\",class:_vm.classes,attrs:{\"title\":_vm.$t('tool_tip.favorite')}}),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.fave_num > 0)?_c('span',[_vm._v(_vm._s(_vm.status.fave_num))]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\n\nconst ReactButton = {\n props: ['status', 'loggedIn'],\n data () {\n return {\n showTooltip: false,\n filterWord: '',\n popperOptions: {\n modifiers: {\n preventOverflow: { padding: { top: 50 }, boundariesElement: 'viewport' }\n }\n }\n }\n },\n methods: {\n openReactionSelect () {\n this.showTooltip = true\n this.filterWord = ''\n },\n closeReactionSelect () {\n this.showTooltip = false\n },\n addReaction (event, emoji) {\n const existingReaction = this.status.emoji_reactions.find(r => r.name === emoji)\n if (existingReaction && existingReaction.me) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n } else {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n }\n this.closeReactionSelect()\n }\n },\n computed: {\n commonEmojis () {\n return ['❤️', '😠', '👀', '😂', '🔥']\n },\n emojis () {\n if (this.filterWord !== '') {\n return this.$store.state.instance.emoji.filter(emoji => emoji.displayText.includes(this.filterWord))\n }\n return this.$store.state.instance.emoji || []\n },\n ...mapGetters(['mergedConfig'])\n }\n}\n\nexport default ReactButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./react_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./react_button.js\"\nimport __vue_script__ from \"!!babel-loader!./react_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0c10eef0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./react_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-popover',{staticClass:\"react-button-popover\",attrs:{\"popper-options\":_vm.popperOptions,\"open\":_vm.showTooltip,\"trigger\":\"manual\",\"placement\":\"top\"},on:{\"hide\":_vm.closeReactionSelect}},[_c('div',{attrs:{\"slot\":\"popover\"},slot:\"popover\"},[_c('div',{staticClass:\"reaction-picker-filter\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filterWord),expression:\"filterWord\"}],attrs:{\"placeholder\":_vm.$t('emoji.search_emoji')},domProps:{\"value\":(_vm.filterWord)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.filterWord=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"reaction-picker\"},[_vm._l((_vm.commonEmojis),function(emoji){return _c('span',{key:emoji,staticClass:\"emoji-button\",on:{\"click\":function($event){_vm.addReaction($event, emoji)}}},[_vm._v(\"\\n \"+_vm._s(emoji)+\"\\n \")])}),_vm._v(\" \"),_c('div',{staticClass:\"reaction-picker-divider\"}),_vm._v(\" \"),_vm._l((_vm.emojis),function(emoji,key){return _c('span',{key:key,staticClass:\"emoji-button\",on:{\"click\":function($event){_vm.addReaction($event, emoji.replacement)}}},[_vm._v(\"\\n \"+_vm._s(emoji.replacement)+\"\\n \")])}),_vm._v(\" \"),_c('div',{staticClass:\"reaction-bottom-fader\"})],2)]),_vm._v(\" \"),(_vm.loggedIn)?_c('div',{on:{\"click\":function($event){$event.preventDefault();return _vm.openReactionSelect($event)}}},[_c('i',{staticClass:\"icon-smile button-icon add-reaction-button\",attrs:{\"title\":_vm.$t('tool_tip.add_reaction')}})]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\n\nconst RetweetButton = {\n props: ['status', 'loggedIn', 'visibility'],\n data () {\n return {\n animated: false\n }\n },\n methods: {\n retweet () {\n if (!this.status.repeated) {\n this.$store.dispatch('retweet', { id: this.status.id })\n } else {\n this.$store.dispatch('unretweet', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n }\n },\n computed: {\n classes () {\n return {\n 'retweeted': this.status.repeated,\n 'retweeted-empty': !this.status.repeated,\n 'animate-spin': this.animated\n }\n },\n ...mapGetters(['mergedConfig'])\n }\n}\n\nexport default RetweetButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./retweet_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./retweet_button.js\"\nimport __vue_script__ from \"!!babel-loader!./retweet_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-538410cc\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./retweet_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.loggedIn)?_c('div',[(_vm.visibility !== 'private' && _vm.visibility !== 'direct')?[_c('i',{staticClass:\"button-icon retweet-button icon-retweet rt-active\",class:_vm.classes,attrs:{\"title\":_vm.$t('tool_tip.repeat')},on:{\"click\":function($event){$event.preventDefault();_vm.retweet()}}}),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.repeat_num > 0)?_c('span',[_vm._v(_vm._s(_vm.status.repeat_num))]):_vm._e()]:[_c('i',{staticClass:\"button-icon icon-lock\",class:_vm.classes,attrs:{\"title\":_vm.$t('timeline.no_retweet_hint')}})]],2):(!_vm.loggedIn)?_c('div',[_c('i',{staticClass:\"button-icon icon-retweet\",class:_vm.classes,attrs:{\"title\":_vm.$t('tool_tip.repeat')}}),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.repeat_num > 0)?_c('span',[_vm._v(_vm._s(_vm.status.repeat_num))]):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeago from '../timeago/timeago.vue'\nimport { forEach, map } from 'lodash'\n\nexport default {\n name: 'Poll',\n props: ['basePoll'],\n components: { Timeago },\n data () {\n return {\n loading: false,\n choices: []\n }\n },\n created () {\n if (!this.$store.state.polls.pollsObject[this.pollId]) {\n this.$store.dispatch('mergeOrAddPoll', this.basePoll)\n }\n this.$store.dispatch('trackPoll', this.pollId)\n },\n destroyed () {\n this.$store.dispatch('untrackPoll', this.pollId)\n },\n computed: {\n pollId () {\n return this.basePoll.id\n },\n poll () {\n const storePoll = this.$store.state.polls.pollsObject[this.pollId]\n return storePoll || {}\n },\n options () {\n return (this.poll && this.poll.options) || []\n },\n expiresAt () {\n return (this.poll && this.poll.expires_at) || 0\n },\n expired () {\n return (this.poll && this.poll.expired) || false\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n showResults () {\n return this.poll.voted || this.expired || !this.loggedIn\n },\n totalVotesCount () {\n return this.poll.votes_count\n },\n containerClass () {\n return {\n loading: this.loading\n }\n },\n choiceIndices () {\n // Convert array of booleans into an array of indices of the\n // items that were 'true', so [true, false, false, true] becomes\n // [0, 3].\n return this.choices\n .map((entry, index) => entry && index)\n .filter(value => typeof value === 'number')\n },\n isDisabled () {\n const noChoice = this.choiceIndices.length === 0\n return this.loading || noChoice\n }\n },\n methods: {\n percentageForOption (count) {\n return this.totalVotesCount === 0 ? 0 : Math.round(count / this.totalVotesCount * 100)\n },\n resultTitle (option) {\n return `${option.votes_count}/${this.totalVotesCount} ${this.$t('polls.votes')}`\n },\n fetchPoll () {\n this.$store.dispatch('refreshPoll', { id: this.statusId, pollId: this.poll.id })\n },\n activateOption (index) {\n // forgive me father: doing checking the radio/checkboxes\n // in code because of customized input elements need either\n // a) an extra element for the actual graphic, or b) use a\n // pseudo element for the label. We use b) which mandates\n // using \"for\" and \"id\" matching which isn't nice when the\n // same poll appears multiple times on the site (notifs and\n // timeline for example). With code we can make sure it just\n // works without altering the pseudo element implementation.\n const allElements = this.$el.querySelectorAll('input')\n const clickedElement = this.$el.querySelector(`input[value=\"${index}\"]`)\n if (this.poll.multiple) {\n // Checkboxes, toggle only the clicked one\n clickedElement.checked = !clickedElement.checked\n } else {\n // Radio button, uncheck everything and check the clicked one\n forEach(allElements, element => { element.checked = false })\n clickedElement.checked = true\n }\n this.choices = map(allElements, e => e.checked)\n },\n optionId (index) {\n return `poll${this.poll.id}-${index}`\n },\n vote () {\n if (this.choiceIndices.length === 0) return\n this.loading = true\n this.$store.dispatch(\n 'votePoll',\n { id: this.statusId, pollId: this.poll.id, choices: this.choiceIndices }\n ).then(poll => {\n this.loading = false\n })\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./poll.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./poll.js\"\nimport __vue_script__ from \"!!babel-loader!./poll.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-db51c57e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./poll.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"poll\",class:_vm.containerClass},[_vm._l((_vm.options),function(option,index){return _c('div',{key:index,staticClass:\"poll-option\"},[(_vm.showResults)?_c('div',{staticClass:\"option-result\",attrs:{\"title\":_vm.resultTitle(option)}},[_c('div',{staticClass:\"option-result-label\"},[_c('span',{staticClass:\"result-percentage\"},[_vm._v(\"\\n \"+_vm._s(_vm.percentageForOption(option.votes_count))+\"%\\n \")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(option.title))])]),_vm._v(\" \"),_c('div',{staticClass:\"result-fill\",style:({ 'width': ((_vm.percentageForOption(option.votes_count)) + \"%\") })})]):_c('div',{on:{\"click\":function($event){_vm.activateOption(index)}}},[(_vm.poll.multiple)?_c('input',{attrs:{\"type\":\"checkbox\",\"disabled\":_vm.loading},domProps:{\"value\":index}}):_c('input',{attrs:{\"type\":\"radio\",\"disabled\":_vm.loading},domProps:{\"value\":index}}),_vm._v(\" \"),_c('label',{staticClass:\"option-vote\"},[_c('div',[_vm._v(_vm._s(option.title))])])])])}),_vm._v(\" \"),_c('div',{staticClass:\"footer faint\"},[(!_vm.showResults)?_c('button',{staticClass:\"btn btn-default poll-vote-button\",attrs:{\"type\":\"button\",\"disabled\":_vm.isDisabled},on:{\"click\":_vm.vote}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('polls.vote'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"total\"},[_vm._v(\"\\n \"+_vm._s(_vm.totalVotesCount)+\" \"+_vm._s(_vm.$t(\"polls.votes\"))+\" · \\n \")]),_vm._v(\" \"),_c('i18n',{attrs:{\"path\":_vm.expired ? 'polls.expired' : 'polls.expires_in'}},[_c('Timeago',{attrs:{\"time\":_vm.expiresAt,\"auto-update\":60,\"now-threshold\":0}})],1)],1)],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const ExtraButtons = {\n props: [ 'status' ],\n methods: {\n deleteStatus () {\n const confirmed = window.confirm(this.$t('status.delete_confirm'))\n if (confirmed) {\n this.$store.dispatch('deleteStatus', { id: this.status.id })\n }\n },\n pinStatus () {\n this.$store.dispatch('pinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unpinStatus () {\n this.$store.dispatch('unpinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n muteConversation () {\n this.$store.dispatch('muteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unmuteConversation () {\n this.$store.dispatch('unmuteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n }\n },\n computed: {\n currentUser () { return this.$store.state.users.currentUser },\n canDelete () {\n if (!this.currentUser) { return }\n const superuser = this.currentUser.rights.moderator || this.currentUser.rights.admin\n return superuser || this.status.user.id === this.currentUser.id\n },\n ownStatus () {\n return this.status.user.id === this.currentUser.id\n },\n canPin () {\n return this.ownStatus && (this.status.visibility === 'public' || this.status.visibility === 'unlisted')\n },\n canMute () {\n return !!this.currentUser\n }\n }\n}\n\nexport default ExtraButtons\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./extra_buttons.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./extra_buttons.js\"\nimport __vue_script__ from \"!!babel-loader!./extra_buttons.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0caa0403\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./extra_buttons.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.canDelete || _vm.canMute || _vm.canPin)?_c('v-popover',{staticClass:\"extra-button-popover\",attrs:{\"trigger\":\"click\",\"placement\":\"top\"}},[_c('div',{attrs:{\"slot\":\"popover\"},slot:\"popover\"},[_c('div',{staticClass:\"dropdown-menu\"},[(_vm.canMute && !_vm.status.thread_muted)?_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.muteConversation($event)}}},[_c('i',{staticClass:\"icon-eye-off\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.mute_conversation\")))])]):_vm._e(),_vm._v(\" \"),(_vm.canMute && _vm.status.thread_muted)?_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.unmuteConversation($event)}}},[_c('i',{staticClass:\"icon-eye-off\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unmute_conversation\")))])]):_vm._e(),_vm._v(\" \"),(!_vm.status.pinned && _vm.canPin)?_c('button',{directives:[{name:\"close-popover\",rawName:\"v-close-popover\"}],staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.pinStatus($event)}}},[_c('i',{staticClass:\"icon-pin\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.pin\")))])]):_vm._e(),_vm._v(\" \"),(_vm.status.pinned && _vm.canPin)?_c('button',{directives:[{name:\"close-popover\",rawName:\"v-close-popover\"}],staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.unpinStatus($event)}}},[_c('i',{staticClass:\"icon-pin\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unpin\")))])]):_vm._e(),_vm._v(\" \"),(_vm.canDelete)?_c('button',{directives:[{name:\"close-popover\",rawName:\"v-close-popover\"}],staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.deleteStatus($event)}}},[_c('i',{staticClass:\"icon-cancel\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.delete\")))])]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"button-icon\"},[_c('i',{staticClass:\"icon-ellipsis\"})])]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Attachment from '../attachment/attachment.vue'\nimport { chunk, last, dropRight, sumBy } from 'lodash'\n\nconst Gallery = {\n props: [\n 'attachments',\n 'nsfw',\n 'setMedia'\n ],\n data () {\n return {\n sizes: {}\n }\n },\n components: { Attachment },\n computed: {\n rows () {\n if (!this.attachments) {\n return []\n }\n const rows = chunk(this.attachments, 3)\n if (last(rows).length === 1 && rows.length > 1) {\n // if 1 attachment on last row -> add it to the previous row instead\n const lastAttachment = last(rows)[0]\n const allButLastRow = dropRight(rows)\n last(allButLastRow).push(lastAttachment)\n return allButLastRow\n }\n return rows\n },\n useContainFit () {\n return this.$store.getters.mergedConfig.useContainFit\n }\n },\n methods: {\n onNaturalSizeLoad (id, size) {\n this.$set(this.sizes, id, size)\n },\n rowStyle (itemsPerRow) {\n return { 'padding-bottom': `${(100 / (itemsPerRow + 0.6))}%` }\n },\n itemStyle (id, row) {\n const total = sumBy(row, item => this.getAspectRatio(item.id))\n return { flex: `${this.getAspectRatio(id) / total} 1 0%` }\n },\n getAspectRatio (id) {\n const size = this.sizes[id]\n return size ? size.width / size.height : 1\n }\n }\n}\n\nexport default Gallery\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./gallery.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./gallery.js\"\nimport __vue_script__ from \"!!babel-loader!./gallery.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-68a574b8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./gallery.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"galleryContainer\",staticStyle:{\"width\":\"100%\"}},_vm._l((_vm.rows),function(row,index){return _c('div',{key:index,staticClass:\"gallery-row\",class:{ 'contain-fit': _vm.useContainFit, 'cover-fit': !_vm.useContainFit },style:(_vm.rowStyle(row.length))},[_c('div',{staticClass:\"gallery-row-inner\"},_vm._l((row),function(attachment){return _c('attachment',{key:attachment.id,style:(_vm.itemStyle(attachment.id, row)),attrs:{\"set-media\":_vm.setMedia,\"nsfw\":_vm.nsfw,\"attachment\":attachment,\"allow-play\":false,\"natural-size-load\":_vm.onNaturalSizeLoad.bind(null, attachment.id)}})}),1)])}),0)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const LinkPreview = {\n name: 'LinkPreview',\n props: [\n 'card',\n 'size',\n 'nsfw'\n ],\n data () {\n return {\n imageLoaded: false\n }\n },\n computed: {\n useImage () {\n // Currently BE shoudn't give cards if tagged NSFW, this is a bit paranoid\n // as it makes sure to hide the image if somehow NSFW tagged preview can\n // exist.\n return this.card.image && !this.nsfw && this.size !== 'hide'\n },\n useDescription () {\n return this.card.description && /\\S/.test(this.card.description)\n }\n },\n created () {\n if (this.useImage) {\n const newImg = new Image()\n newImg.onload = () => {\n this.imageLoaded = true\n }\n newImg.src = this.card.image\n }\n }\n}\n\nexport default LinkPreview\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./link-preview.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./link-preview.js\"\nimport __vue_script__ from \"!!babel-loader!./link-preview.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7c8d99ac\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./link-preview.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('a',{staticClass:\"link-preview-card\",attrs:{\"href\":_vm.card.url,\"target\":\"_blank\",\"rel\":\"noopener\"}},[(_vm.useImage && _vm.imageLoaded)?_c('div',{staticClass:\"card-image\",class:{ 'small-image': _vm.size === 'small' }},[_c('img',{attrs:{\"src\":_vm.card.image}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"card-content\"},[_c('span',{staticClass:\"card-host faint\"},[_vm._v(_vm._s(_vm.card.provider_name))]),_vm._v(\" \"),_c('h4',{staticClass:\"card-title\"},[_vm._v(_vm._s(_vm.card.title))]),_vm._v(\" \"),(_vm.useDescription)?_c('p',{staticClass:\"card-description\"},[_vm._v(_vm._s(_vm.card.description))]):_vm._e()])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst AvatarList = {\n props: ['users'],\n computed: {\n slicedUsers () {\n return this.users ? this.users.slice(0, 15) : []\n }\n },\n components: {\n UserAvatar\n },\n methods: {\n userProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n }\n }\n}\n\nexport default AvatarList\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./avatar_list.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./avatar_list.js\"\nimport __vue_script__ from \"!!babel-loader!./avatar_list.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4cea5bcf\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./avatar_list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"avatars\"},_vm._l((_vm.slicedUsers),function(user){return _c('router-link',{key:user.id,staticClass:\"avatars-item\",attrs:{\"to\":_vm.userProfileLink(user)}},[_c('UserAvatar',{staticClass:\"avatar-small\",attrs:{\"user\":user}})],1)}),1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { find } from 'lodash'\n\nconst StatusPopover = {\n name: 'StatusPopover',\n props: [\n 'statusId'\n ],\n data () {\n return {\n popperOptions: {\n modifiers: {\n preventOverflow: { padding: { top: 50 }, boundariesElement: 'viewport' }\n }\n }\n }\n },\n computed: {\n status () {\n return find(this.$store.state.statuses.allStatuses, { id: this.statusId })\n }\n },\n components: {\n Status: () => import('../status/status.vue')\n },\n methods: {\n enter () {\n if (!this.status) {\n this.$store.dispatch('fetchStatus', this.statusId)\n }\n }\n }\n}\n\nexport default StatusPopover\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./status_popover.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./status_popover.js\"\nimport __vue_script__ from \"!!babel-loader!./status_popover.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-ef621460\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./status_popover.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-popover',{attrs:{\"popover-class\":\"status-popover\",\"placement\":\"top-start\",\"popper-options\":_vm.popperOptions},on:{\"show\":function($event){_vm.enter()}}},[_c('template',{slot:\"popover\"},[(_vm.status)?_c('Status',{attrs:{\"is-preview\":true,\"statusoid\":_vm.status,\"compact\":true}}):_c('div',{staticClass:\"status-preview-loading\"},[_c('i',{staticClass:\"icon-spin4 animate-spin\"})])],1),_vm._v(\" \"),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserAvatar from '../user_avatar/user_avatar.vue'\n\nconst EMOJI_REACTION_COUNT_CUTOFF = 12\n\nconst EmojiReactions = {\n name: 'EmojiReactions',\n components: {\n UserAvatar\n },\n props: ['status'],\n data: () => ({\n showAll: false,\n popperOptions: {\n modifiers: {\n preventOverflow: { padding: { top: 50 }, boundariesElement: 'viewport' }\n }\n }\n }),\n computed: {\n tooManyReactions () {\n return this.status.emoji_reactions.length > EMOJI_REACTION_COUNT_CUTOFF\n },\n emojiReactions () {\n return this.showAll\n ? this.status.emoji_reactions\n : this.status.emoji_reactions.slice(0, EMOJI_REACTION_COUNT_CUTOFF)\n },\n showMoreString () {\n return `+${this.status.emoji_reactions.length - EMOJI_REACTION_COUNT_CUTOFF}`\n },\n accountsForEmoji () {\n return this.status.emoji_reactions.reduce((acc, reaction) => {\n acc[reaction.name] = reaction.accounts || []\n return acc\n }, {})\n },\n loggedIn () {\n return !!this.$store.state.users.currentUser\n }\n },\n methods: {\n toggleShowAll () {\n this.showAll = !this.showAll\n },\n reactedWith (emoji) {\n return this.status.emoji_reactions.find(r => r.name === emoji).me\n },\n fetchEmojiReactionsByIfMissing () {\n const hasNoAccounts = this.status.emoji_reactions.find(r => !r.accounts)\n if (hasNoAccounts) {\n this.$store.dispatch('fetchEmojiReactionsBy', this.status.id)\n }\n },\n reactWith (emoji) {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n },\n unreact (emoji) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n },\n emojiOnClick (emoji, event) {\n if (!this.loggedIn) return\n\n if (this.reactedWith(emoji)) {\n this.unreact(emoji)\n } else {\n this.reactWith(emoji)\n }\n }\n }\n}\n\nexport default EmojiReactions\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./emoji_reactions.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./emoji_reactions.js\"\nimport __vue_script__ from \"!!babel-loader!./emoji_reactions.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-c34df546\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./emoji_reactions.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"emoji-reactions\"},[_vm._l((_vm.emojiReactions),function(reaction){return _c('v-popover',{key:reaction.name,attrs:{\"popper-options\":_vm.popperOptions,\"trigger\":\"hover\",\"placement\":\"top\"}},[_c('div',{staticClass:\"reacted-users\",attrs:{\"slot\":\"popover\"},slot:\"popover\"},[(_vm.accountsForEmoji[reaction.name].length)?_c('div',_vm._l((_vm.accountsForEmoji[reaction.name]),function(account){return _c('div',{key:account.id,staticClass:\"reacted-user\"},[_c('UserAvatar',{staticClass:\"avatar-small\",attrs:{\"user\":account,\"compact\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"reacted-user-names\"},[_c('span',{staticClass:\"reacted-user-name\",domProps:{\"innerHTML\":_vm._s(account.name_html)}}),_vm._v(\" \"),_c('span',{staticClass:\"reacted-user-screen-name\"},[_vm._v(_vm._s(account.screen_name))])])],1)}),0):_c('div',[_c('i',{staticClass:\"icon-spin4 animate-spin\"})])]),_vm._v(\" \"),_c('button',{staticClass:\"emoji-reaction btn btn-default\",class:{ 'picked-reaction': _vm.reactedWith(reaction.name), 'not-clickable': !_vm.loggedIn },on:{\"click\":function($event){_vm.emojiOnClick(reaction.name, $event)},\"mouseenter\":function($event){_vm.fetchEmojiReactionsByIfMissing()}}},[_c('span',{staticClass:\"reaction-emoji\"},[_vm._v(_vm._s(reaction.name))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(reaction.count))])])])}),_vm._v(\" \"),(_vm.tooManyReactions)?_c('a',{staticClass:\"emoji-reaction-expand faint\",attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.toggleShowAll}},[_vm._v(\"\\n \"+_vm._s(_vm.showAll ? _vm.$t('general.show_less') : _vm.showMoreString)+\"\\n \")]):_vm._e()],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Attachment from '../attachment/attachment.vue'\nimport FavoriteButton from '../favorite_button/favorite_button.vue'\nimport ReactButton from '../react_button/react_button.vue'\nimport RetweetButton from '../retweet_button/retweet_button.vue'\nimport Poll from '../poll/poll.vue'\nimport ExtraButtons from '../extra_buttons/extra_buttons.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport StatusPopover from '../status_popover/status_popover.vue'\nimport EmojiReactions from '../emoji_reactions/emoji_reactions.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport fileType from 'src/services/file_type/file_type.service'\nimport { processHtml } from 'src/services/tiny_post_html_processor/tiny_post_html_processor.service.js'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport { mentionMatchesUrl, extractTagFromUrl } from 'src/services/matcher/matcher.service.js'\nimport { filter, unescape, uniqBy } from 'lodash'\nimport { mapGetters, mapState } from 'vuex'\n\nconst Status = {\n name: 'Status',\n props: [\n 'statusoid',\n 'expandable',\n 'inConversation',\n 'focused',\n 'highlight',\n 'compact',\n 'replies',\n 'isPreview',\n 'noHeading',\n 'inlineExpanded',\n 'showPinned',\n 'inProfile',\n 'profileUserId'\n ],\n data () {\n return {\n replying: false,\n unmuted: false,\n userExpanded: false,\n showingTall: this.inConversation && this.focused,\n showingLongSubject: false,\n error: null,\n // not as computed because it sets the initial state which will be changed later\n expandingSubject: !this.$store.getters.mergedConfig.collapseMessageWithSubject\n }\n },\n computed: {\n localCollapseSubjectDefault () {\n return this.mergedConfig.collapseMessageWithSubject\n },\n muteWords () {\n return this.mergedConfig.muteWords\n },\n repeaterClass () {\n const user = this.statusoid.user\n return highlightClass(user)\n },\n userClass () {\n const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n return highlightClass(user)\n },\n deleted () {\n return this.statusoid.deleted\n },\n repeaterStyle () {\n const user = this.statusoid.user\n const highlight = this.mergedConfig.highlight\n return highlightStyle(highlight[user.screen_name])\n },\n userStyle () {\n if (this.noHeading) return\n const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n const highlight = this.mergedConfig.highlight\n return highlightStyle(highlight[user.screen_name])\n },\n hideAttachments () {\n return (this.mergedConfig.hideAttachments && !this.inConversation) ||\n (this.mergedConfig.hideAttachmentsInConv && this.inConversation)\n },\n userProfileLink () {\n return this.generateUserProfileLink(this.status.user.id, this.status.user.screen_name)\n },\n replyProfileLink () {\n if (this.isReply) {\n return this.generateUserProfileLink(this.status.in_reply_to_user_id, this.replyToName)\n }\n },\n retweet () { return !!this.statusoid.retweeted_status },\n retweeter () { return this.statusoid.user.name || this.statusoid.user.screen_name },\n retweeterHtml () { return this.statusoid.user.name_html },\n retweeterProfileLink () { return this.generateUserProfileLink(this.statusoid.user.id, this.statusoid.user.screen_name) },\n status () {\n if (this.retweet) {\n return this.statusoid.retweeted_status\n } else {\n return this.statusoid\n }\n },\n statusFromGlobalRepository () {\n // NOTE: Consider to replace status with statusFromGlobalRepository\n return this.$store.state.statuses.allStatusesObject[this.status.id]\n },\n loggedIn () {\n return !!this.currentUser\n },\n muteWordHits () {\n const statusText = this.status.text.toLowerCase()\n const statusSummary = this.status.summary.toLowerCase()\n const hits = filter(this.muteWords, (muteWord) => {\n return statusText.includes(muteWord.toLowerCase()) || statusSummary.includes(muteWord.toLowerCase())\n })\n\n return hits\n },\n muted () { return !this.unmuted && ((!(this.inProfile && this.status.user.id === this.profileUserId) && this.status.user.muted) || (!this.inConversation && this.status.thread_muted) || this.muteWordHits.length > 0) },\n hideFilteredStatuses () {\n return this.mergedConfig.hideFilteredStatuses\n },\n hideStatus () {\n return (this.hideReply || this.deleted) || (this.muted && this.hideFilteredStatuses)\n },\n isFocused () {\n // retweet or root of an expanded conversation\n if (this.focused) {\n return true\n } else if (!this.inConversation) {\n return false\n }\n // use conversation highlight only when in conversation\n return this.status.id === this.highlight\n },\n // This is a bit hacky, but we want to approximate post height before rendering\n // so we count newlines (masto uses

for paragraphs, GS uses
between them)\n // as well as approximate line count by counting characters and approximating ~80\n // per line.\n //\n // Using max-height + overflow: auto for status components resulted in false positives\n // very often with japanese characters, and it was very annoying.\n tallStatus () {\n const lengthScore = this.status.statusnet_html.split(/ 20\n },\n longSubject () {\n return this.status.summary.length > 900\n },\n isReply () {\n return !!(this.status.in_reply_to_status_id && this.status.in_reply_to_user_id)\n },\n replyToName () {\n if (this.status.in_reply_to_screen_name) {\n return this.status.in_reply_to_screen_name\n } else {\n const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n return user && user.screen_name\n }\n },\n hideReply () {\n if (this.mergedConfig.replyVisibility === 'all') {\n return false\n }\n if (this.inConversation || !this.isReply) {\n return false\n }\n if (this.status.user.id === this.currentUser.id) {\n return false\n }\n if (this.status.type === 'retweet') {\n return false\n }\n const checkFollowing = this.mergedConfig.replyVisibility === 'following'\n for (var i = 0; i < this.status.attentions.length; ++i) {\n if (this.status.user.id === this.status.attentions[i].id) {\n continue\n }\n const taggedUser = this.$store.getters.findUser(this.status.attentions[i].id)\n if (checkFollowing && taggedUser && taggedUser.following) {\n return false\n }\n if (this.status.attentions[i].id === this.currentUser.id) {\n return false\n }\n }\n return this.status.attentions.length > 0\n },\n hideSubjectStatus () {\n if (this.tallStatus && !this.localCollapseSubjectDefault) {\n return false\n }\n return !this.expandingSubject && this.status.summary\n },\n hideTallStatus () {\n if (this.status.summary && this.localCollapseSubjectDefault) {\n return false\n }\n if (this.showingTall) {\n return false\n }\n return this.tallStatus\n },\n showingMore () {\n return (this.tallStatus && this.showingTall) || (this.status.summary && this.expandingSubject)\n },\n nsfwClickthrough () {\n if (!this.status.nsfw) {\n return false\n }\n if (this.status.summary && this.localCollapseSubjectDefault) {\n return false\n }\n return true\n },\n replySubject () {\n if (!this.status.summary) return ''\n const decodedSummary = unescape(this.status.summary)\n const behavior = this.mergedConfig.subjectLineBehavior\n const startsWithRe = decodedSummary.match(/^re[: ]/i)\n if ((behavior !== 'noop' && startsWithRe) || behavior === 'masto') {\n return decodedSummary\n } else if (behavior === 'email') {\n return 're: '.concat(decodedSummary)\n } else if (behavior === 'noop') {\n return ''\n }\n },\n attachmentSize () {\n if ((this.mergedConfig.hideAttachments && !this.inConversation) ||\n (this.mergedConfig.hideAttachmentsInConv && this.inConversation) ||\n (this.status.attachments.length > this.maxThumbnails)) {\n return 'hide'\n } else if (this.compact) {\n return 'small'\n }\n return 'normal'\n },\n galleryTypes () {\n if (this.attachmentSize === 'hide') {\n return []\n }\n return this.mergedConfig.playVideosInModal\n ? ['image', 'video']\n : ['image']\n },\n galleryAttachments () {\n return this.status.attachments.filter(\n file => fileType.fileMatchesSomeType(this.galleryTypes, file)\n )\n },\n nonGalleryAttachments () {\n return this.status.attachments.filter(\n file => !fileType.fileMatchesSomeType(this.galleryTypes, file)\n )\n },\n hasImageAttachments () {\n return this.status.attachments.some(\n file => fileType.fileType(file.mimetype) === 'image'\n )\n },\n hasVideoAttachments () {\n return this.status.attachments.some(\n file => fileType.fileType(file.mimetype) === 'video'\n )\n },\n maxThumbnails () {\n return this.mergedConfig.maxThumbnails\n },\n postBodyHtml () {\n const html = this.status.statusnet_html\n\n if (this.mergedConfig.greentext) {\n try {\n if (html.includes('>')) {\n // This checks if post has '>' at the beginning, excluding mentions so that @mention >impying works\n return processHtml(html, (string) => {\n if (string.includes('>') &&\n string\n .replace(/<[^>]+?>/gi, '') // remove all tags\n .replace(/@\\w+/gi, '') // remove mentions (even failed ones)\n .trim()\n .startsWith('>')) {\n return `${string}`\n } else {\n return string\n }\n })\n } else {\n return html\n }\n } catch (e) {\n console.err('Failed to process status html', e)\n return html\n }\n } else {\n return html\n }\n },\n contentHtml () {\n if (!this.status.summary_html) {\n return this.postBodyHtml\n }\n return this.status.summary_html + '
' + this.postBodyHtml\n },\n combinedFavsAndRepeatsUsers () {\n // Use the status from the global status repository since favs and repeats are saved in it\n const combinedUsers = [].concat(\n this.statusFromGlobalRepository.favoritedBy,\n this.statusFromGlobalRepository.rebloggedBy\n )\n return uniqBy(combinedUsers, 'id')\n },\n ownStatus () {\n return this.status.user.id === this.currentUser.id\n },\n tags () {\n return this.status.tags.filter(tagObj => tagObj.hasOwnProperty('name')).map(tagObj => tagObj.name).join(' ')\n },\n hidePostStats () {\n return this.mergedConfig.hidePostStats\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n betterShadow: state => state.interface.browserSupport.cssFilter,\n currentUser: state => state.users.currentUser\n })\n },\n components: {\n Attachment,\n FavoriteButton,\n ReactButton,\n RetweetButton,\n ExtraButtons,\n PostStatusForm,\n Poll,\n UserCard,\n UserAvatar,\n Gallery,\n LinkPreview,\n AvatarList,\n Timeago,\n StatusPopover,\n EmojiReactions\n },\n methods: {\n visibilityIcon (visibility) {\n switch (visibility) {\n case 'private':\n return 'icon-lock'\n case 'unlisted':\n return 'icon-lock-open-alt'\n case 'direct':\n return 'icon-mail-alt'\n default:\n return 'icon-globe'\n }\n },\n showError (error) {\n this.error = error\n },\n clearError () {\n this.error = undefined\n },\n linkClicked (event) {\n const target = event.target.closest('.status-content a')\n if (target) {\n if (target.className.match(/mention/)) {\n const href = target.href\n const attn = this.status.attentions.find(attn => mentionMatchesUrl(attn, href))\n if (attn) {\n event.stopPropagation()\n event.preventDefault()\n const link = this.generateUserProfileLink(attn.id, attn.screen_name)\n this.$router.push(link)\n return\n }\n }\n if (target.rel.match(/(?:^|\\s)tag(?:$|\\s)/) || target.className.match(/hashtag/)) {\n // Extract tag name from link url\n const tag = extractTagFromUrl(target.href)\n if (tag) {\n const link = this.generateTagLink(tag)\n this.$router.push(link)\n return\n }\n }\n window.open(target.href, '_blank')\n }\n },\n toggleReplying () {\n this.replying = !this.replying\n },\n gotoOriginal (id) {\n if (this.inConversation) {\n this.$emit('goto', id)\n }\n },\n toggleExpanded () {\n this.$emit('toggleExpanded')\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n toggleShowMore () {\n if (this.showingTall) {\n this.showingTall = false\n } else if (this.expandingSubject && this.status.summary) {\n this.expandingSubject = false\n } else if (this.hideTallStatus) {\n this.showingTall = true\n } else if (this.hideSubjectStatus && this.status.summary) {\n this.expandingSubject = true\n }\n },\n generateUserProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n },\n generateTagLink (tag) {\n return `/tag/${tag}`\n },\n setMedia () {\n const attachments = this.attachmentSize === 'hide' ? this.status.attachments : this.galleryAttachments\n return () => this.$store.dispatch('setMedia', attachments)\n }\n },\n watch: {\n 'highlight': function (id) {\n if (this.status.id === id) {\n let rect = this.$el.getBoundingClientRect()\n if (rect.top < 100) {\n // Post is above screen, match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.height >= (window.innerHeight - 50)) {\n // Post we want to see is taller than screen so match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.bottom > window.innerHeight - 50) {\n // Post is below screen, match its bottom to screen bottom\n window.scrollBy(0, rect.bottom - window.innerHeight + 50)\n }\n }\n },\n 'status.repeat_num': function (num) {\n // refetch repeats when repeat_num is changed in any way\n if (this.isFocused && this.statusFromGlobalRepository.rebloggedBy && this.statusFromGlobalRepository.rebloggedBy.length !== num) {\n this.$store.dispatch('fetchRepeats', this.status.id)\n }\n },\n 'status.fave_num': function (num) {\n // refetch favs when fave_num is changed in any way\n if (this.isFocused && this.statusFromGlobalRepository.favoritedBy && this.statusFromGlobalRepository.favoritedBy.length !== num) {\n this.$store.dispatch('fetchFavs', this.status.id)\n }\n }\n },\n filters: {\n capitalize: function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n }\n }\n}\n\nexport default Status\n","/**\n * This is a tiny purpose-built HTML parser/processor. This basically detects any type of visual newline and\n * allows it to be processed, useful for greentexting, mostly\n *\n * known issue: doesn't handle CDATA so nested CDATA might not work well\n *\n * @param {Object} input - input data\n * @param {(string) => string} processor - function that will be called on every line\n * @return {string} processed html\n */\nexport const processHtml = (html, processor) => {\n const handledTags = new Set(['p', 'br', 'div'])\n const openCloseTags = new Set(['p', 'div'])\n\n let buffer = '' // Current output buffer\n const level = [] // How deep we are in tags and which tags were there\n let textBuffer = '' // Current line content\n let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag\n\n // Extracts tag name from tag, i.e. => span\n const getTagName = (tag) => {\n const result = /(?:<\\/(\\w+)>|<(\\w+)\\s?[^/]*?\\/?>)/gi.exec(tag)\n return result && (result[1] || result[2])\n }\n\n const flush = () => { // Processes current line buffer, adds it to output buffer and clears line buffer\n if (textBuffer.trim().length > 0) {\n buffer += processor(textBuffer)\n } else {\n buffer += textBuffer\n }\n textBuffer = ''\n }\n\n const handleBr = (tag) => { // handles single newlines/linebreaks/selfclosing\n flush()\n buffer += tag\n }\n\n const handleOpen = (tag) => { // handles opening tags\n flush()\n buffer += tag\n level.push(tag)\n }\n\n const handleClose = (tag) => { // handles closing tags\n flush()\n buffer += tag\n if (level[level.length - 1] === tag) {\n level.pop()\n }\n }\n\n for (let i = 0; i < html.length; i++) {\n const char = html[i]\n if (char === '<' && tagBuffer === null) {\n tagBuffer = char\n } else if (char !== '>' && tagBuffer !== null) {\n tagBuffer += char\n } else if (char === '>' && tagBuffer !== null) {\n tagBuffer += char\n const tagFull = tagBuffer\n tagBuffer = null\n const tagName = getTagName(tagFull)\n if (handledTags.has(tagName)) {\n if (tagName === 'br') {\n handleBr(tagFull)\n } else if (openCloseTags.has(tagName)) {\n if (tagFull[1] === '/') {\n handleClose(tagFull)\n } else if (tagFull[tagFull.length - 2] === '/') {\n // self-closing\n handleBr(tagFull)\n } else {\n handleOpen(tagFull)\n }\n }\n } else {\n textBuffer += tagFull\n }\n } else if (char === '\\n') {\n handleBr(char)\n } else {\n textBuffer += char\n }\n }\n if (tagBuffer) {\n textBuffer += tagBuffer\n }\n\n flush()\n\n return buffer\n}\n","export const mentionMatchesUrl = (attention, url) => {\n if (url === attention.statusnet_profile_url) {\n return true\n }\n const [namepart, instancepart] = attention.screen_name.split('@')\n const matchstring = new RegExp('://' + instancepart + '/.*' + namepart + '$', 'g')\n\n return !!url.match(matchstring)\n}\n\n/**\n * Extract tag name from pleroma or mastodon url.\n * i.e https://bikeshed.party/tag/photo or https://quey.org/tags/sky\n * @param {string} url\n */\nexport const extractTagFromUrl = (url) => {\n const regex = /tag[s]*\\/(\\w+)$/g\n const result = regex.exec(url)\n if (!result) {\n return false\n }\n return result[1]\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./status.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./status.js\"\nimport __vue_script__ from \"!!babel-loader!./status.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-192bf27f\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./status.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.hideStatus)?_c('div',{staticClass:\"status-el\",class:[{ 'status-el_focused': _vm.isFocused }, { 'status-conversation': _vm.inlineExpanded }]},[(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \"),_c('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":_vm.clearError}})]):_vm._e(),_vm._v(\" \"),(_vm.muted && !_vm.isPreview)?[_c('div',{staticClass:\"media status container muted\"},[_c('small',[_c('router-link',{attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.status.user.screen_name)+\"\\n \")])],1),_vm._v(\" \"),_c('small',{staticClass:\"muteWords\"},[_vm._v(_vm._s(_vm.muteWordHits.join(', ')))]),_vm._v(\" \"),_c('a',{staticClass:\"unmute\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('i',{staticClass:\"button-icon icon-eye-off\"})])])]:[(_vm.showPinned)?_c('div',{staticClass:\"status-pin\"},[_c('i',{staticClass:\"fa icon-pin faint\"}),_vm._v(\" \"),_c('span',{staticClass:\"faint\"},[_vm._v(_vm._s(_vm.$t('status.pinned')))])]):_vm._e(),_vm._v(\" \"),(_vm.retweet && !_vm.noHeading && !_vm.inConversation)?_c('div',{staticClass:\"media container retweet-info\",class:[_vm.repeaterClass, { highlighted: _vm.repeaterStyle }],style:([_vm.repeaterStyle])},[(_vm.retweet)?_c('UserAvatar',{staticClass:\"media-left\",attrs:{\"better-shadow\":_vm.betterShadow,\"user\":_vm.statusoid.user}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"media-body faint\"},[_c('span',{staticClass:\"user-name\"},[(_vm.retweeterHtml)?_c('router-link',{attrs:{\"to\":_vm.retweeterProfileLink},domProps:{\"innerHTML\":_vm._s(_vm.retweeterHtml)}}):_c('router-link',{attrs:{\"to\":_vm.retweeterProfileLink}},[_vm._v(_vm._s(_vm.retweeter))])],1),_vm._v(\" \"),_c('i',{staticClass:\"fa icon-retweet retweeted\",attrs:{\"title\":_vm.$t('tool_tip.repeat')}}),_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.repeated'))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"media status\",class:[_vm.userClass, { highlighted: _vm.userStyle, 'is-retweet': _vm.retweet && !_vm.inConversation }],style:([ _vm.userStyle ]),attrs:{\"data-tags\":_vm.tags}},[(!_vm.noHeading)?_c('div',{staticClass:\"media-left\"},[_c('router-link',{attrs:{\"to\":_vm.userProfileLink},nativeOn:{\"!click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleUserExpanded($event)}}},[_c('UserAvatar',{attrs:{\"compact\":_vm.compact,\"better-shadow\":_vm.betterShadow,\"user\":_vm.status.user}})],1)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"status-body\"},[(_vm.userExpanded)?_c('UserCard',{staticClass:\"status-usercard\",attrs:{\"user\":_vm.status.user,\"rounded\":true,\"bordered\":true}}):_vm._e(),_vm._v(\" \"),(!_vm.noHeading)?_c('div',{staticClass:\"media-heading\"},[_c('div',{staticClass:\"heading-name-row\"},[_c('div',{staticClass:\"name-and-account-name\"},[(_vm.status.user.name_html)?_c('h4',{staticClass:\"user-name\",domProps:{\"innerHTML\":_vm._s(_vm.status.user.name_html)}}):_c('h4',{staticClass:\"user-name\"},[_vm._v(\"\\n \"+_vm._s(_vm.status.user.name)+\"\\n \")]),_vm._v(\" \"),_c('router-link',{staticClass:\"account-name\",attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.status.user.screen_name)+\"\\n \")])],1),_vm._v(\" \"),_c('span',{staticClass:\"heading-right\"},[_c('router-link',{staticClass:\"timeago faint-link\",attrs:{\"to\":{ name: 'conversation', params: { id: _vm.status.id } }}},[_c('Timeago',{attrs:{\"time\":_vm.status.created_at,\"auto-update\":60}})],1),_vm._v(\" \"),(_vm.status.visibility)?_c('div',{staticClass:\"button-icon visibility-icon\"},[_c('i',{class:_vm.visibilityIcon(_vm.status.visibility),attrs:{\"title\":_vm._f(\"capitalize\")(_vm.status.visibility)}})]):_vm._e(),_vm._v(\" \"),(!_vm.status.is_local && !_vm.isPreview)?_c('a',{staticClass:\"source_url\",attrs:{\"href\":_vm.status.external_url,\"target\":\"_blank\",\"title\":\"Source\"}},[_c('i',{staticClass:\"button-icon icon-link-ext-alt\"})]):_vm._e(),_vm._v(\" \"),(_vm.expandable && !_vm.isPreview)?[_c('a',{attrs:{\"href\":\"#\",\"title\":\"Expand\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleExpanded($event)}}},[_c('i',{staticClass:\"button-icon icon-plus-squared\"})])]:_vm._e(),_vm._v(\" \"),(_vm.unmuted)?_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('i',{staticClass:\"button-icon icon-eye-off\"})]):_vm._e()],2)]),_vm._v(\" \"),_c('div',{staticClass:\"heading-reply-row\"},[(_vm.isReply)?_c('div',{staticClass:\"reply-to-and-accountname\"},[(!_vm.isPreview)?_c('StatusPopover',{attrs:{\"status-id\":_vm.status.in_reply_to_status_id}},[_c('a',{staticClass:\"reply-to\",attrs:{\"href\":\"#\",\"aria-label\":_vm.$t('tool_tip.reply')},on:{\"click\":function($event){$event.preventDefault();_vm.gotoOriginal(_vm.status.in_reply_to_status_id)}}},[_c('i',{staticClass:\"button-icon icon-reply\"}),_vm._v(\" \"),_c('span',{staticClass:\"faint-link reply-to-text\"},[_vm._v(_vm._s(_vm.$t('status.reply_to')))])])]):_c('span',{staticClass:\"reply-to\"},[_c('span',{staticClass:\"reply-to-text\"},[_vm._v(_vm._s(_vm.$t('status.reply_to')))])]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":_vm.replyProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.replyToName)+\"\\n \")]),_vm._v(\" \"),(_vm.replies && _vm.replies.length)?_c('span',{staticClass:\"faint replies-separator\"},[_vm._v(\"\\n -\\n \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.inConversation && !_vm.isPreview && _vm.replies && _vm.replies.length)?_c('div',{staticClass:\"replies\"},[_c('span',{staticClass:\"faint\"},[_vm._v(_vm._s(_vm.$t('status.replies_list')))]),_vm._v(\" \"),_vm._l((_vm.replies),function(reply){return _c('StatusPopover',{key:reply.id,attrs:{\"status-id\":reply.id}},[_c('a',{staticClass:\"reply-link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.gotoOriginal(reply.id)}}},[_vm._v(_vm._s(reply.name))])])})],2):_vm._e()])]):_vm._e(),_vm._v(\" \"),(_vm.longSubject)?_c('div',{staticClass:\"status-content-wrapper\",class:{ 'tall-status': !_vm.showingLongSubject }},[(!_vm.showingLongSubject)?_c('a',{staticClass:\"tall-status-hider\",class:{ 'tall-status-hider_focused': _vm.isFocused },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.showingLongSubject=true}}},[_vm._v(_vm._s(_vm.$t(\"general.show_more\")))]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"status-content media-body\",domProps:{\"innerHTML\":_vm._s(_vm.contentHtml)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}),_vm._v(\" \"),(_vm.showingLongSubject)?_c('a',{staticClass:\"status-unhider\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.showingLongSubject=false}}},[_vm._v(_vm._s(_vm.$t(\"general.show_less\")))]):_vm._e()]):_c('div',{staticClass:\"status-content-wrapper\",class:{'tall-status': _vm.hideTallStatus}},[(_vm.hideTallStatus)?_c('a',{staticClass:\"tall-status-hider\",class:{ 'tall-status-hider_focused': _vm.isFocused },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleShowMore($event)}}},[_vm._v(_vm._s(_vm.$t(\"general.show_more\")))]):_vm._e(),_vm._v(\" \"),(!_vm.hideSubjectStatus)?_c('div',{staticClass:\"status-content media-body\",domProps:{\"innerHTML\":_vm._s(_vm.contentHtml)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}):_c('div',{staticClass:\"status-content media-body\",domProps:{\"innerHTML\":_vm._s(_vm.status.summary_html)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}),_vm._v(\" \"),(_vm.hideSubjectStatus)?_c('a',{staticClass:\"cw-status-hider\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleShowMore($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"general.show_more\"))+\"\\n \"),(_vm.hasImageAttachments)?_c('span',{staticClass:\"icon-picture\"}):_vm._e(),_vm._v(\" \"),(_vm.hasVideoAttachments)?_c('span',{staticClass:\"icon-video\"}):_vm._e(),_vm._v(\" \"),(_vm.status.card)?_c('span',{staticClass:\"icon-link\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showingMore)?_c('a',{staticClass:\"status-unhider\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleShowMore($event)}}},[_vm._v(_vm._s(_vm.$t(\"general.show_less\")))]):_vm._e()]),_vm._v(\" \"),(_vm.status.poll && _vm.status.poll.options)?_c('div',[_c('poll',{attrs:{\"base-poll\":_vm.status.poll}})],1):_vm._e(),_vm._v(\" \"),(_vm.status.attachments && (!_vm.hideSubjectStatus || _vm.showingLongSubject))?_c('div',{staticClass:\"attachments media-body\"},[_vm._l((_vm.nonGalleryAttachments),function(attachment){return _c('attachment',{key:attachment.id,staticClass:\"non-gallery\",attrs:{\"size\":_vm.attachmentSize,\"nsfw\":_vm.nsfwClickthrough,\"attachment\":attachment,\"allow-play\":true,\"set-media\":_vm.setMedia()}})}),_vm._v(\" \"),(_vm.galleryAttachments.length > 0)?_c('gallery',{attrs:{\"nsfw\":_vm.nsfwClickthrough,\"attachments\":_vm.galleryAttachments,\"set-media\":_vm.setMedia()}}):_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.status.card && !_vm.hideSubjectStatus && !_vm.noHeading)?_c('div',{staticClass:\"link-preview media-body\"},[_c('link-preview',{attrs:{\"card\":_vm.status.card,\"size\":_vm.attachmentSize,\"nsfw\":_vm.nsfwClickthrough}})],1):_vm._e(),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[(!_vm.hidePostStats && _vm.isFocused && _vm.combinedFavsAndRepeatsUsers.length > 0)?_c('div',{staticClass:\"favs-repeated-users\"},[_c('div',{staticClass:\"stats\"},[(_vm.statusFromGlobalRepository.rebloggedBy && _vm.statusFromGlobalRepository.rebloggedBy.length > 0)?_c('div',{staticClass:\"stat-count\"},[_c('a',{staticClass:\"stat-title\"},[_vm._v(_vm._s(_vm.$t('status.repeats')))]),_vm._v(\" \"),_c('div',{staticClass:\"stat-number\"},[_vm._v(\"\\n \"+_vm._s(_vm.statusFromGlobalRepository.rebloggedBy.length)+\"\\n \")])]):_vm._e(),_vm._v(\" \"),(_vm.statusFromGlobalRepository.favoritedBy && _vm.statusFromGlobalRepository.favoritedBy.length > 0)?_c('div',{staticClass:\"stat-count\"},[_c('a',{staticClass:\"stat-title\"},[_vm._v(_vm._s(_vm.$t('status.favorites')))]),_vm._v(\" \"),_c('div',{staticClass:\"stat-number\"},[_vm._v(\"\\n \"+_vm._s(_vm.statusFromGlobalRepository.favoritedBy.length)+\"\\n \")])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"avatar-row\"},[_c('AvatarList',{attrs:{\"users\":_vm.combinedFavsAndRepeatsUsers}})],1)])]):_vm._e()]),_vm._v(\" \"),((_vm.mergedConfig.emojiReactionsOnTimeline || _vm.isFocused) && (!_vm.noHeading && !_vm.isPreview))?_c('EmojiReactions',{attrs:{\"status\":_vm.status}}):_vm._e(),_vm._v(\" \"),(!_vm.noHeading && !_vm.isPreview)?_c('div',{staticClass:\"status-actions media-body\"},[_c('div',[(_vm.loggedIn)?_c('i',{staticClass:\"button-icon icon-reply\",class:{'button-icon-active': _vm.replying},attrs:{\"title\":_vm.$t('tool_tip.reply')},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleReplying($event)}}}):_c('i',{staticClass:\"button-icon button-icon-disabled icon-reply\",attrs:{\"title\":_vm.$t('tool_tip.reply')}}),_vm._v(\" \"),(_vm.status.replies_count > 0)?_c('span',[_vm._v(_vm._s(_vm.status.replies_count))]):_vm._e()]),_vm._v(\" \"),_c('retweet-button',{attrs:{\"visibility\":_vm.status.visibility,\"logged-in\":_vm.loggedIn,\"status\":_vm.status}}),_vm._v(\" \"),_c('favorite-button',{attrs:{\"logged-in\":_vm.loggedIn,\"status\":_vm.status}}),_vm._v(\" \"),_c('ReactButton',{attrs:{\"logged-in\":_vm.loggedIn,\"status\":_vm.status}}),_vm._v(\" \"),_c('extra-buttons',{attrs:{\"status\":_vm.status},on:{\"onError\":_vm.showError,\"onSuccess\":_vm.clearError}})],1):_vm._e()],1)]),_vm._v(\" \"),(_vm.replying)?_c('div',{staticClass:\"container\"},[_c('PostStatusForm',{staticClass:\"reply-body\",attrs:{\"reply-to\":_vm.status.id,\"attentions\":_vm.status.attentions,\"replied-user\":_vm.status.user,\"copy-message-scope\":_vm.status.visibility,\"subject\":_vm.replySubject},on:{\"posted\":_vm.toggleReplying}})],1):_vm._e()]],2):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","export const SECOND = 1000\nexport const MINUTE = 60 * SECOND\nexport const HOUR = 60 * MINUTE\nexport const DAY = 24 * HOUR\nexport const WEEK = 7 * DAY\nexport const MONTH = 30 * DAY\nexport const YEAR = 365.25 * DAY\n\nexport const relativeTime = (date, nowThreshold = 1) => {\n if (typeof date === 'string') date = Date.parse(date)\n const round = Date.now() > date ? Math.floor : Math.ceil\n const d = Math.abs(Date.now() - date)\n let r = { num: round(d / YEAR), key: 'time.years' }\n if (d < nowThreshold * SECOND) {\n r.num = 0\n r.key = 'time.now'\n } else if (d < MINUTE) {\n r.num = round(d / SECOND)\n r.key = 'time.seconds'\n } else if (d < HOUR) {\n r.num = round(d / MINUTE)\n r.key = 'time.minutes'\n } else if (d < DAY) {\n r.num = round(d / HOUR)\n r.key = 'time.hours'\n } else if (d < WEEK) {\n r.num = round(d / DAY)\n r.key = 'time.days'\n } else if (d < MONTH) {\n r.num = round(d / WEEK)\n r.key = 'time.weeks'\n } else if (d < YEAR) {\n r.num = round(d / MONTH)\n r.key = 'time.months'\n }\n // Remove plural form when singular\n if (r.num === 1) r.key = r.key.slice(0, -1)\n return r\n}\n\nexport const relativeTimeShort = (date, nowThreshold = 1) => {\n const r = relativeTime(date, nowThreshold)\n r.key += '_short'\n return r\n}\n","\n\n\n","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./progress_button.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./progress_button.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9f751ae6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./progress_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{attrs:{\"disabled\":_vm.progress || _vm.disabled},on:{\"click\":_vm.onClick}},[(_vm.progress && _vm.$slots.progress)?[_vm._t(\"progress\")]:[_vm._t(\"default\")]],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { hex2rgb } from '../color_convert/color_convert.js'\nconst highlightStyle = (prefs) => {\n if (prefs === undefined) return\n const { color, type } = prefs\n if (typeof color !== 'string') return\n const rgb = hex2rgb(color)\n if (rgb == null) return\n const solidColor = `rgb(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)})`\n const tintColor = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .1)`\n const tintColor2 = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .2)`\n if (type === 'striped') {\n return {\n backgroundImage: [\n 'repeating-linear-gradient(135deg,',\n `${tintColor} ,`,\n `${tintColor} 20px,`,\n `${tintColor2} 20px,`,\n `${tintColor2} 40px`\n ].join(' '),\n backgroundPosition: '0 0'\n }\n } else if (type === 'solid') {\n return {\n backgroundColor: tintColor2\n }\n } else if (type === 'side') {\n return {\n backgroundImage: [\n 'linear-gradient(to right,',\n `${solidColor} ,`,\n `${solidColor} 2px,`,\n `transparent 6px`\n ].join(' '),\n backgroundPosition: '0 0'\n }\n }\n}\n\nconst highlightClass = (user) => {\n return 'USER____' + user.screen_name\n .replace(/\\./g, '_')\n .replace(/@/g, '_AT_')\n}\n\nexport {\n highlightClass,\n highlightStyle\n}\n","import Vue from 'vue'\n\nimport './tab_switcher.scss'\n\nexport default Vue.component('tab-switcher', {\n name: 'TabSwitcher',\n props: {\n renderOnlyFocused: {\n required: false,\n type: Boolean,\n default: false\n },\n onSwitch: {\n required: false,\n type: Function,\n default: undefined\n },\n activeTab: {\n required: false,\n type: String,\n default: undefined\n },\n scrollableTabs: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n active: this.$slots.default.findIndex(_ => _.tag)\n }\n },\n computed: {\n activeIndex () {\n // In case of controlled component\n if (this.activeTab) {\n return this.$slots.default.findIndex(slot => this.activeTab === slot.key)\n } else {\n return this.active\n }\n }\n },\n beforeUpdate () {\n const currentSlot = this.$slots.default[this.active]\n if (!currentSlot.tag) {\n this.active = this.$slots.default.findIndex(_ => _.tag)\n }\n },\n methods: {\n activateTab (index) {\n return (e) => {\n e.preventDefault()\n if (typeof this.onSwitch === 'function') {\n this.onSwitch.call(null, this.$slots.default[index].key)\n }\n this.active = index\n }\n }\n },\n render (h) {\n const tabs = this.$slots.default\n .map((slot, index) => {\n if (!slot.tag) return\n const classesTab = ['tab']\n const classesWrapper = ['tab-wrapper']\n\n if (this.activeIndex === index) {\n classesTab.push('active')\n classesWrapper.push('active')\n }\n if (slot.data.attrs.image) {\n return (\n

\n \n \n {slot.data.attrs.label ? '' : slot.data.attrs.label}\n \n
\n )\n }\n return (\n
\n \n {slot.data.attrs.label}\n
\n )\n })\n\n const contents = this.$slots.default.map((slot, index) => {\n if (!slot.tag) return\n const active = this.activeIndex === index\n if (this.renderOnlyFocused) {\n return active\n ?
{slot}
\n :
\n }\n return
{slot}
\n })\n\n return (\n
\n
\n {tabs}\n
\n
\n {contents}\n
\n
\n )\n }\n})\n","/* eslint-env browser */\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nconst mediaUpload = {\n data () {\n return {\n uploading: false,\n uploadReady: true\n }\n },\n methods: {\n uploadFile (file) {\n const self = this\n const store = this.$store\n if (file.size > store.state.instance.uploadlimit) {\n const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n const allowedsize = fileSizeFormatService.fileSizeFormat(store.state.instance.uploadlimit)\n self.$emit('upload-failed', 'file_too_big', { filesize: filesize.num, filesizeunit: filesize.unit, allowedsize: allowedsize.num, allowedsizeunit: allowedsize.unit })\n return\n }\n const formData = new FormData()\n formData.append('file', file)\n\n self.$emit('uploading')\n self.uploading = true\n\n statusPosterService.uploadMedia({ store, formData })\n .then((fileData) => {\n self.$emit('uploaded', fileData)\n self.uploading = false\n }, (error) => { // eslint-disable-line handle-callback-err\n self.$emit('upload-failed', 'default')\n self.uploading = false\n })\n },\n fileDrop (e) {\n if (e.dataTransfer.files.length > 0) {\n e.preventDefault() // allow dropping text like before\n this.uploadFile(e.dataTransfer.files[0])\n }\n },\n fileDrag (e) {\n let types = e.dataTransfer.types\n if (types.contains('Files')) {\n e.dataTransfer.dropEffect = 'copy'\n } else {\n e.dataTransfer.dropEffect = 'none'\n }\n },\n clearFile () {\n this.uploadReady = false\n this.$nextTick(() => {\n this.uploadReady = true\n })\n },\n change ({ target }) {\n for (var i = 0; i < target.files.length; i++) {\n let file = target.files[i]\n this.uploadFile(file)\n }\n }\n },\n props: [\n 'dropFiles'\n ],\n watch: {\n 'dropFiles': function (fileInfos) {\n if (!this.uploading) {\n this.uploadFile(fileInfos[0])\n }\n }\n }\n}\n\nexport default mediaUpload\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./media_upload.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./media_upload.js\"\nimport __vue_script__ from \"!!babel-loader!./media_upload.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-74382032\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./media_upload.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"media-upload\",on:{\"drop\":[function($event){$event.preventDefault();},_vm.fileDrop],\"dragover\":function($event){$event.preventDefault();return _vm.fileDrag($event)}}},[_c('label',{staticClass:\"label\",attrs:{\"title\":_vm.$t('tool_tip.media_upload')}},[(_vm.uploading)?_c('i',{staticClass:\"progress-icon icon-spin4 animate-spin\"}):_vm._e(),_vm._v(\" \"),(!_vm.uploading)?_c('i',{staticClass:\"new-icon icon-upload\"}):_vm._e(),_vm._v(\" \"),(_vm.uploadReady)?_c('input',{staticStyle:{\"position\":\"fixed\",\"top\":\"-100em\"},attrs:{\"type\":\"file\",\"multiple\":\"true\"},on:{\"change\":_vm.change}}):_vm._e()])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport { uniq } from 'lodash'\n\nexport default {\n name: 'PollForm',\n props: ['visible'],\n data: () => ({\n pollType: 'single',\n options: ['', ''],\n expiryAmount: 10,\n expiryUnit: 'minutes'\n }),\n computed: {\n pollLimits () {\n return this.$store.state.instance.pollLimits\n },\n maxOptions () {\n return this.pollLimits.max_options\n },\n maxLength () {\n return this.pollLimits.max_option_chars\n },\n expiryUnits () {\n const allUnits = ['minutes', 'hours', 'days']\n const expiry = this.convertExpiryFromUnit\n return allUnits.filter(\n unit => this.pollLimits.max_expiration >= expiry(unit, 1)\n )\n },\n minExpirationInCurrentUnit () {\n return Math.ceil(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.min_expiration\n )\n )\n },\n maxExpirationInCurrentUnit () {\n return Math.floor(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.max_expiration\n )\n )\n }\n },\n methods: {\n clear () {\n this.pollType = 'single'\n this.options = ['', '']\n this.expiryAmount = 10\n this.expiryUnit = 'minutes'\n },\n nextOption (index) {\n const element = this.$el.querySelector(`#poll-${index + 1}`)\n if (element) {\n element.focus()\n } else {\n // Try adding an option and try focusing on it\n const addedOption = this.addOption()\n if (addedOption) {\n this.$nextTick(function () {\n this.nextOption(index)\n })\n }\n }\n },\n addOption () {\n if (this.options.length < this.maxOptions) {\n this.options.push('')\n return true\n }\n return false\n },\n deleteOption (index, event) {\n if (this.options.length > 2) {\n this.options.splice(index, 1)\n }\n },\n convertExpiryToUnit (unit, amount) {\n // Note: we want seconds and not milliseconds\n switch (unit) {\n case 'minutes': return (1000 * amount) / DateUtils.MINUTE\n case 'hours': return (1000 * amount) / DateUtils.HOUR\n case 'days': return (1000 * amount) / DateUtils.DAY\n }\n },\n convertExpiryFromUnit (unit, amount) {\n // Note: we want seconds and not milliseconds\n switch (unit) {\n case 'minutes': return 0.001 * amount * DateUtils.MINUTE\n case 'hours': return 0.001 * amount * DateUtils.HOUR\n case 'days': return 0.001 * amount * DateUtils.DAY\n }\n },\n expiryAmountChange () {\n this.expiryAmount =\n Math.max(this.minExpirationInCurrentUnit, this.expiryAmount)\n this.expiryAmount =\n Math.min(this.maxExpirationInCurrentUnit, this.expiryAmount)\n this.updatePollToParent()\n },\n updatePollToParent () {\n const expiresIn = this.convertExpiryFromUnit(\n this.expiryUnit,\n this.expiryAmount\n )\n\n const options = uniq(this.options.filter(option => option !== ''))\n if (options.length < 2) {\n this.$emit('update-poll', { error: this.$t('polls.not_enough_options') })\n return\n }\n this.$emit('update-poll', {\n options,\n multiple: this.pollType === 'multiple',\n expiresIn\n })\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./poll_form.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./poll_form.js\"\nimport __vue_script__ from \"!!babel-loader!./poll_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1f896331\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./poll_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visible)?_c('div',{staticClass:\"poll-form\"},[_vm._l((_vm.options),function(option,index){return _c('div',{key:index,staticClass:\"poll-option\"},[_c('div',{staticClass:\"input-container\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.options[index]),expression:\"options[index]\"}],staticClass:\"poll-option-input\",attrs:{\"id\":(\"poll-\" + index),\"type\":\"text\",\"placeholder\":_vm.$t('polls.option'),\"maxlength\":_vm.maxLength},domProps:{\"value\":(_vm.options[index])},on:{\"change\":_vm.updatePollToParent,\"keydown\":function($event){if(!('button' in $event)&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.stopPropagation();$event.preventDefault();_vm.nextOption(index)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.options, index, $event.target.value)}}})]),_vm._v(\" \"),(_vm.options.length > 2)?_c('div',{staticClass:\"icon-container\"},[_c('i',{staticClass:\"icon-cancel\",on:{\"click\":function($event){_vm.deleteOption(index)}}})]):_vm._e()])}),_vm._v(\" \"),(_vm.options.length < _vm.maxOptions)?_c('a',{staticClass:\"add-option faint\",on:{\"click\":_vm.addOption}},[_c('i',{staticClass:\"icon-plus\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t(\"polls.add_option\"))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"poll-type-expiry\"},[_c('div',{staticClass:\"poll-type\",attrs:{\"title\":_vm.$t('polls.type')}},[_c('label',{staticClass:\"select\",attrs:{\"for\":\"poll-type-selector\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.pollType),expression:\"pollType\"}],staticClass:\"select\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.pollType=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.updatePollToParent]}},[_c('option',{attrs:{\"value\":\"single\"}},[_vm._v(_vm._s(_vm.$t('polls.single_choice')))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"multiple\"}},[_vm._v(_vm._s(_vm.$t('polls.multiple_choices')))])]),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])]),_vm._v(\" \"),_c('div',{staticClass:\"poll-expiry\",attrs:{\"title\":_vm.$t('polls.expiry')}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.expiryAmount),expression:\"expiryAmount\"}],staticClass:\"expiry-amount hide-number-spinner\",attrs:{\"type\":\"number\",\"min\":_vm.minExpirationInCurrentUnit,\"max\":_vm.maxExpirationInCurrentUnit},domProps:{\"value\":(_vm.expiryAmount)},on:{\"change\":_vm.expiryAmountChange,\"input\":function($event){if($event.target.composing){ return; }_vm.expiryAmount=$event.target.value}}}),_vm._v(\" \"),_c('label',{staticClass:\"expiry-unit select\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.expiryUnit),expression:\"expiryUnit\"}],on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.expiryUnit=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.expiryAmountChange]}},_vm._l((_vm.expiryUnits),function(unit){return _c('option',{key:unit,domProps:{\"value\":unit}},[_vm._v(\"\\n \"+_vm._s(_vm.$t((\"time.\" + unit + \"_short\"), ['']))+\"\\n \")])}),0),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])])])],2):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import statusPoster from '../../services/status_poster/status_poster.service.js'\nimport MediaUpload from '../media_upload/media_upload.vue'\nimport ScopeSelector from '../scope_selector/scope_selector.vue'\nimport EmojiInput from '../emoji_input/emoji_input.vue'\nimport PollForm from '../poll/poll_form.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { reject, map, uniqBy } from 'lodash'\nimport suggestor from '../emoji_input/suggestor.js'\nimport { mapGetters } from 'vuex'\nimport Checkbox from '../checkbox/checkbox.vue'\n\nconst buildMentionsString = ({ user, attentions = [] }, currentUser) => {\n let allAttentions = [...attentions]\n\n allAttentions.unshift(user)\n\n allAttentions = uniqBy(allAttentions, 'id')\n allAttentions = reject(allAttentions, { id: currentUser.id })\n\n let mentions = map(allAttentions, (attention) => {\n return `@${attention.screen_name}`\n })\n\n return mentions.length > 0 ? mentions.join(' ') + ' ' : ''\n}\n\nconst PostStatusForm = {\n props: [\n 'replyTo',\n 'repliedUser',\n 'attentions',\n 'copyMessageScope',\n 'subject'\n ],\n components: {\n MediaUpload,\n EmojiInput,\n PollForm,\n ScopeSelector,\n Checkbox\n },\n mounted () {\n this.resize(this.$refs.textarea)\n const textLength = this.$refs.textarea.value.length\n this.$refs.textarea.setSelectionRange(textLength, textLength)\n\n if (this.replyTo) {\n this.$refs.textarea.focus()\n }\n },\n data () {\n const preset = this.$route.query.message\n let statusText = preset || ''\n\n const { scopeCopy } = this.$store.getters.mergedConfig\n\n if (this.replyTo) {\n const currentUser = this.$store.state.users.currentUser\n statusText = buildMentionsString({ user: this.repliedUser, attentions: this.attentions }, currentUser)\n }\n\n const scope = ((this.copyMessageScope && scopeCopy) || this.copyMessageScope === 'direct')\n ? this.copyMessageScope\n : this.$store.state.users.currentUser.default_scope\n\n const { postContentType: contentType } = this.$store.getters.mergedConfig\n\n return {\n dropFiles: [],\n submitDisabled: false,\n error: null,\n posting: false,\n highlighted: 0,\n newStatus: {\n spoilerText: this.subject || '',\n status: statusText,\n nsfw: false,\n files: [],\n poll: {},\n visibility: scope,\n contentType\n },\n caret: 0,\n pollFormVisible: false\n }\n },\n computed: {\n users () {\n return this.$store.state.users.users\n },\n userDefaultScope () {\n return this.$store.state.users.currentUser.default_scope\n },\n showAllScopes () {\n return !this.mergedConfig.minimalScopesMode\n },\n emojiUserSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ],\n users: this.$store.state.users.users,\n updateUsersList: (input) => this.$store.dispatch('searchUsers', input)\n })\n },\n emojiSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ]\n })\n },\n emoji () {\n return this.$store.state.instance.emoji || []\n },\n customEmoji () {\n return this.$store.state.instance.customEmoji || []\n },\n statusLength () {\n return this.newStatus.status.length\n },\n spoilerTextLength () {\n return this.newStatus.spoilerText.length\n },\n statusLengthLimit () {\n return this.$store.state.instance.textlimit\n },\n hasStatusLengthLimit () {\n return this.statusLengthLimit > 0\n },\n charactersLeft () {\n return this.statusLengthLimit - (this.statusLength + this.spoilerTextLength)\n },\n isOverLengthLimit () {\n return this.hasStatusLengthLimit && (this.charactersLeft < 0)\n },\n minimalScopesMode () {\n return this.$store.state.instance.minimalScopesMode\n },\n alwaysShowSubject () {\n return this.mergedConfig.alwaysShowSubjectInput\n },\n postFormats () {\n return this.$store.state.instance.postFormats || []\n },\n safeDMEnabled () {\n return this.$store.state.instance.safeDM\n },\n pollsAvailable () {\n return this.$store.state.instance.pollsAvailable &&\n this.$store.state.instance.pollLimits.max_options >= 2\n },\n hideScopeNotice () {\n return this.$store.getters.mergedConfig.hideScopeNotice\n },\n pollContentError () {\n return this.pollFormVisible &&\n this.newStatus.poll &&\n this.newStatus.poll.error\n },\n ...mapGetters(['mergedConfig'])\n },\n methods: {\n postStatus (newStatus) {\n if (this.posting) { return }\n if (this.submitDisabled) { return }\n\n if (this.newStatus.status === '') {\n if (this.newStatus.files.length === 0) {\n this.error = 'Cannot post an empty status with no files'\n return\n }\n }\n\n const poll = this.pollFormVisible ? this.newStatus.poll : {}\n if (this.pollContentError) {\n this.error = this.pollContentError\n return\n }\n\n this.posting = true\n statusPoster.postStatus({\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: newStatus.nsfw,\n media: newStatus.files,\n store: this.$store,\n inReplyToStatusId: this.replyTo,\n contentType: newStatus.contentType,\n poll\n }).then((data) => {\n if (!data.error) {\n this.newStatus = {\n status: '',\n spoilerText: '',\n files: [],\n visibility: newStatus.visibility,\n contentType: newStatus.contentType,\n poll: {}\n }\n this.pollFormVisible = false\n this.$refs.mediaUpload.clearFile()\n this.clearPollForm()\n this.$emit('posted')\n let el = this.$el.querySelector('textarea')\n el.style.height = 'auto'\n el.style.height = undefined\n this.error = null\n } else {\n this.error = data.error\n }\n this.posting = false\n })\n },\n addMediaFile (fileInfo) {\n this.newStatus.files.push(fileInfo)\n this.enableSubmit()\n },\n removeMediaFile (fileInfo) {\n let index = this.newStatus.files.indexOf(fileInfo)\n this.newStatus.files.splice(index, 1)\n },\n uploadFailed (errString, templateArgs) {\n templateArgs = templateArgs || {}\n this.error = this.$t('upload.error.base') + ' ' + this.$t('upload.error.' + errString, templateArgs)\n this.enableSubmit()\n },\n disableSubmit () {\n this.submitDisabled = true\n },\n enableSubmit () {\n this.submitDisabled = false\n },\n type (fileInfo) {\n return fileTypeService.fileType(fileInfo.mimetype)\n },\n paste (e) {\n this.resize(e)\n if (e.clipboardData.files.length > 0) {\n // prevent pasting of file as text\n e.preventDefault()\n // Strangely, files property gets emptied after event propagation\n // Trying to wrap it in array doesn't work. Plus I doubt it's possible\n // to hold more than one file in clipboard.\n this.dropFiles = [e.clipboardData.files[0]]\n }\n },\n fileDrop (e) {\n if (e.dataTransfer.files.length > 0) {\n e.preventDefault() // allow dropping text like before\n this.dropFiles = e.dataTransfer.files\n }\n },\n fileDrag (e) {\n e.dataTransfer.dropEffect = 'copy'\n },\n onEmojiInputInput (e) {\n this.$nextTick(() => {\n this.resize(this.$refs['textarea'])\n })\n },\n resize (e) {\n const target = e.target || e\n if (!(target instanceof window.Element)) { return }\n\n // Reset to default height for empty form, nothing else to do here.\n if (target.value === '') {\n target.style.height = null\n this.$refs['emoji-input'].resize()\n return\n }\n\n const formRef = this.$refs['form']\n const bottomRef = this.$refs['bottom']\n /* Scroller is either `window` (replies in TL), sidebar (main post form,\n * replies in notifs) or mobile post form. Note that getting and setting\n * scroll is different for `Window` and `Element`s\n */\n const bottomBottomPaddingStr = window.getComputedStyle(bottomRef)['padding-bottom']\n const bottomBottomPadding = Number(bottomBottomPaddingStr.substring(0, bottomBottomPaddingStr.length - 2))\n\n const scrollerRef = this.$el.closest('.sidebar-scroller') ||\n this.$el.closest('.post-form-modal-view') ||\n window\n\n // Getting info about padding we have to account for, removing 'px' part\n const topPaddingStr = window.getComputedStyle(target)['padding-top']\n const bottomPaddingStr = window.getComputedStyle(target)['padding-bottom']\n const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))\n const bottomPadding = Number(bottomPaddingStr.substring(0, bottomPaddingStr.length - 2))\n const vertPadding = topPadding + bottomPadding\n\n /* Explanation:\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight\n * scrollHeight returns element's scrollable content height, i.e. visible\n * element + overscrolled parts of it. We use it to determine when text\n * inside the textarea exceeded its height, so we can set height to prevent\n * overscroll, i.e. make textarea grow with the text. HOWEVER, since we\n * explicitly set new height, scrollHeight won't go below that, so we can't\n * SHRINK the textarea when there's extra space. To workaround that we set\n * height to 'auto' which makes textarea tiny again, so that scrollHeight\n * will match text height again. HOWEVER, shrinking textarea can screw with\n * the scroll since there might be not enough padding around form-bottom to even\n * warrant a scroll, so it will jump to 0 and refuse to move anywhere,\n * so we check current scroll position before shrinking and then restore it\n * with needed delta.\n */\n\n // this part has to be BEFORE the content size update\n const currentScroll = scrollerRef === window\n ? scrollerRef.scrollY\n : scrollerRef.scrollTop\n const scrollerHeight = scrollerRef === window\n ? scrollerRef.innerHeight\n : scrollerRef.offsetHeight\n const scrollerBottomBorder = currentScroll + scrollerHeight\n\n // BEGIN content size update\n target.style.height = 'auto'\n const newHeight = target.scrollHeight - vertPadding\n target.style.height = `${newHeight}px`\n // END content size update\n\n // We check where the bottom border of form-bottom element is, this uses findOffset\n // to find offset relative to scrollable container (scroller)\n const bottomBottomBorder = bottomRef.offsetHeight + findOffset(bottomRef, scrollerRef).top + bottomBottomPadding\n\n const isBottomObstructed = scrollerBottomBorder < bottomBottomBorder\n const isFormBiggerThanScroller = scrollerHeight < formRef.offsetHeight\n const bottomChangeDelta = bottomBottomBorder - scrollerBottomBorder\n // The intention is basically this;\n // Keep form-bottom always visible so that submit button is in view EXCEPT\n // if form element bigger than scroller and caret isn't at the end, so that\n // if you scroll up and edit middle of text you won't get scrolled back to bottom\n const shouldScrollToBottom = isBottomObstructed &&\n !(isFormBiggerThanScroller &&\n this.$refs.textarea.selectionStart !== this.$refs.textarea.value.length)\n const totalDelta = shouldScrollToBottom ? bottomChangeDelta : 0\n const targetScroll = currentScroll + totalDelta\n\n if (scrollerRef === window) {\n scrollerRef.scroll(0, targetScroll)\n } else {\n scrollerRef.scrollTop = targetScroll\n }\n\n this.$refs['emoji-input'].resize()\n },\n showEmojiPicker () {\n this.$refs['textarea'].focus()\n this.$refs['emoji-input'].triggerShowPicker()\n },\n clearError () {\n this.error = null\n },\n changeVis (visibility) {\n this.newStatus.visibility = visibility\n },\n togglePollForm () {\n this.pollFormVisible = !this.pollFormVisible\n },\n setPoll (poll) {\n this.newStatus.poll = poll\n },\n clearPollForm () {\n if (this.$refs.pollForm) {\n this.$refs.pollForm.clear()\n }\n },\n dismissScopeNotice () {\n this.$store.dispatch('setOption', { name: 'hideScopeNotice', value: true })\n }\n }\n}\n\nexport default PostStatusForm\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./post_status_form.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./post_status_form.js\"\nimport __vue_script__ from \"!!babel-loader!./post_status_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-c2ba770c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./post_status_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"form\",staticClass:\"post-status-form\"},[_c('form',{attrs:{\"autocomplete\":\"off\"},on:{\"submit\":function($event){$event.preventDefault();_vm.postStatus(_vm.newStatus)}}},[_c('div',{staticClass:\"form-group\"},[(!_vm.$store.state.users.currentUser.locked && _vm.newStatus.visibility == 'private')?_c('i18n',{staticClass:\"visibility-notice\",attrs:{\"path\":\"post_status.account_not_locked_warning\",\"tag\":\"p\"}},[_c('router-link',{attrs:{\"to\":{ name: 'user-settings' }}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.account_not_locked_warning_link'))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'public')?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.public')))]),_vm._v(\" \"),_c('a',{staticClass:\"button-icon dismiss\",on:{\"click\":function($event){$event.preventDefault();_vm.dismissScopeNotice()}}},[_c('i',{staticClass:\"icon-cancel\"})])]):(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'unlisted')?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.unlisted')))]),_vm._v(\" \"),_c('a',{staticClass:\"button-icon dismiss\",on:{\"click\":function($event){$event.preventDefault();_vm.dismissScopeNotice()}}},[_c('i',{staticClass:\"icon-cancel\"})])]):(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'private' && _vm.$store.state.users.currentUser.locked)?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.private')))]),_vm._v(\" \"),_c('a',{staticClass:\"button-icon dismiss\",on:{\"click\":function($event){$event.preventDefault();_vm.dismissScopeNotice()}}},[_c('i',{staticClass:\"icon-cancel\"})])]):(_vm.newStatus.visibility === 'direct')?_c('p',{staticClass:\"visibility-notice\"},[(_vm.safeDMEnabled)?_c('span',[_vm._v(_vm._s(_vm.$t('post_status.direct_warning_to_first_only')))]):_c('span',[_vm._v(_vm._s(_vm.$t('post_status.direct_warning_to_all')))])]):_vm._e(),_vm._v(\" \"),(_vm.newStatus.spoilerText || _vm.alwaysShowSubject)?_c('EmojiInput',{staticClass:\"form-control\",attrs:{\"enable-emoji-picker\":\"\",\"suggest\":_vm.emojiSuggestor},model:{value:(_vm.newStatus.spoilerText),callback:function ($$v) {_vm.$set(_vm.newStatus, \"spoilerText\", $$v)},expression:\"newStatus.spoilerText\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.spoilerText),expression:\"newStatus.spoilerText\"}],staticClass:\"form-post-subject\",attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('post_status.content_warning')},domProps:{\"value\":(_vm.newStatus.spoilerText)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newStatus, \"spoilerText\", $event.target.value)}}})]):_vm._e(),_vm._v(\" \"),_c('EmojiInput',{ref:\"emoji-input\",staticClass:\"form-control main-input\",attrs:{\"suggest\":_vm.emojiUserSuggestor,\"enable-emoji-picker\":\"\",\"hide-emoji-button\":\"\",\"enable-sticker-picker\":\"\"},on:{\"input\":_vm.onEmojiInputInput,\"sticker-uploaded\":_vm.addMediaFile,\"sticker-upload-failed\":_vm.uploadFailed},model:{value:(_vm.newStatus.status),callback:function ($$v) {_vm.$set(_vm.newStatus, \"status\", $$v)},expression:\"newStatus.status\"}},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.status),expression:\"newStatus.status\"}],ref:\"textarea\",staticClass:\"form-post-body\",attrs:{\"placeholder\":_vm.$t('post_status.default'),\"rows\":\"1\",\"disabled\":_vm.posting},domProps:{\"value\":(_vm.newStatus.status)},on:{\"keydown\":function($event){if(!('button' in $event)&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if(!$event.metaKey){ return null; }_vm.postStatus(_vm.newStatus)},\"keyup\":function($event){if(!('button' in $event)&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if(!$event.ctrlKey){ return null; }_vm.postStatus(_vm.newStatus)},\"drop\":_vm.fileDrop,\"dragover\":function($event){$event.preventDefault();return _vm.fileDrag($event)},\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.newStatus, \"status\", $event.target.value)},_vm.resize],\"compositionupdate\":_vm.resize,\"paste\":_vm.paste}}),_vm._v(\" \"),(_vm.hasStatusLengthLimit)?_c('p',{staticClass:\"character-counter faint\",class:{ error: _vm.isOverLengthLimit }},[_vm._v(\"\\n \"+_vm._s(_vm.charactersLeft)+\"\\n \")]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"visibility-tray\"},[_c('scope-selector',{attrs:{\"show-all\":_vm.showAllScopes,\"user-default\":_vm.userDefaultScope,\"original-scope\":_vm.copyMessageScope,\"initial-scope\":_vm.newStatus.visibility,\"on-scope-change\":_vm.changeVis}}),_vm._v(\" \"),(_vm.postFormats.length > 1)?_c('div',{staticClass:\"text-format\"},[_c('label',{staticClass:\"select\",attrs:{\"for\":\"post-content-type\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.contentType),expression:\"newStatus.contentType\"}],staticClass:\"form-control\",attrs:{\"id\":\"post-content-type\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.newStatus, \"contentType\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.postFormats),function(postFormat){return _c('option',{key:postFormat,domProps:{\"value\":postFormat}},[_vm._v(\"\\n \"+_vm._s(_vm.$t((\"post_status.content_type[\\\"\" + postFormat + \"\\\"]\")))+\"\\n \")])}),0),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])]):_vm._e(),_vm._v(\" \"),(_vm.postFormats.length === 1 && _vm.postFormats[0] !== 'text/plain')?_c('div',{staticClass:\"text-format\"},[_c('span',{staticClass:\"only-format\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t((\"post_status.content_type[\\\"\" + (_vm.postFormats[0]) + \"\\\"]\")))+\"\\n \")])]):_vm._e()],1)],1),_vm._v(\" \"),(_vm.pollsAvailable)?_c('poll-form',{ref:\"pollForm\",attrs:{\"visible\":_vm.pollFormVisible},on:{\"update-poll\":_vm.setPoll}}):_vm._e(),_vm._v(\" \"),_c('div',{ref:\"bottom\",staticClass:\"form-bottom\"},[_c('div',{staticClass:\"form-bottom-left\"},[_c('media-upload',{ref:\"mediaUpload\",staticClass:\"media-upload-icon\",attrs:{\"drop-files\":_vm.dropFiles},on:{\"uploading\":_vm.disableSubmit,\"uploaded\":_vm.addMediaFile,\"upload-failed\":_vm.uploadFailed}}),_vm._v(\" \"),_c('div',{staticClass:\"emoji-icon\"},[_c('i',{staticClass:\"icon-smile btn btn-default\",attrs:{\"title\":_vm.$t('emoji.add_emoji')},on:{\"click\":_vm.showEmojiPicker}})]),_vm._v(\" \"),(_vm.pollsAvailable)?_c('div',{staticClass:\"poll-icon\",class:{ selected: _vm.pollFormVisible }},[_c('i',{staticClass:\"icon-chart-bar btn btn-default\",attrs:{\"title\":_vm.$t('polls.add_poll')},on:{\"click\":_vm.togglePollForm}})]):_vm._e()],1),_vm._v(\" \"),(_vm.posting)?_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.posting'))+\"\\n \")]):(_vm.isOverLengthLimit)?_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\n \")]):_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":_vm.submitDisabled,\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\n \")])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n Error: \"+_vm._s(_vm.error)+\"\\n \"),_c('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":_vm.clearError}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"attachments\"},_vm._l((_vm.newStatus.files),function(file){return _c('div',{key:file.url,staticClass:\"media-upload-wrapper\"},[_c('i',{staticClass:\"fa button-icon icon-cancel\",on:{\"click\":function($event){_vm.removeMediaFile(file)}}}),_vm._v(\" \"),_c('div',{staticClass:\"media-upload-container attachment\"},[(_vm.type(file) === 'image')?_c('img',{staticClass:\"thumbnail media-upload\",attrs:{\"src\":file.url}}):_vm._e(),_vm._v(\" \"),(_vm.type(file) === 'video')?_c('video',{attrs:{\"src\":file.url,\"controls\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.type(file) === 'audio')?_c('audio',{attrs:{\"src\":file.url,\"controls\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.type(file) === 'unknown')?_c('a',{attrs:{\"href\":file.url}},[_vm._v(_vm._s(file.url))]):_vm._e()])])}),0),_vm._v(\" \"),(_vm.newStatus.files.length > 0)?_c('div',{staticClass:\"upload_settings\"},[_c('Checkbox',{model:{value:(_vm.newStatus.nsfw),callback:function ($$v) {_vm.$set(_vm.newStatus, \"nsfw\", $$v)},expression:\"newStatus.nsfw\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.attachments_sensitive'))+\"\\n \")])],1):_vm._e()],1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const StillImage = {\n props: [\n 'src',\n 'referrerpolicy',\n 'mimetype',\n 'imageLoadError',\n 'imageLoadHandler'\n ],\n data () {\n return {\n stopGifs: this.$store.getters.mergedConfig.stopGifs\n }\n },\n computed: {\n animated () {\n return this.stopGifs && (this.mimetype === 'image/gif' || this.src.endsWith('.gif'))\n }\n },\n methods: {\n onLoad () {\n this.imageLoadHandler && this.imageLoadHandler(this.$refs.src)\n const canvas = this.$refs.canvas\n if (!canvas) return\n const width = this.$refs.src.naturalWidth\n const height = this.$refs.src.naturalHeight\n canvas.width = width\n canvas.height = height\n canvas.getContext('2d').drawImage(this.$refs.src, 0, 0, width, height)\n },\n onError () {\n this.imageLoadError && this.imageLoadError()\n }\n }\n}\n\nexport default StillImage\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./still-image.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./still-image.js\"\nimport __vue_script__ from \"!!babel-loader!./still-image.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1bc509fc\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./still-image.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"still-image\",class:{ animated: _vm.animated }},[(_vm.animated)?_c('canvas',{ref:\"canvas\"}):_vm._e(),_vm._v(\" \"),_c('img',{key:_vm.src,ref:\"src\",attrs:{\"src\":_vm.src,\"referrerpolicy\":_vm.referrerpolicy},on:{\"load\":_vm.onLoad,\"error\":_vm.onError}})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\n\n\n","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./timeago.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./timeago.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-ac499830\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeago.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('time',{attrs:{\"datetime\":_vm.time,\"title\":_vm.localeDateString}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(_vm.relativeTime.key, [_vm.relativeTime.num]))+\"\\n\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const fileSizeFormat = (num) => {\n var exponent\n var unit\n var units = ['B', 'KiB', 'MiB', 'GiB', 'TiB']\n if (num < 1) {\n return num + ' ' + units[0]\n }\n\n exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1)\n num = (num / Math.pow(1024, exponent)).toFixed(2) * 1\n unit = units[exponent]\n return { num: num, unit: unit }\n}\nconst fileSizeFormatService = {\n fileSizeFormat\n}\nexport default fileSizeFormatService\n","import { debounce } from 'lodash'\n/**\n * suggest - generates a suggestor function to be used by emoji-input\n * data: object providing source information for specific types of suggestions:\n * data.emoji - optional, an array of all emoji available i.e.\n * (state.instance.emoji + state.instance.customEmoji)\n * data.users - optional, an array of all known users\n * updateUsersList - optional, a function to search and append to users\n *\n * Depending on data present one or both (or none) can be present, so if field\n * doesn't support user linking you can just provide only emoji.\n */\n\nconst debounceUserSearch = debounce((data, input) => {\n data.updateUsersList(input)\n}, 500, { leading: true, trailing: false })\n\nexport default data => input => {\n const firstChar = input[0]\n if (firstChar === ':' && data.emoji) {\n return suggestEmoji(data.emoji)(input)\n }\n if (firstChar === '@' && data.users) {\n return suggestUsers(data)(input)\n }\n return []\n}\n\nexport const suggestEmoji = emojis => input => {\n const noPrefix = input.toLowerCase().substr(1)\n return emojis\n .filter(({ displayText }) => displayText.toLowerCase().startsWith(noPrefix))\n .sort((a, b) => {\n let aScore = 0\n let bScore = 0\n\n // Make custom emojis a priority\n aScore += a.imageUrl ? 10 : 0\n bScore += b.imageUrl ? 10 : 0\n\n // Sort alphabetically\n const alphabetically = a.displayText > b.displayText ? 1 : -1\n\n return bScore - aScore + alphabetically\n })\n}\n\nexport const suggestUsers = data => input => {\n const noPrefix = input.toLowerCase().substr(1)\n const users = data.users\n\n const newUsers = users.filter(\n user =>\n user.screen_name.toLowerCase().startsWith(noPrefix) ||\n user.name.toLowerCase().startsWith(noPrefix)\n\n /* taking only 20 results so that sorting is a bit cheaper, we display\n * only 5 anyway. could be inaccurate, but we ideally we should query\n * backend anyway\n */\n ).slice(0, 20).sort((a, b) => {\n let aScore = 0\n let bScore = 0\n\n // Matches on screen name (i.e. user@instance) makes a priority\n aScore += a.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n bScore += b.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n\n // Matches on name takes second priority\n aScore += a.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n bScore += b.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n\n const diff = (bScore - aScore) * 10\n\n // Then sort alphabetically\n const nameAlphabetically = a.name > b.name ? 1 : -1\n const screenNameAlphabetically = a.screen_name > b.screen_name ? 1 : -1\n\n return diff + nameAlphabetically + screenNameAlphabetically\n /* eslint-disable camelcase */\n }).map(({ screen_name, name, profile_image_url_original }) => ({\n displayText: screen_name,\n detailText: name,\n imageUrl: profile_image_url_original,\n replacement: '@' + screen_name + ' '\n }))\n\n // BE search users if there are no matches\n if (newUsers.length === 0 && data.updateUsersList) {\n debounceUserSearch(data, noPrefix)\n }\n return newUsers\n /* eslint-enable camelcase */\n}\n","import { map } from 'lodash'\nimport apiService from '../api/api.service.js'\n\nconst postStatus = ({ store, status, spoilerText, visibility, sensitive, poll, media = [], inReplyToStatusId = undefined, contentType = 'text/plain' }) => {\n const mediaIds = map(media, 'id')\n\n return apiService.postStatus({\n credentials: store.state.users.currentUser.credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n mediaIds,\n inReplyToStatusId,\n contentType,\n poll })\n .then((data) => {\n if (!data.error) {\n store.dispatch('addNewStatuses', {\n statuses: [data],\n timeline: 'friends',\n showImmediately: true,\n noIdUpdate: true // To prevent missing notices on next pull.\n })\n }\n return data\n })\n .catch((err) => {\n return {\n error: err.message\n }\n })\n}\n\nconst uploadMedia = ({ store, formData }) => {\n const credentials = store.state.users.currentUser.credentials\n\n return apiService.uploadMedia({ credentials, formData })\n}\n\nconst statusPosterService = {\n postStatus,\n uploadMedia\n}\n\nexport default statusPosterService\n","export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadding = true) => {\n const result = {\n top: top + child.offsetTop,\n left: left + child.offsetLeft\n }\n if (!ignorePadding && child !== window) {\n const { topPadding, leftPadding } = findPadding(child)\n result.top += ignorePadding ? 0 : topPadding\n result.left += ignorePadding ? 0 : leftPadding\n }\n\n if (child.offsetParent && (parent === window || parent.contains(child.offsetParent) || parent === child.offsetParent)) {\n return findOffset(child.offsetParent, parent, result, false)\n } else {\n if (parent !== window) {\n const { topPadding, leftPadding } = findPadding(parent)\n result.top += topPadding\n result.left += leftPadding\n }\n return result\n }\n}\n\nconst findPadding = (el) => {\n const topPaddingStr = window.getComputedStyle(el)['padding-top']\n const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))\n const leftPaddingStr = window.getComputedStyle(el)['padding-left']\n const leftPadding = Number(leftPaddingStr.substring(0, leftPaddingStr.length - 2))\n\n return { topPadding, leftPadding }\n}\n","import { reduce, find } from 'lodash'\n\nexport const replaceWord = (str, toReplace, replacement) => {\n return str.slice(0, toReplace.start) + replacement + str.slice(toReplace.end)\n}\n\nexport const wordAtPosition = (str, pos) => {\n const words = splitIntoWords(str)\n const wordsWithPosition = addPositionToWords(words)\n\n return find(wordsWithPosition, ({ start, end }) => start <= pos && end > pos)\n}\n\nexport const addPositionToWords = (words) => {\n return reduce(words, (result, word) => {\n const data = {\n word,\n start: 0,\n end: word.length\n }\n\n if (result.length > 0) {\n const previous = result.pop()\n\n data.start += previous.end\n data.end += previous.end\n\n result.push(previous)\n }\n\n result.push(data)\n\n return result\n }, [])\n}\n\nexport const splitIntoWords = (str) => {\n // Split at word boundaries\n const regex = /\\b/\n const triggers = /[@#:]+$/\n\n let split = str.split(regex)\n\n // Add trailing @ and # to the following word.\n const words = reduce(split, (result, word) => {\n if (result.length > 0) {\n let previous = result.pop()\n const matches = previous.match(triggers)\n if (matches) {\n previous = previous.replace(triggers, '')\n word = matches[0] + word\n }\n result.push(previous)\n }\n result.push(word)\n\n return result\n }, [])\n\n return words\n}\n\nconst completion = {\n wordAtPosition,\n addPositionToWords,\n splitIntoWords,\n replaceWord\n}\n\nexport default completion\n","import Checkbox from '../checkbox/checkbox.vue'\n\n// At widest, approximately 20 emoji are visible in a row,\n// loading 3 rows, could be overkill for narrow picker\nconst LOAD_EMOJI_BY = 60\n\n// When to start loading new batch emoji, in pixels\nconst LOAD_EMOJI_MARGIN = 64\n\nconst filterByKeyword = (list, keyword = '') => {\n return list.filter(x => x.displayText.includes(keyword))\n}\n\nconst EmojiPicker = {\n props: {\n enableStickerPicker: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n keyword: '',\n activeGroup: 'custom',\n showingStickers: false,\n groupsScrolledClass: 'scrolled-top',\n keepOpen: false,\n customEmojiBufferSlice: LOAD_EMOJI_BY,\n customEmojiTimeout: null,\n customEmojiLoadAllConfirmed: false\n }\n },\n components: {\n StickerPicker: () => import('../sticker_picker/sticker_picker.vue'),\n Checkbox\n },\n methods: {\n onStickerUploaded (e) {\n this.$emit('sticker-uploaded', e)\n },\n onStickerUploadFailed (e) {\n this.$emit('sticker-upload-failed', e)\n },\n onEmoji (emoji) {\n const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement\n this.$emit('emoji', { insertion: value, keepOpen: this.keepOpen })\n },\n onScroll (e) {\n const target = (e && e.target) || this.$refs['emoji-groups']\n this.updateScrolledClass(target)\n this.scrolledGroup(target)\n this.triggerLoadMore(target)\n },\n highlight (key) {\n const ref = this.$refs['group-' + key]\n const top = ref[0].offsetTop\n this.setShowStickers(false)\n this.activeGroup = key\n this.$nextTick(() => {\n this.$refs['emoji-groups'].scrollTop = top + 1\n })\n },\n updateScrolledClass (target) {\n if (target.scrollTop <= 5) {\n this.groupsScrolledClass = 'scrolled-top'\n } else if (target.scrollTop >= target.scrollTopMax - 5) {\n this.groupsScrolledClass = 'scrolled-bottom'\n } else {\n this.groupsScrolledClass = 'scrolled-middle'\n }\n },\n triggerLoadMore (target) {\n const ref = this.$refs['group-end-custom'][0]\n if (!ref) return\n const bottom = ref.offsetTop + ref.offsetHeight\n\n const scrollerBottom = target.scrollTop + target.clientHeight\n const scrollerTop = target.scrollTop\n const scrollerMax = target.scrollHeight\n\n // Loads more emoji when they come into view\n const approachingBottom = bottom - scrollerBottom < LOAD_EMOJI_MARGIN\n // Always load when at the very top in case there's no scroll space yet\n const atTop = scrollerTop < 5\n // Don't load when looking at unicode category or at the very bottom\n const bottomAboveViewport = bottom < scrollerTop || scrollerBottom === scrollerMax\n if (!bottomAboveViewport && (approachingBottom || atTop)) {\n this.loadEmoji()\n }\n },\n scrolledGroup (target) {\n const top = target.scrollTop + 5\n this.$nextTick(() => {\n this.emojisView.forEach(group => {\n const ref = this.$refs['group-' + group.id]\n if (ref[0].offsetTop <= top) {\n this.activeGroup = group.id\n }\n })\n })\n },\n loadEmoji () {\n const allLoaded = this.customEmojiBuffer.length === this.filteredEmoji.length\n\n if (allLoaded) {\n return\n }\n\n this.customEmojiBufferSlice += LOAD_EMOJI_BY\n },\n startEmojiLoad (forceUpdate = false) {\n if (!forceUpdate) {\n this.keyword = ''\n }\n this.$nextTick(() => {\n this.$refs['emoji-groups'].scrollTop = 0\n })\n const bufferSize = this.customEmojiBuffer.length\n const bufferPrefilledAll = bufferSize === this.filteredEmoji.length\n if (bufferPrefilledAll && !forceUpdate) {\n return\n }\n this.customEmojiBufferSlice = LOAD_EMOJI_BY\n },\n toggleStickers () {\n this.showingStickers = !this.showingStickers\n },\n setShowStickers (value) {\n this.showingStickers = value\n }\n },\n watch: {\n keyword () {\n this.customEmojiLoadAllConfirmed = false\n this.onScroll()\n this.startEmojiLoad(true)\n }\n },\n computed: {\n activeGroupView () {\n return this.showingStickers ? '' : this.activeGroup\n },\n stickersAvailable () {\n if (this.$store.state.instance.stickers) {\n return this.$store.state.instance.stickers.length > 0\n }\n return 0\n },\n filteredEmoji () {\n return filterByKeyword(\n this.$store.state.instance.customEmoji || [],\n this.keyword\n )\n },\n customEmojiBuffer () {\n return this.filteredEmoji.slice(0, this.customEmojiBufferSlice)\n },\n emojis () {\n const standardEmojis = this.$store.state.instance.emoji || []\n const customEmojis = this.customEmojiBuffer\n\n return [\n {\n id: 'custom',\n text: this.$t('emoji.custom'),\n icon: 'icon-smile',\n emojis: customEmojis\n },\n {\n id: 'standard',\n text: this.$t('emoji.unicode'),\n icon: 'icon-picture',\n emojis: filterByKeyword(standardEmojis, this.keyword)\n }\n ]\n },\n emojisView () {\n return this.emojis.filter(value => value.emojis.length > 0)\n },\n stickerPickerEnabled () {\n return (this.$store.state.instance.stickers || []).length !== 0\n }\n }\n}\n\nexport default EmojiPicker\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./emoji_picker.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./emoji_picker.js\"\nimport __vue_script__ from \"!!babel-loader!./emoji_picker.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-47d21b3b\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./emoji_picker.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"emoji-picker panel panel-default panel-body\"},[_c('div',{staticClass:\"heading\"},[_c('span',{staticClass:\"emoji-tabs\"},_vm._l((_vm.emojis),function(group){return _c('span',{key:group.id,staticClass:\"emoji-tabs-item\",class:{\n active: _vm.activeGroupView === group.id,\n disabled: group.emojis.length === 0\n },attrs:{\"title\":group.text},on:{\"click\":function($event){$event.preventDefault();_vm.highlight(group.id)}}},[_c('i',{class:group.icon})])}),0),_vm._v(\" \"),(_vm.stickerPickerEnabled)?_c('span',{staticClass:\"additional-tabs\"},[_c('span',{staticClass:\"stickers-tab-icon additional-tabs-item\",class:{active: _vm.showingStickers},attrs:{\"title\":_vm.$t('emoji.stickers')},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleStickers($event)}}},[_c('i',{staticClass:\"icon-star\"})])]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"emoji-content\",class:{hidden: _vm.showingStickers}},[_c('div',{staticClass:\"emoji-search\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.keyword),expression:\"keyword\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('emoji.search_emoji')},domProps:{\"value\":(_vm.keyword)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.keyword=$event.target.value}}})]),_vm._v(\" \"),_c('div',{ref:\"emoji-groups\",staticClass:\"emoji-groups\",class:_vm.groupsScrolledClass,on:{\"scroll\":_vm.onScroll}},_vm._l((_vm.emojisView),function(group){return _c('div',{key:group.id,staticClass:\"emoji-group\"},[_c('h6',{ref:'group-' + group.id,refInFor:true,staticClass:\"emoji-group-title\"},[_vm._v(\"\\n \"+_vm._s(group.text)+\"\\n \")]),_vm._v(\" \"),_vm._l((group.emojis),function(emoji){return _c('span',{key:group.id + emoji.displayText,staticClass:\"emoji-item\",attrs:{\"title\":emoji.displayText},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();_vm.onEmoji(emoji)}}},[(!emoji.imageUrl)?_c('span',[_vm._v(_vm._s(emoji.replacement))]):_c('img',{attrs:{\"src\":emoji.imageUrl}})])}),_vm._v(\" \"),_c('span',{ref:'group-end-' + group.id,refInFor:true})],2)}),0),_vm._v(\" \"),_c('div',{staticClass:\"keep-open\"},[_c('Checkbox',{model:{value:(_vm.keepOpen),callback:function ($$v) {_vm.keepOpen=$$v},expression:\"keepOpen\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('emoji.keep_open'))+\"\\n \")])],1)]),_vm._v(\" \"),(_vm.showingStickers)?_c('div',{staticClass:\"stickers-content\"},[_c('sticker-picker',{on:{\"uploaded\":_vm.onStickerUploaded,\"upload-failed\":_vm.onStickerUploadFailed}})],1):_vm._e()])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Completion from '../../services/completion/completion.js'\nimport EmojiPicker from '../emoji_picker/emoji_picker.vue'\nimport { take } from 'lodash'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\n\n/**\n * EmojiInput - augmented inputs for emoji and autocomplete support in inputs\n * without having to give up the comfort of and