twikoo 2.0.0-beta.5 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/twikoo.all.min.js +1 -1
- package/dist/twikoo.all.nocss.js +1 -1
- package/dist/twikoo.min.js +1 -1
- package/dist/twikoo.nocss.js +1 -1
- package/package.json +2 -2
package/dist/twikoo.min.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*! twikoo:inlined-css */
|
|
2
2
|
(function(){if(typeof document==='undefined')return;var s=document.createElement('style');s.setAttribute('data-twikoo','');s.appendChild(document.createTextNode(".twikoo .tk-icon{line-height:1;display:inline-block}.twikoo .tk-icon svg{vertical-align:-.125em;fill:currentColor;height:1em}.twikoo .tk-action{align-items:center;display:flex}.twikoo .tk-action-link{appearance:none;cursor:pointer;color:#409eff;background:0 0;border:none;align-items:center;margin:0 0 0 .5rem;padding:0;text-decoration:none;display:flex}.twikoo .tk-action-link .tk-action-icon-solid,.twikoo .tk-action-link.tk-liked .tk-action-icon,.twikoo .tk-action-link:hover .tk-action-icon{display:none}.twikoo .tk-action-link.tk-liked .tk-action-icon-solid,.twikoo .tk-action-link:hover .tk-action-icon-solid{display:block}.twikoo .tk-action-link.tk-disliked .tk-action-icon,.twikoo .tk-action-link.tk-disliked:hover .tk-action-icon{display:none}.twikoo .tk-action-link.tk-disliked .tk-action-icon-solid,.twikoo .tk-action-link.tk-disliked:hover .tk-action-icon-solid{display:block}.twikoo .tk-action-count{height:1.5rem;margin-left:.25rem;font-size:.75rem;line-height:1.5rem}.twikoo .tk-action-icon{color:#409eff;width:1em;height:1em;line-height:0;display:inline-block}.twikoo .tk-avatar{text-align:center;border-radius:5px;flex-shrink:0;width:2.5rem;height:2.5rem;margin-right:1rem;overflow:hidden}.twikoo .tk-comment .tk-submit .tk-avatar,.twikoo .tk-replies .tk-avatar{width:1.6rem;height:1.6rem}.twikoo .tk-avatar.tk-has-avatar{background-color:#90939921}.twikoo .tk-avatar.tk-clickable{cursor:pointer}.twikoo .tk-avatar .tk-avatar-img{color:#c0c4cc;height:2.5rem;line-height:2.5rem}.twikoo .tk-avatar .tk-avatar-img .tk-icon,.twikoo .tk-avatar .tk-avatar-img .tk-icon svg{width:100%;height:100%;display:block}.twikoo .tk-avatar .tk-avatar-img img,.twikoo .tk-avatar img.tk-avatar-img{object-fit:cover;width:100%;height:100%}.twikoo .tk-comment .tk-submit .tk-avatar .tk-avatar-img,.twikoo .tk-replies .tk-avatar .tk-avatar-img{height:1.6rem;line-height:1.6rem}.twikoo .tk-input{align-items:center;width:100%;font-size:.875rem;display:inline-flex;position:relative}.twikoo .tk-input--group{display:inline-flex}.twikoo .tk-input__inner{color:currentColor;box-sizing:border-box;background-color:#0000;border:1px solid #9093994f;border-radius:4px;outline:none;width:100%;height:32px;padding:0 12px;font-size:.875rem;line-height:32px;transition:border-color .2s;display:inline-block}.twikoo .tk-input__inner:hover{border-color:#90939980}.twikoo .tk-input__inner:focus{border-color:#409eff}.twikoo .tk-input--small .tk-input__inner{height:32px;font-size:.8125rem;line-height:32px}.twikoo .tk-input--mini .tk-input__inner{height:28px;font-size:.75rem;line-height:28px}.twikoo .tk-textarea .tk-input__inner{resize:vertical;height:auto;min-height:66px;padding:6px 12px;line-height:1.5}.twikoo .tk-input.is-disabled .tk-input__inner{cursor:not-allowed;background-color:#9093990f}.twikoo .tk-input__inner[readonly]{cursor:default}.twikoo .tk-input input:invalid{border-color:#f56c6c}.twikoo .tk-input__inner[type=number]{appearance:textfield}.twikoo .tk-input__inner[type=number]::-webkit-inner-spin-button{appearance:none;margin:0}.twikoo .tk-input__inner[type=number]::-webkit-outer-spin-button{appearance:none;margin:0}.twikoo .tk-input__suffix{color:#c0c4cc;align-items:center;gap:4px;display:flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.twikoo .tk-input__icon{cursor:pointer;align-items:center;line-height:0;display:inline-flex}.twikoo .tk-input__icon:hover{color:#909399}.twikoo .tk-input__count{color:currentColor;background:0 0;font-size:.75rem;position:absolute;bottom:5px;right:10px}.twikoo .tk-input-group__prepend,.twikoo .tk-input-group__append{box-sizing:border-box;white-space:nowrap;color:currentColor;background-color:#90939921;background-clip:padding-box;border:1px solid #9093994f;border-radius:4px;align-items:center;height:32px;padding:0 1rem;line-height:32px;display:inline-flex}.twikoo .tk-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.twikoo .tk-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.twikoo .tk-input--group .tk-input__inner{border-radius:0}.twikoo .tk-input--small .tk-input-group__prepend,.twikoo .tk-input--small .tk-input-group__append{height:32px;font-size:.8125rem;line-height:32px}.twikoo .tk-input--mini .tk-input-group__prepend,.twikoo .tk-input--mini .tk-input-group__append{height:28px;font-size:.75rem;line-height:28px}.twikoo .tk-meta-input{display:flex}.twikoo .tk-meta-input .tk-input{flex:1;width:calc(33.3333% - .333333rem)}.twikoo .tk-meta-input .tk-input+.tk-input{margin-left:.5rem}.twikoo .tk-meta-input .tk-input-group__prepend{padding:0 1rem}@media screen and (max-width:767px){.twikoo .tk-meta-input{flex-direction:column}.twikoo .tk-meta-input .tk-input{width:auto}.twikoo .tk-meta-input .tk-input+.tk-input{margin-top:.5rem;margin-left:0}}.twikoo .tk-button{color:currentColor;cursor:pointer;white-space:nowrap;background-color:#90939910;border:1px solid #9093994f;border-radius:4px;padding:12px 20px;font-size:.875rem;line-height:1;transition:all .1s;display:inline-block}.twikoo .tk-button:not(.tk-button--primary):not(.tk-button--text):not(.is-disabled):active,.twikoo .tk-button:not(.tk-button--primary):not(.tk-button--text):not(.is-disabled):focus,.twikoo .tk-button:not(.tk-button--primary):not(.tk-button--text):not(.is-disabled):hover{color:#409eff;background-color:#409eff10;border-color:#409eff80}.twikoo .tk-button--primary{color:#fff;background:#409eff;border-color:#409eff}.twikoo .tk-button--primary:not(.is-disabled):focus,.twikoo .tk-button--primary:not(.is-disabled):hover{color:#fff;background:#66b1ff;border-color:#66b1ff}.twikoo .tk-button--primary:not(.is-disabled):active{color:#fff;background:#3a8ee6;border-color:#3a8ee6}.twikoo .tk-button--primary.is-disabled,.twikoo .tk-button--primary.is-disabled:active,.twikoo .tk-button--primary.is-disabled:focus,.twikoo .tk-button--primary.is-disabled:hover{color:#ffffffa1;background-color:#409eff80;border-color:#0000}.twikoo .tk-button--info{color:currentColor;background-color:#90939910;border-color:#9093994f}.twikoo .tk-button--large{padding:13px 20px;font-size:1rem}.twikoo .tk-button--small{border-radius:3px;padding:9px 15px;font-size:.75rem}.twikoo .tk-button--mini{border-radius:3px;padding:7px 15px;font-size:.75rem}.twikoo .tk-button--text{color:#409eff;background:0 0;border-color:#0000;padding-left:0;padding-right:0}.twikoo .tk-button--text:not(.is-disabled):focus,.twikoo .tk-button--text:not(.is-disabled):hover{color:#66b1ff;background:0 0}.twikoo .tk-button--text:not(.is-disabled):active{color:#3a8ee6}.twikoo .tk-button.is-disabled{opacity:.5;cursor:not-allowed}.twikoo .tk-button.is-loading{pointer-events:none;opacity:.7;cursor:wait}.twikoo .tk-button__spinner{margin-right:4px}.twikoo .tk-button__spinner svg{animation:.8s linear infinite tk-spin}.twikoo .tk-button+.tk-button{margin-left:.5rem}.twikoo .tk-input-group__append .tk-button,.twikoo .tk-input-group__prepend .tk-button{font-size:inherit}.twikoo .tk-input-group__append .tk-button{color:currentColor;background:0 0;border:0;border-radius:0 3px 3px 0;height:100%;margin:-1px -1rem;padding:0 15px}.twikoo .tk-input-group__append .tk-button:hover{color:#409eff}@keyframes tk-spin{to{transform:rotate(360deg)}}.twikoo .tk-submit{flex-direction:column;display:flex}.twikoo .tk-col{flex-direction:column;flex:1;display:flex}.twikoo .tk-meta-input{margin-bottom:.5rem}.twikoo .tk-row.actions{justify-content:flex-end;align-items:center;margin-top:1rem;margin-bottom:1rem;margin-left:3.5rem;position:relative}.twikoo .tk-row-actions-start{flex:1;align-items:center;display:flex}.twikoo .tk-submit-action-icon{cursor:pointer;flex-shrink:0;align-self:center;width:1.25em;margin-right:10px;line-height:0;display:inline-block}.twikoo .tk-submit-action-icon svg:hover{opacity:.8}.twikoo .tk-submit-action-icon .tk-icon,.twikoo .tk-submit-action-icon .tk-icon svg{width:100%}.twikoo .tk-submit-action-icon .tk-icon svg{height:auto}.twikoo .tk-submit-action-icon.__markdown{color:#909399}.twikoo .tk-input-image{display:none}.twikoo .tk-input{flex:1}.twikoo .tk-input .tk-textarea__inner{background-position:100% 100%;background-repeat:no-repeat}.twikoo .tk-turnstile-container,.twikoo .tk-geetest-container,.twikoo .tk-cap-container{z-index:1;position:absolute;bottom:-75px;right:0}.twikoo .tk-turnstile{flex-direction:column;display:flex}.twikoo .tk-preview-container{word-break:break-word;border:1px solid #8080804f;border-radius:4px;margin-bottom:1rem;margin-left:3rem;padding:5px 15px}.twikoo .tk-fade-in{animation:.3s tkFadeIn}@keyframes tkFadeIn{0%{opacity:0}to{opacity:1}}.twikoo .tk-main{flex:1;width:0}.twikoo .tk-row{flex-direction:row;flex:1;justify-content:space-between;display:flex}.twikoo .tk-nick-link{color:inherit;text-decoration:none}.twikoo .tk-replies .tk-nick-link{font-size:.9em}.twikoo .tk-nick-link:hover{color:#409eff}.twikoo .tk-actions{margin-left:1em;display:none}.twikoo .tk-actions button{appearance:none;color:#409eff;cursor:pointer;background:0 0;border:none;margin:0;padding:0;text-decoration:none;display:inline}.twikoo .tk-comment:hover .tk-actions{display:inline}.twikoo .tk-meta{flex-wrap:wrap;align-items:baseline;gap:.25em;display:flex}.twikoo .tk-actions button+button{margin-left:.25em}.twikoo .tk-extras{color:#999;flex-wrap:wrap;font-size:.875em;display:flex}.twikoo .tk-extra{align-items:center;margin-top:.5rem;margin-right:.75rem;display:flex}.twikoo .tk-icon.__comment{width:1em;height:1em;line-height:1;display:inline-flex}.twikoo .tk-extra-text{line-height:1}.twikoo .tk-tag{background-color:#f2f6fc;padding:0 .5em;font-size:.75em;display:inline-block}.twikoo .tk-tag-green{color:#67c23a;background-color:#67c23a21;border:1px solid #67c23a80;border-radius:2px}.twikoo .tk-tag-yellow{color:#e6a23c;background-color:#e6a23c21;border:1px solid #e6a23c80;border-radius:2px}.twikoo .tk-tag-blue{color:#409eff;background-color:#409eff21;border:1px solid #409eff80;border-radius:2px}.twikoo .tk-tag-red{color:#f56c6c;background-color:#f56c6c21;border:1px solid #f56c6c80;border-radius:2px}.twikoo .tk-comment{word-break:break-all;flex-direction:row;margin-top:1rem;display:flex}.twikoo .tk-content{max-height:500px;margin-top:.5rem;position:relative;overflow:hidden}.twikoo .tk-content-expand{max-height:none}.twikoo .tk-replies .tk-content{font-size:.9em}.twikoo .tk-comment .vemoji{vertical-align:middle;max-height:2em}.twikoo .tk-replies{max-height:200px;position:relative;overflow:hidden}.twikoo .tk-replies-expand{max-height:none;overflow:unset}.twikoo .tk-submit{margin-top:1rem}.twikoo .tk-expand{font-size:.75em}.twikoo .tk-lightbox{z-index:999;background-color:#0000004d;display:block;position:fixed;inset:0}.twikoo .tk-lightbox-image{background:linear-gradient(90deg,#eee 50%,#e3e3e3 0) 0 0/40px 100%;width:auto;min-width:100px;max-width:95%;height:auto;min-height:30px;max-height:95%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.twikoo .tk-error{color:#f56c6c;background-color:#f56c6c21;border:1px solid #f56c6c80;border-radius:4px;gap:8px;padding:12px;display:flex}.twikoo .tk-error__icon svg{width:20px;height:20px}.twikoo .tk-error__title{font-weight:600}.twikoo .tk-error__toggle{color:currentColor;opacity:.7;cursor:pointer;background:0 0;border:none;margin-top:4px;padding:0;font-size:.75rem}.twikoo .tk-error__detail{color:currentColor;opacity:.7;word-break:break-all;margin-top:6px;font-size:.75rem}.twikoo .tk-error__raw{white-space:pre-wrap;margin:4px 0 0}.twikoo .tk-comments-search{gap:.5rem;margin-bottom:1rem;display:flex}.twikoo .tk-comments-search .tk-input{flex:1}@media (max-width:480px){.twikoo .tk-comments-search{flex-wrap:wrap}.twikoo .tk-comments-search .tk-input{flex-basis:100%}}.twikoo .tk-comments-title{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;font-size:1.25rem;font-weight:700;line-height:1;display:flex}.twikoo .tk-comments-count.__hidden{visibility:hidden}.twikoo .tk-comments-count{white-space:nowrap;flex-shrink:0}.twikoo .tk-comments-actions{white-space:nowrap;align-items:center;gap:.5em;display:flex}.twikoo .tk-comments-container{flex-direction:column;min-height:10rem;display:flex}.twikoo .tk-comments-no{text-align:center;flex:1;justify-content:center;align-items:center;display:flex}.twikoo .tk-comments-sort{align-items:center;gap:.75em;margin-right:.5em;line-height:1;display:flex}.twikoo .tk-sort-item{cursor:pointer;color:#409eff99;background:0 0;border:0;align-items:center;padding:0;font-size:.75rem;line-height:1;display:inline-flex}.twikoo .tk-sort-item.__active{color:#409eff}.twikoo .tk-sort-item:focus{color:#409eff;outline:none}.twikoo .tk-icon.__comments{vertical-align:middle;cursor:pointer;color:#409eff;flex-shrink:0;justify-content:center;align-items:center;width:.75rem;height:.75rem;line-height:0;display:inline-flex}.twikoo .tk-icon.__comments.__active{color:#fff;background:#409eff;border-radius:.125rem;box-shadow:0 0 0 .2rem #409eff}.twikoo .tk-icon.__comments svg{width:100%;height:100%;display:block}.twikoo div.code-toolbar{border-radius:.3em;position:relative}.twikoo .tk-content pre,.twikoo .tk-preview-container pre{max-width:100%;overflow-x:auto}.twikoo .tk-content pre code,.twikoo .tk-preview-container pre code{white-space:pre;word-break:normal}.twikoo div.code-toolbar>.toolbar{font-size:.8125rem;font-weight:500;display:flex;position:absolute;top:4px;right:4px}.twikoo div.code-toolbar>.toolbar>.toolbar-item{margin-left:.3em}.twikoo div.code-toolbar>.toolbar>.toolbar-item>a,.twikoo div.code-toolbar>.toolbar>.toolbar-item>button,.twikoo div.code-toolbar>.toolbar>.toolbar-item>span{border-radius:.3em;padding:2px 4px}.twikoo div.code-toolbar>.toolbar>.toolbar-item>button{border:1px solid #8080804f}.twikoo div.code-toolbar>.toolbar>.toolbar-item>button:hover{cursor:pointer}.twikoo .tk-footer{text-align:end;color:#999;width:100%;margin-top:1em;font-size:.75em}.twikoo .tk-pagination,.twikoo .tk-pagination-pagers{display:flex}.twikoo .tk-pagination{flex-wrap:wrap;justify-content:space-between;align-items:center;width:100%}.twikoo .tk-pagination-options{align-items:center;display:flex}.twikoo .tk-pagination-pager{cursor:pointer;justify-content:center;align-items:center;width:2em;height:2em;display:flex}.twikoo .tk-pagination-pager.__current{color:#fff;pointer-events:none;background-color:#409eff}.twikoo .tk-pagination-size,.twikoo .tk-pagination-goto{width:50px;margin:0 .5em}.twikoo .tk-pagination .tk-input__inner{text-align:center;height:28px;padding:0}.twikoo .tk-admin-comment{flex-direction:column;align-items:center;display:flex}.twikoo .tk-admin-comment a{color:currentColor;text-decoration:underline}.twikoo .tk-admin-warn{margin-bottom:1em}.twikoo .tk-admin-security-alert{margin-bottom:0;padding-right:2.5rem;position:relative}.twikoo .tk-admin-security-alert .tk-admin-close{float:none;width:1rem;height:1rem;margin:0;padding:.5rem;line-height:0;position:absolute;top:0;right:0}.twikoo .tk-admin-security-alert-message{margin-bottom:.5em}.twikoo .tk-admin-security-alert-url{word-break:break-all;background:#0003;border-radius:4px;margin-bottom:.5em;padding:.5em}.twikoo .tk-admin-comment-filter{justify-content:center;align-items:center;width:100%;display:flex}.twikoo .tk-admin-comment-filter-keyword{flex:1}.twikoo .tk-admin-comment-filter-type{color:#fff;-webkit-appearance:none;-moz-appearance:none;background-color:#0003;border:1px solid #9093994f;border-radius:4px;height:32px;margin:0 .5em;padding:0 .5em;position:relative}.twikoo .tk-admin-comment-filter-type:focus{border-color:#409eff}.twikoo .tk-admin-comment-filter-type option{color:initial}.twikoo .tk-admin-comment-list{margin-top:1em}.twikoo .tk-admin-comment-list,.twikoo .tk-admin-comment-item{flex-direction:column;justify-content:stretch;width:100%;display:flex}.twikoo .tk-admin-comment-meta{flex-wrap:wrap;align-items:center;margin-bottom:.5em;display:flex}.twikoo .tk-admin-comment .tk-avatar{margin-right:.5em}.twikoo .tk-admin-comment .tk-content{max-height:none}.twikoo .tk-admin-actions{border-bottom:1px solid #ffffff80;margin-bottom:1em;display:flex}.twikoo .tk-admin-config-groups{padding-right:.5em;position:relative;overflow-y:auto}.twikoo .tk-admin-config-groups .tk-admin-config-group,.twikoo .tk-admin-config-groups .tk-admin-config-group-title{background:0 0}.twikoo .tk-admin-config-group-title{margin-top:1em;font-size:1.25rem;font-weight:700}.twikoo .tk-admin-config-item{grid-template-columns:30% 70%;align-items:center;margin-top:1em;display:grid;position:relative}.twikoo .tk-admin-config-title{text-align:right;text-overflow:ellipsis;white-space:nowrap;margin-right:1em;overflow:hidden}.twikoo .tk-admin-config-input{position:relative}.twikoo .tk-admin-config-select{appearance:none;box-sizing:border-box;color:#fff;cursor:pointer;font-size:inherit;background:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23ffffff' d='M6 8.825L1.175 4 2.238 2.938 6 6.7l3.763-3.762L10.825 4z'/%3E%3C/svg%3E\") right 10px center no-repeat;border:1px solid #9093994f;border-radius:4px;outline:none;width:100%;height:32px;padding:0 30px 0 10px;line-height:32px;transition:border-color .2s cubic-bezier(.645,.045,.355,1);display:inline-block}.twikoo .tk-admin-config-select:focus{border-color:#fff9}.twikoo .tk-admin-config-select option{color:#fff;background:#333}.twikoo .tk-admin-config-desc{overflow-wrap:break-word;margin-top:.5em;font-size:.75em}.twikoo .tk-admin-config-actions{justify-content:center;align-items:center;margin-top:1em;display:flex}.twikoo .tk-admin-config-message{text-align:center;margin-top:.5em}.twikoo .tk-admin-config-email-test-desc{margin:1em 0}.twikoo .tk-admin-import{flex-direction:column;display:flex}.twikoo .tk-admin-import-label{margin-top:1em;font-size:1.25rem;font-weight:700}.twikoo .tk-admin-import select,.twikoo .tk-admin-import input,.twikoo .tk-admin-import .tk-button,.twikoo .tk-admin-import .tk-input{margin-top:1em}.twikoo .tk-admin-import select{color:#fff;background-color:#0003;border:1px solid #9093994f;border-radius:4px;height:32px;padding:0 .5em}.twikoo .tk-admin-import select option{color:initial}.twikoo .tk-admin-container{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.twikoo .tk-admin{pointer-events:all;color:#fff;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);visibility:hidden;background-color:#000000d9;width:100%;height:100%;transition:all .5s;position:absolute;top:0;left:100%;overflow-y:auto}.twikoo .tk-admin::-webkit-scrollbar{background-color:#0000;width:5px}.twikoo .tk-admin::-webkit-scrollbar-track{background-color:#0000}.twikoo .tk-admin::-webkit-scrollbar-thumb{background-color:#ffffff4f}.twikoo .tk-admin.__show{visibility:visible;left:0}.twikoo .tk-admin-close{appearance:none;cursor:pointer;box-sizing:content-box;color:#fff;z-index:1;background:0 0;border:none;width:1rem;height:1rem;margin:0;padding:1rem;line-height:0;text-decoration:none;display:block;position:sticky;top:0;left:calc(100% - 3rem)}.twikoo .tk-login,.twikoo .tk-regist{box-sizing:border-box;flex-direction:column;align-items:center;width:100%;padding:0 2rem;display:flex}.twikoo .tk-login-title{color:#fff;text-align:center;margin-top:10rem;font-size:1.25rem}.twikoo .tk-login form,.twikoo .tk-regist form{text-align:center;width:100%}.twikoo .tk-password,.twikoo .tk-login-msg{color:#fff;text-align:center;width:80%;margin-top:1rem}.twikoo .tk-password .tk-input__inner{min-width:100px}.twikoo .tk-password .tk-input-group__prepend{color:#fff}.twikoo .tk-login-msg a{color:#fff;margin-left:1em;text-decoration:underline}.twikoo .tk-regist-button{margin-top:1rem}.twikoo .tk-panel{color:#fff;box-sizing:border-box;width:100%;padding:2rem;position:absolute;top:0}.twikoo .tk-panel-title{justify-content:space-between;align-items:flex-end;font-size:1.5rem;display:flex}.twikoo .tk-panel-logout{color:#fff;font-size:1rem;text-decoration:underline}.twikoo .tk-panel .tk-tabs{border-bottom:2px solid #c0c4cc;margin-bottom:1em;display:flex}.twikoo .tk-panel .tk-tab{color:#c0c4cc;cursor:pointer;margin-bottom:-2px;margin-right:2em;line-height:2em}.twikoo .tk-panel .tk-tab.__active{color:#fff;border-bottom:2px solid #fff}.twikoo{position:relative}.twikoo svg{fill:currentColor;width:100%;height:100%}.twikoo .tk-expand{cursor:pointer;text-align:center;box-sizing:border-box;width:100%;padding:.75em;transition:all .5s}.twikoo .tk-expand:hover{background-color:#00000021}.twikoo .tk-expand:active{background-color:#00000030}.twikoo .tk-content img{vertical-align:middle;max-width:300px;max-height:300px}.twikoo .tk-owo-emotion,.twikoo .OwO-item img{width:3em;height:auto}.twikoo .tk-admin-warn{color:#6b5900;box-sizing:border-box;background-color:#fff7d0;border-left:.5rem solid #e7c000;align-self:stretch;padding:1rem 1.5rem}.twikoo .tk-loading-parent--relative{position:relative}.twikoo .tk-loading-mask{z-index:2000;-webkit-backdrop-filter:opacity(20%);backdrop-filter:opacity(20%);background-color:#0000;justify-content:center;align-items:center;margin:0;transition:opacity .3s;display:flex;position:absolute;inset:0}.twikoo .tk-loading-spinner .circular{width:42px;height:42px;animation:2s linear infinite tk-loading-rotate}.twikoo .tk-loading-spinner .path{stroke:#409eff;stroke-width:2px;stroke-linecap:round;animation:1.5s ease-in-out infinite tk-loading-dash}@keyframes tk-loading-rotate{to{transform:rotate(360deg)}}@keyframes tk-loading-dash{0%{stroke-dasharray:1 200;stroke-dashoffset:0}50%{stroke-dasharray:90 150;stroke-dashoffset:-40px}to{stroke-dasharray:90 150;stroke-dashoffset:-120px}}.OwO{-webkit-user-select:none;user-select:none}.OwO.OwO-open .OwO-body{display:block}.OwO .OwO-logo{display:flex}.OwO .OwO-body{color:#4a4a4a;z-index:1000;background-color:#fff;border:1px solid #9093994f;border-radius:0 4px 4px;max-width:500px;display:none;position:absolute;top:2em;left:0;right:0}.night .OwO .OwO-body,.darkmode .OwO .OwO-body,.DarkMode .OwO .OwO-body,[data-theme=dark] .OwO .OwO-body,[data-user-color-scheme=dark] .OwO .OwO-body{color:#fff;background-color:#4a4a4a}.OwO .OwO-body .OwO-items{-webkit-user-select:none;user-select:none;margin:0;padding:10px 0 10px 10px;font-size:0;display:none;overflow:auto}.OwO .OwO-body .OwO-items .OwO-item{cursor:pointer;text-align:center;border-radius:5px;padding:5px 10px;font-size:12px;line-height:14px;list-style-type:none;transition:all .3s;display:inline-block}.OwO .OwO-body .OwO-items .OwO-item:hover{background-color:#90939921;box-shadow:0 2px 2px #00000024,0 3px 1px -2px #0003,0 1px 5px #0000001f}.OwO .OwO-body .OwO-items-emoji .OwO-item{font-size:20px;line-height:19px}.OwO .OwO-body .OwO-items-image .OwO-item{box-sizing:border-box;width:14%}@media screen and (max-width:600px){#twikoo .OwO-items>.OwO-item{width:16%}}@media screen and (max-width:460px){#twikoo .OwO-items>.OwO-item{width:20%}}@media screen and (max-width:400px){#twikoo .OwO-items>.OwO-item{width:25%}}@media screen and (max-width:330px){#twikoo .OwO-items>.OwO-item{width:33%}}.OwO .OwO-body .OwO-items-image .OwO-item img{max-width:100%}.OwO .OwO-body .OwO-items-show{display:block}.OwO .OwO-body .OwO-bar{border-top:1px solid #9093994f;border-radius:0 0 4px 4px;width:100%}.OwO .OwO-body .OwO-bar .OwO-packages{margin:0;padding:0;font-size:0}.OwO .OwO-body .OwO-bar .OwO-packages li{cursor:pointer;margin-right:3px;padding:0 10px;font-size:14px;line-height:30px;list-style-type:none;display:inline-block}.OwO .OwO-body .OwO-bar .OwO-packages li:first-child{border-radius:0 0 0 3px}.OwO .OwO-body .OwO-bar .OwO-packages li:hover{background-color:#90939921}.OwO .OwO-body .OwO-bar .OwO-packages .OwO-package-active{background-color:#90939921;transition:all .3s}\n/*$vite$:1*/"));document.head.appendChild(s);})();
|
|
3
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.twikoo={}))})(this,function(e){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var t=Object.create,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,s=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),c=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;l<u;l++)d=c[l],!o.call(e,d)&&d!==a&&n(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},l=(e,r,i)=>(i=e==null?{}:t(a(e)),c(r||!e||!e.__esModule||!o.call(e,`default`)?n(i,`default`,{value:e,enumerable:!0}):i,e)),u=`2.0.0-beta.5`,d=[`webhook`,`qmsg`,`serverchan`,`pushplus`,`pushplushxtrip`,`dingtalk`,`wecom`,`bark`,`gocqhttp`,`onebot`,`atri`,`pushdeer`,`igot`,`telegram`,`feishu`,`ifttt`,`wecombot`,`discord`,`wxpusher`,`join`],f=class extends Error{kind;httpStatus;rawMessage;requestId;constructor(e,t,n={}){super(t),this.name=`TwikooError`,this.kind=e,this.httpStatus=n.httpStatus,this.rawMessage=n.rawMessage??t,this.requestId=n.requestId}},p={tcb:null,options:{}};function m(e,t){p.tcb=e,p.options=t}function h(){return p}function g(e){return typeof e==`string`&&/^http(s)?:\/\//.test(e)}function _(e,t){return new Promise((n,r)=>{let i=localStorage.getItem(`twikoo-access-token`),a=new XMLHttpRequest,o=Date.now();a.onreadystatechange=()=>{if(a.readyState!==4)return;let e=Date.now()-o;if(a.status===200)try{let e=JSON.parse(a.responseText);e.accessToken&&localStorage.setItem(`twikoo-access-token`,typeof e.accessToken==`string`?e.accessToken:``),n(e)}catch{r(new f(`UNKNOWN`,`后端返回格式异常`,{rawMessage:a.responseText.slice(0,200)}))}else a.status===0?r(new f(e>3e4?`TIMEOUT`:`CORS`,`请求被跨域策略拦截或网络不可达`,{rawMessage:a.statusText||`status 0`})):a.status===404?r(new f(`NOT_FOUND`,`接口地址不存在`,{httpStatus:404,rawMessage:a.responseText.slice(0,200)})):a.status===401||a.status===403?r(new f(`CLIENT_ERROR`,`认证失败,请重新登录`,{httpStatus:a.status,rawMessage:a.responseText.slice(0,200)})):a.status===429?r(new f(`REJECTED`,`请求过于频繁`,{httpStatus:429,rawMessage:a.responseText.slice(0,200)})):a.status>=500?r(new f(`SERVER_ERROR`,`后端异常`,{httpStatus:a.status,rawMessage:a.responseText.slice(0,200)})):r(new f(`CLIENT_ERROR`,`请求失败(${a.status})`,{httpStatus:a.status,rawMessage:a.responseText.slice(0,200)}))};try{a.open(`POST`,e),a.setRequestHeader(`Content-Type`,`application/json`),a.send(JSON.stringify({accessToken:i,...t,envId:e}))}catch(e){r(new f(`NETWORK`,`无法连接到后端`,{rawMessage:String(e)}))}})}async function v(e,t,n={}){let r=e??p.tcb,i=typeof n.envId==`string`?n.envId:typeof p.options.envId==`string`?p.options.envId:void 0,a=typeof n.funcName==`string`?n.funcName:typeof p.options.funcName==`string`?p.options.funcName:`twikoo`;if(r)return await r.app.callFunction({name:a,data:{event:t,...n}});if(typeof i==`string`&&g(i))return await _(i,{event:t,...n});throw Error(`缺少 envId 配置 - https://twikoo.js.org`)}var y={verbose:1,info:2,warn:3,error:4}[(typeof process<`u`&&process.env,`info`).toLowerCase()]||2,b={verbose:(...e)=>{y<=1&&console.log(...e)},info:(...e)=>{y<=2&&console.info(...e)},warn:(...e)=>{y<=3&&console.warn(...e)},error:(...e)=>{y<=4&&console.error(...e)}},ee={ADMIN_CLIENT_VERSION:`前端版本:`,ADMIN_SERVER_VERSION:`云函数版本:`,ADMIN_COMMENT:`评论管理`,ADMIN_COMMENT_DELETE:`删除`,ADMIN_COMMENT_DELETE_CONFIRM:`确认删除?`,ADMIN_COMMENT_FILTER_ALL:`全部`,ADMIN_COMMENT_FILTER_VISIBLE:`只看可见`,ADMIN_COMMENT_FILTER_HIDDEN:`只看隐藏`,ADMIN_COMMENT_HIDE:`隐藏`,ADMIN_COMMENT_IS_SPAM_SUFFIX:` (已隐藏)`,ADMIN_COMMENT_SEARCH:`搜索`,ADMIN_COMMENT_SEARCH_PLACEHOLDER:`搜索昵称、邮箱、网址、IP、评论正文、文章地址`,ADMIN_COMMENT_SHOW:`显示`,ADMIN_COMMENT_TOP:`置顶`,ADMIN_COMMENT_UNTOP:`取消置顶`,ADMIN_COMMENT_VIEW:`查看`,ADMIN_COMMENT_SECURITY_ALERT:`评论链接与本站不同!出于安全考虑,请手动复制以下网址访问:`,ADMIN_COMMENT_PARSE_ERROR:`无法解析评论链接,请仔细检查链接后手动复制以下网址访问:`,ADMIN_CONFIG:`配置管理`,ADMIN_CONFIG_CATEGORY_COMMON:`通用`,ADMIN_CONFIG_CATEGORY_IM:`即时通知`,ADMIN_CONFIG_CATEGORY_MAIL:`邮件通知`,ADMIN_CONFIG_CATEGORY_PLUGIN:`插件`,ADMIN_CONFIG_CATEGORY_PRIVACY:`隐私`,ADMIN_CONFIG_CATEGORY_SPAM:`反垃圾`,ADMIN_CONFIG_CATEGORY_CAPTCHA:`人机验证`,ADMIN_CONFIG_IMAGE_CDN_NONE:`无(不启用图片上传)`,ADMIN_CONFIG_CAPTCHA_NONE:`无`,ADMIN_CONFIG_CAPTCHA_TURNSTILE:`Cloudflare Turnstile`,ADMIN_CONFIG_CAPTCHA_GEETEST:`极验 Geetest`,ADMIN_CONFIG_CAPTCHA_CAP:`Cap`,ADMIN_CONFIG_EMAIL_TEST:`邮件通知测试`,ADMIN_CONFIG_EMAIL_TEST_BTN:`发送测试邮件`,ADMIN_CONFIG_EMAIL_TEST_HELP:`输入一个邮箱地址,发送测试邮件`,ADMIN_CONFIG_EMAIL_TEST_RESULT:`测试结果:`,ADMIN_CONFIG_EXAMPLE:`示例:`,ADMIN_CONFIG_ITEM_AKISMET_KEY:`Akismet 反垃圾评论,用于垃圾评论检测,设为 "MANUAL_REVIEW" 开启人工审核,留空不使用反垃圾。注册:https://akismet.com`,ADMIN_CONFIG_ITEM_BLOGGER_NICK:`博主的昵称。`,ADMIN_CONFIG_ITEM_BLOGGER_EMAIL:`博主的邮箱地址,用于邮件通知、博主标识。`,ADMIN_CONFIG_ITEM_COMMENT_BG_IMG:`评论框自定义背景图片 URL 地址。`,ADMIN_CONFIG_ITEM_COMMENT_PAGE_SIZE:`评论列表分页大小,默认为 8。`,ADMIN_CONFIG_ITEM_COMMENT_PLACEHOLDER:`评论框提示信息,可用<br>换行,默认为空`,ADMIN_CONFIG_ITEM_CORS_ALLOW_ORIGIN:`CORS 安全域名,注意:如果您不了解什么是 CORS,此项请留空,错误设置会导致无法加载,默认为空,格式为 https://blog.example.com;如需添加多域名请使用,分隔`,ADMIN_CONFIG_ITEM_DEFAULT_GRAVATAR:`默认的头像显示。默认值(留空)为 "initials",可选:"404"、"mp"、"identicon"、"monsterid"、"wavatar"、"retro"、"robohash"、"blank"`,ADMIN_CONFIG_ITEM_EMOTION_CDN:`表情 CDN,英文逗号分隔。默认为:https://owo.imaegoo.com/owo.json`,ADMIN_CONFIG_ITEM_FORBIDDEN_WORDS:`违禁词配置,包含违禁词的内容会直接标记为垃圾评论。英文逗号分隔。`,ADMIN_CONFIG_ITEM_BLOCKED_WORDS:`屏蔽词配置,包含屏蔽词的内容会直接评论失败。英文逗号分隔。`,ADMIN_CONFIG_ITEM_GRAVATAR_CDN:`自定义头像 CDN 地址。如:cn.gravatar.com, weavatar.com, cravatar.cn, sdn.geekzu.org, gravatar.loli.net,默认:weavatar.com`,ADMIN_CONFIG_ITEM_HIDE_ADMIN_CRYPT:`隐藏管理面板入口。可设置一个“暗号”,只有在“昵称”一栏输入相同的“暗号”时,管理面板入口才会显示,留空则不隐藏管理入口`,ADMIN_CONFIG_ITEM_QQ_API_KEY:`QQ昵称API密钥,用于获取QQ昵称。前往 https://api.tqq.me/dashboard/api-keys 获取`,ADMIN_CONFIG_ITEM_HIGHLIGHT:`启用代码高亮功能。如果您的主题和代码高亮有冲突,请设为 false。默认:true`,ADMIN_CONFIG_ITEM_HIGHLIGHT_THEME:`代码高亮主题,可选:"default"、"coy"、"dark"、"funky"、"okaidia"、"solarizedlight"、"tomorrow"、"twilight",访问 https://prismjs.com 可预览主题效果。如果您的主题和代码高亮有冲突,请设为 none。默认:none`,ADMIN_CONFIG_ITEM_HIGHLIGHT_PLUGIN:`代码高亮插件,可选:"showLanguage"、"copyButton",分别表示:展示代码语言、展示代码拷贝按钮。可以同时设置多个选项,如果想要不添加任何代码高亮插件,请设为 none。默认:none。`,ADMIN_CONFIG_ITEM_IMAGE_CDN:`插入图片所使用的图床,目前支持:"qcloud"、"7bu (https://7bu.top)"、"see (https://s.ee)"、"lskypro"、"piclist"、"easyimage"、"chevereto"、"S3 / R2 / MinIO"`,ADMIN_CONFIG_ITEM_IMAGE_CDN_URL:`图床的 URL,仅当 IMAGE_CDN 为 "lskypro" / "piclist" / "easyimage" / "s3" 时需要填写`,ADMIN_CONFIG_ITEM_IMAGE_CDN_TOKEN:`图床 token。qcloud 图床无需设置`,ADMIN_CONFIG_ITEM_NSFW_API_URL:`NSFW 图片检测 API 地址。免费服务:nsfw.qixz.cn,项目:github.com/HG-ha/nsfwpy`,ADMIN_CONFIG_ITEM_NSFW_THRESHOLD:`NSFW 检测阈值(0-1),当检测分数高于此值时拒绝上传。默认:0.5`,ADMIN_CONFIG_ITEM_S3_REGION:`S3 存储区域,例如 us-east-1。使用兼容 S3 的服务(如 Cloudflare R2、MinIO)时可填任意值`,ADMIN_CONFIG_ITEM_S3_BUCKET:`S3 存储桶名称`,ADMIN_CONFIG_ITEM_S3_ACCESS_KEY_ID:`S3 Access Key ID`,ADMIN_CONFIG_ITEM_S3_SECRET_ACCESS_KEY:`S3 Secret Access Key`,ADMIN_CONFIG_ITEM_S3_ENDPOINT:`S3 自定义 Endpoint,使用 Cloudflare R2、MinIO 等兼容 S3 的服务时填写`,ADMIN_CONFIG_ITEM_S3_FORCE_PATH_STYLE:`设置 S3_ENDPOINT 时,是否将 S3_BUCKET 拼入上传地址路径。默认为 true,适用于 Cloudflare R2、MinIO 等 path-style S3 兼容端点;使用已绑定存储桶的自定义域名时设为 false,例如腾讯云 COS 自定义域名`,ADMIN_CONFIG_ITEM_S3_CDN_URL:`S3 图片访问域名(CDN 域名),留空则使用默认 S3/Endpoint URL`,ADMIN_CONFIG_ITEM_S3_PATH_PREFIX:`S3 图片存储路径前缀,例如 images/twikoo,留空则存储在根目录`,ADMIN_CONFIG_ITEM_LIGHTBOX:`使用简易图片点击放大效果。默认:false`,ADMIN_CONFIG_ITEM_LIMIT_PER_MINUTE:`单个 IP 发言频率限制(条/10分钟),0 为无限制,默认:10`,ADMIN_CONFIG_ITEM_LIMIT_PER_MINUTE_ALL:`全站发言频率限制(条/10分钟),0 为无限制,默认:10`,ADMIN_CONFIG_ITEM_LIMIT_LENGTH:`评论长度限制,0 为无限制,默认:500`,ADMIN_CONFIG_ITEM_MAIL_SUBJECT:`自定义通知邮件主题,留空则使用默认主题。`,ADMIN_CONFIG_ITEM_MAIL_SUBJECT_ADMIN:`自定义博主通知邮件主题,留空则使用默认主题。`,ADMIN_CONFIG_ITEM_MAIL_TEMPLATE:"自定义通知邮件模板,留空则使用默认模板。可包含的字段:${SITE_URL}, ${SITE_NAME}, ${PARENT_NICK}, ${PARENT_COMMENT}, ${NICK}, ${COMMENT}, ${POST_URL}, ${IMG}, ${PARENT_IMG}",ADMIN_CONFIG_ITEM_MAIL_TEMPLATE_ADMIN:"自定义博主通知邮件模板,留空则使用默认模板。可包含的字段:${SITE_URL}, ${SITE_NAME}, ${NICK}, ${COMMENT}, ${POST_URL}, ${IP}, ${MAIL}, ${IMG}",ADMIN_CONFIG_ITEM_MASTER_TAG:`博主标识自定义文字,默认为 “博主”。`,ADMIN_CONFIG_ITEM_NOTIFY_SPAM:`垃圾评论是否发送通知,默认:true`,ADMIN_CONFIG_ITEM_HIDE_SPAM:`前台评论区对所有人隐藏垃圾评论,包括管理员和评论作者。评论管理后台仍可审核和恢复。设为 true 开启,默认:false。`,ADMIN_CONFIG_ITEM_CAPTCHA_PROVIDER:`人机验证码提供商`,ADMIN_CONFIG_ITEM_TURNSTILE_SITE_KEY:`Turnstile 验证码的站点密钥。申请地址: https://dash.cloudflare.com/?to=/:account/turnstile`,ADMIN_CONFIG_ITEM_TURNSTILE_SECRET_KEY:`Turnstile 验证码的密钥`,ADMIN_CONFIG_ITEM_GEETEST_CAPTCHA_ID:`极验验证码的 Captcha ID。申请地址: https://console.geetest.com/sensbot/management`,ADMIN_CONFIG_ITEM_GEETEST_CAPTCHA_KEY:`极验验证码的 Captcha Key`,ADMIN_CONFIG_ITEM_CAP_API_ENDPOINT:`Cap 验证码 API 端点。留空则使用内嵌 Cap(无需额外部署);外部 Standalone 格式:https://<实例地址>/<site_key>/`,ADMIN_CONFIG_ITEM_CAP_SECRET_KEY:`Cap Secret Key(仅外部 Standalone 需要;内嵌模式可留空)`,ADMIN_CONFIG_ITEM_QCLOUD_SECRET_ID:`腾讯云 secret id,用于垃圾评论检测。同时设置腾讯云和 Akismet 时,只有腾讯云会生效。注册:https://twikoo.js.org/cms.html`,ADMIN_CONFIG_ITEM_QCLOUD_CMS_BIZTYPE:`腾讯云内容安全 Biztype 名称,用于垃圾评论策略。可以自定义垃圾拦截规则`,ADMIN_CONFIG_ITEM_QCLOUD_SECRET_KEY:`腾讯云 secret key`,ADMIN_CONFIG_ITEM_LLM_API_KEY:`LLM API Key,用于 AI 垃圾评论检测。仅在未配置腾讯云和 Akismet 时生效。`,ADMIN_CONFIG_ITEM_LLM_API_ENDPOINT:`LLM API 接口地址,默认:https://api.deepseek.com/v1`,ADMIN_CONFIG_ITEM_LLM_MODEL:`LLM 模型名称,默认:deepseek-v4-pro`,ADMIN_CONFIG_ITEM_LLM_SPAM_PROMPT:`LLM 垃圾检测提示词(可选,留空则使用默认提示词)`,ADMIN_CONFIG_ITEM_LLM_MAX_RETRIES:`LLM 检测最大重试次数(默认 3 次)`,ADMIN_CONFIG_ITEM_PUSHOO_CHANNEL:`即时消息推送平台名称,支持:"qmsg"、"serverchan"、"pushplus"、"pushplushxtrip"、"dingtalk"、"wecom"、"bark"、"gocqhttp"、"atri"、"pushdeer"、"igot"、"telegram"、"feishu" 等`,ADMIN_CONFIG_ITEM_PUSHOO_TOKEN:`即时消息推送 token。请参考 https://pushoo.js.org 里的详细说明配置`,ADMIN_CONFIG_ITEM_DISPLAYED_FIELDS:`界面上展示的输入框,默认:nick,mail,link`,ADMIN_CONFIG_ITEM_REQUIRED_FIELDS:`评论必填信息,设为 nick,mail,link 代表全必填,设为 none 代表全选填,默认:nick,mail`,ADMIN_CONFIG_ITEM_SC_MAIL_NOTIFY:`是否同时通过 IM 和邮件 2 种方式通知博主,默认只通过 IM 通知博主,默认:false`,ADMIN_CONFIG_ITEM_SENDER_EMAIL:`邮件通知邮箱地址。对于大多数邮箱服务商,SENDER_EMAIL 必须和 SMTP_USER 保持一致,否则无法发送邮件。`,ADMIN_CONFIG_ITEM_SENDER_NAME:`邮件通知标题。`,ADMIN_CONFIG_ITEM_SHOW_EMOTION:`启用插入表情功能,默认为:true`,ADMIN_CONFIG_ITEM_SHOW_IMAGE:`启用插入图片功能,默认为:true`,ADMIN_CONFIG_ITEM_SHOW_ORDER:`评论排序下拉框,默认为:true`,ADMIN_CONFIG_ITEM_SHOW_DISLIKE:`评论点踩按钮,默认为:true`,ADMIN_CONFIG_ITEM_SHOW_UA:`是否显示用户系统和浏览器,默认为:true`,ADMIN_CONFIG_ITEM_SHOW_REGION:`是否显示用户 IP 属地到省,可能不准确,不支持 IPv6,默认为:false`,ADMIN_CONFIG_ITEM_SITE_NAME:`网站名称`,ADMIN_CONFIG_ITEM_SITE_URL:`网站地址`,ADMIN_CONFIG_ITEM_SMTP_HOST:`自定义 SMTP 服务器地址。如您已配置 SMTP_SERVICE,此项请留空。`,ADMIN_CONFIG_ITEM_SMTP_PASS:`邮件通知邮箱密码,QQ、163邮箱请填写授权码。`,ADMIN_CONFIG_ITEM_SMTP_PORT:`自定义 SMTP 端口。如您已配置 SMTP_SERVICE,此项请留空。`,ADMIN_CONFIG_ITEM_SMTP_SECURE:`自定义 SMTP 是否使用TLS,请填写 true 或 false。如您已配置 SMTP_SERVICE,此项请留空。`,ADMIN_CONFIG_ITEM_SMTP_SERVICE:`邮件通知邮箱服务商。支持:"126"、"163"、"1und1"、"AOL"、"DebugMail"、"DynectEmail"、"FastMail"、"GandiMail"、"Gmail"、"Godaddy"、"GodaddyAsia"、"GodaddyEurope"、"Hotmail"、"Mail.ru"、"Maildev"、"Mailgun"、"Mailjet"、"Mailosaur"、"Mandrill"、"Naver"、"OpenMailBox"、"Outlook365"、"Postmark"、"QQ"、"QQex"、"SES"、"SES-EU-WEST-1"、"SES-US-EAST-1"、"SES-US-WEST-2"、"SendCloud"、"SendGrid"、"SendPulse"、"SendinBlue"、"Sparkpost"、"Yahoo"、"Yandex"、"Zoho"、"hot.ee"、"iCloud"、"mail.ee"、"qiye.aliyun"`,ADMIN_CONFIG_ITEM_SMTP_USER:`邮件通知邮箱用户名。`,ADMIN_CONFIG_RESET:`重置`,ADMIN_CONFIG_SAVE:`保存`,ADMIN_CREDENTIALS:`私钥文件`,ADMIN_CREDENTIALS_FAQ:`如何获得私钥`,ADMIN_CREDENTIALS_PLACEHOLDER:`请粘贴私钥文件内容`,ADMIN_FORGOT:`忘记密码`,ADMIN_EXPORT:`导出`,ADMIN_EXPORT_WARN:`将全部数据导出为 JSON 文件。如果遇到评论较多、导出失败或缺失数据,请连接数据库手动导出`,ADMIN_EXPORT_COMMENT:`导出评论`,ADMIN_EXPORT_COUNTER:`导出访问量`,ADMIN_IMPORT:`导入`,ADMIN_IMPORT_FILE_REQUIRED:`未选择文件`,ADMIN_IMPORT_IMPORTED:`完成导入 `,ADMIN_IMPORT_IMPORTING:`开始导入 `,ADMIN_IMPORT_LOG:`日志`,ADMIN_IMPORT_SELECT:`请选择`,ADMIN_IMPORT_SELECT_FILE:`选择文件`,ADMIN_IMPORT_SELECT_SOURCE:`选择源系统`,ADMIN_IMPORT_SOURCE_REQUIRED:`未选择源系统`,ADMIN_IMPORT_START:`开始导入`,ADMIN_IMPORT_STARTING:`开始导入`,ADMIN_IMPORT_TIP_ARTALK:`请上传 JSON 格式的 Artalk 导出文件,文件名通常为 comments.data.json`,ADMIN_IMPORT_TIP_DISQUS:`请上传 XML 格式的 Disqus 导出文件,文件名通常为 [网站名称]-[导出时间]-all.xml`,ADMIN_IMPORT_TIP_VALINE:`请上传 JSON 格式的 Valine 导出文件,文件名通常为 Comment.json`,ADMIN_IMPORT_UPLOADED:`上传完成 `,ADMIN_IMPORT_UPLOADING:`已上传 `,ADMIN_IMPORT_WARN:`支持从其他评论系统的备份文件导入评论。
|
|
3
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.twikoo={}))})(this,function(e){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var t=Object.create,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,s=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),c=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;l<u;l++)d=c[l],!o.call(e,d)&&d!==a&&n(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},l=(e,r,i)=>(i=e==null?{}:t(a(e)),c(r||!e||!e.__esModule||!o.call(e,`default`)?n(i,`default`,{value:e,enumerable:!0}):i,e)),u=`2.0.0`,d=[`webhook`,`qmsg`,`serverchan`,`pushplus`,`pushplushxtrip`,`dingtalk`,`wecom`,`bark`,`gocqhttp`,`onebot`,`atri`,`pushdeer`,`igot`,`telegram`,`feishu`,`ifttt`,`wecombot`,`discord`,`wxpusher`,`join`],f=class extends Error{kind;httpStatus;rawMessage;requestId;constructor(e,t,n={}){super(t),this.name=`TwikooError`,this.kind=e,this.httpStatus=n.httpStatus,this.rawMessage=n.rawMessage??t,this.requestId=n.requestId}},p={tcb:null,options:{}};function m(e,t){p.tcb=e,p.options=t}function h(){return p}function g(e){return typeof e==`string`&&/^http(s)?:\/\//.test(e)}function _(e,t){return new Promise((n,r)=>{let i=localStorage.getItem(`twikoo-access-token`),a=new XMLHttpRequest,o=Date.now();a.onreadystatechange=()=>{if(a.readyState!==4)return;let e=Date.now()-o;if(a.status===200)try{let e=JSON.parse(a.responseText);e.accessToken&&localStorage.setItem(`twikoo-access-token`,typeof e.accessToken==`string`?e.accessToken:``),n(e)}catch{r(new f(`UNKNOWN`,`后端返回格式异常`,{rawMessage:a.responseText.slice(0,200)}))}else a.status===0?r(new f(e>3e4?`TIMEOUT`:`CORS`,`请求被跨域策略拦截或网络不可达`,{rawMessage:a.statusText||`status 0`})):a.status===404?r(new f(`NOT_FOUND`,`接口地址不存在`,{httpStatus:404,rawMessage:a.responseText.slice(0,200)})):a.status===401||a.status===403?r(new f(`CLIENT_ERROR`,`认证失败,请重新登录`,{httpStatus:a.status,rawMessage:a.responseText.slice(0,200)})):a.status===429?r(new f(`REJECTED`,`请求过于频繁`,{httpStatus:429,rawMessage:a.responseText.slice(0,200)})):a.status>=500?r(new f(`SERVER_ERROR`,`后端异常`,{httpStatus:a.status,rawMessage:a.responseText.slice(0,200)})):r(new f(`CLIENT_ERROR`,`请求失败(${a.status})`,{httpStatus:a.status,rawMessage:a.responseText.slice(0,200)}))};try{a.open(`POST`,e),a.setRequestHeader(`Content-Type`,`application/json`),a.send(JSON.stringify({accessToken:i,...t,envId:e}))}catch(e){r(new f(`NETWORK`,`无法连接到后端`,{rawMessage:String(e)}))}})}async function v(e,t,n={}){let r=e??p.tcb,i=typeof n.envId==`string`?n.envId:typeof p.options.envId==`string`?p.options.envId:void 0,a=typeof n.funcName==`string`?n.funcName:typeof p.options.funcName==`string`?p.options.funcName:`twikoo`;if(r)return await r.app.callFunction({name:a,data:{event:t,...n}});if(typeof i==`string`&&g(i))return await _(i,{event:t,...n});throw Error(`缺少 envId 配置 - https://twikoo.js.org`)}var y={verbose:1,info:2,warn:3,error:4}[(typeof process<`u`&&process.env,`info`).toLowerCase()]||2,b={verbose:(...e)=>{y<=1&&console.log(...e)},info:(...e)=>{y<=2&&console.info(...e)},warn:(...e)=>{y<=3&&console.warn(...e)},error:(...e)=>{y<=4&&console.error(...e)}},ee={ADMIN_CLIENT_VERSION:`前端版本:`,ADMIN_SERVER_VERSION:`云函数版本:`,ADMIN_COMMENT:`评论管理`,ADMIN_COMMENT_DELETE:`删除`,ADMIN_COMMENT_DELETE_CONFIRM:`确认删除?`,ADMIN_COMMENT_FILTER_ALL:`全部`,ADMIN_COMMENT_FILTER_VISIBLE:`只看可见`,ADMIN_COMMENT_FILTER_HIDDEN:`只看隐藏`,ADMIN_COMMENT_HIDE:`隐藏`,ADMIN_COMMENT_IS_SPAM_SUFFIX:` (已隐藏)`,ADMIN_COMMENT_SEARCH:`搜索`,ADMIN_COMMENT_SEARCH_PLACEHOLDER:`搜索昵称、邮箱、网址、IP、评论正文、文章地址`,ADMIN_COMMENT_SHOW:`显示`,ADMIN_COMMENT_TOP:`置顶`,ADMIN_COMMENT_UNTOP:`取消置顶`,ADMIN_COMMENT_VIEW:`查看`,ADMIN_COMMENT_SECURITY_ALERT:`评论链接与本站不同!出于安全考虑,请手动复制以下网址访问:`,ADMIN_COMMENT_PARSE_ERROR:`无法解析评论链接,请仔细检查链接后手动复制以下网址访问:`,ADMIN_CONFIG:`配置管理`,ADMIN_CONFIG_CATEGORY_COMMON:`通用`,ADMIN_CONFIG_CATEGORY_IM:`即时通知`,ADMIN_CONFIG_CATEGORY_MAIL:`邮件通知`,ADMIN_CONFIG_CATEGORY_PLUGIN:`插件`,ADMIN_CONFIG_CATEGORY_PRIVACY:`隐私`,ADMIN_CONFIG_CATEGORY_SPAM:`反垃圾`,ADMIN_CONFIG_CATEGORY_CAPTCHA:`人机验证`,ADMIN_CONFIG_IMAGE_CDN_NONE:`无(不启用图片上传)`,ADMIN_CONFIG_CAPTCHA_NONE:`无`,ADMIN_CONFIG_CAPTCHA_TURNSTILE:`Cloudflare Turnstile`,ADMIN_CONFIG_CAPTCHA_GEETEST:`极验 Geetest`,ADMIN_CONFIG_CAPTCHA_CAP:`Cap`,ADMIN_CONFIG_EMAIL_TEST:`邮件通知测试`,ADMIN_CONFIG_EMAIL_TEST_BTN:`发送测试邮件`,ADMIN_CONFIG_EMAIL_TEST_HELP:`输入一个邮箱地址,发送测试邮件`,ADMIN_CONFIG_EMAIL_TEST_RESULT:`测试结果:`,ADMIN_CONFIG_EXAMPLE:`示例:`,ADMIN_CONFIG_ITEM_AKISMET_KEY:`Akismet 反垃圾评论,用于垃圾评论检测,设为 "MANUAL_REVIEW" 开启人工审核,留空不使用反垃圾。注册:https://akismet.com`,ADMIN_CONFIG_ITEM_BLOGGER_NICK:`博主的昵称。`,ADMIN_CONFIG_ITEM_BLOGGER_EMAIL:`博主的邮箱地址,用于邮件通知、博主标识。`,ADMIN_CONFIG_ITEM_COMMENT_BG_IMG:`评论框自定义背景图片 URL 地址。`,ADMIN_CONFIG_ITEM_COMMENT_PAGE_SIZE:`评论列表分页大小,默认为 8。`,ADMIN_CONFIG_ITEM_COMMENT_PLACEHOLDER:`评论框提示信息,可用<br>换行,默认为空`,ADMIN_CONFIG_ITEM_CORS_ALLOW_ORIGIN:`CORS 安全域名,注意:如果您不了解什么是 CORS,此项请留空,错误设置会导致无法加载,默认为空,格式为 https://blog.example.com;如需添加多域名请使用,分隔`,ADMIN_CONFIG_ITEM_DEFAULT_GRAVATAR:`默认的头像显示。默认值(留空)为 "initials",可选:"404"、"mp"、"identicon"、"monsterid"、"wavatar"、"retro"、"robohash"、"blank"`,ADMIN_CONFIG_ITEM_EMOTION_CDN:`表情 CDN,英文逗号分隔。默认为:https://owo.imaegoo.com/owo.json`,ADMIN_CONFIG_ITEM_FORBIDDEN_WORDS:`违禁词配置,包含违禁词的内容会直接标记为垃圾评论。英文逗号分隔。`,ADMIN_CONFIG_ITEM_BLOCKED_WORDS:`屏蔽词配置,包含屏蔽词的内容会直接评论失败。英文逗号分隔。`,ADMIN_CONFIG_ITEM_GRAVATAR_CDN:`自定义头像 CDN 地址。如:cn.gravatar.com, weavatar.com, cravatar.cn, sdn.geekzu.org, gravatar.loli.net,默认:weavatar.com`,ADMIN_CONFIG_ITEM_HIDE_ADMIN_CRYPT:`隐藏管理面板入口。可设置一个“暗号”,只有在“昵称”一栏输入相同的“暗号”时,管理面板入口才会显示,留空则不隐藏管理入口`,ADMIN_CONFIG_ITEM_QQ_API_KEY:`QQ昵称API密钥,用于获取QQ昵称。前往 https://api.tqq.me/dashboard/api-keys 获取`,ADMIN_CONFIG_ITEM_HIGHLIGHT:`启用代码高亮功能。如果您的主题和代码高亮有冲突,请设为 false。默认:true`,ADMIN_CONFIG_ITEM_HIGHLIGHT_THEME:`代码高亮主题,可选:"default"、"coy"、"dark"、"funky"、"okaidia"、"solarizedlight"、"tomorrow"、"twilight",访问 https://prismjs.com 可预览主题效果。如果您的主题和代码高亮有冲突,请设为 none。默认:none`,ADMIN_CONFIG_ITEM_HIGHLIGHT_PLUGIN:`代码高亮插件,可选:"showLanguage"、"copyButton",分别表示:展示代码语言、展示代码拷贝按钮。可以同时设置多个选项,如果想要不添加任何代码高亮插件,请设为 none。默认:none。`,ADMIN_CONFIG_ITEM_IMAGE_CDN:`插入图片所使用的图床,目前支持:"qcloud"、"7bu (https://7bu.top)"、"see (https://s.ee)"、"lskypro"、"piclist"、"easyimage"、"chevereto"、"S3 / R2 / MinIO"`,ADMIN_CONFIG_ITEM_IMAGE_CDN_URL:`图床的 URL,仅当 IMAGE_CDN 为 "lskypro" / "piclist" / "easyimage" / "s3" 时需要填写`,ADMIN_CONFIG_ITEM_IMAGE_CDN_TOKEN:`图床 token。qcloud 图床无需设置`,ADMIN_CONFIG_ITEM_NSFW_API_URL:`NSFW 图片检测 API 地址。免费服务:nsfw.qixz.cn,项目:github.com/HG-ha/nsfwpy`,ADMIN_CONFIG_ITEM_NSFW_THRESHOLD:`NSFW 检测阈值(0-1),当检测分数高于此值时拒绝上传。默认:0.5`,ADMIN_CONFIG_ITEM_S3_REGION:`S3 存储区域,例如 us-east-1。使用兼容 S3 的服务(如 Cloudflare R2、MinIO)时可填任意值`,ADMIN_CONFIG_ITEM_S3_BUCKET:`S3 存储桶名称`,ADMIN_CONFIG_ITEM_S3_ACCESS_KEY_ID:`S3 Access Key ID`,ADMIN_CONFIG_ITEM_S3_SECRET_ACCESS_KEY:`S3 Secret Access Key`,ADMIN_CONFIG_ITEM_S3_ENDPOINT:`S3 自定义 Endpoint,使用 Cloudflare R2、MinIO 等兼容 S3 的服务时填写`,ADMIN_CONFIG_ITEM_S3_FORCE_PATH_STYLE:`设置 S3_ENDPOINT 时,是否将 S3_BUCKET 拼入上传地址路径。默认为 true,适用于 Cloudflare R2、MinIO 等 path-style S3 兼容端点;使用已绑定存储桶的自定义域名时设为 false,例如腾讯云 COS 自定义域名`,ADMIN_CONFIG_ITEM_S3_CDN_URL:`S3 图片访问域名(CDN 域名),留空则使用默认 S3/Endpoint URL`,ADMIN_CONFIG_ITEM_S3_PATH_PREFIX:`S3 图片存储路径前缀,例如 images/twikoo,留空则存储在根目录`,ADMIN_CONFIG_ITEM_LIGHTBOX:`使用简易图片点击放大效果。默认:false`,ADMIN_CONFIG_ITEM_LIMIT_PER_MINUTE:`单个 IP 发言频率限制(条/10分钟),0 为无限制,默认:10`,ADMIN_CONFIG_ITEM_LIMIT_PER_MINUTE_ALL:`全站发言频率限制(条/10分钟),0 为无限制,默认:10`,ADMIN_CONFIG_ITEM_LIMIT_LENGTH:`评论长度限制,0 为无限制,默认:500`,ADMIN_CONFIG_ITEM_MAIL_SUBJECT:`自定义通知邮件主题,留空则使用默认主题。`,ADMIN_CONFIG_ITEM_MAIL_SUBJECT_ADMIN:`自定义博主通知邮件主题,留空则使用默认主题。`,ADMIN_CONFIG_ITEM_MAIL_TEMPLATE:"自定义通知邮件模板,留空则使用默认模板。可包含的字段:${SITE_URL}, ${SITE_NAME}, ${PARENT_NICK}, ${PARENT_COMMENT}, ${NICK}, ${COMMENT}, ${POST_URL}, ${IMG}, ${PARENT_IMG}",ADMIN_CONFIG_ITEM_MAIL_TEMPLATE_ADMIN:"自定义博主通知邮件模板,留空则使用默认模板。可包含的字段:${SITE_URL}, ${SITE_NAME}, ${NICK}, ${COMMENT}, ${POST_URL}, ${IP}, ${MAIL}, ${IMG}",ADMIN_CONFIG_ITEM_MASTER_TAG:`博主标识自定义文字,默认为 “博主”。`,ADMIN_CONFIG_ITEM_NOTIFY_SPAM:`垃圾评论是否发送通知,默认:true`,ADMIN_CONFIG_ITEM_HIDE_SPAM:`前台评论区对所有人隐藏垃圾评论,包括管理员和评论作者。评论管理后台仍可审核和恢复。设为 true 开启,默认:false。`,ADMIN_CONFIG_ITEM_CAPTCHA_PROVIDER:`人机验证码提供商`,ADMIN_CONFIG_ITEM_TURNSTILE_SITE_KEY:`Turnstile 验证码的站点密钥。申请地址: https://dash.cloudflare.com/?to=/:account/turnstile`,ADMIN_CONFIG_ITEM_TURNSTILE_SECRET_KEY:`Turnstile 验证码的密钥`,ADMIN_CONFIG_ITEM_GEETEST_CAPTCHA_ID:`极验验证码的 Captcha ID。申请地址: https://console.geetest.com/sensbot/management`,ADMIN_CONFIG_ITEM_GEETEST_CAPTCHA_KEY:`极验验证码的 Captcha Key`,ADMIN_CONFIG_ITEM_CAP_API_ENDPOINT:`Cap 验证码 API 端点。留空则使用内嵌 Cap(无需额外部署);外部 Standalone 格式:https://<实例地址>/<site_key>/`,ADMIN_CONFIG_ITEM_CAP_SECRET_KEY:`Cap Secret Key(仅外部 Standalone 需要;内嵌模式可留空)`,ADMIN_CONFIG_ITEM_QCLOUD_SECRET_ID:`腾讯云 secret id,用于垃圾评论检测。同时设置腾讯云和 Akismet 时,只有腾讯云会生效。注册:https://twikoo.js.org/cms.html`,ADMIN_CONFIG_ITEM_QCLOUD_CMS_BIZTYPE:`腾讯云内容安全 Biztype 名称,用于垃圾评论策略。可以自定义垃圾拦截规则`,ADMIN_CONFIG_ITEM_QCLOUD_SECRET_KEY:`腾讯云 secret key`,ADMIN_CONFIG_ITEM_LLM_API_KEY:`LLM API Key,用于 AI 垃圾评论检测。仅在未配置腾讯云和 Akismet 时生效。`,ADMIN_CONFIG_ITEM_LLM_API_ENDPOINT:`LLM API 接口地址,默认:https://api.deepseek.com/v1`,ADMIN_CONFIG_ITEM_LLM_MODEL:`LLM 模型名称,默认:deepseek-v4-pro`,ADMIN_CONFIG_ITEM_LLM_SPAM_PROMPT:`LLM 垃圾检测提示词(可选,留空则使用默认提示词)`,ADMIN_CONFIG_ITEM_LLM_MAX_RETRIES:`LLM 检测最大重试次数(默认 3 次)`,ADMIN_CONFIG_ITEM_PUSHOO_CHANNEL:`即时消息推送平台名称,支持:"qmsg"、"serverchan"、"pushplus"、"pushplushxtrip"、"dingtalk"、"wecom"、"bark"、"gocqhttp"、"atri"、"pushdeer"、"igot"、"telegram"、"feishu" 等`,ADMIN_CONFIG_ITEM_PUSHOO_TOKEN:`即时消息推送 token。请参考 https://pushoo.js.org 里的详细说明配置`,ADMIN_CONFIG_ITEM_DISPLAYED_FIELDS:`界面上展示的输入框,默认:nick,mail,link`,ADMIN_CONFIG_ITEM_REQUIRED_FIELDS:`评论必填信息,设为 nick,mail,link 代表全必填,设为 none 代表全选填,默认:nick,mail`,ADMIN_CONFIG_ITEM_SC_MAIL_NOTIFY:`是否同时通过 IM 和邮件 2 种方式通知博主,默认只通过 IM 通知博主,默认:false`,ADMIN_CONFIG_ITEM_SENDER_EMAIL:`邮件通知邮箱地址。对于大多数邮箱服务商,SENDER_EMAIL 必须和 SMTP_USER 保持一致,否则无法发送邮件。`,ADMIN_CONFIG_ITEM_SENDER_NAME:`邮件通知标题。`,ADMIN_CONFIG_ITEM_SHOW_EMOTION:`启用插入表情功能,默认为:true`,ADMIN_CONFIG_ITEM_SHOW_IMAGE:`启用插入图片功能,默认为:true`,ADMIN_CONFIG_ITEM_SHOW_ORDER:`评论排序下拉框,默认为:true`,ADMIN_CONFIG_ITEM_SHOW_DISLIKE:`评论点踩按钮,默认为:true`,ADMIN_CONFIG_ITEM_SHOW_UA:`是否显示用户系统和浏览器,默认为:true`,ADMIN_CONFIG_ITEM_SHOW_REGION:`是否显示用户 IP 属地到省,可能不准确,不支持 IPv6,默认为:false`,ADMIN_CONFIG_ITEM_SITE_NAME:`网站名称`,ADMIN_CONFIG_ITEM_SITE_URL:`网站地址`,ADMIN_CONFIG_ITEM_SMTP_HOST:`自定义 SMTP 服务器地址。如您已配置 SMTP_SERVICE,此项请留空。`,ADMIN_CONFIG_ITEM_SMTP_PASS:`邮件通知邮箱密码,QQ、163邮箱请填写授权码。`,ADMIN_CONFIG_ITEM_SMTP_PORT:`自定义 SMTP 端口。如您已配置 SMTP_SERVICE,此项请留空。`,ADMIN_CONFIG_ITEM_SMTP_SECURE:`自定义 SMTP 是否使用TLS,请填写 true 或 false。如您已配置 SMTP_SERVICE,此项请留空。`,ADMIN_CONFIG_ITEM_SMTP_SERVICE:`邮件通知邮箱服务商。支持:"126"、"163"、"1und1"、"AOL"、"DebugMail"、"DynectEmail"、"FastMail"、"GandiMail"、"Gmail"、"Godaddy"、"GodaddyAsia"、"GodaddyEurope"、"Hotmail"、"Mail.ru"、"Maildev"、"Mailgun"、"Mailjet"、"Mailosaur"、"Mandrill"、"Naver"、"OpenMailBox"、"Outlook365"、"Postmark"、"QQ"、"QQex"、"SES"、"SES-EU-WEST-1"、"SES-US-EAST-1"、"SES-US-WEST-2"、"SendCloud"、"SendGrid"、"SendPulse"、"SendinBlue"、"Sparkpost"、"Yahoo"、"Yandex"、"Zoho"、"hot.ee"、"iCloud"、"mail.ee"、"qiye.aliyun"`,ADMIN_CONFIG_ITEM_SMTP_USER:`邮件通知邮箱用户名。`,ADMIN_CONFIG_RESET:`重置`,ADMIN_CONFIG_SAVE:`保存`,ADMIN_CREDENTIALS:`私钥文件`,ADMIN_CREDENTIALS_FAQ:`如何获得私钥`,ADMIN_CREDENTIALS_PLACEHOLDER:`请粘贴私钥文件内容`,ADMIN_FORGOT:`忘记密码`,ADMIN_EXPORT:`导出`,ADMIN_EXPORT_WARN:`将全部数据导出为 JSON 文件。如果遇到评论较多、导出失败或缺失数据,请连接数据库手动导出`,ADMIN_EXPORT_COMMENT:`导出评论`,ADMIN_EXPORT_COUNTER:`导出访问量`,ADMIN_IMPORT:`导入`,ADMIN_IMPORT_FILE_REQUIRED:`未选择文件`,ADMIN_IMPORT_IMPORTED:`完成导入 `,ADMIN_IMPORT_IMPORTING:`开始导入 `,ADMIN_IMPORT_LOG:`日志`,ADMIN_IMPORT_SELECT:`请选择`,ADMIN_IMPORT_SELECT_FILE:`选择文件`,ADMIN_IMPORT_SELECT_SOURCE:`选择源系统`,ADMIN_IMPORT_SOURCE_REQUIRED:`未选择源系统`,ADMIN_IMPORT_START:`开始导入`,ADMIN_IMPORT_STARTING:`开始导入`,ADMIN_IMPORT_TIP_ARTALK:`请上传 JSON 格式的 Artalk 导出文件,文件名通常为 comments.data.json`,ADMIN_IMPORT_TIP_DISQUS:`请上传 XML 格式的 Disqus 导出文件,文件名通常为 [网站名称]-[导出时间]-all.xml`,ADMIN_IMPORT_TIP_VALINE:`请上传 JSON 格式的 Valine 导出文件,文件名通常为 Comment.json`,ADMIN_IMPORT_UPLOADED:`上传完成 `,ADMIN_IMPORT_UPLOADING:`已上传 `,ADMIN_IMPORT_WARN:`支持从其他评论系统的备份文件导入评论。
|
|
4
4
|
数据是安全的,导入功能完全在您的云环境进行。
|
|
5
5
|
建议在导入前备份 comment 数据库。`,ADMIN_LOGIN:`登录`,ADMIN_LOGIN_TITLE:`Twikoo 评论管理`,ADMIN_LOGOUT:`退出登录`,ADMIN_NEED_UPDATE:`若要使用评论管理,请更新 Twikoo 云函数`,ADMIN_PASSWORD:`密码`,ADMIN_PASSWORD_PLACEHOLDER:`请输入`,ADMIN_PASSWORD_REQUIRED:`请输入密码`,ADMIN_REGIST:`注册`,ADMIN_REGIST_FAILED:`注册失败`,ADMIN_SET_PASSWORD:`设置密码`,ADMIN_SET_PASSWORD_CONFIRM:`确认密码`,ADMIN_SET_PASSWORD_CONFIRM_PLACEHOLDER:`确认密码`,ADMIN_SET_PASSWORD_PLACEHOLDER:`密码`,ADMIN_TITLE:`Twikoo 管理面板`,COMMENTS_SEARCH:`搜索`,COMMENTS_SEARCH_PLACEHOLDER:`搜索评论`,COMMENTS_SEARCH_NO_RESULT:`没有找到评论`,COMMENTS_SEARCH_COUNT_PREFIX:`找到 `,COMMENTS_COUNT_SUFFIX:` 条评论`,COMMENTS_SORT_NEWEST:`最新`,COMMENTS_SORT_OLDEST:`最早`,COMMENTS_SORT_POPULAR:`热门`,COMMENTS_EXPAND:`查看更多`,COMMENTS_NO_COMMENTS:`没有评论`,COMMENT_EXPAND:`展开`,COMMENT_COLLAPSE:`收起`,COMMENT_MASTER_TAG:`博主`,COMMENT_REPLIED:`回复`,COMMENT_DELETE_CONFIRM:`确认删除你的评论?`,COMMENT_REVIEWING_TAG:`审核中`,COMMENT_TOP_TAG:`置顶`,COMMENT_FAILED:`评论失败`,META_INPUT_LINK:`网址`,META_INPUT_MAIL:`邮箱`,META_INPUT_NICK:`昵称`,META_INPUT_NOT_REQUIRED:`选填`,META_INPUT_REQUIRED:`必填`,PAGINATION_COUNT_PREFIX:`共 `,PAGINATION_COUNT_SUFFIX:` 条`,PAGINATION_GOTO_PREFIX:`前往`,PAGINATION_GOTO_SUFFIX:`页`,PAGINATION_PAGESIZE:`条/页`,SUBMIT_CANCEL:`取消`,SUBMIT_PREVIEW:`预览`,SUBMIT_SEND:`发送`,IMAGE_UPLOAD_PLACEHOLDER:`图片上传中`,IMAGE_UPLOAD_FAILED:`图片上传失败`,IMAGE_UPLOAD_NSFW:`图片包含不当内容,禁止上传`,IMAGE_UPLOAD_FAILED_NO_CONF:`博主未配置图床服务`,IMAGE_UPLOAD_PLEASE_WAIT:`图片上传中,请稍候再发送`,SUBMIT_SENDING:`发送中`,TIMEAGO_DAYS:`天前`,TIMEAGO_HOURS:`小时前`,TIMEAGO_MINUTES:`分钟前`,TIMEAGO_NOW:`刚刚`,TIMEAGO_SECONDS:`秒前`},x={ADMIN_CLIENT_VERSION:`Client version: `,ADMIN_SERVER_VERSION:`Server version: `,ADMIN_COMMENT:`Comment`,ADMIN_COMMENT_DELETE:`Delete`,ADMIN_COMMENT_DELETE_CONFIRM:`Confirm deletion?`,ADMIN_COMMENT_FILTER_ALL:`All`,ADMIN_COMMENT_FILTER_VISIBLE:`Visible`,ADMIN_COMMENT_FILTER_HIDDEN:`Hidden`,ADMIN_COMMENT_HIDE:`Hide`,ADMIN_COMMENT_IS_SPAM_SUFFIX:` (Hidden)`,ADMIN_COMMENT_SEARCH:`Search`,ADMIN_COMMENT_SEARCH_PLACEHOLDER:`Search by nick, mail, website, IP, comment, or article path`,ADMIN_COMMENT_SHOW:`Show`,ADMIN_COMMENT_TOP:`Pin`,ADMIN_COMMENT_UNTOP:`Unpin`,ADMIN_COMMENT_VIEW:`View`,ADMIN_COMMENT_SECURITY_ALERT:`The comment link is different from this site! For security reasons, please manually copy the following URL to visit:`,ADMIN_COMMENT_PARSE_ERROR:`Unable to parse comment link. Please check and manually copy the following URL:`,ADMIN_CONFIG:`Configuration`,ADMIN_CONFIG_CATEGORY_COMMON:`General`,ADMIN_CONFIG_CATEGORY_IM:`Instant notification`,ADMIN_CONFIG_CATEGORY_MAIL:`Email notification`,ADMIN_CONFIG_CATEGORY_PLUGIN:`Plugin`,ADMIN_CONFIG_CATEGORY_PRIVACY:`Privacy`,ADMIN_CONFIG_CATEGORY_SPAM:`Spam`,ADMIN_CONFIG_CATEGORY_CAPTCHA:`CAPTCHA`,ADMIN_CONFIG_IMAGE_CDN_NONE:`None (disable image upload)`,ADMIN_CONFIG_CAPTCHA_NONE:`None`,ADMIN_CONFIG_CAPTCHA_TURNSTILE:`Cloudflare Turnstile`,ADMIN_CONFIG_CAPTCHA_GEETEST:`GeeTest`,ADMIN_CONFIG_CAPTCHA_CAP:`Cap`,ADMIN_CONFIG_EMAIL_TEST:`Email notification test`,ADMIN_CONFIG_EMAIL_TEST_BTN:`Send test mail`,ADMIN_CONFIG_EMAIL_TEST_HELP:`Input an email address & send test mail`,ADMIN_CONFIG_EMAIL_TEST_RESULT:`Test result: `,ADMIN_CONFIG_EXAMPLE:`Example: `,ADMIN_CONFIG_ITEM_AKISMET_KEY:`Akismet spam protection. Set to "MANUAL_REVIEW" to enable manual review. Leave it blank to not use anti-spam. Register Akismet: https://akismet.com`,ADMIN_CONFIG_ITEM_BLOGGER_NICK:`Admin nick name.`,ADMIN_CONFIG_ITEM_BLOGGER_EMAIL:`Admin Email address. Used for Email notification and admin identification.`,ADMIN_CONFIG_ITEM_COMMENT_BG_IMG:`URL for custom background image.`,ADMIN_CONFIG_ITEM_COMMENT_PAGE_SIZE:`Comment page size. Default: 8.`,ADMIN_CONFIG_ITEM_COMMENT_PLACEHOLDER:`Comment placeholder. Use <br> to start a newline. Default: empty.`,ADMIN_CONFIG_ITEM_CORS_ALLOW_ORIGIN:`CORS allow origin, note: incorrect settings can cause loading failure. Default: blank, format: https://blog.example.com; If you need to add multiple domain names, please use, separate`,ADMIN_CONFIG_ITEM_DEFAULT_GRAVATAR:`Avatar placeholder. Default (when empty): "initials". Choose from: "404", "mp", "identicon", "monsterid", "wavatar", "retro", "robohash", "blank"`,ADMIN_CONFIG_ITEM_EMOTION_CDN:`Emoji CDN. Separate by comma. Default: https://owo.imaegoo.com/owo.json`,ADMIN_CONFIG_ITEM_FORBIDDEN_WORDS:`Configure prohibited words. Comments containing prohibited words will be auto spammed. Separate by comma.`,ADMIN_CONFIG_ITEM_BLOCKED_WORDS:`Configure blocked words. Comments containing blocked words will fail to send. Separate by comma.`,ADMIN_CONFIG_ITEM_GRAVATAR_CDN:`Custom avator CDN. (Examples: gravatar.com) Default: weavatar.com.`,ADMIN_CONFIG_ITEM_HIDE_ADMIN_CRYPT:`Set a cipher to hide the management panel entrance, only when the same cipher is entered in the nickname field the management panel entry will be displayed. Leave it blank to not hide the management entrance.`,ADMIN_CONFIG_ITEM_QQ_API_KEY:`QQ nickname API key for fetching QQ nickname. Get it from https://api.nsuuu.com/admin/key`,ADMIN_CONFIG_ITEM_HIGHLIGHT:`Enable code highlighting. If your theme conflicts with code highlighting, please set it to false. Default: true.`,ADMIN_CONFIG_ITEM_HIGHLIGHT_THEME:`Code highlighting theme. Select from: "default", "coy", "dark", "funky", "okaidia", "solarizedlight", "tomorrow", "twilight". Visit https://prismjs.com for preview. If your theme conflicts with code highlighting, please set it to none. Default: none.`,ADMIN_CONFIG_ITEM_HIGHLIGHT_PLUGIN:`Code highlight plug-in, optional: "showLanguage", "copyButton", respectively: show code language, show code copy button. Multiple options can be set at the same time, if you want to add no code highlighting plug-ins, please set it to none. Default: none. `,ADMIN_CONFIG_ITEM_IMAGE_CDN:`The image bed for image uploading. Select from: "qcloud", "7bu (https://7bu.top)", "see (https://s.ee)", "lskypro", "piclist", "easyimage", "chevereto", "S3 / R2 / MinIO"`,ADMIN_CONFIG_ITEM_IMAGE_CDN_URL:`The URL for the image bed. Required if your IMAGE_CDN is one of these: "lskypro", "piclist", "easyimage", "s3"`,ADMIN_CONFIG_ITEM_IMAGE_CDN_TOKEN:`The image bed token. Unnessessary for qcloud`,ADMIN_CONFIG_ITEM_NSFW_API_URL:`NSFW image detection API URL. Free services: nsfw.qixz.cn, project: github.com/HG-ha/nsfwpy`,ADMIN_CONFIG_ITEM_NSFW_THRESHOLD:`NSFW detection threshold (0-1). Upload will be rejected if score exceeds this value. Default: 0.5`,ADMIN_CONFIG_ITEM_S3_REGION:`S3 region, e.g. us-east-1. Can be any value when using S3-compatible services (e.g. Cloudflare R2, MinIO)`,ADMIN_CONFIG_ITEM_S3_BUCKET:`S3 bucket name`,ADMIN_CONFIG_ITEM_S3_ACCESS_KEY_ID:`S3 Access Key ID`,ADMIN_CONFIG_ITEM_S3_SECRET_ACCESS_KEY:`S3 Secret Access Key`,ADMIN_CONFIG_ITEM_S3_ENDPOINT:`S3 custom endpoint. Required when using S3-compatible services like Cloudflare R2 or MinIO`,ADMIN_CONFIG_ITEM_S3_FORCE_PATH_STYLE:`When S3_ENDPOINT is set, whether to append S3_BUCKET to the upload URL path. Default: true. Use true for Cloudflare R2, MinIO, and other path-style S3-compatible endpoints; set false for bucket-bound custom domains, such as Tencent Cloud COS custom domains.`,ADMIN_CONFIG_ITEM_S3_CDN_URL:`S3 image access domain (CDN domain). Leave empty to use default S3/Endpoint URL`,ADMIN_CONFIG_ITEM_S3_PATH_PREFIX:`S3 image storage path prefix, e.g. images/twikoo. Leave empty to store in root`,ADMIN_CONFIG_ITEM_LIGHTBOX:`Use simple Lightbox effect. Default: false`,ADMIN_CONFIG_ITEM_LIMIT_PER_MINUTE:`How many comments can be posted by each IP every 10 minutes, 0 is unlimited, default: 10.`,ADMIN_CONFIG_ITEM_LIMIT_PER_MINUTE_ALL:`How many comments can be posted by all IPs every 10 minutes, 0 is unlimited, default: 10.`,ADMIN_CONFIG_ITEM_LIMIT_LENGTH:`Comment length limitation, 0 is unlimited, default: 500.`,ADMIN_CONFIG_ITEM_MAIL_SUBJECT:`Custom Email notification subject. Leave it blank to use the default subject.`,ADMIN_CONFIG_ITEM_MAIL_SUBJECT_ADMIN:`Custom admin Email notification subject. Leave it blank to use the default subject.`,ADMIN_CONFIG_ITEM_MAIL_TEMPLATE:"Custom Email notification template. Leave it blank to use the default template. Fields that can be included: ${SITE_URL}, ${SITE_NAME}, ${NICK}, ${COMMENT}, ${POST_URL}, ${IMG}, ${PARENT_IMG}",ADMIN_CONFIG_ITEM_MAIL_TEMPLATE_ADMIN:"Custom admin Email notification template. Leave it blank to use the default template. Fields that can be included: ${SITE_URL}, ${SITE_NAME}, ${NICK}, ${COMMENT}, ${POST_URL}, ${IP}, ${MAIL}, ${IMG}",ADMIN_CONFIG_ITEM_MASTER_TAG:`Custom admin identifier.`,ADMIN_CONFIG_ITEM_NOTIFY_SPAM:`Notifications for spam comments. Default: true.`,ADMIN_CONFIG_ITEM_HIDE_SPAM:`Hide spam comments from everyone in the public comment section, including admins and comment authors. Comments can still be reviewed and restored in the admin panel. Set to true to enable. Default: false.`,ADMIN_CONFIG_ITEM_CAPTCHA_PROVIDER:`CAPTCHA Provider`,ADMIN_CONFIG_ITEM_TURNSTILE_SITE_KEY:`Turnstile CAPTCHA Site Key. Get from: https://dash.cloudflare.com/?to=/:account/turnstile`,ADMIN_CONFIG_ITEM_TURNSTILE_SECRET_KEY:`Turnstile CAPTCHA Secret Key`,ADMIN_CONFIG_ITEM_GEETEST_CAPTCHA_ID:`GeeTest CAPTCHA ID. Get from: https://console.geetest.com/sensbot/management`,ADMIN_CONFIG_ITEM_GEETEST_CAPTCHA_KEY:`GeeTest CAPTCHA Key`,ADMIN_CONFIG_ITEM_CAP_API_ENDPOINT:`Cap CAPTCHA API endpoint. Leave empty for built-in Cap (no extra server). External Standalone format: https://<instance_url>/<site_key>/`,ADMIN_CONFIG_ITEM_CAP_SECRET_KEY:`Cap Secret Key (external Standalone only; leave empty for built-in)`,ADMIN_CONFIG_ITEM_QCLOUD_SECRET_ID:`Tencent Cloud secret id for spam detection. When Tencent Cloud and Akismet are set at the same time, only Tencent Cloud will take effect. Register: https://twikoo.js.org/cms.html`,ADMIN_CONFIG_ITEM_QCLOUD_CMS_BIZTYPE:`Tencent Cloud Content Security Biztype name for spam comment policy. Spam blocking rules can be customized`,ADMIN_CONFIG_ITEM_QCLOUD_SECRET_KEY:`Tencent Cloud secret key.`,ADMIN_CONFIG_ITEM_LLM_API_KEY:`LLM API Key, used for AI spam comment detection. Only takes effect when Tencent Cloud and Akismet are not configured.`,ADMIN_CONFIG_ITEM_LLM_API_ENDPOINT:`LLM API endpoint URL, defaults to https://api.deepseek.com/v1`,ADMIN_CONFIG_ITEM_LLM_MODEL:`LLM model name, default: deepseek-v4-pro`,ADMIN_CONFIG_ITEM_LLM_SPAM_PROMPT:`LLM spam detection prompt (optional, uses default if left empty)`,ADMIN_CONFIG_ITEM_LLM_MAX_RETRIES:`LLM detection maximum retries (default 3)`,ADMIN_CONFIG_ITEM_PUSHOO_CHANNEL:`IM notification push channel. Support: "qmsg", "serverchan", "pushplus", "pushplushxtrip", "dingtalk", "wecom", "bark", "gocqhttp", "atri", "pushdeer", "igot", "telegram", "feishu"`,ADMIN_CONFIG_ITEM_PUSHOO_TOKEN:`IM notification push token. See https://pushoo.js.org for details`,ADMIN_CONFIG_ITEM_DISPLAYED_FIELDS:`Input boxes displayed on the interface. Default: nick,mail,link`,ADMIN_CONFIG_ITEM_REQUIRED_FIELDS:`Required fields for comments. Set to "nick,mail,link" means all fields are required. Set to "none" means all fields are optional. Default: nick,mail.`,ADMIN_CONFIG_ITEM_SC_MAIL_NOTIFY:`Whether to notify admin via IM and email at the same time, the default is to notify admin only via IM. Default: false.`,ADMIN_CONFIG_ITEM_SENDER_EMAIL:`Email address for Email notification. For most email service providers, SENDER_EMAIL must be consistent with SMTP_USER, otherwise emails cannot be sent.`,ADMIN_CONFIG_ITEM_SENDER_NAME:`The title for Email notification.`,ADMIN_CONFIG_ITEM_SHOW_EMOTION:`Enable emojis. Default: true.`,ADMIN_CONFIG_ITEM_SHOW_IMAGE:`Enable picture uploading. Default: true.`,ADMIN_CONFIG_ITEM_SHOW_ORDER:`Show sort dropdown. Default: true.`,ADMIN_CONFIG_ITEM_SHOW_DISLIKE:`Show dislike button. Default: true.`,ADMIN_CONFIG_ITEM_SHOW_UA:`Show users' OS and browser. Default: true.`,ADMIN_CONFIG_ITEM_SHOW_REGION:`Show users' IP region (province). Default: false.`,ADMIN_CONFIG_ITEM_SITE_NAME:`Website name.`,ADMIN_CONFIG_ITEM_SITE_URL:`Website URL.`,ADMIN_CONFIG_ITEM_SMTP_HOST:`Custom SMTP server address. If you have configured SMTP_SERVICE, please leave it empty.`,ADMIN_CONFIG_ITEM_SMTP_PASS:`Email notification mailbox password. Enter authorization code for QQ/163 mail.`,ADMIN_CONFIG_ITEM_SMTP_PORT:`Custom SMTP port. If you have configured SMTP_SERVICE, please leave it empty.`,ADMIN_CONFIG_ITEM_SMTP_SECURE:`Custom TLS for SMTP. Enter "true" or "false". If you have configured SMTP_SERVICE, please leave it empty.`,ADMIN_CONFIG_ITEM_SMTP_SERVICE:`Email service provider for Email notification. Support: "126", "163", "1und1", "AOL", "DebugMail", "DynectEmail", "FastMail", "GandiMail", "Gmail", "Godaddy", "GodaddyAsia", "GodaddyEurope", "Hotmail", "Mail.ru", "Maildev", "Mailgun", "Mailjet", "Mailosaur", "Mandrill", "Naver", "OpenMailBox", "Outlook365", "Postmark", "QQ", "QQex", "SES", "SES-EU-WEST-1", "SES-US-EAST-1", "SES-US-WEST-2", "SendCloud", "SendGrid", "SendPulse", "SendinBlue", "Sparkpost", "Yahoo", "Yandex", "Zoho", "hot.ee", "iCloud", "mail.ee", "qiye.aliyun"`,ADMIN_CONFIG_ITEM_SMTP_USER:`Email notification mailbox username.`,ADMIN_CONFIG_RESET:`Reset`,ADMIN_CONFIG_SAVE:`Save`,ADMIN_CREDENTIALS:`Private key file`,ADMIN_CREDENTIALS_FAQ:`How to get the private key`,ADMIN_CREDENTIALS_PLACEHOLDER:`Please paste the contents of the private key file`,ADMIN_FORGOT:`Forget your password`,ADMIN_EXPORT:`Export`,ADMIN_EXPORT_WARN:`Export all data as a JSON file. If you encounter export failures or missing data, connect to the database to export manually`,ADMIN_EXPORT_COMMENT:`Export comment`,ADMIN_EXPORT_COUNTER:`Export counter`,ADMIN_IMPORT:`Import`,ADMIN_IMPORT_FILE_REQUIRED:`No file selected`,ADMIN_IMPORT_IMPORTED:`Imported `,ADMIN_IMPORT_IMPORTING:`Importing `,ADMIN_IMPORT_LOG:`Log`,ADMIN_IMPORT_SELECT:`Select`,ADMIN_IMPORT_SELECT_FILE:`Select file`,ADMIN_IMPORT_SELECT_SOURCE:`Select source`,ADMIN_IMPORT_SOURCE_REQUIRED:`No source selected.`,ADMIN_IMPORT_START:`Start import`,ADMIN_IMPORT_STARTING:`Importing`,ADMIN_IMPORT_TIP_ARTALK:`Please upload the Artalk export file in JSON format.The file name is usually comments.data.json`,ADMIN_IMPORT_TIP_DISQUS:`Please upload the Disqus export file in XML format. The file name is usually [website name]-[export time]-all.xml`,ADMIN_IMPORT_TIP_VALINE:`Please upload the Valine export file in JSON format. The file name is usually Comment.json`,ADMIN_IMPORT_UPLOADED:`Uploaded `,ADMIN_IMPORT_UPLOADING:`Uploading `,ADMIN_IMPORT_WARN:`Import comments from other comment systems.
|
|
6
6
|
The data is safe, and the import function is performed entirely in your cloud environment.
|