diff --git a/assets/css/_common/components/index.scss b/assets/css/_common/components/index.scss index 77f5cd3..ca8bf6a 100644 --- a/assets/css/_common/components/index.scss +++ b/assets/css/_common/components/index.scss @@ -12,7 +12,7 @@ z-index: $zindex-5; } -@import 'back-to-top'; +@import 'tool-buttons'; @import 'reading-progress'; @import 'post'; diff --git a/assets/css/_common/components/third-party/mermaid.scss b/assets/css/_common/components/third-party/mermaid.scss index 1332676..7512808 100644 --- a/assets/css/_common/components/third-party/mermaid.scss +++ b/assets/css/_common/components/third-party/mermaid.scss @@ -1,3 +1,3 @@ -.mermaid { +.post-block .post-body .mermaid { background: var(--highlight-foreground); } \ No newline at end of file diff --git a/assets/css/_common/components/back-to-top.scss b/assets/css/_common/components/tool-buttons.scss similarity index 50% rename from assets/css/_common/components/back-to-top.scss rename to assets/css/_common/components/tool-buttons.scss index e777bcf..0fc3c1f 100644 --- a/assets/css/_common/components/back-to-top.scss +++ b/assets/css/_common/components/tool-buttons.scss @@ -1,6 +1,49 @@ +.tool-buttons { + + @include sidebar-toggle(); + background: var(--body-bg-color); + bottom: 55px; + z-index: 100; + filter: alpha(opacity=0); + font-size: 12px; + + .button { + display: block; + margin-bottom: 5px; + width: 36px; + height: 36px; + border-radius: 5px; + background-color: $tool-btn-bg; + color: $tool-btn-color; + text-align: center; + font-size: $font-size-larger; + line-height: 35px; + padding: 0; + outline: 0; + border: none; + text-transform: none; + cursor: pointer; + opacity: $tool-btn-opacity; + touch-action: manipulation; + + &:hover { + color: $tool-btn-hover-fore-color; + opacity: $tool-btn-opacity-hover; + } + } + + .goto-comments { + display: none; + } + + .goto-comments-on { + display: block; + } +} + @if $back2top_enable { .back-to-top { - font-size: $b2t-font-size; + font-size: $font-size-smaller; @if not $back2top_scrollpercent { span { diff --git a/assets/css/_common/outline/footer/index.scss b/assets/css/_common/outline/footer/index.scss index b6cdcbe..03cf5c6 100644 --- a/assets/css/_common/outline/footer/index.scss +++ b/assets/css/_common/outline/footer/index.scss @@ -29,6 +29,16 @@ font-size: $font-size-smallest; } + .google-translate { + display: flex; + justify-content: center; + + i { + font-size: $font-size-larger; + margin: auto 0; + } + } + @if $footer_vendors_enable { .vendors-list { a { diff --git a/assets/css/_variables/base.scss b/assets/css/_variables/base.scss index 492bc72..f6d9045 100644 --- a/assets/css/_variables/base.scss +++ b/assets/css/_variables/base.scss @@ -283,6 +283,13 @@ $site-state-item-name-color : inherit; // Components // -------------------------------------------------- +// Tool buttons +$tool-btn-bg : $black-deep; +$tool-btn-color : white; +$tool-btn-hover-fore-color : $orange; +$tool-btn-opacity : .8; +$tool-btn-opacity-hover : 1; + // Back to top $b2t-opacity : .8; $b2t-opacity-hover : 1; diff --git a/assets/css/gt.scss b/assets/css/gt.scss new file mode 100644 index 0000000..65d3251 --- /dev/null +++ b/assets/css/gt.scss @@ -0,0 +1,892 @@ +:root { + --gt-blue: #2640b2; + --gt-border: #d1d5db; +} + +@keyframes "goog-te-spinner-rotator" { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(270deg); + } +} +@keyframes "goog-te-spinner-dash" { + 0% { + stroke-dashoffset: 187; + } + 50% { + stroke-dashoffset: 46.75; + transform: rotate(135deg); + } + 100% { + stroke-dashoffset: 187; + transform: rotate(450deg); + } +} +.goog-te-banner-frame { + left: 0px; + top: 0px; + height: 39px; + width: 100%; + z-index: 10000001; + position: fixed; + border: none; + border-bottom: 1px solid #6b90da; + margin: 0; + box-shadow: 0 0 8px 1px #999999; + _position: absolute; +} +.goog-te-menu-frame { + z-index: 10000002; + position: fixed; + box-shadow: 0.5rem 0.875rem 2.375rem rgba(39, 44, 49, 0.06), 0.0625rem 0.1875rem 0.5rem rgba(39, 44, 49, 0.03); + _position: absolute; +} +.goog-te-ftab-frame { + z-index: 10000000; + border: none; + margin: 0; +} +.goog-te-gadget { + font-family: arial; + font-size: 11px; + color: #666; + white-space: nowrap; + display: inline-flex; + img { + vertical-align: middle; + border: none; + display: inline-block; + } + .goog-te-combo { + margin: 4px 0; + } + + div:first-child { + margin: 0 10px; + } +} +.goog-te-gadget-simple { + background-color: #fff; + border-left: 1px solid #d5d5d5; + border-top: 1px solid #9b9b9b; + border-bottom: 1px solid #e8e8e8; + border-right: 1px solid #d5d5d5; + font-size: 10pt; + display: inline-block; + padding-top: 1px; + padding-bottom: 2px; + cursor: pointer; + zoom: 1; + *display: inline; + .goog-te-menu-value { + color: #000; + span { + text-decoration: none; + } + } +} +.goog-te-gadget-icon { + margin-left: 2px; + margin-right: 2px; + width: 19px; + height: 19px; + border: none; + vertical-align: middle; +} +.goog-te-combo { + margin-left: 4px; + margin-right: 4px; + vertical-align: baseline; + *vertical-align: middle; + font-family: arial; + font-size: 10pt; +} +.goog-logo-link { + font-size: 12px; + font-weight: bold; + color: #444; + text-decoration: none; + margin: 0 5px; + border-bottom: 0; + &:link { + font-size: 12px; + font-weight: bold; + color: #444; + text-decoration: none; + } + &:visited { + font-size: 12px; + font-weight: bold; + color: #444; + text-decoration: none; + } + &:hover { + font-size: 12px; + font-weight: bold; + color: #444; + text-decoration: none; + } + &:active { + font-size: 12px; + font-weight: bold; + color: #444; + text-decoration: none; + } +} +.goog-te-banner { + .goog-logo-link { + display: block; + margin: 0px 10px; + padding-top: 2px; + padding-left: 4px; + } + * { + font-family: arial; + font-size: 10pt; + } + margin: 0; + background-color: #fff; + overflow: hidden; + img { + border: none; + } + table { + tbody { + tr { + td { + &:nth-child(2) { + display: none; + } + } + } + } + } +} +.goog-close-link { + display: block; + margin: 0px 10px; +} +.goog-te-ftab { + * { + font-family: arial; + font-size: 10pt; + } + margin: 0px; + background-color: #fff; + white-space: nowrap; +} +.goog-te-menu { + * { + font-family: arial; + font-size: 10pt; + } + background-color: #ffffff; + text-decoration: none; + border: 2px solid #c3d9ff; + overflow-y: scroll; + overflow-x: hidden; + position: absolute; + left: 0; + top: 0; +} +.goog-te-menu2 { + * { + font-family: arial; + font-size: 10pt; + } + background-color: #ffffff; + text-decoration: none; + overflow: hidden; + padding: 4px; + border: 1px solid var(--gt-border); + border-radius: 4px; +} +.goog-te-balloon { + * { + font-family: arial; + font-size: 10pt; + } + background-color: #ffffff; + overflow: hidden; + padding: 8px; + border: none; + border-radius: 10px; + img { + border: none; + } +} +.goog-te-banner-content { + color: #000; + img { + vertical-align: middle; + } +} +.goog-te-banner-info { + color: #666; + vertical-align: top; + margin-top: 0px; + font-size: 7pt; +} +.goog-te-banner-margin { + width: 8px; +} +.goog-te-button { + div { + border: 1px solid var(--gt-border); + height: 20px; + } + button { + background: transparent; + border: none; + cursor: pointer; + height: 20px; + overflow: hidden; + margin: 0; + vertical-align: top; + white-space: nowrap; + &:active { + background: none repeat scroll 0 0 #cccccc; + } + } +} +.goog-te-ftab-link { + text-decoration: none; + font-weight: bold; + font-size: 10pt; + border: 1px outset #888; + padding: 6px 10px; + white-space: nowrap; + position: absolute; + left: 0px; + top: 0px; + img { + margin-left: 2px; + margin-right: 2px; + width: 19px; + height: 19px; + border: none; + vertical-align: middle; + } + span { + text-decoration: underline; + margin-left: 2px; + margin-right: 2px; + vertical-align: middle; + } +} +.goog-float-top { + .goog-te-ftab-link { + padding: 2px 2px; + border-top-width: 0px; + } +} +.goog-float-bottom { + .goog-te-ftab-link { + padding: 2px 2px; + border-bottom-width: 0px; + } +} +.goog-te-menu-value { + text-decoration: none; + color: var(--gt-blue); + white-space: nowrap; + margin-left: 4px; + margin-right: 4px; + span { + text-decoration: underline; + &::after { + content: "▼"; + } + } + img { + margin-left: 2px; + margin-right: 2px; + display: none; + } +} +.goog-te-menu-item { + padding: 3px; + text-decoration: none; + color: var(--gt-blue); + background: #ffffff; + &:link { + color: var(--gt-blue); + background: #ffffff; + } + &:visited { + color: #551a8b; + } + &:hover { + background: #c3d9ff; + } + &:active { + color: var(--gt-blue); + } +} +.goog-te-menu2-colpad { + width: 16px; +} +.goog-te-menu2-separator { + margin: 6px 0; + height: 1px; + background-color: var(--gt-border); + overflow: hidden; +} +.goog-te-menu2-item { + div { + padding: 4px; + color: var(--gt-blue); + background: #ffffff; + } + .indicator { + display: none; + } + text-decoration: none; + &:link { + div { + color: var(--gt-blue); + background: #ffffff; + } + } + &:visited { + div { + color: var(--gt-blue); + background: #ffffff; + } + } + &:active { + div { + color: var(--gt-blue); + background: #ffffff; + } + } + &:hover { + div { + color: #ffffff; + background: #3366cc; + border-radius: 2px; + } + } +} +.goog-te-menu2-item-selected { + div { + padding: 4px; + color: #000; + font-weight: bold; + } + .indicator { + display: auto; + } + .text { + padding-left: 4px; + padding-right: 4px; + } + text-decoration: none; + &:link { + div { + color: #000; + font-weight: bold; + } + } + &:visited { + div { + color: #000; + font-weight: bold; + } + } + &:hover { + div { + color: #000; + font-weight: bold; + } + } + &:active { + div { + color: #000; + font-weight: bold; + } + } +} +.goog-te-balloon-frame { + background-color: #ffffff; + border: 1px solid #6b90da; + box-shadow: 0.5rem 0.875rem 2.375rem rgba(39, 44, 49, 0.06), 0.0625rem 0.1875rem 0.5rem rgba(39, 44, 49, 0.03); + border-radius: 8px; +} +.goog-te-balloon-text { + margin-top: 6px; +} +.goog-te-balloon-zippy { + margin-top: 6px; + white-space: nowrap; + * { + vertical-align: middle; + } + .minus { + background-image: url(//www.google.com/images/zippy_minus_sm.gif); + } + .plus { + background-image: url(//www.google.com/images/zippy_plus_sm.gif); + } + span { + color: #00c; + text-decoration: underline; + cursor: pointer; + margin: 0 4px; + } +} +.goog-te-balloon-form { + margin: 6px 0 0 0; + form { + margin: 0; + textarea { + margin-bottom: 4px; + width: 100%; + } + } +} +.goog-te-balloon-footer { + margin: 6px 0 4px 0; +} +.goog-te-spinner-pos { + z-index: 1000; + position: fixed; + transition-delay: 0.6s; + left: -1000px; + top: -1000px; +} +.goog-te-spinner-animation { + background: #ccc; + display: flex; + align-items: center; + justify-content: center; + width: 104px; + height: 104px; + border-radius: 50px; + background: #fff url(//www.gstatic.com/images/branding/product/2x/translate_24dp.png) 50% 50% no-repeat; + transition: all 0.6s ease-in-out; + transform: scale(0.4); + opacity: 0; +} +.goog-te-spinner-animation-show { + transform: scale(0.5); + opacity: 1; +} +.goog-te-spinner { + margin: 2px 0 0 2px; + animation: goog-te-spinner-rotator 1.4s linear infinite; +} +.goog-te-spinner-path { + stroke-dasharray: 187; + stroke-dashoffset: 0; + stroke: #4285f4; + transform-origin: center; + animation: goog-te-spinner-dash 1.4s ease-in-out infinite; +} +#goog-gt-tt { + color: #222; + background-color: #ffffff; + border: 1px solid #eee; + box-shadow: 0 4px 16px rgba(0,0,0,.2); + display: none; + font-family: arial; + font-size: 10pt; + width: 420px; + padding: 12px; + position: absolute; + z-index: 10000; + .original-text { + clear: both; + font-size: 10pt; + position: relative; + text-align: justify; + width: 100%; + } + .title { + color: #999; + font-family: arial,sans-serif; + margin: 4px 0; + text-align: left; + } + .close-button { + display: none; + } + .logo { + float: left; + margin: 0px; + } + .activity-links { + display: inline-block; + } + .started-activity-container { + display: none; + width: 100%; + } + .activity-root { + margin-top: 20px; + } + .left { + float: left; + } + .right { + float: right; + } + .bottom { + min-height: 15px; + position: relative; + height: 1%; + } + .status-message { + background: linear-gradient(top,#29910d 0%,#20af0e 100%); + background: #29910d; + border-radius: 4px; + box-shadow: inset 0px 2px 2px #1e6609; + color: white; + font-size: 9pt; + font-weight: bolder; + margin-top: 12px; + padding: 6px; + text-shadow: 1px 1px 1px #1e6609; + } + .activity-link { + color: #1155cc; + cursor: pointer; + font-family: arial; + font-size: 11px; + margin-right: 15px; + text-decoration: none; + } + textarea { + font-family: arial; + resize: vertical; + width: 100%; + margin-bottom: 10px; + border-radius: 1px; + border: 1px solid #d9d9d9; + border-top: 1px solid silver; + font-size: 13px; + height: auto; + overflow-y: auto; + padding: 1px; + &:focus { + box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); + border: 1px solid #4d90fe; + outline: none; + } + } + .activity-cancel { + margin-right: 10px; + } + .translate-form { + min-height: 25px; + vertical-align: middle; + padding-top: 8px; + .activity-form { + margin-bottom: 5px; + margin-bottom: 0px; + input { + display: inline-block; + min-width: 54px; + *min-width: 70px; + border: 1px solid #dcdcdc; + border: 1px solid rgba(0,0,0,0.1); + text-align: center; + color: #444; + font-size: 11px; + font-weight: bold; + height: 27px; + outline: 0; + padding: 0 8px; + vertical-align: middle; + line-height: 27px; + margin: 0 16px 0 0; + box-shadow: 0 1px 2px rgba(0,0,0,.1); + border-radius: 2px; + transition: all 0.218s; + background-color: #f5f5f5; + background-image: linear-gradient(top,#f5f5f5,#f1f1f1); + -webkit-user-select: none; + -moz-user-select: none; + cursor: default; + &:hover { + border: 1px solid #c6c6c6; + color: #222; + transition: all 0.0s; + background-color: #f8f8f8; + background-image: linear-gradient(top,#f8f8f8,#f1f1f1); + border-color: #3079ed; + } + &:active { + border: 1px solid #c6c6c6; + color: #333; + background-color: #f6f6f6; + background-image: linear-gradient(top,#f6f6f6,#f1f1f1); + border-color: #3079ed; + } + &:focus { + #goog-gt-tt { + .translate-form { + .activity-form { + input.focus { + #goog-gt-tt { + .translate-form { + .activity-form { + input { + &:active { + box-shadow: inset 0 0 0 1px rgba(255,255,255,0.5); + } + } + } + } + } + } + } + } + } + &:active { + box-shadow: inset 0 0 0 1px rgba(255,255,255,0.5); + } + outline: none; + border: 1px solid #4d90fe; + z-index: 4 !important; + border-color: #3079ed; + } + &.focus { + &:active { + box-shadow: inset 0 0 0 1px rgba(255,255,255,0.5); + } + } + } + input.focus { + outline: none; + border: 1px solid #4d90fe; + z-index: 4 !important; + border-color: #3079ed; + } + input.selected { + background-color: #eeeeee; + background-image: linear-gradient(top,#eeeeee,#e0e0e0); + box-shadow: inset 0px 1px 2px rgba(0,0,0,0.1); + border: 1px solid #ccc; + color: #333; + } + input.activity-submit { + color: white; + border-color: #3079ed; + background-color: #4d90fe; + background-image: linear-gradient(top,#4d90fe,#4787ed); + &:hover { + #goog-gt-tt { + .translate-form { + .activity-form { + input.activity-submit { + &:focus { + border-color: #3079ed; + background-color: #357ae8; + background-image: linear-gradient(top,#4d90fe,#357ae8); + } + } + } + } + } + box-shadow: inset 0 0 0 1px #fff,0px 1px 1px rgba(0,0,0,0.1); + border-color: #3079ed; + } + &:focus { + border-color: #3079ed; + } + &:active { + border-color: #3079ed; + } + } + input.activity-submit.focus { + #goog-gt-tt { + .translate-form { + .activity-form { + input.activity-submit { + &:active { + border-color: #3079ed; + background-color: #357ae8; + background-image: linear-gradient(top,#4d90fe,#357ae8); + } + } + } + } + } + border-color: #3079ed; + } + } + } + .gray { + color: #999; + font-family: arial,sans-serif; + } + .alt-helper-text { + color: #999; + font-size: 11px; + font-family: arial,sans-serif; + margin: 15px 0px 5px 0px; + } + .alt-error-text { + color: #800; + display: none; + font-size: 9pt; + } + .alt-menu.goog-menu { + background: #ffffff; + border: 1px solid #dddddd; + box-shadow: 0px 2px 4px #99a; + min-width: 0; + outline: none; + padding: 0; + position: absolute; + z-index: 2000; + } + .alt-menu { + .goog-menuitem { + cursor: pointer; + padding: 2px 5px 5px; + margin-right: 0px; + border-style: none; + h1 { + font-size: 100%; + font-weight: bold; + margin: 4px 0px; + } + strong { + color: #345aad; + } + } + div.goog-menuitem { + &:hover { + background: #ddd; + } + } + } + .goog-submenu-arrow { + text-align: right; + position: absolute; + right: 0; + left: auto; + } + .goog-menuitem-rtl { + .goog-submenu-arrow { + text-align: left; + position: absolute; + left: 0; + right: auto; + } + } + .gt-hl-text { + background-color: #f1ea00; + border-radius: 4px; + box-shadow: rgba(0,0,0,.5) 3px 3px 4px; + box-sizing: border-box; + color: #f1ea00; + cursor: pointer; + margin: -2px -2px -2px -3px; + padding: 2px 2px 2px 3px; + position: relative; + } + .trans-target-highlight { + background-color: #f1ea00; + border-radius: 4px; + box-shadow: rgba(0,0,0,.5) 3px 3px 4px; + box-sizing: border-box; + color: #f1ea00; + cursor: pointer; + margin: -2px -2px -2px -3px; + padding: 2px 2px 2px 3px; + position: relative; + color: #222; + } + .gt-hl-layer { + color: white; + position: absolute !important; + } + .trans-target { + background-color: #c9d7f1; + border-radius: 4px 4px 0px 0px; + box-shadow: rgba(0,0,0,.5) 3px 3px 4px; + box-sizing: border-box; + cursor: pointer; + margin: -2px -2px -2px -3px; + padding: 2px 2px 3px 3px; + position: relative; + .trans-target-highlight { + background-color: #c9d7f1; + border-radius: 4px 4px 0px 0px; + box-shadow: rgba(0,0,0,.5) 3px 3px 4px; + box-sizing: border-box; + cursor: pointer; + margin: -2px -2px -2px -3px; + padding: 2px 2px 3px 3px; + position: relative; + } + } + .trans-edit { + background-color: transparent; + border: 1px solid #4d90fe; + border-radius: 0em; + margin: -2px; + padding: 1px; + } + .gt-trans-highlight-l { + border-left: 2px solid red; + margin-left: -2px; + } + .gt-trans-highlight-r { + border-right: 2px solid red; + margin-right: -2px; + } + #alt-input { + padding: 2px; + } + #alt-input-text { + font-size: 11px; + padding: 2px 2px 3px; + margin: 0; + background-color: #fff; + color: #333; + border: 1px solid #d9d9d9; + border-top: 1px solid #c0c0c0; + display: inline-block; + vertical-align: top; + height: 21px; + box-sizing: border-box; + &:hover { + border: 1px solid #b9b9b9; + border-top: 1px solid #a0a0a0; + box-shadow: inset 0px 1px 2px rgba(0,0,0,0.1); + } + &:focus { + box-shadow: inset 0px 1px 2px rgba(0,0,0,0.3); + outline: none; + border: 1px solid #4d90fe; + } + } + #alt-input-submit { + font-size: 11px; + padding: 2px 6px 3px; + margin: 0 0 0 2px; + height: 21px; + } +} +div#goog-gt-tt { + padding: 10px 14px; +} +.gt-hl-layer { + clear: both; + font-size: 10pt; + position: relative; + text-align: justify; + width: 100%; +} +.goog-text-highlight { + background-color: #c9d7f1; + box-shadow: 2px 2px 4px #9999aa; + box-sizing: border-box; + position: relative; +} \ No newline at end of file diff --git a/assets/js/next-boot.js b/assets/js/next-boot.js index 85cf1e0..fbfd792 100644 --- a/assets/js/next-boot.js +++ b/assets/js/next-boot.js @@ -45,6 +45,7 @@ NexT.boot.refresh = function() { if(NexT.CONFIG.page.comments) { NexT.utils.initCommontesDispaly(); NexT.utils.registerCommonSwitch(); + NexT.utils.domAddClass('#goto-comments', 'goto-comments-on'); } else { NexT.utils.hideCommontes(); } diff --git a/assets/js/third-party/others/google-translate.js b/assets/js/third-party/others/google-translate.js new file mode 100644 index 0000000..7dc5149 --- /dev/null +++ b/assets/js/third-party/others/google-translate.js @@ -0,0 +1,173 @@ +(function () { + var gtConstEvalStartTime = new Date(); + var h = this || self, + l = /^[\w+/_-]+[=]{0,2}$/, + m = null; + function n(a) { + return (a = a.querySelector && a.querySelector("script[nonce]")) && (a = a.nonce || a.getAttribute("nonce")) && + l.test(a) ? a : "" + } + function p(a, b) { + function c() {} + c.prototype = b.prototype; + a.i = b.prototype; + a.prototype = new c; + a.prototype.constructor = a; + a.h = function (g, f, k) { + for (var e = Array(arguments.length - 2), d = 2; d < arguments.length; d++) e[d - 2] = arguments[d]; + return b.prototype[f].apply(g, e) + } + } + function q(a) { + return a + }; + function r(a) { + if (Error.captureStackTrace) Error.captureStackTrace(this, r); + else { + var b = Error().stack; + b && (this.stack = b) + } + a && (this.message = String(a)) + } + p(r, Error); + r.prototype.name = "CustomError"; + function u(a, b) { + a = a.split("%s"); + for (var c = "", g = a.length - 1, f = 0; f < g; f++) c += a[f] + (f < b.length ? b[f] : "%s"); + r.call(this, c + a[g]) + } + p(u, r); + u.prototype.name = "AssertionError"; + function v(a, b) { + throw new u("Failure" + (a ? ": " + a : ""), Array.prototype.slice.call(arguments, 1)); + }; + var w; + function x(a, b) { + this.g = b === y ? a : "" + } + x.prototype.toString = function () { + return this.g + "" + }; + var y = {}; + function z(a) { + var b = document.getElementsByTagName("head")[0]; + b || (b = document.body.parentNode.appendChild(document.createElement("head"))); + b.appendChild(a) + } + function _loadJs(a) { + var b = document; + var c = "SCRIPT"; + "application/xhtml+xml" === b.contentType && (c = c.toLowerCase()); + c = b.createElement(c); + c.type = "text/javascript"; + c.charset = "UTF-8"; + if (void 0 === w) { + b = null; + var g = h.trustedTypes; + if (g && g.createPolicy) { + try { + b = g.createPolicy("goog#html", { + createHTML: q, + createScript: q, + createScriptURL: q + }) + } catch (t) { + h.console && h.console.error(t.message) + } + w = b + } else w = b + } + a = (b = w) ? b.createScriptURL(a) : a; + a = new x(a, y); + a: { + try { + var f = c && c.ownerDocument, + k = f && (f.defaultView || f.parentWindow); + k = k || h; + if (k.Element && k.Location) { + var e = k; + break a + } + } catch (t) {} + e = null + } + if (e && "undefined" != typeof e.HTMLScriptElement && (!c || !(c instanceof e.HTMLScriptElement) && (c instanceof e + .Location || c instanceof e.Element))) { + e = typeof c; + if ("object" == e && null != c || "function" == e) try { + var d = c.constructor.displayName || c.constructor.name || Object.prototype.toString.call(c) + } catch (t) { + d = "" + } else d = void 0 === c ? "undefined" : null === c ? "null" : typeof c; + v("Argument is not a %s (or a non-Element, non-Location mock); got: %s", + "HTMLScriptElement", d) + } + a instanceof x && a.constructor === x ? d = a.g : (d = typeof a, v( + "expected object of type TrustedResourceUrl, got '" + a + "' of type " + ("object" != d ? d : a ? + Array.isArray(a) ? "array" : d : "null")), d = "type_error:TrustedResourceUrl"); + c.src = d; + (d = c.ownerDocument && c.ownerDocument.defaultView) && d != h ? d = n(d.document) : (null === m && (m = n( + h.document)), d = m); + d && c.setAttribute("nonce", d); + z(c) + } + function _loadCss(a) { + var b = document.createElement("link"); + b.type = "text/css"; + b.rel = "stylesheet"; + b.charset = "UTF-8"; + b.href = a; + z(b) + } + function _isNS(a) { + a = a.split("."); + for (var b = window, c = 0; c < a.length; ++c) + if (!(b = b[a[c]])) return !1; + return !0 + } + function _setupNS(a) { + a = a.split("."); + for (var b = window, c = 0; c < a.length; ++c) b.hasOwnProperty ? b.hasOwnProperty(a[c]) ? b = b[a[c]] : b = + b[a[c]] = {} : b = b[a[c]] || (b[a[c]] = {}); + return b + } + window.addEventListener && "undefined" == typeof document.readyState && window.addEventListener( + "DOMContentLoaded", + function () { + document.readyState = "complete" + }, !1); + if (_isNS('google.translate.Element')) { + return + }(function () { + var c = _setupNS('google.translate._const'); + c._cest = gtConstEvalStartTime; + gtConstEvalStartTime = undefined; + c._cl = navigator.language || navigator.userLanguage; + c._cuc = 'googleTranslateElementInit'; + c._cac = ''; + c._cam = ''; + c._ctkk = '449649.3822363247'; + var h = 'translate.googleapis.com'; + var s = (true ? 'https' : window.location.protocol == 'https:' ? 'https' : 'http') + '://'; + var b = s + h; + c._pah = h; + c._pas = s; + // c._pbi = b + '/translate_static/img/te_bk.gif'; + c._pbi = ''; + c._pci = b + '/translate_static/img/te_ctrl3.gif'; + c._pli = b + '/translate_static/img/loading.gif'; + c._plla = h + '/translate_a/l'; + c._pmi = b + '/translate_static/img/mini_google.png'; + c._ps = window.translateelement_styles; + c._puh = 'translate.google.cn'; + _loadCss(c._ps); + _loadJs(b + `/translate_static/js/element/main_${navigator.language || navigator.userLanguage}.js`); + })(); +})(); + +function googleTranslateElementInit(){ + new google.translate.TranslateElement({ + includedLanguages: 'zh-CN,zh-TW,en,ru', + autoDisplay:false + },'google_translate_element'); +} \ No newline at end of file diff --git a/assets/js/utils.js b/assets/js/utils.js index 77d5d60..09638c7 100644 --- a/assets/js/utils.js +++ b/assets/js/utils.js @@ -23,6 +23,15 @@ HTMLElement.prototype.wrap = function(wrapper) { NexT.utils = { + domAddClass: function(selector, cls) { + const doms = document.querySelectorAll(selector); + if (doms) { + doms.forEach(dom => { + dom.classList.add(cls); + }); + } + }, + calSiteInfo: function() { const runtimeCount = document.getElementById('runTimes'); if (runtimeCount) { @@ -276,8 +285,10 @@ NexT.utils = { const contentHeight = document.body.scrollHeight - window.innerHeight; const scrollPercent = contentHeight > 0 ? Math.min(100 * window.scrollY / contentHeight, 100) : 0; if (backToTop) { - backToTop.classList.toggle('back-to-top-on', Math.round(scrollPercent) >= 5); - backToTop.querySelector('span').innerText = Math.round(scrollPercent) + '%'; + const scrollPercentRound = Math.round(scrollPercent) + const isShow = scrollPercentRound >= 5; + backToTop.classList.toggle('back-to-top-on', isShow); + backToTop.querySelector('span').innerText = scrollPercentRound + '%'; } if (readingProgressBar) { readingProgressBar.style.setProperty('--progress', scrollPercent.toFixed(2) + '%'); diff --git a/i18n/en.yaml b/i18n/en.yaml index 6e4ee2b..fc9971c 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -45,8 +45,6 @@ RSSLable: other: "RSS Subscribe" CCLinkTitle: other: "Creative Commons" -BackTopLabel: - other: "Top" TagsCounterTitle: zero: No tags @@ -168,4 +166,10 @@ DateSuffix: day: " Day Ago" hour: " Hour Ago" min: " Min Ago" - just: "Just" \ No newline at end of file + just: "Just" + +ToolBtns: + comment: "Go to Comment" + theme: "Change Theme" + lang: "Multilingual translation" + backTop: "Back to Top" \ No newline at end of file diff --git a/i18n/zh-cn.yaml b/i18n/zh-cn.yaml index c30457e..8a77470 100644 --- a/i18n/zh-cn.yaml +++ b/i18n/zh-cn.yaml @@ -46,8 +46,6 @@ RSSLable: other: RSS 订阅 CCLinkTitle: other: 共享知识 -BackTopLabel: - other: 返回顶部 TagsCounterTitle: zero: 暂无标签 @@ -169,4 +167,10 @@ DateSuffix: day: " 天前" hour: " 小时前" min: " 分钟前" - just: "刚刚" \ No newline at end of file + just: "刚刚" + +ToolBtns: + comment: "直达评论" + theme: "深浅模式切换" + lang: "多语言翻译" + backTop: "返回顶部" \ No newline at end of file diff --git a/layouts/flinks/single.html b/layouts/flinks/single.html index cbe325d..5206c7b 100644 --- a/layouts/flinks/single.html +++ b/layouts/flinks/single.html @@ -3,6 +3,7 @@ {{- define "main_inner_class" }}flinks posts-expand{{- end }} {{ define "main" }} +