Greasy Fork is available in English.

Steam Activity Alt

make steam activites easier to look through

// ==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/vue@3.2.6/dist/vue.global.min.js
// @require      https://unpkg.com/vue-router@4.0.11/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);