Steam Activity Alt

make steam activites easier to look through

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name         Steam Activity Alt
// @namespace    https://github.com/unluckyninja
// @version      0.1.0
// @description  make steam activites easier to look through
// @author       UnluckyNinja
// @include      /https://steamcommunity.com/.*/home/?/
// @grant        GM_addStyle
// @noframes
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.global.min.js
// @require      https://unpkg.com/[email protected]/dist/vue-router.global.prod.js
// ==/UserScript==

          var styleEle = GM_addStyle(`.header[data-v-b5214c52]{font-size:1.125rem;line-height:1.75rem;margin:.5rem}.content[data-v-b5214c52]{margin:1rem}a[data-v-b5214c52]{--tw-text-opacity: 1;color:rgba(29,78,216,var(--tw-text-opacity))}*,:before,:after{-webkit-box-sizing:border-box;box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}*{--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000}:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}:-moz-focusring{outline:1px dotted ButtonText}:-moz-ui-invalid{box-shadow:none}::moz-focus-inner{border-style:none;padding:0}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}a{color:inherit;text-decoration:inherit}body{margin:0;font-family:inherit;line-height:inherit}button{font-family:inherit;font-size:100%;line-height:1.15;margin:0;text-transform:none;background-color:transparent;background-image:none;padding:0;line-height:inherit;color:inherit}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,[role=button]{cursor:pointer}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";line-height:1.5}img{border-style:solid;display:block;vertical-align:middle;max-width:100%;height:auto}p{margin:0}html,body,#app{height:100%;margin:0;padding:0}img{border-width:0px}html.dark{background:#121212}.btn{--tw-bg-opacity: 1;background-color:rgba(13,148,136,var(--tw-bg-opacity));border-radius:.25rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;--tw-text-opacity: 1;color:rgba(255,255,255,var(--tw-text-opacity))}.btn:hover{--tw-bg-opacity: 1;background-color:rgba(15,118,110,var(--tw-bg-opacity))}.btn:disabled{--tw-bg-opacity: 1;background-color:rgba(75,85,99,var(--tw-bg-opacity));cursor:default;opacity:.5}.icon-btn{cursor:pointer;display:inline-block;opacity:.75;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform,filter,backdrop-filter;-o-transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-box-shadow,transform,-webkit-transform,filter,backdrop-filter;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);-o-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;-o-transition-duration:.15s;transition-duration:.15s;-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s;font-size:.9em}.icon-btn:hover{opacity:1;--tw-text-opacity: 1;color:rgba(13,148,136,var(--tw-text-opacity))}.bg-blue-gray-300{--tw-bg-opacity: 1;background-color:rgba(203,213,225,var(--tw-bg-opacity))}.dark .dark\:bg-blue-gray-700{--tw-bg-opacity: 1;background-color:rgba(51,65,85,var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}.border-blue-gray-500{--tw-border-opacity: 1;border-color:rgba(100,116,139,var(--tw-border-opacity))}.border-current{border-color:currentColor}.rounded{border-radius:.25rem}.border{border-width:1px}.border-t{border-top-width:1px}.border-b-0{border-bottom-width:0px}.border-b{border-bottom-width:1px}.inline-block{display:inline-block}.flex{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex}.grid{display:-ms-grid;display:grid}.hidden{display:none}.flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.items-center{-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.flex-1{-webkit-box-flex:1;-ms-flex:1 1 0%;-webkit-flex:1 1 0%;flex:1 1 0%}.flex-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto}.h-10{height:2.5rem}.h-full{height:100%}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.m-2{margin:.5rem}.m-4{margin:1rem}.m-3{margin:.75rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-auto{margin-left:auto}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mr-4{margin-right:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.max-w-screen-sm{max-width:640px}.min-h-0{min-height:0px}.opacity-50{opacity:.5}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.\!outline-none{outline:2px solid transparent!important;outline-offset:2px!important}.overflow-y-auto{overflow-y:auto}.p-4{padding:1rem}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0px;right:0px;bottom:0px;left:0px}.right-full{right:100%}.shadow{--tw-shadow-color: 0, 0, 0;--tw-shadow: 0 1px 3px 0 rgba(var(--tw-shadow-color), .1), 0 1px 2px 0 rgba(var(--tw-shadow-color), .06);-webkit-box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow\.appendChild\(realRoot\){--tw-shadow-color: 0, 0, 0;--tw-shadow: 0 1px 3px 0 rgba(var(--tw-shadow-color), .1), 0 1px 2px 0 rgba(var(--tw-shadow-color), .06);-webkit-box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.text-blue-gray-700{--tw-text-opacity: 1;color:rgba(51,65,85,var(--tw-text-opacity))}.dark .dark\:text-blue-gray-400{--tw-text-opacity: 1;color:rgba(148,163,184,var(--tw-text-opacity))}.w-full{width:100%}.w-10{width:2.5rem}.w-max{width:-webkit-max-content;width:-moz-max-content;width:max-content}.z-9000{z-index:9000}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.transform{--tw-rotate: 0;--tw-rotate-x: 0;--tw-rotate-y: 0;--tw-rotate-z: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-scale-z: 1;--tw-skew-x: 0;--tw-skew-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;-webkit-transform:rotate(var(--tw-rotate)) rotateX(var(--tw-rotate-x)) rotateY(var(--tw-rotate-y)) rotateZ(var(--tw-rotate-z)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) scaleZ(var(--tw-scale-z)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) translateZ(var(--tw-translate-z));-ms-transform:rotate(var(--tw-rotate)) rotateX(var(--tw-rotate-x)) rotateY(var(--tw-rotate-y)) rotateZ(var(--tw-rotate-z)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) scaleZ(var(--tw-scale-z)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) translateZ(var(--tw-translate-z));transform:rotate(var(--tw-rotate)) rotateX(var(--tw-rotate-x)) rotateY(var(--tw-rotate-y)) rotate(var(--tw-rotate-z)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) scaleZ(var(--tw-scale-z)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) translate(var(--tw-translate-x)) translateY(var(--tw-translate-y)) translateZ(var(--tw-translate-z))}.-translate-y-full{--tw-translate-y: -100%}.transition-transform{-webkit-transition-property:-webkit-transform;-o-transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);-o-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;-o-transition-duration:.15s;transition-duration:.15s}.duration-200{-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}.filter{--tw-blur: var(--tw-empty, );--tw-brightness: var(--tw-empty, );--tw-contrast: var(--tw-empty, );--tw-grayscale: var(--tw-empty, );--tw-hue-rotate: var(--tw-empty, );--tw-invert: var(--tw-empty, );--tw-saturate: var(--tw-empty, );--tw-sepia: var(--tw-empty, );--tw-drop-shadow: var(--tw-empty, );-webkit-filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.hover\:brightness-150:hover{--tw-brightness: brightness(1.5)}.active\:brightness-75:active{--tw-brightness: brightness(.75)}
`)
          styleEle.id = 'injected-styles'
          var __defProp = Object.defineProperty, __getOwnPropSymbols = Object.getOwnPropertySymbols, __hasOwnProp = Object.prototype.hasOwnProperty, __propIsEnum = Object.prototype.propertyIsEnumerable, __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {
    enumerable: !0,
    configurable: !0,
    writable: !0,
    value: value
}) : obj[key] = value, __spreadValues = (a, b) => {
    for (var prop in b || (b = {})) __hasOwnProp.call(b, prop) && __defNormalProp(a, prop, b[prop]);
    if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) __propIsEnum.call(b, prop) && __defNormalProp(a, prop, b[prop]);
    return a;
}, __require = "undefined" != typeof require ? require : x => {
    throw new Error('Dynamic require of "' + x + '" is not supported');
};

!function(vue, vueRouter) {
    "use strict";
    const _hoisted_1$a = {
        xmlns: "http://www.w3.org/2000/svg",
        "xmlns:xlink": "http://www.w3.org/1999/xlink",
        width: "1.2em",
        height: "1.2em",
        preserveAspectRatio: "xMidYMid meet",
        viewBox: "0 0 24 24"
    }, _hoisted_3$6 = [ vue.createElementVNode("path", {
        d: "M21 12l-7-7v4C7 10 4 15 3 20c2.5-3.5 6-5.1 11-5.1V19l7-7z",
        fill: "currentColor"
    }, null, -1) ];
    var __unplugin_components_0$2 = {
        name: "mdi-share",
        render: function(_ctx, _cache) {
            return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$a, _hoisted_3$6);
        }
    };
    const _hoisted_1$9 = {
        xmlns: "http://www.w3.org/2000/svg",
        "xmlns:xlink": "http://www.w3.org/1999/xlink",
        width: "1.2em",
        height: "1.2em",
        preserveAspectRatio: "xMidYMid meet",
        viewBox: "0 0 24 24"
    }, _hoisted_3$5 = [ vue.createElementVNode("path", {
        d: "M9 22a1 1 0 0 1-1-1v-3H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6.1l-3.7 3.71c-.2.19-.45.29-.7.29H9M5 5v2h14V5H5m0 4v2h8V9H5m0 4v2h10v-2H5z",
        fill: "currentColor"
    }, null, -1) ];
    var __unplugin_components_1$2 = {
        name: "mdi-comment-text",
        render: function(_ctx, _cache) {
            return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$9, _hoisted_3$5);
        }
    };
    const _hoisted_1$8 = {
        xmlns: "http://www.w3.org/2000/svg",
        "xmlns:xlink": "http://www.w3.org/1999/xlink",
        width: "1.2em",
        height: "1.2em",
        preserveAspectRatio: "xMidYMid meet",
        viewBox: "0 0 24 24"
    }, _hoisted_3$4 = [ vue.createElementVNode("path", {
        d: "M12.1 18.55l-.1.1l-.11-.1C7.14 14.24 4 11.39 4 8.5C4 6.5 5.5 5 7.5 5c1.54 0 3.04 1 3.57 2.36h1.86C13.46 6 14.96 5 16.5 5c2 0 3.5 1.5 3.5 3.5c0 2.89-3.14 5.74-7.9 10.05M16.5 3c-1.74 0-3.41.81-4.5 2.08C10.91 3.81 9.24 3 7.5 3C4.42 3 2 5.41 2 8.5c0 3.77 3.4 6.86 8.55 11.53L12 21.35l1.45-1.32C18.6 15.36 22 12.27 22 8.5C22 5.41 19.58 3 16.5 3z",
        fill: "currentColor"
    }, null, -1) ];
    var BlotterType, BlotterType2, __unplugin_components_2 = {
        name: "mdi-heart-outline",
        render: function(_ctx, _cache) {
            return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$8, _hoisted_3$4);
        }
    };
    (BlotterType2 = BlotterType || (BlotterType = {}))[BlotterType2.USER_STATUS = 0] = "USER_STATUS", 
    BlotterType2[BlotterType2.GAME_PURCHASE = 1] = "GAME_PURCHASE", BlotterType2[BlotterType2.RECOMMENDATION = 2] = "RECOMMENDATION", 
    BlotterType2[BlotterType2.GROUP_STATUS = 3] = "GROUP_STATUS", BlotterType2[BlotterType2.DAILY_ROLLUP = 4] = "DAILY_ROLLUP";
    var _export_sfc = (sfc, props) => {
        for (const [key, val] of props) sfc[key] = val;
        return sfc;
    };
    vue.pushScopeId("data-v-b5214c52");
    const _hoisted_1$7 = {
        class: "border border-blue-gray-500"
    }, _hoisted_2$7 = {
        key: 0,
        class: "relative"
    }, _hoisted_3$3 = {
        class: "absolute right-full rounded mr-4 w-10 h-10 bg-red-500"
    }, _hoisted_4 = [ "src" ], _hoisted_5 = {
        class: "header"
    }, _hoisted_6 = [ "href" ], _hoisted_7 = {
        key: 0
    }, _hoisted_8 = {
        key: 0,
        class: "content"
    }, _hoisted_9 = {
        key: 1,
        class: "relative"
    }, _hoisted_10$1 = {
        class: "absolute right-full rounded mr-4 w-10 h-10 bg-red-500"
    }, _hoisted_11 = [ "src" ], _hoisted_12 = {
        key: 0,
        class: "header"
    }, _hoisted_13 = [ "href" ], _hoisted_14 = {
        key: 1,
        class: "header"
    }, _hoisted_15 = {
        class: "content"
    }, _hoisted_16 = {
        key: 2,
        class: "relative"
    }, _hoisted_17 = {
        class: "absolute right-full rounded mr-4 w-max bg-red-500"
    }, _hoisted_18 = [ "href" ], _hoisted_19 = [ "src" ], _hoisted_20 = {
        class: "header"
    }, _hoisted_21 = [ "href" ], _hoisted_22 = {
        class: "text-sm"
    }, _hoisted_23 = vue.createTextVNode(" by "), _hoisted_24 = [ "href" ], _hoisted_25 = vue.createElementVNode("p", {
        class: "content"
    }, " Just click the link above. ", -1), _hoisted_26 = {
        key: 3
    }, _hoisted_27 = {
        class: "grid grid-cols-3"
    }, _hoisted_28 = {
        class: "border-t border-blue-gray-500 flex justify-center"
    }, _hoisted_29 = {
        class: "border border-b-0 border-blue-gray-500 flex justify-center"
    }, _hoisted_30 = {
        class: "border-t border-blue-gray-500 flex justify-center"
    };
    vue.popScopeId();
    var __unplugin_components_0$1 = _export_sfc(vue.defineComponent({
        props: {
            blotter: {
                type: null,
                required: !0
            }
        },
        setup(__props) {
            const props = __props;
            return (_ctx, _cache) => {
                const _component_i_mdi_share = __unplugin_components_0$2, _component_i_mdi_comment_text = __unplugin_components_1$2, _component_i_mdi_heart_outline = __unplugin_components_2;
                return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [ __props.blotter.type === vue.unref(BlotterType).GAME_PURCHASE ? (vue.openBlock(), 
                vue.createElementBlock("div", _hoisted_2$7, [ vue.createElementVNode("div", _hoisted_3$3, [ vue.createElementVNode("img", {
                    src: __props.blotter.assets.avatarURL,
                    alt: ""
                }, null, 8, _hoisted_4) ]), vue.createElementVNode("header", _hoisted_5, [ vue.createTextVNode(vue.toDisplayString(__props.blotter.authorName) + " just bought ", 1), (vue.openBlock(!0), 
                vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.blotter.games, ((game, i) => (vue.openBlock(), 
                vue.createElementBlock(vue.Fragment, {
                    key: i
                }, [ vue.createElementVNode("a", {
                    href: `https://store.steampowered.com/${game.type}/${game.id}/`
                }, vue.toDisplayString(game.title), 9, _hoisted_6), i !== __props.blotter.games.length - 1 ? (vue.openBlock(), 
                vue.createElementBlock("span", _hoisted_7, " | ")) : vue.createCommentVNode("", !0) ], 64)))), 128)) ]), __props.blotter.description ? (vue.openBlock(), 
                vue.createElementBlock("p", _hoisted_8, vue.toDisplayString(__props.blotter.description), 1)) : vue.createCommentVNode("", !0) ])) : __props.blotter.type === vue.unref(BlotterType).USER_STATUS ? (vue.openBlock(), 
                vue.createElementBlock("div", _hoisted_9, [ vue.createElementVNode("div", _hoisted_10$1, [ vue.createElementVNode("img", {
                    src: __props.blotter.assets.avatarURL,
                    alt: ""
                }, null, 8, _hoisted_11) ]), __props.blotter.game ? (vue.openBlock(), vue.createElementBlock("header", _hoisted_12, [ vue.createTextVNode(vue.toDisplayString(__props.blotter.authorName) + " posted a status about ", 1), vue.createElementVNode("a", {
                    href: `https://store.steampowered.com/${__props.blotter.game.type}/${__props.blotter.game.id}/`
                }, vue.toDisplayString(__props.blotter.game.title), 9, _hoisted_13) ])) : (vue.openBlock(), 
                vue.createElementBlock("header", _hoisted_14, vue.toDisplayString(__props.blotter.authorName) + " posted a status ", 1)), vue.createElementVNode("p", _hoisted_15, vue.toDisplayString(__props.blotter.content), 1) ])) : __props.blotter.type === vue.unref(BlotterType).GROUP_STATUS ? (vue.openBlock(), 
                vue.createElementBlock("div", _hoisted_16, [ vue.createElementVNode("div", _hoisted_17, [ vue.createElementVNode("a", {
                    href: __props.blotter.origin
                }, [ vue.createElementVNode("img", {
                    src: __props.blotter.assets.imageURL,
                    alt: ""
                }, null, 8, _hoisted_19) ], 8, _hoisted_18) ]), vue.createElementVNode("header", _hoisted_20, [ vue.createElementVNode("a", {
                    href: __props.blotter.link
                }, vue.toDisplayString(__props.blotter.title), 9, _hoisted_21), vue.createElementVNode("span", _hoisted_22, [ _hoisted_23, vue.createElementVNode("a", {
                    href: __props.blotter.origin
                }, vue.toDisplayString(__props.blotter.name), 9, _hoisted_24) ]) ]), _hoisted_25 ])) : (vue.openBlock(), 
                vue.createElementBlock("div", _hoisted_26, " Blotter is " + vue.toDisplayString(vue.unref(BlotterType)[props.blotter.type]), 1)), vue.createElementVNode("div", _hoisted_27, [ vue.createElementVNode("div", _hoisted_28, [ vue.createVNode(_component_i_mdi_share, {
                    class: "m-2"
                }) ]), vue.createElementVNode("div", _hoisted_29, [ vue.createVNode(_component_i_mdi_comment_text, {
                    class: "m-2"
                }) ]), vue.createElementVNode("div", _hoisted_30, [ vue.createVNode(_component_i_mdi_heart_outline, {
                    class: "m-2"
                }) ]) ]) ]);
            };
        }
    }), [ [ "__scopeId", "data-v-b5214c52" ] ]);
    const _hoisted_1$6 = vue.createElementVNode("span", {
        class: "flex-auto border-b border-current"
    }, null, -1), _hoisted_2$6 = vue.createElementVNode("span", {
        class: "flex-auto border-b border-current"
    }, null, -1), _sfc_main$4 = vue.defineComponent({
        props: {
            blotters: {
                type: Array,
                required: !0
            },
            date: {
                type: Number,
                required: !0
            }
        },
        setup(__props) {
            const props = __props, dateString = vue.computed((() => {
                const date = new Date(1e3 * props.date);
                return `${date.getFullYear()}.${date.getMonth() + 1}.${date.getDate()}`;
            }));
            return (_ctx, _cache) => {
                const _component_Blotter = __unplugin_components_0$1;
                return vue.openBlock(), vue.createElementBlock("div", null, [ _cache[0] || (vue.setBlockTracking(-1), 
                _cache[0] = vue.createElementVNode("div", {
                    class: "flex items-center"
                }, [ _hoisted_1$6, vue.createElementVNode("span", null, vue.toDisplayString(vue.unref(dateString)), 1), _hoisted_2$6 ]), 
                vue.setBlockTracking(1), _cache[0]), (vue.openBlock(!0), vue.createElementBlock(vue.Fragment, null, vue.renderList(props.blotters, ((blotter, i) => (vue.openBlock(), 
                vue.createBlock(_component_Blotter, {
                    key: i,
                    class: "m-4",
                    blotter: blotter
                }, null, 8, [ "blotter" ])))), 128)) ]);
            };
        }
    }), _hoisted_1$5 = {
        xmlns: "http://www.w3.org/2000/svg",
        "xmlns:xlink": "http://www.w3.org/1999/xlink",
        width: "1.2em",
        height: "1.2em",
        preserveAspectRatio: "xMidYMid meet",
        viewBox: "0 0 24 24"
    }, _hoisted_10 = [ vue.createStaticVNode('<circle cx="12" cy="2" r="0" fill="currentColor"><animate attributeName="r" values="0;2;0;0" dur="1s" repeatCount="indefinite" begin="0" keySplines="0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8" calcMode="spline"></animate></circle><circle transform="rotate(45 12 12)" cx="12" cy="2" r="0" fill="currentColor"><animate attributeName="r" values="0;2;0;0" dur="1s" repeatCount="indefinite" begin="0.125s" keySplines="0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8" calcMode="spline"></animate></circle><circle transform="rotate(90 12 12)" cx="12" cy="2" r="0" fill="currentColor"><animate attributeName="r" values="0;2;0;0" dur="1s" repeatCount="indefinite" begin="0.25s" keySplines="0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8" calcMode="spline"></animate></circle><circle transform="rotate(135 12 12)" cx="12" cy="2" r="0" fill="currentColor"><animate attributeName="r" values="0;2;0;0" dur="1s" repeatCount="indefinite" begin="0.375s" keySplines="0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8" calcMode="spline"></animate></circle><circle transform="rotate(180 12 12)" cx="12" cy="2" r="0" fill="currentColor"><animate attributeName="r" values="0;2;0;0" dur="1s" repeatCount="indefinite" begin="0.5s" keySplines="0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8" calcMode="spline"></animate></circle><circle transform="rotate(225 12 12)" cx="12" cy="2" r="0" fill="currentColor"><animate attributeName="r" values="0;2;0;0" dur="1s" repeatCount="indefinite" begin="0.625s" keySplines="0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8" calcMode="spline"></animate></circle><circle transform="rotate(270 12 12)" cx="12" cy="2" r="0" fill="currentColor"><animate attributeName="r" values="0;2;0;0" dur="1s" repeatCount="indefinite" begin="0.75s" keySplines="0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8" calcMode="spline"></animate></circle><circle transform="rotate(315 12 12)" cx="12" cy="2" r="0" fill="currentColor"><animate attributeName="r" values="0;2;0;0" dur="1s" repeatCount="indefinite" begin="0.875s" keySplines="0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8" calcMode="spline"></animate></circle>', 8) ];
    var __unplugin_components_1$1 = {
        name: "eos-icons-bubble-loading",
        render: function(_ctx, _cache) {
            return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$5, _hoisted_10);
        }
    };
    const STEAM_API_ENDPOINT_UserNews = "https://steamcommunity.com/my/ajaxgetusernews/";
    function parseHtml(blotter) {
        const list = (new DOMParser).parseFromString(blotter, "text/html").querySelectorAll(".blotter_day > .blotter_block");
        return Array.from(list).map((el => {
            if (el.querySelector(".blotter_daily_rollup")) return {
                type: BlotterType.DAILY_ROLLUP
            };
            if (el.querySelector(".blotter_gamepurchase")) return (el => {
                var _a;
                const result = {
                    type: BlotterType.GAME_PURCHASE
                }, author_block = el.querySelector(".blotter_author_block");
                el.querySelector(".blotter_gamepurchase_details") ? function() {
                    const games = [];
                    el.querySelectorAll(".blotter_gamepurchase_details a").forEach((node => {
                        const game = {};
                        game.title = node.textContent;
                        const match = node.href.match(/(sub|app)\/(\d+)/);
                        if (!match) throw new Error(`Not founding any games when parsing ${el} as game purchase`);
                        game.type = match[1], game.id = match[2], games.push(game);
                    })), result.games = games;
                }() : function() {
                    var _a2;
                    result.description = null == (_a2 = el.querySelector(".blotter_gamepurchase_text")) ? void 0 : _a2.textContent;
                    const game = {}, sublink = null == author_block ? void 0 : author_block.querySelector('a[href^="https://store.steampowered.com/sub/"]');
                    if (sublink) game.id = sublink.href.match(/sub\/(\d+)/)[1], game.type = "sub", result.games = [ __spreadValues({
                        title: sublink.textContent
                    }, game) ]; else {
                        const applink = null == author_block ? void 0 : author_block.querySelector('a[href^="https://store.steampowered.com/app/"]');
                        game.id = applink.href.match(/app\/(\d+)/)[1], game.type = "app", result.games = [ __spreadValues({
                            title: null == applink ? void 0 : applink.textContent
                        }, game) ];
                    }
                }();
                const avatar = el.querySelector(".blotter_author_block .playerAvatar > img");
                result.authorID = null == avatar ? void 0 : avatar.dataset.miniprofile, result.authorName = null == (_a = el.querySelector("div.blotter_author_block > div:nth-child(2)")) ? void 0 : _a.textContent, 
                result.assets = {
                    avatarURL: null == avatar ? void 0 : avatar.src
                };
                const commentLink = el.querySelector('.blotter_comment_thread a[href*="friendactivitydetail"]');
                return result.date = null == commentLink ? void 0 : commentLink.href.match(/friendactivitydetail\/\d\/(\d+)/)[1], 
                result;
            })(el);
            if (el.querySelector(".blotter_userstatus[id^=group]")) return (el => {
                var _a;
                const result = {
                    type: BlotterType.GROUP_STATUS
                }, author = el.querySelector(".blotter_group_announcement_header_text a");
                result.name = null == author ? void 0 : author.textContent, result.origin = null == author ? void 0 : author.href;
                const title = el.querySelector(".blotter_group_announcement_headline a");
                result.link = null == title ? void 0 : title.href, result.title = null == title ? void 0 : title.textContent;
                const imageURL = null == (_a = el.querySelector(".blotter_rollup_avatar img")) ? void 0 : _a.src;
                return result.assets = {
                    imageURL: imageURL
                }, result;
            })(el);
            if (el.querySelector(".blotter_recommendation")) return {
                type: BlotterType.RECOMMENDATION
            };
            if (el.querySelector(".blotter_userstatus[id^=userstatus]")) return (el => {
                var _a, _b, _c;
                const result = {
                    type: BlotterType.USER_STATUS
                }, avatar = el.querySelector(".blotter_author_block .playerAvatar > img");
                result.authorID = null == avatar ? void 0 : avatar.dataset.miniprofile, result.authorName = null == (_a = el.querySelector("div.blotter_author_block > div:nth-child(3)")) ? void 0 : _a.textContent, 
                result.assets = {
                    avatarURL: null == avatar ? void 0 : avatar.src
                };
                const appLink = el.querySelector("a.blotter_userstats_game");
                if (appLink) {
                    const game = {};
                    game.id = appLink.href.match(/app\/(\d+)/)[1];
                    const link = el.querySelector("div.blotter_author_block > div:nth-child(4) a");
                    game.title = null == link ? void 0 : link.textContent, game.type = "app", result.game = game, 
                    result.assets.capsuleURL = null == (_b = appLink.querySelector("img")) ? void 0 : _b.src;
                }
                result.content = null == (_c = el.querySelector(".blotter_userstatus_content")) ? void 0 : _c.textContent;
                const commentLink = el.querySelector('.blotter_comment_thread a[href*="status"]');
                return result.date = null == commentLink ? void 0 : commentLink.href.match(/status\/(\d+)/)[1], 
                result;
            })(el);
            throw new Error(`can not identify blotter type: ${el}`);
        }));
    }
    function daysEarlier(num) {
        return (new Date).setHours(0, 0, 0, 0) - 24 * num * 3600 * 1e3;
    }
    const _hoisted_1$4 = {
        class: "max-w-screen-sm h-full mx-auto"
    }, _hoisted_2$4 = {
        key: 1,
        class: "flex justify-center p-4"
    }, routes = [ {
        name: "index",
        path: "/",
        component: vue.defineComponent({
            setup(__props) {
                const unixtime = daysEarlier(0) / 1e3, blottersList = vue.shallowReactive([]), loading = vue.ref(!0);
                async function loadNewsSince(unixtime2) {
                    const blotters = vue.shallowReactive([]);
                    blottersList.push(blotters);
                    const json = await async function(unixtime) {
                        const res = await fetch(`${STEAM_API_ENDPOINT_UserNews}?start=${unixtime.toFixed(0)}`, {
                            method: "GET",
                            credentials: "include"
                        });
                        return await res.json();
                    }(unixtime2);
                    blotters.push(...parseHtml(json.blotter_html));
                }
                loadNewsSince(unixtime).then((() => {
                    loading.value = !1;
                }));
                const bottom = vue.ref(null);
                function loadMore() {
                    if (!loading.value) {
                        const checkline = bottom.value.getBoundingClientRect().top;
                        window.innerHeight > checkline && (loading.value = !0, loadNewsSince(daysEarlier(blottersList.length) / 1e3).then((() => {
                            loading.value = !1;
                        })));
                    }
                }
                return vue.onMounted((() => {
                    document.addEventListener("scroll", loadMore, !0);
                })), vue.onUnmounted((() => {
                    document.removeEventListener("scroll", loadMore, !0);
                })), (_ctx, _cache) => {
                    const _component_BlotterList = _sfc_main$4, _component_i_eos_icons_bubble_loading = __unplugin_components_1$1;
                    return vue.openBlock(), vue.createElementBlock("main", _hoisted_1$4, [ (vue.openBlock(!0), 
                    vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(blottersList), ((blotters, index) => (vue.openBlock(), 
                    vue.createElementBlock("section", {
                        key: index
                    }, [ blotters.length > 0 ? (vue.openBlock(), vue.createBlock(_component_BlotterList, {
                        key: 0,
                        blotters: blotters,
                        date: unixtime - 86400 * index
                    }, null, 8, [ "blotters", "date" ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$4, [ vue.createVNode(_component_i_eos_icons_bubble_loading) ])) ])))), 128)), vue.createElementVNode("div", {
                        ref: (_value, _refs) => {
                            _refs.bottom = _value, bottom.value = _value;
                        },
                        class: "flex justify-center"
                    }, " ⭐ ", 512) ]);
                };
            }
        }),
        props: !0
    }, {
        name: "hi-name",
        path: "/hi/:name",
        component: () => Promise.resolve().then((function() {
            return _name_;
        })),
        props: !0
    }, {
        name: "all",
        path: "/:all(.*)*",
        component: () => Promise.resolve().then((function() {
            return ____all_$1;
        })),
        props: !0
    } ], _hoisted_1$3 = {
        xmlns: "http://www.w3.org/2000/svg",
        "xmlns:xlink": "http://www.w3.org/1999/xlink",
        width: "1.2em",
        height: "1.2em",
        preserveAspectRatio: "xMidYMid meet",
        viewBox: "0 0 24 24"
    }, _hoisted_3$2 = [ vue.createElementVNode("path", {
        d: "M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m0 16H5V5h14v14M17 8.4L13.4 12l3.6 3.6l-1.4 1.4l-3.6-3.6L8.4 17L7 15.6l3.6-3.6L7 8.4L8.4 7l3.6 3.6L15.6 7L17 8.4z",
        fill: "currentColor"
    }, null, -1) ];
    var __unplugin_components_0 = {
        name: "mdi-close-box-outline",
        render: function(_ctx, _cache) {
            return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$3, _hoisted_3$2);
        }
    };
    const _hoisted_1$2 = {
        xmlns: "http://www.w3.org/2000/svg",
        "xmlns:xlink": "http://www.w3.org/1999/xlink",
        width: "1.2em",
        height: "1.2em",
        preserveAspectRatio: "xMidYMid meet",
        viewBox: "0 0 24 24"
    }, _hoisted_3$1 = [ vue.createElementVNode("path", {
        d: "M20 4c1.11 0 2 .89 2 2v12c0 1.11-.89 2-2 2H4c-1.11 0-2-.89-2-2V6c0-1.11.89-2 2-2h16M8.5 15V9H7.25v3.5L4.75 9H3.5v6h1.25v-3.5L7.3 15h1.2m5-4.74V9h-4v6h4v-1.25H11v-1.11h2.5v-1.26H11v-1.12h2.5m7 3.74V9h-1.25v4.5h-1.12V10h-1.25v3.5h-1.13V9H14.5v5a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1z",
        fill: "currentColor"
    }, null, -1) ];
    var __unplugin_components_1 = {
        name: "mdi-new-box",
        render: function(_ctx, _cache) {
            return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$2, _hoisted_3$1);
        }
    };
    const _hoisted_1$1 = {
        class: "flex w-full"
    }, _hoisted_2$1 = {
        class: "min-h-0 text-blue-gray-700 dark:text-blue-gray-400"
    }, _hoisted_3 = vue.createElementVNode("span", {
        style: {
            flex: "auto"
        }
    }, " Change to Alt Feeds ", -1), _sfc_main$2 = vue.defineComponent({
        setup(__props) {
            const insertPos = vue.ref(document.body), [showFeeds, toggle] = function(initialValue = !1) {
                if (vue.isRef(initialValue)) return value => {
                    initialValue.value = "boolean" == typeof value ? value : !initialValue.value;
                };
                {
                    const boolean = vue.ref(initialValue), toggle = value => {
                        boolean.value = "boolean" == typeof value ? value : !boolean.value;
                    };
                    return [ boolean, toggle ];
                }
            }(!1);
            let handler;
            return vue.onMounted((() => {
                if (handler = vue.watch(showFeeds, ((newVal, oldVal) => {
                    document.body.style.overflow = newVal ? "hidden" : "auto";
                })), insertPos.value === document.body) {
                    const anchor = document.querySelector("#friendactivity_right_column > div > div:nth-child(1)");
                    insertPos.value = document.createElement("div"), anchor && anchor.insertAdjacentElement("afterend", insertPos.value);
                }
            })), vue.onUnmounted((() => {
                handler && (handler(), handler = null);
            })), (_ctx, _cache) => {
                const _component_i_mdi_close_box_outline = __unplugin_components_0, _component_router_view = vue.resolveComponent("router-view"), _component_i_mdi_new_box = __unplugin_components_1;
                return vue.openBlock(), vue.createElementBlock("div", {
                    class: vue.normalizeClass([ "fixed inset-0 flex-col overflow-y-auto bg-blue-gray-300 dark:bg-blue-gray-700 transition-transform transform z-9000 duration-200", {
                        "-translate-y-full": !vue.unref(showFeeds)
                    } ])
                }, [ vue.createElementVNode("div", _hoisted_1$1, [ vue.createElementVNode("button", {
                    class: "w-10 h-10 rounded flex ml-auto mt-1 mr-1 items-center filter focus:outline-none hover:brightness-150 active:brightness-75",
                    onClick: _cache[0] || (_cache[0] = $event => vue.unref(toggle)(!1))
                }, [ vue.createVNode(_component_i_mdi_close_box_outline, {
                    class: "flex-1 text-3xl"
                }) ]) ]), vue.createElementVNode("div", _hoisted_2$1, [ vue.createVNode(_component_router_view) ]), vue.withDirectives((vue.openBlock(), 
                vue.createBlock(vue.Teleport, {
                    to: insertPos.value
                }, [ vue.createElementVNode("button", {
                    class: "btn_grey_grey btn_small_thin ico_hover",
                    style: vue.normalizeStyle({
                        display: "flex",
                        width: "100%",
                        "align-items": "center",
                        padding: "0.5rem",
                        margin: "0.5rem auto",
                        "font-size": "1.875rem",
                        "line-height": "2.25rem"
                    }),
                    onClick: _cache[1] || (_cache[1] = $event => vue.unref(toggle)(!0))
                }, [ vue.createVNode(_component_i_mdi_new_box, {
                    style: {
                        flex: "none"
                    }
                }), _hoisted_3 ], 4) ], 8, [ "to" ])), [ [ vue.vShow, !1 ] ]) ], 2);
            };
        }
    });
    const app = vue.createApp(_sfc_main$2), router = vueRouter.createRouter({
        history: vueRouter.createWebHashHistory(),
        routes: routes
    });
    app.use(router);
    const appRoot = document.createElement("div");
    appRoot.dataset.desp = "root of userscript steam-activity-alt-userscript", document.body.appendChild(appRoot), 
    app.mount(appRoot);
    const _hoisted_1 = {
        class: "text-4xl"
    }, _hoisted_2 = vue.createElementVNode("p", {
        class: "text-sm opacity-50"
    }, [ vue.createElementVNode("em", null, "Dynamic route!") ], -1), _sfc_main$1 = vue.defineComponent({
        props: {
            name: {
                type: String,
                required: !0
            }
        },
        setup(__props) {
            const props = __props, router2 = vueRouter.useRouter();
            return (_ctx, _cache) => {
                const _component_carbon_pedestrian = vue.resolveComponent("carbon-pedestrian");
                return vue.openBlock(), vue.createElementBlock("div", null, [ vue.createElementVNode("p", _hoisted_1, [ vue.createVNode(_component_carbon_pedestrian, {
                    class: "inline-block"
                }) ]), vue.createElementVNode("p", null, " Hi, " + vue.toDisplayString(props.name), 1), _hoisted_2, vue.createElementVNode("div", null, [ vue.createElementVNode("button", {
                    class: "btn m-3 text-sm mt-8",
                    onClick: _cache[0] || (_cache[0] = $event => vue.unref(router2).back())
                }, " Back ") ]) ]);
            };
        }
    });
    var _name_ = Object.freeze({
        __proto__: null,
        [Symbol.toStringTag]: "Module",
        default: _sfc_main$1
    });
    var ____all_ = _export_sfc({}, [ [ "render", function(_ctx, _cache) {
        return vue.openBlock(), vue.createElementBlock("div", null, " Not Found ");
    } ] ]), ____all_$1 = Object.freeze({
        __proto__: null,
        [Symbol.toStringTag]: "Module",
        default: ____all_
    });
}(Vue, VueRouter);