diff --git a/templates/assets/libs/artalk/Artalk.css b/templates/assets/libs/artalk/Artalk.css index b3511e97..8b1177bf 100644 --- a/templates/assets/libs/artalk/Artalk.css +++ b/templates/assets/libs/artalk/Artalk.css @@ -1,1772 +1 @@ -.artalk,.atk-layer-wrap,#owo-big { - --at-color-font: #2a2e2e; - --at-color-deep: #2a2e2e; - --at-color-sub: #757575; - --at-color-grey: #747474; - --at-color-meta: #697182; - --at-color-border: #eceff2; - --at-color-light: #4285f4; - --at-color-bg: #FFF; - --at-color-bg-transl: rgba(255, 255, 255, .94); - --at-color-bg-grey: #F4F4F4; - --at-color-bg-grey-transl: rgba(244, 244, 244, .75); - --at-color-bg-light: rgba(29, 161, 242, .1); - --at-color-main: #0083ff; - --at-color-red: #ff5652; - --at-color-pink: #fa5a57; - --at-color-yellow: #ff7c37; - --at-color-green: #4caf50; - --at-color-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255)); - --at-color-owo: rgba(255, 255, 255, .5) -} - -.artalk.atk-dark-mode,.atk-layer-wrap.atk-dark-mode,#owo-big.atk-dark-mode { - --at-color-font: rgba(238, 238, 238, .9); - --at-color-deep: rgba(231, 231, 231, .85); - --at-color-sub: rgba(231, 231, 231, .9); - --at-color-grey: rgba(238, 238, 238, .5); - --at-color-meta: #bfbfbfde; - --at-color-border: #2d3235; - --at-color-light: #687a86; - --at-color-bg: #1e2224; - --at-color-bg-transl: rgba(30, 34, 36, .95); - --at-color-bg-grey: #171718; - --at-color-bg-grey-transl: rgba(8, 8, 8, .95); - --at-color-bg-light: rgba(29, 161, 242, .1); - --at-color-main: #0083ff; - --at-color-red: #ff5652; - --at-color-pink: #fa5a57; - --at-color-yellow: #ff7c37; - --at-color-green: #4caf50; - --at-color-gradient: linear-gradient(180deg, rgba(30, 34, 36, 0), #1e2224); - --at-color-owo: rgba(74, 74, 74, .5) -} - -.atk-comment-wrap { - overflow: inherit; - position: relative; - border-bottom: none -} - -.atk-comment-wrap.atk-flash-once { - -webkit-animation: atkFlashOnce 1s ease-in-out 0s; - animation: atkFlashOnce 1s ease-in-out 0s -} - -@keyframes atkFlashOnce { - 0% { - background: rgba(0,131,255,.2) - } - - to { - background: transparent - } -} - -.atk-comment-wrap.atk-unread:before { - content: " "; - position: absolute; - left: 0; - top: 10%; - width: 3px; - height: 80%; - background: var(--at-color-main) -} - -.atk-comment-wrap.atk-openable { - cursor: pointer -} - -.atk-comment-wrap.atk-openable:hover { - background: var(--at-color-bg-grey) -} - -.atk-comment-wrap.atk-openable .atk-height-limit:after { - background: transparent!important -} - -.atk-comment-wrap:last-child { - border-bottom: none -} - -.atk-comment { - display: block; - padding: 12px 10px -} - -.atk-comment>.atk-avatar { - display: block; - padding: 2px 0; - float: left; - width: 48px; - height: 48px -} - -.atk-comment>.atk-avatar img { - width: 48px; - height: 48px; - border-radius: 50%; - transition: all .3s ease -} - -.atk-comment>.atk-avatar img.error:before { - width: 48px!important; - height: 48px!important; - border-radius: 3px -} - -.atk-comment>.atk-avatar img.error:after { - display: none -} - -.atk-comment>.atk-avatar img:hover { - transform: scale(1.2); - border-radius: 4px -} - -.atk-comment>.atk-main { - display: block; - margin-left: 63px -} - -.atk-comment>.atk-main>.atk-header { - line-height: 1.5; - font-size: 13px; - margin-bottom: .5em; - overflow: hidden; - position: relative; - display: flex; - flex-wrap: wrap; - align-items: center -} - -.atk-comment>.atk-main>.atk-header .atk-item { - display: flex; - align-items: center; - margin-top: 2px; - margin-bottom: 2px; - color: var(--at-color-meta) -} - -.atk-comment>.atk-main>.atk-header .atk-item:not(:last-child) { - margin-right: 6px -} - -.atk-comment>.atk-main>.atk-header .atk-item.atk-nick,.atk-comment>.atk-main>.atk-header .atk-item.atk-nick a { - font-size: 14px; - color: var(--at-color-main); - text-decoration: none; - font-weight: 700 -} - -.atk-comment>.atk-main>.atk-header .atk-item.atk-reply-at { - margin-left: 2px -} - -.atk-comment>.atk-main>.atk-header .atk-item.atk-reply-at>.atk-arrow:before { - content: ""; - vertical-align: middle; - transform: rotate(90deg); - border-bottom: 4px solid var(--at-color-grey); - border-left: 3px solid transparent; - border-right: 3px solid transparent; - display: inline-block; - margin-top: -1px -} - -.atk-comment>.atk-main>.atk-header .atk-item.atk-reply-at>.atk-nick { - color: var(--at-color-main); - cursor: pointer; - margin-left: 6px -} - -.atk-comment>.atk-main>.atk-header .atk-badge-wrap>*:last-child { - margin-right: 6px -} - -.atk-comment>.atk-main>.atk-header .atk-badge { - display: inline-block; - color: var(--at-color-meta); - background: var(--at-color-bg-grey); - padding: 0 6px; - line-height: 17px; - border-radius: 3px; - color: #fff -} - -.atk-comment>.atk-main>.atk-header .atk-badge:not(:last-child) { - margin-right: 6px -} - -.atk-comment>.atk-main>.atk-header .atk-pinned-badge { - display: inline-block; - color: var(--at-color-meta); - background: var(--at-color-bg-grey); - padding: 0 6px; - line-height: 17px; - border-radius: 3px; - color: #fff; - background: #f44336 -} - -.atk-comment>.atk-main>.atk-header .atk-pinned-badge:not(:last-child) { - margin-right: 6px -} - -.atk-comment>.atk-main>.atk-header .atk-ua { - display: inline-block; - color: var(--at-color-meta); - background: var(--at-color-bg-grey); - padding: 0 6px; - line-height: 17px; - border-radius: 3px -} - -.atk-comment>.atk-main>.atk-header .atk-ua:not(:last-child) { - margin-right: 6px -} - -@media only screen and (max-width: 768px) { - .atk-comment>.atk-main>.atk-header .atk-ua-wrap { - display:block; - margin-top: 5px - } -} - -.atk-comment>.atk-main>.atk-body { - display: block; - overflow: hidden; - position: relative -} - -.atk-comment>.atk-main>.atk-body img { - max-width: 100% -} - -.atk-comment>.atk-main>.atk-body>.atk-content { - word-break: break-all -} - -.atk-comment>.atk-main>.atk-body>.atk-content.atk-type-collapsed { - border: 3px solid var(--at-color-bg-grey); - border-bottom: 0; - padding: 5px 10px; - border-radius: 6px 6px 0 0; - margin-bottom: -5px -} - -.atk-comment>.atk-main>.atk-body>.atk-content>*:first-child { - margin-top: 0 -} - -.atk-comment>.atk-main>.atk-body>.atk-content>*:last-child { - margin-bottom: 0 -} - -.atk-comment>.atk-main>.atk-body>.atk-content .atk-height-limit-btn { - bottom: 5px -} - -.atk-comment>.atk-main>.atk-body>.atk-pending { - color: var(--at-color-meta); - margin: 3px 0; - font-size: 13px; - padding: 10px 18px; - display: block; - background: var(--at-color-bg-grey); - border-left: 4px solid #f44336 -} - -.atk-comment>.atk-main>.atk-body>.atk-reply-to { - padding: 5px 15px; - border-left: 3px solid var(--at-color-border); - margin-bottom: 10px; - position: relative; - margin-top: 10px -} - -.atk-comment>.atk-main>.atk-body>.atk-reply-to .atk-meta { - font-size: 15px -} - -.atk-comment>.atk-main>.atk-body>.atk-reply-to .atk-meta .atk-nick { - color: var(--at-color-main) -} - -.atk-comment>.atk-main>.atk-body>.atk-reply-to .atk-content { - margin-top: 5px -} - -.atk-comment>.atk-main>.atk-body>.atk-collapsed { - margin: 3px 0; - font-size: 13px; - padding: 10px 18px; - display: block; - background: var(--at-color-bg-grey); - border-radius: 6px -} - -.atk-comment>.atk-main>.atk-body>.atk-collapsed .atk-text { - color: var(--at-color-meta) -} - -.atk-comment>.atk-main>.atk-body>.atk-collapsed .atk-show-btn { - color: var(--at-color-main); - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - margin-left: 3px -} - -.atk-comment>.atk-main>.atk-body>.atk-collapsed .atk-show-btn:hover { - color: var(--at-color-main) -} - -.atk-comment>.atk-main>.atk-footer { - margin-top: 12px -} - -.atk-comment>.atk-main>.atk-footer .atk-actions { - display: flex; - flex-direction: row; - align-items: center; - flex-wrap: wrap; - margin-bottom: -15px -} - -.atk-comment>.atk-main>.atk-footer .atk-actions>span { - color: var(--at-color-meta); - font-size: 13px; - line-height: 15px; - display: inline-flex; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - margin-bottom: 15px -} - -.atk-comment>.atk-main>.atk-footer .atk-actions>span.atk-error,.atk-comment>.atk-main>.atk-footer .atk-actions>span.atk-error:hover { - color: var(--at-color-red) -} - -.atk-comment>.atk-main>.atk-footer .atk-actions>span:not(:last-child):not(.atk-hide) { - margin-right: 16px -} - -.atk-comment>.atk-main>.atk-footer .atk-actions>span:hover { - color: var(--at-color-deep) -} - -.atk-comment .atk-height-limit:after { - position: absolute; - z-index: 1; - display: block; - overflow: hidden; - width: 100%; - content: " "; - bottom: 0; - left: 0; - height: 80px; - background: var(--at-color-gradient) -} - -.atk-comment .atk-height-limit-btn { - z-index: 10; - position: absolute; - left: 50%; - bottom: 10px; - transform: translate(-50%); - cursor: pointer; - border: 1px solid var(--at-color-border); - border-radius: 6px; - background: var(--at-color-bg); - padding: 1px 20px; - font-size: 15px; - color: var(--at-color-meta); - -webkit-user-select: none; - -moz-user-select: none; - user-select: none -} - -.atk-comment .atk-height-limit-btn:hover { - background: var(--at-color-bg-grey) -} - -.atk-comment .atk-height-limit .atk-height-limit .atk-height-limit-btn { - display: none -} - -.atk-comment-children>.atk-comment-wrap { - margin-top: 10px; - border-left: 1px dashed transparent; - border-bottom-color: transparent -} - -.atk-comment-children>.atk-comment-wrap:not(:last-child) { - margin-bottom: 5px -} - -.atk-comment-children>.atk-comment-wrap>.atk-comment { - padding: 4px 0 -} - -.atk-comment-children>.atk-comment-wrap>.atk-comment>.atk-avatar img { - width: 36px; - height: 36px -} - -.atk-comment-children>.atk-comment-wrap>.atk-comment>.atk-main { - margin-left: 47px -} - -.artalk>.atk-list { - display: contents; - position: relative -} - -.artalk>.atk-list>.atk-list-header { - display: flex; - flex-direction: row; - padding: 10px 17px -} - -.artalk>.atk-list>.atk-list-header .atk-text { - display: inline-block -} - -.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap { - position: relative; - cursor: pointer -} - -.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap .atk-arrow-down-icon { - cursor: pointer; - vertical-align: middle; - border-top: 5px solid var(--at-color-grey); - border-left: 3px solid transparent; - border-right: 3px solid transparent; - margin-top: -1px; - margin-left: .8rem; - display: inline-block -} - -.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap:hover .atk-dropdown { - display: block -} - -.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap .atk-dropdown { - z-index: 888; - display: none; - height: auto!important; - max-height: calc(100vh - 2.7rem); - overflow-y: auto; - position: absolute; - top: 100%; - right: 0; - width: 100%; - background-color: var(--at-color-bg); - padding: .6rem 0; - border: 1px solid var(--at-color-border); - text-align: center; - border-radius: 6px; - white-space: nowrap; - margin: 0; - list-style: none -} - -.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap .atk-dropdown-item span,.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap .atk-dropdown-item a { - display: block; - line-height: 2rem; - position: relative; - border-bottom: none; - font-weight: 400; - padding: 0 1.5rem -} - -.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap .atk-dropdown-item span:hover,.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap .atk-dropdown-item a:hover { - color: var(--at-color-main) -} - -.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap .atk-dropdown-item.active span,.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap .atk-dropdown-item a { - color: var(--at-color-main) -} - -.artalk>.atk-list>.atk-list-header .atk-comment-count { - font-size: 15px -} - -.artalk>.atk-list>.atk-list-header .atk-comment-count .atk-comment-count-num { - font-size: 22px; - margin-right: 4px -} - -.artalk>.atk-list>.atk-list-header .atk-right-action { - display: flex; - flex: 1; - flex-direction: row; - align-items: center; - justify-content: flex-end -} - -.artalk>.atk-list>.atk-list-header .atk-right-action>span { - font-size: 14px; - color: var(--at-color-meta); - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - position: relative -} - -.artalk>.atk-list>.atk-list-header .atk-right-action>span.atk-on,.artalk>.atk-list>.atk-list-header .atk-right-action>span.atk-on * { - color: var(--at-color-main) -} - -.artalk>.atk-list>.atk-list-header .atk-right-action>span:not(:last-child):not(.atk-hide) { - margin-right: 10px; - padding-right: 10px -} - -.artalk>.atk-list>.atk-list-header .atk-right-action>span .atk-unread-badge { - position: absolute; - top: -5px; - left: -6px; - color: #fff; - background: var(--at-color-pink); - text-align: center; - min-width: 16px; - height: 16px; - padding: 0 3px; - border-radius: 8px; - line-height: 16px; - font-size: 12px -} - -.artalk>.atk-list>.atk-list-footer { - z-index: 1; - position: absolute; - bottom: 5px; - right: 0 -} - -@media only screen and (max-width: 768px) { - .artalk>.atk-list>.atk-list-footer { - position:relative; - margin-top: 10px; - text-align: center - } -} - -.artalk>.atk-list>.atk-list-footer .atk-copyright { - display: block; - font-size: 12px; - color: var(--at-color-meta); - padding-right: 15px; - margin-top: 5px -} - -.artalk>.atk-list>.atk-list-footer .atk-copyright a { - color: var(--at-color-main); - text-decoration: none -} - -.atk-list-no-comment { - text-align: center; - height: 150px; - line-height: 150px; - display: block; - font-size: 19px -} - -.atk-list-read-more { - border-top: 1px dashed var(--at-color-border); - margin-top: 28px; - padding-bottom: 25px -} - -@media only screen and (max-width: 768px) { - .atk-list-read-more { - padding-bottom:10px - } -} - -.atk-list-read-more.atk-err .atk-text { - color: var(--at-color-red)!important -} - -.atk-list-read-more .atk-list-read-more-inner { - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - padding: 0 15px; - font-size: 14px; - border-radius: 6px; - border: 1px solid transparent; - display: flex; - height: 30px; - flex-direction: row; - place-content: center; - align-items: center; - width: 120px; - margin: -15px auto 0; - background: var(--at-color-bg); - border-color: var(--at-color-border) -} - -.atk-list-read-more .atk-list-read-more-inner>.atk-loading-icon { - height: 15px; - width: 15px -} - -.atk-list-read-more .atk-list-read-more-inner>.atk-text { - color: var(--at-color-meta) -} - -.atk-list-read-more .atk-list-read-more-inner:hover { - background: var(--at-color-bg-grey) -} - -.atk-pagination { - display: flex; - flex-direction: row; - justify-content: center; - padding: 10px 0; - position: relative -} - -.atk-pagination>.atk-btn,.atk-pagination>.atk-input { - font-size: 15px; - height: 30px; - border: 1px solid var(--at-color-border); - border-radius: 3px; - padding: 0 5px; - text-align: center; - background: var(--at-color-bg) -} - -.atk-pagination>.atk-btn { - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - width: 70px; - cursor: pointer; - display: flex; - justify-content: center; - align-items: center -} - -.atk-pagination>.atk-btn:hover { - background: var(--at-color-bg-grey) -} - -.atk-pagination>.atk-btn.atk-disabled { - color: var(--at-color-sub) -} - -.atk-pagination>.atk-btn.atk-disabled:hover { - cursor: default; - background: initial -} - -.atk-pagination>.atk-input { - background: transparent; - color: var(--at-color-font); - font-size: 18px; - width: 60px; - outline: none -} - -.atk-pagination>.atk-input:focus { - border-color: var(--at-color-main) -} - -.atk-pagination>*:not(:last-child) { - margin-right: 10px -} - -.atk-main-editor { - z-index: 5; - position: relative; - background: var(--at-color-bg); - border: 1px solid var(--at-color-border); - border-radius: 6px; - margin-bottom: 10px -} - -@media only screen and (max-width: 768px) { - .atk-main-editor { - margin-bottom:7px - } -} - -.atk-main-editor>.atk-header { - display: flex; - flex-direction: row; - padding: 10px 14px 0 -} - -.atk-main-editor>.atk-header .label { - display: contents -} - -.atk-main-editor>.atk-header input { - flex: 1; - width: 100%; - font-size: 14px; - background: transparent; - border: 2px solid transparent; - border-radius: 3px; - padding: 6px 5px; - resize: none; - outline: none -} - -.atk-main-editor>.atk-header input:not(:last-child) { - margin-right: 2px -} - -.atk-main-editor>.atk-textarea-wrap { - position: relative -} - -.atk-main-editor>.atk-textarea-wrap>.atk-textarea { - display: block; - overflow: hidden; - color: var(--at-color-font); - font-size: 15px; - background-color: var(--at-color-bg); - border: 2px solid transparent; - border-radius: 3px; - width: 100%; - min-height: 120px; - margin-top: 2px; - padding: 10px 20px; - resize: none; - word-wrap: break-word; - outline: none -} - -.atk-main-editor>.atk-textarea-wrap>.atk-comment-closed { - pointer-events: none; - color: var(--at-color-meta); - font-size: 12px; - background-color: var(--at-color-bg); - border-top: 1px solid var(--at-color-border); - padding: 5px 15px; - margin-top: 10px -} - -.atk-main-editor>.atk-textarea-wrap>.atk-send-reply { - z-index: 2; - position: absolute; - right: 7px; - bottom: 2px; - max-width: calc(100% - 20px); - height: 30px; - line-height: 30px; - font-size: 14px; - background: var(--at-color-bg-grey-transl); - padding: 0 30px 0 10px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - cursor: pointer; - border-radius: 3px -} - -@media screen and (max-width: 500px) { - .atk-main-editor>.atk-textarea-wrap>.atk-send-reply { - position:absolute; - right: 6px; - bottom: 6px - } -} - -.atk-main-editor>.atk-textarea-wrap>.atk-send-reply .atk-cancel { - position: absolute; - right: 0; - bottom: 0; - height: 30px; - text-align: center; - width: 30px; - line-height: 30px; - font-weight: 700 -} - -.atk-main-editor>.atk-textarea-wrap>.atk-send-reply .atk-cancel:hover { - color: var(--at-color-deep) -} - -.atk-main-editor>.atk-plug-panel-wrap { - overflow: hidden; - -webkit-animation: .3s both atkFadeIn; - animation: .3s both atkFadeIn; - transition: .2s height ease-in-out; - display: contents -} - -.atk-main-editor>.atk-bottom { - display: flex; - flex-direction: row; - justify-content: space-between; - padding: 5px -} - -.atk-main-editor>.atk-bottom>.atk-item { - display: flex; - flex-direction: row; - align-items: center -} - -.atk-main-editor>.atk-bottom .atk-plug-btn { - padding: 0 8px; - line-height: 24px; - cursor: pointer; - color: var(--at-color-grey); - font-size: 14px; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - border-radius: 3px; - display: inline-flex; - align-content: center; - justify-content: center -} - -.atk-main-editor>.atk-bottom .atk-plug-btn:not(:last-child) { - margin-right: 2px; - border-right: 1px solid var(--at-color-border) -} - -.atk-main-editor>.atk-bottom .atk-plug-btn:hover { - background: var(--at-color-bg-grey) -} - -.atk-main-editor>.atk-bottom .atk-plug-btn.active { - color: var(--at-color-main) -} - -.atk-main-editor>.atk-bottom .atk-plug-btn.active svg.markdown path { - fill: var(--at-color-main) -} - -.atk-main-editor>.atk-bottom .atk-plug-btn i { - color: var(--at-color-grey); - display: inline-flex; - vertical-align: sub; - margin-left: 4px -} - -.atk-main-editor>.atk-bottom .atk-plug-btn i svg.markdown path { - fill: var(--at-color-grey) -} - -.atk-main-editor>.atk-notify-wrap { - z-index: 9; - position: absolute; - right: -2px; - bottom: 40px; - width: 225px; - opacity: .83 -} - - - -.atk-main-editor>.atk-bottom .atk-send-btn { - background: var(--at-color-main); - color: #fff; - font-size: 14px; - border: none; - margin: 0; - height: 30px; - width: 8em; - cursor: pointer; - transition: opacity .3s ease-in-out; - outline: none; - border-radius: 3px -} - -.atk-main-editor>.atk-textarea-wrap .atk-send-btn:active { - opacity: .9 -} - -.atk-header input:focus-within { - border-bottom: 1px solid var(--at-color-border) -} - -.atk-sidebar-layer { - position: fixed; - z-index: 99999; - top: 10%; - left: 20%; - width: 60%; - height: 80%; - background: var(--at-color-bg); - transition: transform .45s cubic-bezier(.23,1,.32,1) 0ms; - transform: translateY(120%); - border-radius: 12px; - padding: 10px 0 -} - -@media only screen and (max-width: 600px) { - .atk-sidebar-layer { - width:100%; - height: 100%; - left: 0; - top: 0; - border-radius: 0 - } -} - -.atk-sidebar-layer .atk-sidebar-inner { - position: relative; - height: 100% -} - -.atk-sidebar-layer .atk-sidebar-header { - position: absolute; - top: 0; - right: 0; - display: flex; - flex-direction: row; - align-items: center; - z-index: 99999 -} - -.atk-sidebar-layer .atk-sidebar-header .atk-sidebar-close { - display: flex; - flex-direction: column; - width: 60px; - height: 60px; - align-items: center; - place-content: center; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - margin-left: 10px -} - -.atk-sidebar-layer .atk-sidebar-header .atk-sidebar-close:hover .atk-icon-close { - background-color: #e81123e6 -} - -.atk-sidebar-layer .atk-sidebar-iframe-wrap { - height: 100%; - position: relative -} - -.atk-sidebar-layer .atk-sidebar-iframe-wrap iframe { - border: 0; - width: 100%; - height: 100% -} - -.atk-sidebar-layer .atk-sidebar-iframe-wrap .atk-err-alert { - z-index: 9999; - top: 50%; - left: 50%; - transform: translate(-50%,-50%); - position: absolute; - background: var(--at-color-bg); - padding: 40px 30px; - width: 80%; - text-align: center; - border-radius: 4px -} - -.atk-sidebar-layer .atk-sidebar-iframe-wrap .atk-err-alert .atk-title { - font-size: 1.4em; - margin-bottom: 20px; - color: var(--at-color-font) -} - -.atk-sidebar-layer .atk-sidebar-iframe-wrap .atk-err-alert .atk-text { - color: var(--at-color-font) -} - -.atk-sidebar-layer .atk-sidebar-iframe-wrap .atk-err-alert .atk-text span { - cursor: pointer; - color: var(--at-color-main) -} - -.artalk { - position: relative; - width: 100%; - min-height: 200px -} - -.artalk,.atk-layer-wrap { - color: var(--at-color-font); - word-wrap: break-word; - word-break: break-all -} - -.artalk *,.atk-layer-wrap * { - box-sizing: border-box -} - -.artalk input,.artalk textarea,.artalk button,.artalk optgroup,.artalk select,.atk-layer-wrap input,.atk-layer-wrap textarea,.atk-layer-wrap button,.atk-layer-wrap optgroup,.atk-layer-wrap select { - font-family: inherit; - color: inherit; - font-size: inherit -} - -.artalk code,.atk-layer-wrap code { - font-family: source code pro,Consolas,Monaco,Menlo,sans-serif; - margin: 0 .05em; - padding: 0 .4em; - display: inline-block; - vertical-align: middle; - font-size: .9em; - background-color: var(--at-color-bg-grey); - color: var(--at-color-font); - border-radius: 2px -} - -.artalk pre,.atk-layer-wrap pre { - margin: 10px 0 0; - padding: 0; - line-height: 0 -} - -.artalk pre code,.atk-layer-wrap pre code { - line-height: 1.6em; - display: block; - padding: 10px 15px; - white-space: pre-wrap!important; - background-color: var(--at-color-bg-grey); - color: var(--at-color-font); - margin: 0 -} - -.artalk pre code *,.atk-layer-wrap pre code * { - font-family: source code pro,Consolas,Monaco,Menlo,sans-serif -} - -.artalk pre code:before,.atk-layer-wrap pre code:before { - position: absolute; - font-size: 13px; - padding: 4px 8px; - right: 0; - top: 0 -} - - -.artalk a,.atk-layer-wrap a { - color: var(--at-color-main); - text-decoration: none -} - -.artalk blockquote,.atk-layer-wrap blockquote { - position: static; - margin: 10px 0; - padding: 10px 20px; - background: var(--at-color-bg-grey); - border-left: 4px solid #687a86; - color: var(--at-color-font) -} - -.artalk p:first-child,.atk-layer-wrap p:first-child { - margin-top: 0 -} - -.artalk p:last-child,.atk-layer-wrap p:last-child { - margin-bottom: 0 -} - -.artalk img,.atk-layer-wrap img { - max-width: 100% -} - -.artalk table,.atk-layer-wrap table { - width: 100%; - border-collapse: collapse; - border-spacing: 0; - margin-bottom: 1.5em; - font-size: .96em -} - -.artalk td,.atk-layer-wrap td,.artalk th,.atk-layer-wrap th { - text-align: left; - padding: 4px 8px 4px 10px; - border: 1px solid var(--at-color-border) -} - -.artalk td,.atk-layer-wrap td { - vertical-align: top -} - -.artalk tr:nth-child(even),.atk-layer-wrap tr:nth-child(even) { - background-color: var(--at-color-bg-grey) -} - -.artalk ul,.atk-layer-wrap ul { - list-style: disc -} - -.artalk ol,.atk-layer-wrap ol { - list-style: decimal -} - -.artalk li+li,.atk-layer-wrap li+li { - margin-top: 8px -} - -.artalk li>ol,.atk-layer-wrap li>ol,.artalk li>ul,.atk-layer-wrap li>ul { - margin: 8px 0 0 -} - -.atk-hide { - display: none!important -} - -.atk-full-layer,.atk-loading,.atk-error-layer,.atk-layer-dialog-wrap { - width: 100%; - height: 100%; - position: absolute; - top: 0; - left: 0; - background: var(--at-color-bg); - z-index: 10; - align-items: center; - justify-content: center; - flex-flow: column; - display: flex -} - -.atk-loading { - z-index: 11 -} - -.atk-loading-spinner { - position: relative; - width: 50px; - height: 50px -} - -.atk-loading-spinner svg { - -webkit-animation: atkRotate 2s linear infinite; - animation: atkRotate 2s linear infinite; - transform-origin: center center; - width: 100%; - height: 100%; - position: absolute; - top: 0; - left: 0 -} - -.atk-loading-spinner svg circle { - stroke-dasharray: 1,200; - stroke-dashoffset: 0; - -webkit-animation: atkDash 1.5s ease-in-out infinite,atkColor 6s ease-in-out infinite; - animation: atkDash 1.5s ease-in-out infinite,atkColor 6s ease-in-out infinite; - stroke-linecap: round -} - -@-webkit-keyframes atkRotate { - to { - transform: rotate(360deg) - } -} - -@keyframes atkRotate { - to { - transform: rotate(360deg) - } -} - -@-webkit-keyframes atkDash { - 0% { - stroke-dasharray: 1,200; - stroke-dashoffset: 0 - } - - 50% { - stroke-dasharray: 89,200; - stroke-dashoffset: -35px - } - - to { - stroke-dasharray: 89,200; - stroke-dashoffset: -124px - } -} - -@keyframes atkDash { - 0% { - stroke-dasharray: 1,200; - stroke-dashoffset: 0 - } - - 50% { - stroke-dasharray: 89,200; - stroke-dashoffset: -35px - } - - to { - stroke-dasharray: 89,200; - stroke-dashoffset: -124px - } -} - -@-webkit-keyframes atkColor { - 0%,to { - stroke: #ff5652 - } - - 40% { - stroke: #2196f3 - } - - 66% { - stroke: #32c787 - } - - 80%,90% { - stroke: #ffc107 - } -} - -@keyframes atkColor { - 0%,to { - stroke: #ff5652 - } - - 40% { - stroke: #2196f3 - } - - 66% { - stroke: #32c787 - } - - 80%,90% { - stroke: #ffc107 - } -} - -@-webkit-keyframes atkLoadingIconRotate { - 0% { - transform: rotate(0) - } - - to { - transform: rotate(360deg) - } -} - -@keyframes atkLoadingIconRotate { - 0% { - transform: rotate(0) - } - - to { - transform: rotate(360deg) - } -} - -.atk-loading-icon { - width: 18px; - height: 18px; - box-sizing: border-box; - border: solid 1px transparent; - border-top-color: #29d; - border-left-color: #29d; - border-radius: 50%; - -webkit-animation: atkLoadingIconRotate .4s linear infinite; - animation: atkLoadingIconRotate .4s linear infinite -} - -.atk-fade-in { - -webkit-animation: atkFadeIn both .3s; - animation: atkFadeIn both .3s -} - -.atk-fade-out { - -webkit-animation: atkFadeOut both .2s; - animation: atkFadeOut both .2s -} - -.atk-rotate { - -webkit-animation: atkRotate 2s linear infinite; - animation: atkRotate 2s linear infinite -} - -@-webkit-keyframes atkFadeIn { - 0% { - opacity: 0 - } - - to { - opacity: 1 - } -} - -@keyframes atkFadeIn { - 0% { - opacity: 0 - } - - to { - opacity: 1 - } -} - -@-webkit-keyframes atkFadeOut { - to { - opacity: 0 - } -} - -@keyframes atkFadeOut { - to { - opacity: 0 - } -} - -@keyframes atkRotate { - 0% { - transform: rotate(0) - } - - to { - transform: rotate(360deg) - } -} - -i.atk-icon { - width: 20px; - height: 20px; - background-color: var(--at-color-deep); - background-size: contain; - background-repeat: no-repeat; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain -} - -.atk-icon-sync { - -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4.99133 4.87635C2.22512 7.64257 2.22512 12.1275 4.99133 14.8937C6.04677 15.9491 7.3524 16.6019 8.71732 16.8519' stroke='%234E5969' stroke-width='2'/%3E%3Cpath d='M14.4179 15.4815L15.0072 14.8922C17.7734 12.126 17.7734 7.64107 15.0072 4.87486C13.9518 3.81942 12.6461 3.16668 11.2812 2.91664' stroke='%234E5969' stroke-width='2'/%3E%3Cpath d='M6.17106 4.99252L5.58181 4.40327L4.99255 3.81401H6.17106V4.99252Z' fill='%23C4C4C4' stroke='%234E5969' stroke-width='2'/%3E%3Cpath d='M13.8299 15.0084L14.4192 15.5976L15.0084 16.1869H13.8299V15.0084Z' fill='%23C4C4C4' stroke='%234E5969' stroke-width='2'/%3E%3C/svg%3E"); - mask-image: url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4.99133 4.87635C2.22512 7.64257 2.22512 12.1275 4.99133 14.8937C6.04677 15.9491 7.3524 16.6019 8.71732 16.8519' stroke='%234E5969' stroke-width='2'/%3E%3Cpath d='M14.4179 15.4815L15.0072 14.8922C17.7734 12.126 17.7734 7.64107 15.0072 4.87486C13.9518 3.81942 12.6461 3.16668 11.2812 2.91664' stroke='%234E5969' stroke-width='2'/%3E%3Cpath d='M6.17106 4.99252L5.58181 4.40327L4.99255 3.81401H6.17106V4.99252Z' fill='%23C4C4C4' stroke='%234E5969' stroke-width='2'/%3E%3Cpath d='M13.8299 15.0084L14.4192 15.5976L15.0084 16.1869H13.8299V15.0084Z' fill='%23C4C4C4' stroke='%234E5969' stroke-width='2'/%3E%3C/svg%3E") -} - -.atk-icon-del { - background-color: var(--at-color-red)!important; - -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='22' height='22' viewBox='0 0 22 22' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.29167 5.04166L4.81251 5.04166M4.81251 5.04166L4.81251 18.3333C4.81251 18.5865 5.01771 18.7917 5.27084 18.7917L16.7292 18.7917C16.9823 18.7917 17.1875 18.5865 17.1875 18.3333V5.04166M4.81251 5.04166L7.33334 5.04166M17.1875 5.04166L19.7083 5.04166M17.1875 5.04166L14.6667 5.04166M7.33334 5.04166V3.20833L14.6667 3.20833V5.04166M7.33334 5.04166L14.6667 5.04166' stroke='%23D06565' stroke-width='2'/%3E%3Cpath d='M9.16667 8.25V15.125M12.8333 8.25V15.125' stroke='%23D06565' stroke-width='2'/%3E%3C/svg%3E"); - mask-image: url("data:image/svg+xml,%3Csvg width='22' height='22' viewBox='0 0 22 22' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.29167 5.04166L4.81251 5.04166M4.81251 5.04166L4.81251 18.3333C4.81251 18.5865 5.01771 18.7917 5.27084 18.7917L16.7292 18.7917C16.9823 18.7917 17.1875 18.5865 17.1875 18.3333V5.04166M4.81251 5.04166L7.33334 5.04166M17.1875 5.04166L19.7083 5.04166M17.1875 5.04166L14.6667 5.04166M7.33334 5.04166V3.20833L14.6667 3.20833V5.04166M7.33334 5.04166L14.6667 5.04166' stroke='%23D06565' stroke-width='2'/%3E%3Cpath d='M9.16667 8.25V15.125M12.8333 8.25V15.125' stroke='%23D06565' stroke-width='2'/%3E%3C/svg%3E") -} - -.atk-icon-edit { - -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='16' height='17' viewBox='0 0 16 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M9.70618 4.08515L12.6081 7.06376M1.00041 13.021L11.7376 2L14.6392 4.97861L3.90274 16H1L1.00041 13.021Z' stroke='%234E5969' stroke-width='1.5'/%3E%3C/svg%3E"); - mask-image: url("data:image/svg+xml,%3Csvg width='16' height='17' viewBox='0 0 16 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M9.70618 4.08515L12.6081 7.06376M1.00041 13.021L11.7376 2L14.6392 4.97861L3.90274 16H1L1.00041 13.021Z' stroke='%234E5969' stroke-width='1.5'/%3E%3C/svg%3E") -} - -.atk-icon-no,.atk-icon-close { - -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25' viewBox='0 0 25 25' fill='none'%3E%3Cpath d='M19.8657 5.13431L12.5 12.5L5.13431 19.8657' stroke='%234E5969'/%3E%3Cpath d='M5.13431 5.13432L12.5 12.5L19.8657 19.8657' stroke='%234E5969'/%3E%3C/svg%3E"); - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25' viewBox='0 0 25 25' fill='none'%3E%3Cpath d='M19.8657 5.13431L12.5 12.5L5.13431 19.8657' stroke='%234E5969'/%3E%3Cpath d='M5.13431 5.13432L12.5 12.5L19.8657 19.8657' stroke='%234E5969'/%3E%3C/svg%3E") -} - -.atk-icon-yes { - -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.7071 5.75533L9.92197 17.5404L3.29285 10.9113' stroke='%234E5969'/%3E%3C/svg%3E"); - mask-image: url("data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.7071 5.75533L9.92197 17.5404L3.29285 10.9113' stroke='%234E5969'/%3E%3C/svg%3E") -} - -.atk-icon-plus { - -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.08331 10H17.9166' stroke='%234E5969' stroke-width='2'/%3E%3Cpath d='M10 2.08334L10 17.9167' stroke='%234E5969' stroke-width='2'/%3E%3C/svg%3E"); - mask-image: url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.08331 10H17.9166' stroke='%234E5969' stroke-width='2'/%3E%3Cpath d='M10 2.08334L10 17.9167' stroke='%234E5969' stroke-width='2'/%3E%3C/svg%3E") -} - -.atk-error-layer { - background-color: var(--at-color-bg-transl) -} - -.atk-error-layer .atk-error-title { - color: var(--at-color-red) -} - -.atk-error-layer .atk-warn-title { - color: var(--at-color-yellow) -} - -.atk-error-layer .atk-error-title,.atk-error-layer .atk-warn-title { - display: inline-block; - padding: 0 15px; - margin-bottom: 20px; - font-size: 20px; - letter-spacing: -.5px -} - -.atk-error-layer .atk-error-text { - text-align: center; - padding: 0 20px -} - -.atk-error-layer .atk-error-text * { - color: var(--at-color-deep) -} - -.atk-error-layer .atk-error-text a { - color: var(--at-color-meta) -} - -.atk-layer-dialog-wrap { - background-color: var(--at-color-bg-transl) -} - -.atk-layer-dialog-wrap>.atk-layer-dialog { - width: 25% -} - -.atk-layer-dialog-wrap>.atk-layer-dialog>.atk-layer-dialog-content .atk-captcha-img { - cursor: pointer; - width: 170px; - height: auto; - margin-right: 10px; - padding-right: 10px; - border-right: 1px solid var(--at-color-border); - vertical-align: bottom -} - -.atk-layer-dialog-wrap>.atk-layer-dialog>.atk-layer-dialog-content input { - width: 100%; - line-height: 34px; - background-color: var(--at-color-bg); - border: 1px solid var(--at-color-border); - border-radius: 3px; - outline: none; - padding: 0 6px; - display: block; - margin-top: 10px; - margin-bottom: 5px; - text-align: center -} - -.atk-layer-dialog-wrap>.atk-layer-dialog>.atk-layer-dialog-actions { - display: flex; - flex-direction: row -} - -.atk-layer-dialog-wrap>.atk-layer-dialog>.atk-layer-dialog-actions button { - flex: 1; - display: block; - cursor: pointer; - border: 1px solid var(--at-color-main); - background: transparent; - color: var(--at-color-main); - border-radius: 3px; - padding: 0 15px; - line-height: 30px; - outline: none -} - -.atk-layer-dialog-wrap>.atk-layer-dialog>.atk-layer-dialog-actions button:active { - color: #fff; - background: var(--at-color-main) -} - -.atk-layer-dialog-wrap>.atk-layer-dialog>.atk-layer-dialog-actions button:not(:last-child) { - margin-right: 5px -} - -.atk-layer-dialog-wrap>.atk-layer-dialog>.atk-layer-dialog-actions button.error { - color: #fff; - background: #ff5652; - border-color: #ff5652 -} - -.atk-layer-dialog-wrap>.atk-layer-dialog .atk-checker-iframe-wrap { - position: fixed; - z-index: 999998; - left: 0; - top: 0; - height: 100vh; - width: 100vw -} - -.atk-layer-dialog-wrap>.atk-layer-dialog .atk-checker-iframe-wrap>iframe { - width: 100%; - height: 100%; - border: 0 -} - -.atk-layer-dialog-wrap>.atk-layer-dialog .atk-checker-iframe-wrap .atk-close-btn { - z-index: 999999; - position: fixed; - top: 20px; - right: 20px; - display: flex; - flex-direction: column; - width: 50px; - height: 50px; - align-items: center; - place-content: center; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - margin-left: 10px -} - -.atk-layer-dialog-wrap>.atk-layer-dialog .atk-checker-iframe-wrap .atk-close-btn:hover .atk-icon-close { - background-color: #e81123e6 -} - -@media only screen and (max-width: 768px) { - .atk-layer-dialog-wrap>.atk-layer-dialog { - width:90%!important - } -} - -.atk-notify { - display: block; - overflow: hidden; - background-color: #2c2c2c; - color: #fff; - border-radius: 3px; - cursor: pointer; - font-size: 14px; - padding: 5px 15px -} - -.atk-notify:not(:last-child) { - margin-bottom: 3px -} - -.atk-notify .atk-notify-content { - color: #fff -} - -.atk-layer-wrap .atk-layer-mask { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 99998; - background: rgba(0,0,0,.3); - -webkit-backdrop-filter: blur(10px); - backdrop-filter: blur(10px) -} - -.atk-layer-wrap .atk-layer-item { - position: fixed; - z-index: 99999; - top: 0; - right: 0; - width: 100%; - height: 100% -} - -.atk-common-action-btn.atk-btn-confirm,.atk-common-action-btn.atk-btn-warn { - color: var(--at-color-yellow)!important -} - -.atk-common-action-btn.atk-btn-error { - color: var(--at-color-red)!important -} - -.atk-common-action-btn.atk-btn-success { - color: var(--at-color-green)!important -} - -img[atk-emoticon] { - width: 3em; - height: auto; - vertical-align: middle; - max-height: 60px; - display: initial -} - -#owo-big { - position: fixed; - align-items: center; - background-color: var(--at-color-owo); - -webkit-backdrop-filter: saturate(200%) blur(6px); - backdrop-filter: saturate(200%) blur(6px); - border: 1px solid var(--at-color-bg-light); - border-radius: 12px; - box-shadow: 0 0 12px 4px #0000000d; - z-index: 9999; - display: none; - transform: translateY(-105%); - overflow: hidden; - -webkit-animation: owoIn .3s cubic-bezier(.42,0,.3,1.11); - animation: owoIn .3s cubic-bezier(.42,0,.3,1.11); - padding: 16px; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none -} - -#owo-big img { - width: 100%; - border-radius: 10px -} - -#owo-big p { - color: var(--at-color-meta); - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - text-align: center; - font-size: 12px; - margin: 0 -} - -#owo-big p { - margin-top: -14px!important; -} - -@-webkit-keyframes owoIn { - 0% { - transform: translateY(-95%); - opacity: 0 - } - - to { - transform: translateY(-105%); - opacity: 1 - } -} - -@keyframes owoIn { - 0% { - transform: translateY(-95%); - opacity: 0 - } - - to { - transform: translateY(-105%); - opacity: 1 - } -} - -.atk-editor-plug-emoticons { - position: absolute; - top: 98%; - left: 1rem; - border: 1px solid var(--at-color-border); - background-color: var(--at-color-bg); - border-radius: 12px; - box-shadow: 0 0 12px 4px #0000000d; - height: 232px; - width: 100%; - max-width: 468px -} - -@media screen and (max-width: 840px) { - .atk-editor-plug-emoticons { - max-width:100%; - left: 0 - } -} - -.atk-editor-plug-emoticons>.atk-grp-wrap { - overflow-y: scroll; - overflow-x: hidden; - width: 100%; - margin: 8px -5px !important; - max-height: 197px; -} - -.atk-editor-plug-emoticons>.atk-grp-wrap::-webkit-scrollbar { - width: 4px; - height: 4px; - background: transparent -} - -.atk-editor-plug-emoticons>.atk-grp-wrap::-webkit-scrollbar-thumb,.atk-editor-plug-emoticons>.atk-grp-wrap::-webkit-scrollbar-thumb:window-inactive { - background: rgba(86,86,86,.3) -} - -.atk-editor-plug-emoticons>.atk-grp-wrap::-webkit-scrollbar-thumb:vertical:hover { - background: rgba(65,74,82,.77) -} - -.atk-editor-plug-emoticons>.atk-grp-wrap::-webkit-scrollbar-thumb:vertical:active { - background: rgba(41,47,53,.77) -} - -.atk-editor-plug-emoticons>.atk-grp-wrap>.atk-grp { - display: flex; - flex-wrap: wrap; - flex-direction: row; - padding: 5px 10px 35px -} - -.atk-editor-plug-emoticons>.atk-grp-wrap>.atk-grp[data-type=image]>.atk-item { - height: 63px; - width: 63px -} - -.atk-editor-plug-emoticons>.atk-grp-wrap>.atk-grp>.atk-item { - display: flex; - align-items: center; - justify-content: center; - padding: 5px; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - border-radius: 3px; - font-size: 16px; - min-width: 35px -} - -.atk-editor-plug-emoticons>.atk-grp-wrap>.atk-grp>.atk-item>img { - max-height: 100%; - width: auto -} - -.atk-editor-plug-emoticons>.atk-grp-wrap>.atk-grp>.atk-item:hover { - background: var(--at-color-bg-grey) -} - -.atk-editor-plug-emoticons>.atk-grp-switcher { - position: absolute; - margin: 0; - padding: 0; - font-size: 0; - width: 100%; - background: var(--heo-background); - border-bottom-right-radius: 8px; - border-bottom-left-radius: 8px; -} - -.atk-editor-plug-emoticons>.atk-grp-switcher>span { - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - padding: 0 10px; - line-height: 30px; - float: left; - display: block; - cursor: pointer; - font-size: 14px; - border-bottom-right-radius: 10px; - border-bottom-left-radius: 10px -} - -.atk-editor-plug-emoticons>.atk-grp-switcher>span:hover,.atk-editor-plug-emoticons>.atk-grp-switcher>span.active { - background: var(--at-color-bg-grey) -} - -.atk-editor-plug-preview { - overflow-y: auto; - overflow-x: hidden; - height: 100%; - width: 100%; - padding: 10px 15px; - border-top: 1px solid var(--at-color-border); - border-bottom: 1px solid var(--at-color-border); - max-height: 200px; - display: inline-block; - margin-top: 5px -} +@keyframes atkFlashOnce{0%{background:rgba(0,131,255,.2)}to{background:0 0}}@-webkit-keyframes atkRotate{to{transform:rotate(360deg)}}@-webkit-keyframes atkDash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes atkDash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@-webkit-keyframes atkColor{0%,to{stroke:#ff5652}40%{stroke:#2196f3}66%{stroke:#32c787}80%,90%{stroke:#ffc107}}@keyframes atkColor{0%,to{stroke:#ff5652}40%{stroke:#2196f3}66%{stroke:#32c787}80%,90%{stroke:#ffc107}}@-webkit-keyframes atkLoadingIconRotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes atkLoadingIconRotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@-webkit-keyframes atkFadeIn{0%{opacity:0}to{opacity:1}}@keyframes atkFadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes atkFadeOut{to{opacity:0}}@keyframes atkFadeOut{to{opacity:0}}@keyframes atkRotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@-webkit-keyframes owoIn{0%{transform:translateY(-95%);opacity:0}to{transform:translateY(-105%);opacity:1}}@keyframes owoIn{0%{transform:translateY(-95%);opacity:0}to{transform:translateY(-105%);opacity:1}}#owo-big,#owo-big.atk-dark-mode,.artalk,.artalk.atk-dark-mode,.atk-layer-wrap,.atk-layer-wrap.atk-dark-mode{--at-color-bg-light:rgba(29, 161, 242, .1);--at-color-main:#0083ff;--at-color-red:#ff5652;--at-color-pink:#fa5a57;--at-color-yellow:#ff7c37;--at-color-green:#4caf50}#owo-big,.artalk,.atk-layer-wrap{--at-color-font:#2a2e2e;--at-color-deep:#2a2e2e;--at-color-sub:#757575;--at-color-grey:#747474;--at-color-meta:#697182;--at-color-border:#eceff2;--at-color-light:#4285f4;--at-color-bg:#FFF;--at-color-bg-transl:rgba(255, 255, 255, .94);--at-color-bg-grey:#F4F4F4;--at-color-bg-grey-transl:rgba(244, 244, 244, .75);--at-color-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255));--at-color-owo:rgba(255, 255, 255, .5)}#owo-big.atk-dark-mode,.artalk.atk-dark-mode,.atk-layer-wrap.atk-dark-mode{--at-color-font:rgba(238, 238, 238, .9);--at-color-deep:rgba(231, 231, 231, .85);--at-color-sub:rgba(231, 231, 231, .9);--at-color-grey:rgba(238, 238, 238, .5);--at-color-meta:#bfbfbfde;--at-color-border:#2d3235;--at-color-light:#687a86;--at-color-bg:#1e2224;--at-color-bg-transl:rgba(30, 34, 36, .95);--at-color-bg-grey:#171718;--at-color-bg-grey-transl:rgba(8, 8, 8, .95);--at-color-gradient:linear-gradient(180deg, rgba(30, 34, 36, 0), #1e2224);--at-color-owo:rgba(74, 74, 74, .5)}.atk-comment-wrap{overflow:inherit;position:relative;border-bottom:none}.atk-comment-wrap.atk-flash-once{-webkit-animation:atkFlashOnce 1s ease-in-out 0s;animation:atkFlashOnce 1s ease-in-out 0s}.atk-comment-wrap.atk-unread:before{content:" ";position:absolute;left:0;top:10%;width:3px;height:80%;background:var(--at-color-main)}.atk-comment-wrap.atk-openable{cursor:pointer}.atk-comment-wrap.atk-openable:hover{background:var(--at-color-bg-grey)}.atk-comment-wrap.atk-openable .atk-height-limit:after{background:0 0!important}.atk-comment-wrap:last-child{border-bottom:none}.atk-comment{display:block;padding:12px 10px}.atk-comment>.atk-avatar{display:block;padding:2px 0;float:left;width:48px;height:48px}.atk-comment>.atk-avatar img{width:48px;height:48px;border-radius:50%;transition:all .3s ease}.atk-comment>.atk-avatar img.error:before{width:48px!important;height:48px!important;border-radius:3px}.atk-comment>.atk-avatar img.error:after{display:none}.atk-comment>.atk-avatar img:hover{transform:scale(1.2);border-radius:4px}.atk-comment>.atk-main{display:block;margin-left:63px}.atk-comment>.atk-main>.atk-header{line-height:1.5;font-size:13px;margin-bottom:.5em;overflow:hidden;position:relative;display:flex;flex-wrap:wrap;align-items:center}.atk-comment>.atk-main>.atk-header .atk-item{display:flex;align-items:center;margin-top:2px;margin-bottom:2px;color:var(--at-color-meta)}.atk-comment>.atk-main>.atk-header .atk-item:not(:last-child){margin-right:6px}.atk-comment>.atk-main>.atk-header .atk-item.atk-nick,.atk-comment>.atk-main>.atk-header .atk-item.atk-nick a{font-size:14px;color:var(--at-color-main);text-decoration:none;font-weight:700}.atk-comment>.atk-main>.atk-header .atk-item.atk-reply-at{margin-left:2px}.atk-comment>.atk-main>.atk-header .atk-item.atk-reply-at>.atk-arrow:before{content:"";vertical-align:middle;transform:rotate(90deg);border-bottom:4px solid var(--at-color-grey);border-left:3px solid transparent;border-right:3px solid transparent;display:inline-block;margin-top:-1px}.atk-comment>.atk-main>.atk-header .atk-item.atk-reply-at>.atk-nick{color:var(--at-color-main);cursor:pointer;margin-left:6px}.atk-comment>.atk-main>.atk-header .atk-badge-wrap>:last-child{margin-right:6px}.atk-comment>.atk-main>.atk-header .atk-badge{display:inline-block;color:var(--at-color-meta);background:var(--at-color-bg-grey);padding:0 6px;line-height:17px;border-radius:3px;color:#fff}.atk-comment>.atk-main>.atk-header .atk-badge:not(:last-child),.atk-comment>.atk-main>.atk-header .atk-pinned-badge:not(:last-child),.atk-comment>.atk-main>.atk-header .atk-ua:not(:last-child){margin-right:6px}.atk-comment>.atk-main>.atk-header .atk-pinned-badge{color:#fff;background:#f44336}.atk-comment>.atk-main>.atk-header .atk-pinned-badge,.atk-comment>.atk-main>.atk-header .atk-ua{display:inline-block;color:var(--at-color-meta);background:var(--at-color-bg-grey);padding:0 6px;line-height:17px;border-radius:3px}@media only screen and (max-width:768px){.atk-comment>.atk-main>.atk-header .atk-ua-wrap{display:block;margin-top:5px}}.atk-comment>.atk-main>.atk-body{display:block;overflow:hidden;position:relative}.artalk img,.atk-comment>.atk-main>.atk-body img,.atk-layer-wrap img{max-width:100%}.atk-comment>.atk-main>.atk-body>.atk-content{word-break:break-all}.atk-comment>.atk-main>.atk-body>.atk-content.atk-type-collapsed{border:3px solid var(--at-color-bg-grey);border-bottom:0;padding:5px 10px;border-radius:6px 6px 0 0;margin-bottom:-5px}.artalk p:first-child,.atk-comment>.atk-main>.atk-body>.atk-content>:first-child,.atk-layer-wrap p:first-child{margin-top:0}.artalk p:last-child,.atk-comment>.atk-main>.atk-body>.atk-content>:last-child,.atk-layer-wrap p:last-child{margin-bottom:0}.atk-comment>.atk-main>.atk-body>.atk-content .atk-height-limit-btn{bottom:5px}.atk-comment>.atk-main>.atk-body>.atk-pending{color:var(--at-color-meta);margin:3px 0;font-size:13px;padding:10px 18px;display:block;background:var(--at-color-bg-grey);border-left:4px solid #f44336}.atk-comment>.atk-main>.atk-body>.atk-reply-to{padding:5px 15px;border-left:3px solid var(--at-color-border);margin-bottom:10px;position:relative;margin-top:10px}.atk-comment>.atk-main>.atk-body>.atk-reply-to .atk-meta{font-size:15px}.atk-comment>.atk-main>.atk-body>.atk-collapsed .atk-show-btn:hover,.atk-comment>.atk-main>.atk-body>.atk-reply-to .atk-meta .atk-nick{color:var(--at-color-main)}.atk-comment>.atk-main>.atk-body>.atk-reply-to .atk-content{margin-top:5px}.atk-comment>.atk-main>.atk-body>.atk-collapsed{margin:3px 0;font-size:13px;padding:10px 18px;display:block;background:var(--at-color-bg-grey);border-radius:6px}.atk-comment>.atk-main>.atk-body>.atk-collapsed .atk-text{color:var(--at-color-meta)}.atk-comment>.atk-main>.atk-body>.atk-collapsed .atk-show-btn{color:var(--at-color-main);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-left:3px}.atk-comment>.atk-main>.atk-footer{margin-top:12px}.atk-comment>.atk-main>.atk-footer .atk-actions{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;margin-bottom:-15px}.atk-comment>.atk-main>.atk-footer .atk-actions>span{color:var(--at-color-meta);font-size:13px;line-height:15px;display:inline-flex;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-bottom:15px}.atk-comment>.atk-main>.atk-footer .atk-actions>span.atk-error,.atk-comment>.atk-main>.atk-footer .atk-actions>span.atk-error:hover{color:var(--at-color-red)}.atk-comment>.atk-main>.atk-footer .atk-actions>span:not(:last-child):not(.atk-hide){margin-right:16px}.atk-comment>.atk-main>.atk-footer .atk-actions>span:hover{color:var(--at-color-deep)}.atk-comment .atk-height-limit:after{position:absolute;z-index:1;display:block;overflow:hidden;width:100%;content:" ";bottom:0;left:0;height:80px;background:var(--at-color-gradient)}.atk-comment .atk-height-limit-btn{z-index:10;position:absolute;left:50%;bottom:10px;transform:translate(-50%);cursor:pointer;border:1px solid var(--at-color-border);border-radius:6px;background:var(--at-color-bg);padding:1px 20px;font-size:15px;color:var(--at-color-meta);-webkit-user-select:none;-moz-user-select:none;user-select:none}.atk-comment .atk-height-limit-btn:hover{background:var(--at-color-bg-grey)}.atk-comment .atk-height-limit .atk-height-limit .atk-height-limit-btn{display:none}.atk-comment-children>.atk-comment-wrap{margin-top:10px;border-left:1px dashed transparent;border-bottom-color:transparent}.atk-comment-children>.atk-comment-wrap:not(:last-child){margin-bottom:5px}.atk-comment-children>.atk-comment-wrap>.atk-comment{padding:4px 0}.atk-comment-children>.atk-comment-wrap>.atk-comment>.atk-avatar img{width:36px;height:36px}.atk-comment-children>.atk-comment-wrap>.atk-comment>.atk-main{margin-left:47px}.artalk>.atk-list{display:contents;position:relative}.artalk>.atk-list>.atk-list-header{display:flex;flex-direction:row;padding:10px 17px}.artalk>.atk-list>.atk-list-header .atk-text{display:inline-block}.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap{position:relative;cursor:pointer}.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap .atk-arrow-down-icon{cursor:pointer;vertical-align:middle;border-top:5px solid var(--at-color-grey);border-left:3px solid transparent;border-right:3px solid transparent;margin-top:-1px;margin-left:.8rem;display:inline-block}.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap:hover .atk-dropdown{display:block}.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap .atk-dropdown{z-index:888;display:none;height:auto!important;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;width:100%;background-color:var(--at-color-bg);padding:.6rem 0;border:1px solid var(--at-color-border);text-align:center;border-radius:6px;white-space:nowrap;margin:0;list-style:none}.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap .atk-dropdown-item a,.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap .atk-dropdown-item span{display:block;line-height:2rem;position:relative;border-bottom:none;font-weight:400;padding:0 1.5rem}.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap .atk-dropdown-item a,.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap .atk-dropdown-item a:hover,.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap .atk-dropdown-item span:hover,.artalk>.atk-list>.atk-list-header .atk-dropdown-wrap .atk-dropdown-item.active span,.artalk>.atk-list>.atk-list-header .atk-right-action>span.atk-on,.artalk>.atk-list>.atk-list-header .atk-right-action>span.atk-on *{color:var(--at-color-main)}.artalk>.atk-list>.atk-list-header .atk-comment-count{font-size:15px}.artalk>.atk-list>.atk-list-header .atk-comment-count .atk-comment-count-num{font-size:22px;margin-right:4px}.artalk>.atk-list>.atk-list-header .atk-right-action{display:flex;flex:1;flex-direction:row;align-items:center;justify-content:flex-end}.artalk>.atk-list>.atk-list-header .atk-right-action>span{font-size:14px;color:var(--at-color-meta);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;position:relative}.artalk>.atk-list>.atk-list-header .atk-right-action>span:not(:last-child):not(.atk-hide){margin-right:10px;padding-right:10px}.artalk>.atk-list>.atk-list-header .atk-right-action>span .atk-unread-badge{position:absolute;top:-5px;left:-6px;color:#fff;background:var(--at-color-pink);text-align:center;min-width:16px;height:16px;padding:0 3px;border-radius:8px;line-height:16px;font-size:12px}.artalk>.atk-list>.atk-list-footer{z-index:1;position:absolute;bottom:5px;right:0}@media only screen and (max-width:768px){.artalk>.atk-list>.atk-list-footer{position:relative;margin-top:10px;text-align:center}}.artalk>.atk-list>.atk-list-footer .atk-copyright{display:block;font-size:12px;color:var(--at-color-meta);padding-right:15px;margin-top:5px}.artalk a,.artalk>.atk-list>.atk-list-footer .atk-copyright a,.atk-layer-wrap a{color:var(--at-color-main);text-decoration:none}.atk-list-no-comment{text-align:center;height:150px;line-height:150px;display:block;font-size:19px}.atk-list-read-more{border-top:1px dashed var(--at-color-border);margin-top:28px;padding-bottom:25px}@media only screen and (max-width:768px){.atk-list-read-more{padding-bottom:10px}}.atk-list-read-more.atk-err .atk-text{color:var(--at-color-red)!important}.atk-list-read-more .atk-list-read-more-inner{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:0 15px;font-size:14px;border-radius:6px;border:1px solid transparent;display:flex;height:30px;flex-direction:row;place-content:center;align-items:center;width:120px;margin:-15px auto 0;background:var(--at-color-bg);border-color:var(--at-color-border)}.atk-list-read-more .atk-list-read-more-inner>.atk-loading-icon{height:15px;width:15px}.atk-error-layer .atk-error-text a,.atk-list-read-more .atk-list-read-more-inner>.atk-text{color:var(--at-color-meta)}.atk-list-read-more .atk-list-read-more-inner:hover,.atk-pagination>.atk-btn:hover{background:var(--at-color-bg-grey)}.atk-pagination{display:flex;flex-direction:row;justify-content:center;padding:10px 0;position:relative}.atk-pagination>.atk-btn{font-size:15px}.atk-pagination>.atk-btn,.atk-pagination>.atk-input{height:30px;border:1px solid var(--at-color-border);border-radius:3px;padding:0 5px;text-align:center;background:var(--at-color-bg)}.atk-pagination>.atk-btn{-webkit-user-select:none;-moz-user-select:none;user-select:none;width:70px;cursor:pointer;display:flex;justify-content:center;align-items:center}.atk-pagination>.atk-btn.atk-disabled{color:var(--at-color-sub)}.atk-pagination>.atk-btn.atk-disabled:hover{cursor:default;background:initial}.atk-pagination>.atk-input{background:0 0;color:var(--at-color-font);font-size:18px;width:60px;outline:0}.atk-pagination>.atk-input:focus{border-color:var(--at-color-main)}.atk-pagination>:not(:last-child){margin-right:10px}.atk-main-editor{z-index:5;position:relative;background:var(--at-color-bg);border:1px solid var(--at-color-border);border-radius:6px;margin-bottom:10px}@media only screen and (max-width:768px){.atk-main-editor{margin-bottom:7px}}.atk-main-editor>.atk-header{display:flex;flex-direction:row;padding:10px 14px 0}.atk-main-editor>.atk-header .label{display:contents}.atk-main-editor>.atk-header input{flex:1;width:100%;font-size:14px;background:0 0;border:2px solid transparent;border-radius:3px;padding:6px 5px;resize:none;outline:0}.atk-main-editor>.atk-header input:not(:last-child){margin-right:2px}.atk-main-editor>.atk-textarea-wrap{position:relative}.atk-main-editor>.atk-textarea-wrap>.atk-textarea{display:block;overflow:hidden;color:var(--at-color-font);font-size:15px;background-color:var(--at-color-bg);border:2px solid transparent;border-radius:3px;width:100%;min-height:120px;margin-top:2px;padding:10px 20px;resize:none;word-wrap:break-word;outline:0}.atk-main-editor>.atk-textarea-wrap>.atk-comment-closed{pointer-events:none;color:var(--at-color-meta);font-size:12px;background-color:var(--at-color-bg);border-top:1px solid var(--at-color-border);padding:5px 15px;margin-top:10px}.atk-main-editor>.atk-textarea-wrap>.atk-send-reply{z-index:2;position:absolute;right:7px;bottom:2px;max-width:calc(100% - 20px);height:30px;line-height:30px;font-size:14px;background:var(--at-color-bg-grey-transl);padding:0 30px 0 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border-radius:3px}@media screen and (max-width:500px){.atk-main-editor>.atk-textarea-wrap>.atk-send-reply{position:absolute;right:6px;bottom:6px}}.atk-main-editor>.atk-textarea-wrap>.atk-send-reply .atk-cancel{position:absolute;right:0;bottom:0;height:30px;text-align:center;width:30px;line-height:30px;font-weight:700}.atk-main-editor>.atk-textarea-wrap>.atk-send-reply .atk-cancel:hover{color:var(--at-color-deep)}.atk-main-editor>.atk-plug-panel-wrap{overflow:hidden;-webkit-animation:.3s both atkFadeIn;animation:.3s both atkFadeIn;transition:.2s height ease-in-out;display:contents}.atk-main-editor>.atk-bottom{display:flex;flex-direction:row;justify-content:space-between;padding:5px}.atk-main-editor>.atk-bottom>.atk-item{display:flex;flex-direction:row;align-items:center}.atk-main-editor>.atk-bottom .atk-plug-btn{padding:0 8px;line-height:24px;cursor:pointer;color:var(--at-color-grey);font-size:14px;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-radius:3px;display:inline-flex;align-content:center;justify-content:center}.atk-main-editor>.atk-bottom .atk-plug-btn:not(:last-child){margin-right:2px;border-right:1px solid var(--at-color-border)}.atk-main-editor>.atk-bottom .atk-plug-btn:hover{background:var(--at-color-bg-grey)}.atk-main-editor>.atk-bottom .atk-plug-btn.active{color:var(--at-color-main)}.atk-main-editor>.atk-bottom .atk-plug-btn.active svg.markdown path{fill:var(--at-color-main)}.atk-main-editor>.atk-bottom .atk-plug-btn i{color:var(--at-color-grey);display:inline-flex;vertical-align:sub;margin-left:4px}.atk-main-editor>.atk-bottom .atk-plug-btn i svg.markdown path{fill:var(--at-color-grey)}.atk-main-editor>.atk-notify-wrap{z-index:9;position:absolute;right:-2px;bottom:40px;width:225px;opacity:.83}.atk-main-editor>.atk-bottom .atk-send-btn{background:var(--at-color-main);color:#fff;font-size:14px;border:0;margin:0;height:30px;width:8em;cursor:pointer;transition:opacity .3s ease-in-out;outline:0;border-radius:3px}.atk-main-editor>.atk-textarea-wrap .atk-send-btn:active{opacity:.9}.atk-header input:focus-within{border-bottom:1px solid var(--at-color-border)}.atk-sidebar-layer{position:fixed;z-index:99999;top:10%;left:20%;width:60%;height:80%;background:var(--at-color-bg);transition:transform .45s cubic-bezier(.23,1,.32,1) 0ms;transform:translateY(120%);border-radius:12px;padding:10px 0}@media only screen and (max-width:600px){.atk-sidebar-layer{width:100%;height:100%;left:0;top:0;border-radius:0}}.atk-sidebar-layer .atk-sidebar-inner{position:relative;height:100%}.atk-sidebar-layer .atk-sidebar-header{position:absolute;top:0;right:0;display:flex;flex-direction:row;align-items:center;z-index:99999}.atk-sidebar-layer .atk-sidebar-header .atk-sidebar-close{display:flex;flex-direction:column;width:60px;height:60px;align-items:center;place-content:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-left:10px}.atk-layer-dialog-wrap>.atk-layer-dialog .atk-checker-iframe-wrap .atk-close-btn:hover .atk-icon-close,.atk-sidebar-layer .atk-sidebar-header .atk-sidebar-close:hover .atk-icon-close{background-color:#e81123e6}.atk-sidebar-layer .atk-sidebar-iframe-wrap{height:100%;position:relative}.atk-sidebar-layer .atk-sidebar-iframe-wrap iframe{border:0;width:100%;height:100%}.atk-sidebar-layer .atk-sidebar-iframe-wrap .atk-err-alert{z-index:9999;top:50%;left:50%;transform:translate(-50%,-50%);position:absolute;background:var(--at-color-bg);padding:40px 30px;width:80%;text-align:center;border-radius:4px}.atk-sidebar-layer .atk-sidebar-iframe-wrap .atk-err-alert .atk-title{font-size:1.4em;margin-bottom:20px;color:var(--at-color-font)}.atk-sidebar-layer .atk-sidebar-iframe-wrap .atk-err-alert .atk-text{color:var(--at-color-font)}.atk-sidebar-layer .atk-sidebar-iframe-wrap .atk-err-alert .atk-text span{cursor:pointer;color:var(--at-color-main)}.artalk{position:relative;width:100%;min-height:200px}.artalk,.atk-layer-wrap{color:var(--at-color-font);word-wrap:break-word;word-break:break-all}.artalk *,.atk-layer-wrap *{box-sizing:border-box}.artalk button,.artalk input,.artalk optgroup,.artalk select,.artalk textarea,.atk-layer-wrap button,.atk-layer-wrap input,.atk-layer-wrap optgroup,.atk-layer-wrap select,.atk-layer-wrap textarea{font-family:inherit;color:inherit;font-size:inherit}.artalk code,.atk-layer-wrap code{margin:0 .05em;padding:0 .4em;display:inline-block;vertical-align:middle;font-size:.9em;background-color:var(--at-color-bg-grey);color:var(--at-color-font);border-radius:2px}.artalk pre,.atk-layer-wrap pre{margin:10px 0 0;padding:0;line-height:0}.artalk pre code,.atk-layer-wrap pre code{line-height:1.6em;display:block;padding:10px 15px;white-space:pre-wrap!important;background-color:var(--at-color-bg-grey);color:var(--at-color-font);margin:0}.artalk code,.artalk pre code *,.atk-layer-wrap code,.atk-layer-wrap pre code *{font-family:source code pro,Consolas,Monaco,Menlo,sans-serif}.artalk pre code:before,.atk-layer-wrap pre code:before{position:absolute;font-size:13px;padding:4px 8px;right:0;top:0}.artalk blockquote,.atk-layer-wrap blockquote{position:static;margin:10px 0;padding:10px 20px;background:var(--at-color-bg-grey);border-left:4px solid #687a86;color:var(--at-color-font)}.artalk table,.atk-layer-wrap table{width:100%;border-collapse:collapse;border-spacing:0;margin-bottom:1.5em;font-size:.96em}.artalk td,.artalk th,.atk-layer-wrap td,.atk-layer-wrap th{text-align:left;padding:4px 8px 4px 10px;border:1px solid var(--at-color-border)}.artalk td,.atk-layer-wrap td{vertical-align:top}.artalk tr:nth-child(even),.atk-layer-wrap tr:nth-child(even){background-color:var(--at-color-bg-grey)}.artalk ul,.atk-layer-wrap ul{list-style:disc}.artalk ol,.atk-layer-wrap ol{list-style:decimal}.artalk li+li,.atk-layer-wrap li+li{margin-top:8px}.artalk li>ol,.artalk li>ul,.atk-layer-wrap li>ol,.atk-layer-wrap li>ul{margin:8px 0 0}.atk-hide{display:none!important}.atk-full-layer{background:var(--at-color-bg);z-index:10;align-items:center;justify-content:center;flex-flow:column;display:flex}.atk-full-layer,.atk-loading,.atk-loading-spinner svg{width:100%;height:100%;position:absolute;top:0;left:0}.atk-error-layer,.atk-layer-dialog-wrap,.atk-loading{background:var(--at-color-bg);align-items:center;justify-content:center;flex-flow:column;display:flex}.atk-error-layer,.atk-layer-dialog-wrap{width:100%;height:100%;position:absolute;top:0;left:0;z-index:10}.atk-loading{z-index:11}.atk-loading-spinner{position:relative;width:50px;height:50px}.atk-loading-spinner svg{-webkit-animation:atkRotate 2s linear infinite;animation:atkRotate 2s linear infinite;transform-origin:center center}.atk-loading-spinner svg circle{stroke-dasharray:1,200;stroke-dashoffset:0;-webkit-animation:atkDash 1.5s ease-in-out infinite,atkColor 6s ease-in-out infinite;animation:atkDash 1.5s ease-in-out infinite,atkColor 6s ease-in-out infinite;stroke-linecap:round}.atk-loading-icon{width:18px;height:18px;box-sizing:border-box;border:solid 1px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:atkLoadingIconRotate .4s linear infinite;animation:atkLoadingIconRotate .4s linear infinite}.atk-fade-in{-webkit-animation:atkFadeIn both .3s;animation:atkFadeIn both .3s}.atk-fade-out{-webkit-animation:atkFadeOut both .2s;animation:atkFadeOut both .2s}.atk-rotate{-webkit-animation:atkRotate 2s linear infinite;animation:atkRotate 2s linear infinite}i.atk-icon{width:20px;height:20px;background-color:var(--at-color-deep);background-size:contain;background-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.atk-icon-sync{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4.99133 4.87635C2.22512 7.64257 2.22512 12.1275 4.99133 14.8937C6.04677 15.9491 7.3524 16.6019 8.71732 16.8519' stroke='%234E5969' stroke-width='2'/%3E%3Cpath d='M14.4179 15.4815L15.0072 14.8922C17.7734 12.126 17.7734 7.64107 15.0072 4.87486C13.9518 3.81942 12.6461 3.16668 11.2812 2.91664' stroke='%234E5969' stroke-width='2'/%3E%3Cpath d='M6.17106 4.99252L5.58181 4.40327L4.99255 3.81401H6.17106V4.99252Z' fill='%23C4C4C4' stroke='%234E5969' stroke-width='2'/%3E%3Cpath d='M13.8299 15.0084L14.4192 15.5976L15.0084 16.1869H13.8299V15.0084Z' fill='%23C4C4C4' stroke='%234E5969' stroke-width='2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4.99133 4.87635C2.22512 7.64257 2.22512 12.1275 4.99133 14.8937C6.04677 15.9491 7.3524 16.6019 8.71732 16.8519' stroke='%234E5969' stroke-width='2'/%3E%3Cpath d='M14.4179 15.4815L15.0072 14.8922C17.7734 12.126 17.7734 7.64107 15.0072 4.87486C13.9518 3.81942 12.6461 3.16668 11.2812 2.91664' stroke='%234E5969' stroke-width='2'/%3E%3Cpath d='M6.17106 4.99252L5.58181 4.40327L4.99255 3.81401H6.17106V4.99252Z' fill='%23C4C4C4' stroke='%234E5969' stroke-width='2'/%3E%3Cpath d='M13.8299 15.0084L14.4192 15.5976L15.0084 16.1869H13.8299V15.0084Z' fill='%23C4C4C4' stroke='%234E5969' stroke-width='2'/%3E%3C/svg%3E")}.atk-icon-del{background-color:var(--at-color-red)!important;-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='22' height='22' viewBox='0 0 22 22' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.29167 5.04166L4.81251 5.04166M4.81251 5.04166L4.81251 18.3333C4.81251 18.5865 5.01771 18.7917 5.27084 18.7917L16.7292 18.7917C16.9823 18.7917 17.1875 18.5865 17.1875 18.3333V5.04166M4.81251 5.04166L7.33334 5.04166M17.1875 5.04166L19.7083 5.04166M17.1875 5.04166L14.6667 5.04166M7.33334 5.04166V3.20833L14.6667 3.20833V5.04166M7.33334 5.04166L14.6667 5.04166' stroke='%23D06565' stroke-width='2'/%3E%3Cpath d='M9.16667 8.25V15.125M12.8333 8.25V15.125' stroke='%23D06565' stroke-width='2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='22' height='22' viewBox='0 0 22 22' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.29167 5.04166L4.81251 5.04166M4.81251 5.04166L4.81251 18.3333C4.81251 18.5865 5.01771 18.7917 5.27084 18.7917L16.7292 18.7917C16.9823 18.7917 17.1875 18.5865 17.1875 18.3333V5.04166M4.81251 5.04166L7.33334 5.04166M17.1875 5.04166L19.7083 5.04166M17.1875 5.04166L14.6667 5.04166M7.33334 5.04166V3.20833L14.6667 3.20833V5.04166M7.33334 5.04166L14.6667 5.04166' stroke='%23D06565' stroke-width='2'/%3E%3Cpath d='M9.16667 8.25V15.125M12.8333 8.25V15.125' stroke='%23D06565' stroke-width='2'/%3E%3C/svg%3E")}.atk-icon-edit{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='16' height='17' viewBox='0 0 16 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M9.70618 4.08515L12.6081 7.06376M1.00041 13.021L11.7376 2L14.6392 4.97861L3.90274 16H1L1.00041 13.021Z' stroke='%234E5969' stroke-width='1.5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='16' height='17' viewBox='0 0 16 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M9.70618 4.08515L12.6081 7.06376M1.00041 13.021L11.7376 2L14.6392 4.97861L3.90274 16H1L1.00041 13.021Z' stroke='%234E5969' stroke-width='1.5'/%3E%3C/svg%3E")}.atk-icon-close,.atk-icon-no{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25' viewBox='0 0 25 25' fill='none'%3E%3Cpath d='M19.8657 5.13431L12.5 12.5L5.13431 19.8657' stroke='%234E5969'/%3E%3Cpath d='M5.13431 5.13432L12.5 12.5L19.8657 19.8657' stroke='%234E5969'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25' viewBox='0 0 25 25' fill='none'%3E%3Cpath d='M19.8657 5.13431L12.5 12.5L5.13431 19.8657' stroke='%234E5969'/%3E%3Cpath d='M5.13431 5.13432L12.5 12.5L19.8657 19.8657' stroke='%234E5969'/%3E%3C/svg%3E")}.atk-icon-yes{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.7071 5.75533L9.92197 17.5404L3.29285 10.9113' stroke='%234E5969'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.7071 5.75533L9.92197 17.5404L3.29285 10.9113' stroke='%234E5969'/%3E%3C/svg%3E")}.atk-icon-plus{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.08331 10H17.9166' stroke='%234E5969' stroke-width='2'/%3E%3Cpath d='M10 2.08334L10 17.9167' stroke='%234E5969' stroke-width='2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.08331 10H17.9166' stroke='%234E5969' stroke-width='2'/%3E%3Cpath d='M10 2.08334L10 17.9167' stroke='%234E5969' stroke-width='2'/%3E%3C/svg%3E")}.atk-error-layer,.atk-layer-dialog-wrap{background-color:var(--at-color-bg-transl)}.atk-error-layer .atk-error-title{color:var(--at-color-red)}.atk-error-layer .atk-warn-title{color:var(--at-color-yellow)}.atk-error-layer .atk-error-title,.atk-error-layer .atk-warn-title{display:inline-block;padding:0 15px;margin-bottom:20px;font-size:20px;letter-spacing:-.5px}.atk-error-layer .atk-error-text{text-align:center;padding:0 20px}.atk-error-layer .atk-error-text *{color:var(--at-color-deep)}.atk-layer-dialog-wrap>.atk-layer-dialog{width:25%}.atk-layer-dialog-wrap>.atk-layer-dialog>.atk-layer-dialog-content .atk-captcha-img{cursor:pointer;width:170px;height:auto;margin-right:10px;padding-right:10px;border-right:1px solid var(--at-color-border);vertical-align:bottom}.atk-layer-dialog-wrap>.atk-layer-dialog>.atk-layer-dialog-content input{width:100%;line-height:34px;background-color:var(--at-color-bg);border:1px solid var(--at-color-border);border-radius:3px;outline:0;padding:0 6px;display:block;margin-top:10px;margin-bottom:5px;text-align:center}.atk-layer-dialog-wrap>.atk-layer-dialog>.atk-layer-dialog-actions{display:flex;flex-direction:row}.atk-layer-dialog-wrap>.atk-layer-dialog>.atk-layer-dialog-actions button{flex:1;display:block;cursor:pointer;border:1px solid var(--at-color-main);background:0 0;color:var(--at-color-main);border-radius:3px;padding:0 15px;line-height:30px;outline:0}.atk-layer-dialog-wrap>.atk-layer-dialog>.atk-layer-dialog-actions button:active{color:#fff;background:var(--at-color-main)}.atk-layer-dialog-wrap>.atk-layer-dialog>.atk-layer-dialog-actions button:not(:last-child){margin-right:5px}.atk-layer-dialog-wrap>.atk-layer-dialog>.atk-layer-dialog-actions button.error{color:#fff;background:#ff5652;border-color:#ff5652}.atk-layer-dialog-wrap>.atk-layer-dialog .atk-checker-iframe-wrap{position:fixed;z-index:999998;left:0;top:0;height:100vh;width:100vw}.atk-layer-dialog-wrap>.atk-layer-dialog .atk-checker-iframe-wrap>iframe{width:100%;height:100%;border:0}.atk-layer-dialog-wrap>.atk-layer-dialog .atk-checker-iframe-wrap .atk-close-btn{z-index:999999;position:fixed;top:20px;right:20px;display:flex;flex-direction:column;width:50px;height:50px;align-items:center;place-content:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-left:10px}@media only screen and (max-width:768px){.atk-layer-dialog-wrap>.atk-layer-dialog{width:90%!important}}.atk-notify{display:block;overflow:hidden;background-color:#2c2c2c;color:#fff;border-radius:3px;cursor:pointer;font-size:14px;padding:5px 15px}.atk-notify:not(:last-child){margin-bottom:3px}.atk-notify .atk-notify-content{color:#fff}.atk-layer-wrap .atk-layer-mask{position:fixed;top:0;left:0;width:100%;height:100%;z-index:99998;background:rgba(0,0,0,.3);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.atk-layer-wrap .atk-layer-item{position:fixed;z-index:99999;top:0;right:0;width:100%;height:100%}.atk-common-action-btn.atk-btn-confirm,.atk-common-action-btn.atk-btn-warn{color:var(--at-color-yellow)!important}.atk-common-action-btn.atk-btn-error{color:var(--at-color-red)!important}.atk-common-action-btn.atk-btn-success{color:var(--at-color-green)!important}img[atk-emoticon]{width:3em;height:auto;vertical-align:middle;max-height:60px;display:initial}#owo-big,.atk-editor-plug-emoticons{border-radius:12px;box-shadow:0 0 12px 4px #0000000d}#owo-big{position:fixed;align-items:center;background-color:var(--at-color-owo);-webkit-backdrop-filter:saturate(200%) blur(6px);backdrop-filter:saturate(200%) blur(6px);border:1px solid var(--at-color-bg-light);z-index:9999;display:none;transform:translateY(-105%);overflow:hidden;-webkit-animation:owoIn .3s cubic-bezier(.42,0,.3,1.11);animation:owoIn .3s cubic-bezier(.42,0,.3,1.11);padding:16px;-webkit-user-select:none;-moz-user-select:none;user-select:none}#owo-big img{width:100%;border-radius:10px}#owo-big p{color:var(--at-color-meta);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;text-align:center;font-size:12px;margin:0;margin-top:-14px!important}.atk-editor-plug-emoticons{position:absolute;top:98%;left:1rem;border:1px solid var(--at-color-border);background-color:var(--at-color-bg);height:232px;width:100%;max-width:468px}@media screen and (max-width:840px){.atk-editor-plug-emoticons{max-width:100%;left:0}}.atk-editor-plug-emoticons>.atk-grp-wrap{overflow-y:scroll;overflow-x:hidden;width:100%;margin:8px -5px!important;max-height:197px}.atk-editor-plug-emoticons>.atk-grp-wrap::-webkit-scrollbar{width:4px;height:4px;background:0 0}.atk-editor-plug-emoticons>.atk-grp-wrap::-webkit-scrollbar-thumb,.atk-editor-plug-emoticons>.atk-grp-wrap::-webkit-scrollbar-thumb:window-inactive{background:rgba(86,86,86,.3)}.atk-editor-plug-emoticons>.atk-grp-wrap::-webkit-scrollbar-thumb:vertical:hover{background:rgba(65,74,82,.77)}.atk-editor-plug-emoticons>.atk-grp-wrap::-webkit-scrollbar-thumb:vertical:active{background:rgba(41,47,53,.77)}.atk-editor-plug-emoticons>.atk-grp-wrap>.atk-grp{display:flex;flex-wrap:wrap;flex-direction:row;padding:5px 10px 35px}.atk-editor-plug-emoticons>.atk-grp-wrap>.atk-grp[data-type=image]>.atk-item{height:63px;width:63px}.atk-editor-plug-emoticons>.atk-grp-wrap>.atk-grp>.atk-item{display:flex;align-items:center;justify-content:center;padding:5px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-radius:3px;font-size:16px;min-width:35px}.atk-editor-plug-emoticons>.atk-grp-wrap>.atk-grp>.atk-item>img{max-height:100%;width:auto}.atk-editor-plug-emoticons>.atk-grp-switcher>span.active,.atk-editor-plug-emoticons>.atk-grp-switcher>span:hover,.atk-editor-plug-emoticons>.atk-grp-wrap>.atk-grp>.atk-item:hover{background:var(--at-color-bg-grey)}.atk-editor-plug-emoticons>.atk-grp-switcher{position:absolute;margin:0;padding:0;font-size:0;width:100%;background:var(--heo-background);border-bottom-right-radius:8px;border-bottom-left-radius:8px}.atk-editor-plug-emoticons>.atk-grp-switcher>span{-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:0 10px;line-height:30px;float:left;display:block;cursor:pointer;font-size:14px;border-bottom-right-radius:10px;border-bottom-left-radius:10px}.atk-editor-plug-preview{overflow-y:auto;overflow-x:hidden;height:100%;width:100%;padding:10px 15px;border-top:1px solid var(--at-color-border);border-bottom:1px solid var(--at-color-border);max-height:200px;display:inline-block;margin-top:5px} \ No newline at end of file diff --git a/templates/assets/libs/artalk/Artalk.js b/templates/assets/libs/artalk/Artalk.js index a8277f64..f5cf28d0 100644 --- a/templates/assets/libs/artalk/Artalk.js +++ b/templates/assets/libs/artalk/Artalk.js @@ -1,7031 +1 @@ -// Artalk v2.6.2 -var __defProp = Object.defineProperty - , __defProps = Object.defineProperties - , __getOwnPropDescs = Object.getOwnPropertyDescriptors - , __getOwnPropSymbols = Object.getOwnPropertySymbols - , __hasOwnProp = Object.prototype.hasOwnProperty - , __propIsEnum = Object.prototype.propertyIsEnumerable - , __defNormalProp = (e,t,n)=>t in e ? __defProp(e, t, { - enumerable: !0, - configurable: !0, - writable: !0, - value: n -}) : e[t] = n - , __spreadValues = (e,t)=>{ - for (var n in t || (t = {})) - __hasOwnProp.call(t, n) && __defNormalProp(e, n, t[n]); - if (__getOwnPropSymbols) - for (var n of __getOwnPropSymbols(t)) - __propIsEnum.call(t, n) && __defNormalProp(e, n, t[n]); - return e -} - , __spreadProps = (e,t)=>__defProps(e, __getOwnPropDescs(t)) - , __publicField = (e,t,n)=>(__defNormalProp(e, "symbol" != typeof t ? t + "" : t, n), - n) - , __accessCheck = (e,t,n)=>{ - if (!t.has(e)) - throw TypeError("Cannot " + n) -} - , __privateAdd = (e,t,n)=>{ - if (t.has(e)) - throw TypeError("Cannot add the same private member more than once"); - t instanceof WeakSet ? t.add(e) : t.set(e, n) -} - , __privateMethod = (e,t,n)=>(__accessCheck(e, t, "access private method"), - n) - , __async = (e,t,n)=>new Promise(((i,s)=>{ - var r = e=>{ - try { - o(n.next(e)) - } catch (t) { - s(t) - } - } - , a = e=>{ - try { - o(n.throw(e)) - } catch (t) { - s(t) - } - } - , o = e=>e.done ? i(e.value) : Promise.resolve(e.value).then(r, a); - o((n = n.apply(e, t)).next()) - } -)); -!function(e, t) { - "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : (e = "undefined" != typeof globalThis ? globalThis : e || self).Artalk = t() -}(this, (function() { - var e, t, n, i; - function s(e="") { - const t = document.createElement("div"); - return t.innerHTML = e.trim(), - t.firstElementChild || t - } - function r(e) { - return parseFloat(getComputedStyle(e, null).height.replace("px", "")) - } - function a(e) { - const t = RegExp(`[?&]${e}=([^&]*)`).exec(window.location.search); - return t && decodeURIComponent(t[1].replace(/\+/g, " ")) - } - function o(e) { - const t = e.getBoundingClientRect(); - return { - top: t.top + window.scrollY, - left: t.left + window.scrollX - } - } - function l(e, t) { - let n = e.toString(); - for (; n.length < t; ) - n = `0 ${n}`; - return n - } - function c(e, t) { - try { - const n = e.getTime() - , i = (new Date).getTime() - n - , s = Math.floor(i / 864e5); - if (0 === s) { - const e = i % 864e5 - , n = Math.floor(e / 36e5); - if (0 === n) { - const n = e % 36e5 - , i = Math.floor(n / 6e4); - if (0 === i) { - const e = n % 6e4 - , i = Math.round(e / 1e3); - return i < 10 ? t.$t("now") : `${i} ${t.$t("seconds")}` - } - return `${i} ${t.$t("minutes")}` - } - return `${n} ${t.$t("hours")}` - } - return s < 0 ? t.$t("now") : s < 8 ? `${s} ${t.$t("days")}` : function(e) { - const t = l(e.getDate(), 2) - , n = l(e.getMonth() + 1, 2); - return `${l(e.getFullYear(), 2)}-${n}-${t}` - }(e) - } catch (n) { - return console.error(n), - " - " - } - } - function d() { - return __async(this, null, (function*() { - const e = navigator.userAgent; - if (!navigator.userAgentData || !navigator.userAgentData.getHighEntropyValues) - return e; - const t = navigator.userAgentData; - let n = null; - try { - n = yield t.getHighEntropyValues(["platformVersion"]) - } catch (s) { - return console.error(s), - e - } - const i = Number(n.platformVersion.split(".")[0]); - return "Windows" === t.platform && i >= 13 ? e.replace(/Windows NT 10.0/, "Windows NT 11.0") : "macOS" === t.platform && i >= 11 ? e.replace(/(Mac OS X \d+_\d+_\d+|Mac OS X)/, `Mac OS X ${n.platformVersion.replace(/\./g, "_")}`) : e - } - )) - } - function h(e) { - let t; - try { - t = new URL(e) - } catch (n) { - return !1 - } - return "http:" === t.protocol || "https:" === t.protocol - } - function u(e, t) { - return function(e, t) { - return `${e.replace(/\/$/, "")}/${t.replace(/^\//, "")}` - }(e.conf.server, t) - } - function p(e, t) { - const n = e=>e && "object" == typeof e; - return n(e) && n(t) ? (Object.keys(t).forEach((i=>{ - const s = e[i] - , r = t[i]; - Array.isArray(s) && Array.isArray(r) ? e[i] = s.concat(r) : n(s) && n(r) ? e[i] = p(__spreadValues({}, s), r) : e[i] = r - } - )), - e) : t - } - class m { - constructor(e) { - __publicField(this, "$el"), - __publicField(this, "ctx"), - __publicField(this, "conf"), - this.ctx = e, - this.conf = e.conf - } - $t(e, t={}) { - return this.ctx.$t(e, t) - } - } - function g(e, t) { - let n = e.querySelector(":scope > .atk-loading"); - n || (n = s(''), - (null == t ? void 0 : t.transparentBg) && (n.style.background = "transparent"), - e.appendChild(n)), - n.style.display = ""; - const i = n.querySelector(".atk-loading-spinner"); - i && (i.style.display = "none", - window.setTimeout((()=>{ - i.style.display = "" - } - ), 500)) - } - function f(e) { - const t = e.querySelector(":scope > .atk-loading"); - t && (t.style.display = "none") - } - function k(e, t=!0) { - const n = o(e).top + r(e) / 2 - document.documentElement.clientHeight / 2; - t ? window.scroll({ - top: n > 0 ? n : 0, - left: 0 - }) : window.scroll(0, n > 0 ? n : 0) - } - function y(e, t, n) { - const i = s(`
`); - i.querySelector(".atk-notify-content").innerHTML = function(e) { - const t = document.createElement("div"); - return t.innerText = e, - t.innerHTML - }(t).replace("\n", "
"), - e.appendChild(i); - const r = ()=>{ - i.classList.add("atk-fade-out"), - setTimeout((()=>{ - i.remove() - } - ), 200) - } - ; - let a; - a = window.setTimeout((()=>{ - r() - } - ), 3e3), - i.addEventListener("click", (()=>{ - r(), - window.clearTimeout(a) - } - )) - } - function b(e, t) { - !function(e, t, n="in") { - e.classList.add(`atk-fade-${n}`); - const i = ()=>{ - e.classList.remove(`atk-fade-${n}`), - e.removeEventListener("animationend", i), - t && t() - } - ; - e.addEventListener("animationend", i) - }(e, t, "in") - } - function _(e, t, n='Artalk Error') { - let i = e.querySelector(".atk-error-layer"); - if (null === t) - return void (null !== i && i.remove()); - i || (i = s(`
${n}
`), - e.appendChild(i)); - const r = i.querySelector(".atk-error-text"); - r.innerHTML = "", - null !== t && (t instanceof HTMLElement ? r.appendChild(t) : r.innerText = t) - } - const $ = class e extends m { - constructor(e, t, n) { - super(e), - __publicField(this, "name"), - __publicField(this, "$wrap"), - __publicField(this, "$mask"), - __publicField(this, "maskClickHideEnable", !0), - __publicField(this, "afterHide"), - this.name = t; - const {$wrap: i, $mask: r} = v(); - this.$wrap = i, - this.$mask = r, - this.$el = this.$wrap.querySelector(`[data-layer-name="${t}"].atk-layer-item`), - null === this.$el && (n ? this.$el = n : (this.$el = s(), - this.$el.classList.add("atk-layer-item"))), - this.$el.setAttribute("data-layer-name", t), - this.$el.style.display = "none", - this.$wrap.append(this.$el) - } - getName() { - return this.name - } - getWrapEl() { - return this.$wrap - } - getEl() { - return this.$el - } - show() { - this.fireAllActionTimer(), - this.$wrap.style.display = "block", - this.$mask.style.display = "block", - this.$mask.classList.add("atk-fade-in"), - this.$el.style.display = "", - this.$mask.onclick = ()=>{ - this.maskClickHideEnable && this.hide() - } - , - this.pageBodyScrollBarHide() - } - hide() { - this.afterHide && this.afterHide(), - this.$wrap.classList.add("atk-fade-out"), - this.$el.style.display = "none", - this.pageBodyScrollBarShow(), - this.newActionTimer((()=>{ - this.$wrap.style.display = "none", - this.checkCleanLayer() - } - ), 450), - this.newActionTimer((()=>{ - this.$wrap.style.display = "none", - this.$wrap.classList.remove("atk-fade-out") - } - ), 200) - } - setMaskClickHide(e) { - this.maskClickHideEnable = e - } - pageBodyScrollBarHide() { - document.body.style.overflow = "hidden"; - const e = parseInt(window.getComputedStyle(document.body, null).getPropertyValue("padding-right"), 10); - document.body.style.paddingRight = `${function() { - const e = document.createElement("p"); - e.style.width = "100%", - e.style.height = "200px"; - const t = document.createElement("div"); - t.style.position = "absolute", - t.style.top = "0px", - t.style.left = "0px", - t.style.visibility = "hidden", - t.style.width = "200px", - t.style.height = "150px", - t.style.overflow = "hidden", - t.appendChild(e), - document.body.appendChild(t); - const n = e.offsetWidth; - t.style.overflow = "scroll"; - let i = e.offsetWidth; - return n === i && (i = t.clientWidth), - document.body.removeChild(t), - n - i - }() + e || 0}px` - } - pageBodyScrollBarShow() { - document.body.style.overflow = e.BodyOrgOverflow, - document.body.style.paddingRight = e.BodyOrgPaddingRight - } - newActionTimer(t, n) { - const i = ()=>{ - t(), - e.actionTimers = e.actionTimers.filter((e=>e.act !== i)) - } - , s = window.setTimeout((()=>i()), n); - e.actionTimers.push({ - act: i, - tid: s - }) - } - fireAllActionTimer() { - e.actionTimers.forEach((e=>{ - clearTimeout(e.tid), - e.act() - } - )) - } - disposeNow() { - this.$el.remove(), - this.pageBodyScrollBarShow(), - this.checkCleanLayer() - } - dispose() { - this.hide(), - this.$el.remove(), - this.checkCleanLayer() - } - checkCleanLayer() { - 0 === this.getWrapEl().querySelectorAll(".atk-layer-item").length && (this.$wrap.style.display = "none") - } - } - ; - __publicField($, "BodyOrgOverflow"), - __publicField($, "BodyOrgPaddingRight"), - __publicField($, "actionTimers", []); - let x = $; - function v() { - let e = document.querySelector(".atk-layer-wrap"); - e || (e = s(''), - document.body.appendChild(e)); - const t = e.querySelector(".atk-layer-mask"); - return { - $wrap: e, - $mask: t - } - } - const w = window.matchMedia("(prefers-color-scheme: dark)"); - let C; - function S(e) { - T(e, e.conf.darkMode, !1) - } - function T(e, t, n=!0) { - const i = t=>{ - !function(e, t) { - t ? e.$root.classList.add(E) : e.$root.classList.remove(E); - const {$wrap: n} = v(); - n && (t ? n.classList.add(E) : n.classList.remove(E)) - }(e, t), - n && function(e, t) { - e.conf.darkMode = t - }(e, t) - } - ; - "auto" === t ? (C || (C = e=>i(e.matches), - w.addEventListener("change", C)), - i(w.matches)) : (C && w.removeEventListener("change", C), - i(t)) - } - const E = "atk-dark-mode" - function L() { - return { - async: !1, - baseUrl: null, - breaks: !1, - extensions: null, - gfm: !0, - headerIds: !1, - headerPrefix: "", - highlight: null, - hooks: null, - langPrefix: "language-", - mangle: !1, - pedantic: !1, - renderer: null, - sanitize: !1, - sanitizer: null, - silent: !1, - smartypants: !1, - tokenizer: null, - walkTokens: null, - xhtml: !1 - } - } - let A = { - async: !1, - baseUrl: null, - breaks: !1, - extensions: null, - gfm: !0, - headerIds: !1, - headerPrefix: "", - highlight: null, - hooks: null, - langPrefix: "language-", - mangle: !1, - pedantic: !1, - renderer: null, - sanitize: !1, - sanitizer: null, - silent: !1, - smartypants: !1, - tokenizer: null, - walkTokens: null, - xhtml: !1 - }; - function F(e) { - A = e - } - const O = /[&<>"']/ - , M = new RegExp(O.source,"g") - , R = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/ - , P = new RegExp(R.source,"g") - , B = { - "&": "&", - "<": "<", - ">": ">", - '"': """, - "'": "'" - } - , I = e=>B[e]; - function U(e, t) { - if (t) { - if (O.test(e)) - return e.replace(M, I) - } else if (R.test(e)) - return e.replace(P, I); - return e - } - const D = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi; - function q(e) { - return e.replace(D, ((e,t)=>"colon" === (t = t.toLowerCase()) ? ":" : "#" === t.charAt(0) ? "x" === t.charAt(1) ? String.fromCharCode(parseInt(t.substring(2), 16)) : String.fromCharCode(+t.substring(1)) : "")) - } - const z = /(^|[^\[])\^/g; - function j(e, t) { - e = "string" == typeof e ? e : e.source, - t = t || ""; - const n = { - replace: (t,i)=>(i = (i = "object" == typeof i && "source"in i ? i.source : i).replace(z, "$1"), - e = e.replace(t, i), - n), - getRegex: ()=>new RegExp(e,t) - }; - return n - } - const W = /[^\w:]/g - , N = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i; - function H(e, t, n) { - if (e) { - let e; - try { - e = decodeURIComponent(q(n)).replace(W, "").toLowerCase() - } catch (i) { - return null - } - if (0 === e.indexOf("javascript:") || 0 === e.indexOf("vbscript:") || 0 === e.indexOf("data:")) - return null - } - t && !N.test(n) && (n = function(e, t) { - V[" " + e] || (Q.test(e) ? V[" " + e] = e + "/" : V[" " + e] = X(e, "/", !0)); - e = V[" " + e]; - const n = -1 === e.indexOf(":"); - return "//" === t.substring(0, 2) ? n ? t : e.replace(Z, "$1") + t : "/" === t.charAt(0) ? n ? t : e.replace(G, "$1") + t : e + t - }(t, n)); - try { - n = encodeURI(n).replace(/%25/g, "%") - } catch (i) { - return null - } - return n - } - const V = {} - , Q = /^[^:]+:\/*[^/]*$/ - , Z = /^([^:]+:)[\s\S]*$/ - , G = /^([^:]+:\/*[^/]*)[\s\S]*$/; - const K = { - exec: ()=>null - }; - function Y(e, t) { - const n = e.replace(/\|/g, ((e,t,n)=>{ - let i = !1 - , s = t; - for (; --s >= 0 && "\\" === n[s]; ) - i = !i; - return i ? "|" : " |" - } - )).split(/ \|/); - let i = 0; - if (n[0].trim() || n.shift(), - n.length > 0 && !n[n.length - 1].trim() && n.pop(), - t) - if (n.length > t) - n.splice(t); - else - for (; n.length < t; ) - n.push(""); - for (; i < n.length; i++) - n[i] = n[i].trim().replace(/\\\|/g, "|"); - return n - } - function X(e, t, n) { - const i = e.length; - if (0 === i) - return ""; - let s = 0; - for (; s < i; ) { - const r = e.charAt(i - s - 1); - if (r !== t || n) { - if (r === t || !n) - break; - s++ - } else - s++ - } - return e.slice(0, i - s) - } - function J(e, t, n, i) { - const s = t.href - , r = t.title ? U(t.title) : null - , a = e[1].replace(/\\([\[\]])/g, "$1"); - if ("!" !== e[0].charAt(0)) { - i.state.inLink = !0; - const e = { - type: "link", - raw: n, - href: s, - title: r, - text: a, - tokens: i.inlineTokens(a) - }; - return i.state.inLink = !1, - e - } - return { - type: "image", - raw: n, - href: s, - title: r, - text: U(a) - } - } - class ee { - constructor(e) { - __publicField(this, "options"), - __publicField(this, "rules"), - __publicField(this, "lexer"), - this.options = e || A - } - space(e) { - const t = this.rules.block.newline.exec(e); - if (t && t[0].length > 0) - return { - type: "space", - raw: t[0] - } - } - code(e) { - const t = this.rules.block.code.exec(e); - if (t) { - const e = t[0].replace(/^ {1,4}/gm, ""); - return { - type: "code", - raw: t[0], - codeBlockStyle: "indented", - text: this.options.pedantic ? e : X(e, "\n") - } - } - } - fences(e) { - const t = this.rules.block.fences.exec(e); - if (t) { - const e = t[0] - , n = function(e, t) { - const n = e.match(/^(\s+)(?:```)/); - if (null === n) - return t; - const i = n[1]; - return t.split("\n").map((e=>{ - const t = e.match(/^\s+/); - if (null === t) - return e; - const [n] = t; - return n.length >= i.length ? e.slice(i.length) : e - } - )).join("\n") - }(e, t[3] || ""); - return { - type: "code", - raw: e, - lang: t[2] ? t[2].trim().replace(this.rules.inline._escapes, "$1") : t[2], - text: n - } - } - } - heading(e) { - const t = this.rules.block.heading.exec(e); - if (t) { - let e = t[2].trim(); - if (/#$/.test(e)) { - const t = X(e, "#"); - this.options.pedantic ? e = t.trim() : t && !/ $/.test(t) || (e = t.trim()) - } - return { - type: "heading", - raw: t[0], - depth: t[1].length, - text: e, - tokens: this.lexer.inline(e) - } - } - } - hr(e) { - const t = this.rules.block.hr.exec(e); - if (t) - return { - type: "hr", - raw: t[0] - } - } - blockquote(e) { - const t = this.rules.block.blockquote.exec(e); - if (t) { - const e = t[0].replace(/^ *>[ \t]?/gm, "") - , n = this.lexer.state.top; - this.lexer.state.top = !0; - const i = this.lexer.blockTokens(e); - return this.lexer.state.top = n, - { - type: "blockquote", - raw: t[0], - tokens: i, - text: e - } - } - } - list(e) { - let t = this.rules.block.list.exec(e); - if (t) { - let n = t[1].trim(); - const i = n.length > 1 - , s = { - type: "list", - raw: "", - ordered: i, - start: i ? +n.slice(0, -1) : "", - loose: !1, - items: [] - }; - n = i ? `\\d{1,9}\\${n.slice(-1)}` : `\\${n}`, - this.options.pedantic && (n = i ? n : "[*+-]"); - const r = new RegExp(`^( {0,3}${n})((?:[\t ][^\\n]*)?(?:\\n|$))`); - let a = "" - , o = "" - , l = !1; - for (; e; ) { - let n = !1; - if (!(t = r.exec(e))) - break; - if (this.rules.block.hr.test(e)) - break; - a = t[0], - e = e.substring(a.length); - let i = t[2].split("\n", 1)[0].replace(/^\t+/, (e=>" ".repeat(3 * e.length))) - , c = e.split("\n", 1)[0] - , d = 0; - this.options.pedantic ? (d = 2, - o = i.trimLeft()) : (d = t[2].search(/[^ ]/), - d = d > 4 ? 1 : d, - o = i.slice(d), - d += t[1].length); - let h = !1; - if (!i && /^ *$/.test(c) && (a += c + "\n", - e = e.substring(c.length + 1), - n = !0), - !n) { - const t = new RegExp(`^ {0,${Math.min(3, d - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`) - , n = new RegExp(`^ {0,${Math.min(3, d - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`) - , s = new RegExp(`^ {0,${Math.min(3, d - 1)}}(?:\`\`\`|~~~)`) - , r = new RegExp(`^ {0,${Math.min(3, d - 1)}}#`); - for (; e; ) { - const l = e.split("\n", 1)[0]; - if (c = l, - this.options.pedantic && (c = c.replace(/^ {1,4}(?=( {4})*[^ ])/g, " ")), - s.test(c)) - break; - if (r.test(c)) - break; - if (t.test(c)) - break; - if (n.test(e)) - break; - if (c.search(/[^ ]/) >= d || !c.trim()) - o += "\n" + c.slice(d); - else { - if (h) - break; - if (i.search(/[^ ]/) >= 4) - break; - if (s.test(i)) - break; - if (r.test(i)) - break; - if (n.test(i)) - break; - o += "\n" + c - } - h || c.trim() || (h = !0), - a += l + "\n", - e = e.substring(l.length + 1), - i = c.slice(d) - } - } - s.loose || (l ? s.loose = !0 : /\n *\n *$/.test(a) && (l = !0)); - let u, p = null; - this.options.gfm && (p = /^\[[ xX]\] /.exec(o), - p && (u = "[ ] " !== p[0], - o = o.replace(/^\[[ xX]\] +/, ""))), - s.items.push({ - type: "list_item", - raw: a, - task: !!p, - checked: u, - loose: !1, - text: o, - tokens: [] - }), - s.raw += a - } - s.items[s.items.length - 1].raw = a.trimRight(), - s.items[s.items.length - 1].text = o.trimRight(), - s.raw = s.raw.trimRight(); - for (let e = 0; e < s.items.length; e++) - if (this.lexer.state.top = !1, - s.items[e].tokens = this.lexer.blockTokens(s.items[e].text, []), - !s.loose) { - const t = s.items[e].tokens.filter((e=>"space" === e.type)) - , n = t.length > 0 && t.some((e=>/\n.*\n/.test(e.raw))); - s.loose = n - } - if (s.loose) - for (let e = 0; e < s.items.length; e++) - s.items[e].loose = !0; - return s - } - } - html(e) { - const t = this.rules.block.html.exec(e); - if (t) { - const e = { - type: "html", - block: !0, - raw: t[0], - pre: !this.options.sanitizer && ("pre" === t[1] || "script" === t[1] || "style" === t[1]), - text: t[0] - }; - if (this.options.sanitize) { - const n = this.options.sanitizer ? this.options.sanitizer(t[0]) : U(t[0]) - , i = e; - i.type = "paragraph", - i.text = n, - i.tokens = this.lexer.inline(n) - } - return e - } - } - def(e) { - const t = this.rules.block.def.exec(e); - if (t) { - const e = t[1].toLowerCase().replace(/\s+/g, " ") - , n = t[2] ? t[2].replace(/^<(.*)>$/, "$1").replace(this.rules.inline._escapes, "$1") : "" - , i = t[3] ? t[3].substring(1, t[3].length - 1).replace(this.rules.inline._escapes, "$1") : t[3]; - return { - type: "def", - tag: e, - raw: t[0], - href: n, - title: i - } - } - } - table(e) { - const t = this.rules.block.table.exec(e); - if (t) { - const e = { - type: "table", - raw: t[0], - header: Y(t[1]).map((e=>({ - text: e, - tokens: [] - }))), - align: t[2].replace(/^ *|\| *$/g, "").split(/ *\| */), - rows: t[3] && t[3].trim() ? t[3].replace(/\n[ \t]*$/, "").split("\n") : [] - }; - if (e.header.length === e.align.length) { - let t, n, i, s, r = e.align.length; - for (t = 0; t < r; t++) { - const n = e.align[t]; - n && (/^ *-+: *$/.test(n) ? e.align[t] = "right" : /^ *:-+: *$/.test(n) ? e.align[t] = "center" : /^ *:-+ *$/.test(n) ? e.align[t] = "left" : e.align[t] = null) - } - for (r = e.rows.length, - t = 0; t < r; t++) - e.rows[t] = Y(e.rows[t], e.header.length).map((e=>({ - text: e, - tokens: [] - }))); - for (r = e.header.length, - n = 0; n < r; n++) - e.header[n].tokens = this.lexer.inline(e.header[n].text); - for (r = e.rows.length, - n = 0; n < r; n++) - for (s = e.rows[n], - i = 0; i < s.length; i++) - s[i].tokens = this.lexer.inline(s[i].text); - return e - } - } - } - lheading(e) { - const t = this.rules.block.lheading.exec(e); - if (t) - return { - type: "heading", - raw: t[0], - depth: "=" === t[2].charAt(0) ? 1 : 2, - text: t[1], - tokens: this.lexer.inline(t[1]) - } - } - paragraph(e) { - const t = this.rules.block.paragraph.exec(e); - if (t) { - const e = "\n" === t[1].charAt(t[1].length - 1) ? t[1].slice(0, -1) : t[1]; - return { - type: "paragraph", - raw: t[0], - text: e, - tokens: this.lexer.inline(e) - } - } - } - text(e) { - const t = this.rules.block.text.exec(e); - if (t) - return { - type: "text", - raw: t[0], - text: t[0], - tokens: this.lexer.inline(t[0]) - } - } - escape(e) { - const t = this.rules.inline.escape.exec(e); - if (t) - return { - type: "escape", - raw: t[0], - text: U(t[1]) - } - } - tag(e) { - const t = this.rules.inline.tag.exec(e); - if (t) - return !this.lexer.state.inLink && /^/i.test(t[0]) && (this.lexer.state.inLink = !1), - !this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(t[0]) ? this.lexer.state.inRawBlock = !0 : this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0]) && (this.lexer.state.inRawBlock = !1), - { - type: this.options.sanitize ? "text" : "html", - raw: t[0], - inLink: this.lexer.state.inLink, - inRawBlock: this.lexer.state.inRawBlock, - block: !1, - text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(t[0]) : U(t[0]) : t[0] - } - } - link(e) { - const t = this.rules.inline.link.exec(e); - if (t) { - const e = t[2].trim(); - if (!this.options.pedantic && /^$/.test(e)) - return; - const t = X(e.slice(0, -1), "\\"); - if ((e.length - t.length) % 2 == 0) - return - } else { - const e = function(e, t) { - if (-1 === e.indexOf(t[1])) - return -1; - let n = 0; - for (let i = 0; i < e.length; i++) - if ("\\" === e[i]) - i++; - else if (e[i] === t[0]) - n++; - else if (e[i] === t[1] && (n--, - n < 0)) - return i; - return -1 - }(t[2], "()"); - if (e > -1) { - const n = (0 === t[0].indexOf("!") ? 5 : 4) + t[1].length + e; - t[2] = t[2].substring(0, e), - t[0] = t[0].substring(0, n).trim(), - t[3] = "" - } - } - let n = t[2] - , i = ""; - if (this.options.pedantic) { - const e = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(n); - e && (n = e[1], - i = e[3]) - } else - i = t[3] ? t[3].slice(1, -1) : ""; - return n = n.trim(), - /^$/.test(e) ? n.slice(1) : n.slice(1, -1)), - J(t, { - href: n ? n.replace(this.rules.inline._escapes, "$1") : n, - title: i ? i.replace(this.rules.inline._escapes, "$1") : i - }, t[0], this.lexer) - } - } - reflink(e, t) { - let n; - if ((n = this.rules.inline.reflink.exec(e)) || (n = this.rules.inline.nolink.exec(e))) { - let e = (n[2] || n[1]).replace(/\s+/g, " "); - if (e = t[e.toLowerCase()], - !e) { - const e = n[0].charAt(0); - return { - type: "text", - raw: e, - text: e - } - } - return J(n, e, n[0], this.lexer) - } - } - emStrong(e, t, n="") { - let i = this.rules.inline.emStrong.lDelim.exec(e); - if (!i) - return; - if (i[3] && n.match(/[\p{L}\p{N}]/u)) - return; - if (!(i[1] || i[2] || "") || !n || this.rules.inline.punctuation.exec(n)) { - const n = [...i[0]].length - 1; - let s, r, a = n, o = 0; - const l = "*" === i[0][0] ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd; - for (l.lastIndex = 0, - t = t.slice(-1 * e.length + n); null != (i = l.exec(t)); ) { - if (s = i[1] || i[2] || i[3] || i[4] || i[5] || i[6], - !s) - continue; - if (r = [...s].length, - i[3] || i[4]) { - a += r; - continue - } - if ((i[5] || i[6]) && n % 3 && !((n + r) % 3)) { - o += r; - continue - } - if (a -= r, - a > 0) - continue; - r = Math.min(r, r + a + o); - const t = [...e].slice(0, n + i.index + r + 1).join(""); - if (Math.min(n, r) % 2) { - const e = t.slice(1, -1); - return { - type: "em", - raw: t, - text: e, - tokens: this.lexer.inlineTokens(e) - } - } - const l = t.slice(2, -2); - return { - type: "strong", - raw: t, - text: l, - tokens: this.lexer.inlineTokens(l) - } - } - } - } - codespan(e) { - const t = this.rules.inline.code.exec(e); - if (t) { - let e = t[2].replace(/\n/g, " "); - const n = /[^ ]/.test(e) - , i = /^ /.test(e) && / $/.test(e); - return n && i && (e = e.substring(1, e.length - 1)), - e = U(e, !0), - { - type: "codespan", - raw: t[0], - text: e - } - } - } - br(e) { - const t = this.rules.inline.br.exec(e); - if (t) - return { - type: "br", - raw: t[0] - } - } - del(e) { - const t = this.rules.inline.del.exec(e); - if (t) - return { - type: "del", - raw: t[0], - text: t[2], - tokens: this.lexer.inlineTokens(t[2]) - } - } - autolink(e, t) { - const n = this.rules.inline.autolink.exec(e); - if (n) { - let e, i; - return "@" === n[2] ? (e = U(this.options.mangle ? t(n[1]) : n[1]), - i = "mailto:" + e) : (e = U(n[1]), - i = e), - { - type: "link", - raw: n[0], - text: e, - href: i, - tokens: [{ - type: "text", - raw: e, - text: e - }] - } - } - } - url(e, t) { - let n; - if (n = this.rules.inline.url.exec(e)) { - let e, i; - if ("@" === n[2]) - e = U(this.options.mangle ? t(n[0]) : n[0]), - i = "mailto:" + e; - else { - let t; - do { - t = n[0], - n[0] = this.rules.inline._backpedal.exec(n[0])[0] - } while (t !== n[0]); - e = U(n[0]), - i = "www." === n[1] ? "http://" + n[0] : n[0] - } - return { - type: "link", - raw: n[0], - text: e, - href: i, - tokens: [{ - type: "text", - raw: e, - text: e - }] - } - } - } - inlineText(e, t) { - const n = this.rules.inline.text.exec(e); - if (n) { - let e; - return e = this.lexer.state.inRawBlock ? this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(n[0]) : U(n[0]) : n[0] : U(this.options.smartypants ? t(n[0]) : n[0]), - { - type: "text", - raw: n[0], - text: e - } - } - } - } - const te = { - newline: /^(?: *(?:\n|$))+/, - code: /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/, - fences: /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/, - hr: /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/, - heading: /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/, - blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/, - list: /^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/, - html: "^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))", - def: /^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/, - table: K, - lheading: /^((?:(?!^bull ).|\n(?!\n|bull ))+?)\n {0,3}(=+|-+) *(?:\n+|$)/, - _paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/, - text: /^[^\n]+/, - _label: /(?!\s*\])(?:\\.|[^\[\]\\])+/, - _title: /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/ - }; - te.def = j(te.def).replace("label", te._label).replace("title", te._title).getRegex(), - te.bullet = /(?:[*+-]|\d{1,9}[.)])/, - te.listItemStart = j(/^( *)(bull) */).replace("bull", te.bullet).getRegex(), - te.list = j(te.list).replace(/bull/g, te.bullet).replace("hr", "\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def", "\\n+(?=" + te.def.source + ")").getRegex(), - te._tag = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul", - te._comment = /|$)/, - te.html = j(te.html, "i").replace("comment", te._comment).replace("tag", te._tag).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(), - te.lheading = j(te.lheading).replace(/bull/g, te.bullet).getRegex(), - te.paragraph = j(te._paragraph).replace("hr", te.hr).replace("heading", " {0,3}#{1,6} ").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", te._tag).getRegex(), - te.blockquote = j(te.blockquote).replace("paragraph", te.paragraph).getRegex(), - te.normal = __spreadValues({}, te), - te.gfm = __spreadProps(__spreadValues({}, te.normal), { - table: "^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)" - }), - te.gfm.table = j(te.gfm.table).replace("hr", te.hr).replace("heading", " {0,3}#{1,6} ").replace("blockquote", " {0,3}>").replace("code", " {4}[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", te._tag).getRegex(), - te.gfm.paragraph = j(te._paragraph).replace("hr", te.hr).replace("heading", " {0,3}#{1,6} ").replace("|lheading", "").replace("table", te.gfm.table).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", te._tag).getRegex(), - te.pedantic = __spreadProps(__spreadValues({}, te.normal), { - html: j("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment", te._comment).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(), - def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, - heading: /^(#{1,6})(.*)(?:\n+|$)/, - fences: K, - lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, - paragraph: j(te.normal._paragraph).replace("hr", te.hr).replace("heading", " *#{1,6} *[^\n]").replace("lheading", te.lheading).replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").getRegex() - }); - const ne = { - escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/, - autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/, - url: K, - tag: "^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^", - link: /^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/, - reflink: /^!?\[(label)\]\[(ref)\]/, - nolink: /^!?\[(ref)\](?:\[\])?/, - reflinkSearch: "reflink|nolink(?!\\()", - emStrong: { - lDelim: /^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/, - rDelimAst: /^[^_*]*?__[^_*]*?\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\*)[punct](\*+)(?=[\s]|$)|[^punct\s](\*+)(?!\*)(?=[punct\s]|$)|(?!\*)[punct\s](\*+)(?=[^punct\s])|[\s](\*+)(?!\*)(?=[punct])|(?!\*)[punct](\*+)(?!\*)(?=[punct])|[^punct\s](\*+)(?=[^punct\s])/, - rDelimUnd: /^[^_*]*?\*\*[^_*]*?_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\s]|$)|[^punct\s](_+)(?!_)(?=[punct\s]|$)|(?!_)[punct\s](_+)(?=[^punct\s])|[\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ - }, - code: /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/, - br: /^( {2,}|\\)\n(?!\s*$)/, - del: K, - text: /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\ .5 ? "x" + e.charCodeAt(n).toString(16) : e.charCodeAt(n).toString()) + ";" - } - return t - } - ne._punctuation = "\\p{P}$+<=>`^|~", - ne.punctuation = j(ne.punctuation, "u").replace(/punctuation/g, ne._punctuation).getRegex(), - ne.blockSkip = /\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g, - ne.anyPunctuation = /\\[punct]/g, - ne._escapes = /\\([punct])/g, - ne._comment = j(te._comment).replace("(?:--\x3e|$)", "--\x3e").getRegex(), - ne.emStrong.lDelim = j(ne.emStrong.lDelim, "u").replace(/punct/g, ne._punctuation).getRegex(), - ne.emStrong.rDelimAst = j(ne.emStrong.rDelimAst, "gu").replace(/punct/g, ne._punctuation).getRegex(), - ne.emStrong.rDelimUnd = j(ne.emStrong.rDelimUnd, "gu").replace(/punct/g, ne._punctuation).getRegex(), - ne.anyPunctuation = j(ne.anyPunctuation, "gu").replace(/punct/g, ne._punctuation).getRegex(), - ne._escapes = j(ne._escapes, "gu").replace(/punct/g, ne._punctuation).getRegex(), - ne._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/, - ne._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/, - ne.autolink = j(ne.autolink).replace("scheme", ne._scheme).replace("email", ne._email).getRegex(), - ne._attribute = /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/, - ne.tag = j(ne.tag).replace("comment", ne._comment).replace("attribute", ne._attribute).getRegex(), - ne._label = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/, - ne._href = /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/, - ne._title = /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/, - ne.link = j(ne.link).replace("label", ne._label).replace("href", ne._href).replace("title", ne._title).getRegex(), - ne.reflink = j(ne.reflink).replace("label", ne._label).replace("ref", te._label).getRegex(), - ne.nolink = j(ne.nolink).replace("ref", te._label).getRegex(), - ne.reflinkSearch = j(ne.reflinkSearch, "g").replace("reflink", ne.reflink).replace("nolink", ne.nolink).getRegex(), - ne.normal = __spreadValues({}, ne), - ne.pedantic = __spreadProps(__spreadValues({}, ne.normal), { - strong: { - start: /^__|\*\*/, - middle: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/, - endAst: /\*\*(?!\*)/g, - endUnd: /__(?!_)/g - }, - em: { - start: /^_|\*/, - middle: /^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/, - endAst: /\*(?!\*)/g, - endUnd: /_(?!_)/g - }, - link: j(/^!?\[(label)\]\((.*?)\)/).replace("label", ne._label).getRegex(), - reflink: j(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", ne._label).getRegex() - }), - ne.gfm = __spreadProps(__spreadValues({}, ne.normal), { - escape: j(ne.escape).replace("])", "~|])").getRegex(), - _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/, - url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, - _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, - del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/, - text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\t + " ".repeat(n.length))); e; ) - if (!(this.options.extensions && this.options.extensions.block && this.options.extensions.block.some((i=>!!(n = i.call({ - lexer: this - }, e, t)) && (e = e.substring(n.raw.length), - t.push(n), - !0))))) - if (n = this.tokenizer.space(e)) - e = e.substring(n.raw.length), - 1 === n.raw.length && t.length > 0 ? t[t.length - 1].raw += "\n" : t.push(n); - else if (n = this.tokenizer.code(e)) - e = e.substring(n.raw.length), - i = t[t.length - 1], - !i || "paragraph" !== i.type && "text" !== i.type ? t.push(n) : (i.raw += "\n" + n.raw, - i.text += "\n" + n.text, - this.inlineQueue[this.inlineQueue.length - 1].src = i.text); - else if (n = this.tokenizer.fences(e)) - e = e.substring(n.raw.length), - t.push(n); - else if (n = this.tokenizer.heading(e)) - e = e.substring(n.raw.length), - t.push(n); - else if (n = this.tokenizer.hr(e)) - e = e.substring(n.raw.length), - t.push(n); - else if (n = this.tokenizer.blockquote(e)) - e = e.substring(n.raw.length), - t.push(n); - else if (n = this.tokenizer.list(e)) - e = e.substring(n.raw.length), - t.push(n); - else if (n = this.tokenizer.html(e)) - e = e.substring(n.raw.length), - t.push(n); - else if (n = this.tokenizer.def(e)) - e = e.substring(n.raw.length), - i = t[t.length - 1], - !i || "paragraph" !== i.type && "text" !== i.type ? this.tokens.links[n.tag] || (this.tokens.links[n.tag] = { - href: n.href, - title: n.title - }) : (i.raw += "\n" + n.raw, - i.text += "\n" + n.raw, - this.inlineQueue[this.inlineQueue.length - 1].src = i.text); - else if (n = this.tokenizer.table(e)) - e = e.substring(n.raw.length), - t.push(n); - else if (n = this.tokenizer.lheading(e)) - e = e.substring(n.raw.length), - t.push(n); - else { - if (s = e, - this.options.extensions && this.options.extensions.startBlock) { - let t = 1 / 0; - const n = e.slice(1); - let i; - this.options.extensions.startBlock.forEach((e=>{ - i = e.call({ - lexer: this - }, n), - "number" == typeof i && i >= 0 && (t = Math.min(t, i)) - } - )), - t < 1 / 0 && t >= 0 && (s = e.substring(0, t + 1)) - } - if (this.state.top && (n = this.tokenizer.paragraph(s))) - i = t[t.length - 1], - r && "paragraph" === i.type ? (i.raw += "\n" + n.raw, - i.text += "\n" + n.text, - this.inlineQueue.pop(), - this.inlineQueue[this.inlineQueue.length - 1].src = i.text) : t.push(n), - r = s.length !== e.length, - e = e.substring(n.raw.length); - else if (n = this.tokenizer.text(e)) - e = e.substring(n.raw.length), - i = t[t.length - 1], - i && "text" === i.type ? (i.raw += "\n" + n.raw, - i.text += "\n" + n.text, - this.inlineQueue.pop(), - this.inlineQueue[this.inlineQueue.length - 1].src = i.text) : t.push(n); - else if (e) { - const t = "Infinite loop on byte: " + e.charCodeAt(0); - if (this.options.silent) { - console.error(t); - break - } - throw new Error(t) - } - } - return this.state.top = !0, - t - } - inline(e, t=[]) { - return this.inlineQueue.push({ - src: e, - tokens: t - }), - t - } - inlineTokens(e, t=[]) { - let n, i, s, r, a, o, l = e; - if (this.tokens.links) { - const e = Object.keys(this.tokens.links); - if (e.length > 0) - for (; null != (r = this.tokenizer.rules.inline.reflinkSearch.exec(l)); ) - e.includes(r[0].slice(r[0].lastIndexOf("[") + 1, -1)) && (l = l.slice(0, r.index) + "[" + "a".repeat(r[0].length - 2) + "]" + l.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex)) - } - for (; null != (r = this.tokenizer.rules.inline.blockSkip.exec(l)); ) - l = l.slice(0, r.index) + "[" + "a".repeat(r[0].length - 2) + "]" + l.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); - for (; null != (r = this.tokenizer.rules.inline.anyPunctuation.exec(l)); ) - l = l.slice(0, r.index) + "++" + l.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); - for (; e; ) - if (a || (o = ""), - a = !1, - !(this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some((i=>!!(n = i.call({ - lexer: this - }, e, t)) && (e = e.substring(n.raw.length), - t.push(n), - !0))))) - if (n = this.tokenizer.escape(e)) - e = e.substring(n.raw.length), - t.push(n); - else if (n = this.tokenizer.tag(e)) - e = e.substring(n.raw.length), - i = t[t.length - 1], - i && "text" === n.type && "text" === i.type ? (i.raw += n.raw, - i.text += n.text) : t.push(n); - else if (n = this.tokenizer.link(e)) - e = e.substring(n.raw.length), - t.push(n); - else if (n = this.tokenizer.reflink(e, this.tokens.links)) - e = e.substring(n.raw.length), - i = t[t.length - 1], - i && "text" === n.type && "text" === i.type ? (i.raw += n.raw, - i.text += n.text) : t.push(n); - else if (n = this.tokenizer.emStrong(e, l, o)) - e = e.substring(n.raw.length), - t.push(n); - else if (n = this.tokenizer.codespan(e)) - e = e.substring(n.raw.length), - t.push(n); - else if (n = this.tokenizer.br(e)) - e = e.substring(n.raw.length), - t.push(n); - else if (n = this.tokenizer.del(e)) - e = e.substring(n.raw.length), - t.push(n); - else if (n = this.tokenizer.autolink(e, se)) - e = e.substring(n.raw.length), - t.push(n); - else if (this.state.inLink || !(n = this.tokenizer.url(e, se))) { - if (s = e, - this.options.extensions && this.options.extensions.startInline) { - let t = 1 / 0; - const n = e.slice(1); - let i; - this.options.extensions.startInline.forEach((e=>{ - i = e.call({ - lexer: this - }, n), - "number" == typeof i && i >= 0 && (t = Math.min(t, i)) - } - )), - t < 1 / 0 && t >= 0 && (s = e.substring(0, t + 1)) - } - if (n = this.tokenizer.inlineText(s, ie)) - e = e.substring(n.raw.length), - "_" !== n.raw.slice(-1) && (o = n.raw.slice(-1)), - a = !0, - i = t[t.length - 1], - i && "text" === i.type ? (i.raw += n.raw, - i.text += n.text) : t.push(n); - else if (e) { - const t = "Infinite loop on byte: " + e.charCodeAt(0); - if (this.options.silent) { - console.error(t); - break - } - throw new Error(t) - } - } else - e = e.substring(n.raw.length), - t.push(n); - return t - } - } - class ae { - constructor(e) { - __publicField(this, "options"), - this.options = e || A - } - code(e, t, n) { - var i; - const s = null == (i = (t || "").match(/^\S*/)) ? void 0 : i[0]; - if (this.options.highlight) { - const t = this.options.highlight(e, s); - null != t && t !== e && (n = !0, - e = t) - } - return e = e.replace(/\n$/, "") + "\n", - s ? '
' + (n ? e : U(e, !0)) + "
\n" : "
" + (n ? e : U(e, !0)) + "
\n" - } - blockquote(e) { - return `
\n ${e}
\n` - } - html(e, t) { - return e - } - heading(e, t, n, i) { - if (this.options.headerIds) { - return `${e}\n` - } - return `${e}\n` - } - hr() { - return this.options.xhtml ? "
\n" : "
\n" - } - list(e, t, n) { - const i = t ? "ol" : "ul"; - return "<" + i + (t && 1 !== n ? ' start="' + n + '"' : "") + ">\n" + e + "\n" - } - listitem(e, t, n) { - return `
  • ${e}
  • \n` - } - checkbox(e) { - return " " - } - paragraph(e) { - return `

    ${e}

    \n` - } - table(e, t) { - return t && (t = `${t}`), - "\n\n" + e + "\n" + t + "
    \n" - } - tablerow(e) { - return `\n ${e}\n` - } - tablecell(e, t) { - const n = t.header ? "th" : "td"; - return (t.align ? `<${n} align="${t.align}">` : `<${n}>`) + e + `\n` - } - strong(e) { - return `${e}` - } - em(e) { - return `${e}` - } - codespan(e) { - return `${e}` - } - br() { - return this.options.xhtml ? "
    " : "
    " - } - del(e) { - return `${e}` - } - link(e, t, n) { - const i = H(this.options.sanitize, this.options.baseUrl, e); - if (null === i) - return n; - let s = '
    ", - s - } - image(e, t, n) { - const i = H(this.options.sanitize, this.options.baseUrl, e); - if (null === i) - return n; - let s = `${n}" : ">", - s - } - text(e) { - return e - } - } - class oe { - strong(e) { - return e - } - em(e) { - return e - } - codespan(e) { - return e - } - del(e) { - return e - } - html(e) { - return e - } - text(e) { - return e - } - link(e, t, n) { - return "" + n - } - image(e, t, n) { - return "" + n - } - br() { - return "" - } - } - class le { - constructor() { - __publicField(this, "seen"), - this.seen = {} - } - serialize(e) { - return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi, "").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g, "").replace(/\s/g, "-") - } - getNextSafeSlug(e, t) { - let n = e - , i = 0; - if (this.seen.hasOwnProperty(n)) { - i = this.seen[e]; - do { - i++, - n = e + "-" + i - } while (this.seen.hasOwnProperty(n)) - } - return t || (this.seen[e] = i, - this.seen[n] = 0), - n - } - slug(e, t={}) { - const n = this.serialize(e); - return this.getNextSafeSlug(n, t.dryrun) - } - } - class ce { - constructor(e) { - __publicField(this, "options"), - __publicField(this, "renderer"), - __publicField(this, "textRenderer"), - __publicField(this, "slugger"), - this.options = e || A, - this.options.renderer = this.options.renderer || new ae, - this.renderer = this.options.renderer, - this.renderer.options = this.options, - this.textRenderer = new oe, - this.slugger = new le - } - static parse(e, t) { - return new ce(t).parse(e) - } - static parseInline(e, t) { - return new ce(t).parseInline(e) - } - parse(e, t=!0) { - let n = ""; - for (let i = 0; i < e.length; i++) { - const s = e[i]; - if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[s.type]) { - const e = s - , t = this.options.extensions.renderers[e.type].call({ - parser: this - }, e); - if (!1 !== t || !["space", "hr", "heading", "code", "table", "blockquote", "list", "html", "paragraph", "text"].includes(e.type)) { - n += t || ""; - continue - } - } - switch (s.type) { - case "space": - continue; - case "hr": - n += this.renderer.hr(); - continue; - case "heading": - { - const e = s; - n += this.renderer.heading(this.parseInline(e.tokens), e.depth, q(this.parseInline(e.tokens, this.textRenderer)), this.slugger); - continue - } - case "code": - { - const e = s; - n += this.renderer.code(e.text, e.lang, !!e.escaped); - continue - } - case "table": - { - const e = s; - let t = "" - , i = ""; - for (let n = 0; n < e.header.length; n++) - i += this.renderer.tablecell(this.parseInline(e.header[n].tokens), { - header: !0, - align: e.align[n] - }); - t += this.renderer.tablerow(i); - let r = ""; - for (let n = 0; n < e.rows.length; n++) { - const t = e.rows[n]; - i = ""; - for (let n = 0; n < t.length; n++) - i += this.renderer.tablecell(this.parseInline(t[n].tokens), { - header: !1, - align: e.align[n] - }); - r += this.renderer.tablerow(i) - } - n += this.renderer.table(t, r); - continue - } - case "blockquote": - { - const e = s - , t = this.parse(e.tokens); - n += this.renderer.blockquote(t); - continue - } - case "list": - { - const e = s - , t = e.ordered - , i = e.start - , r = e.loose; - let a = ""; - for (let n = 0; n < e.items.length; n++) { - const t = e.items[n] - , i = t.checked - , s = t.task; - let o = ""; - if (t.task) { - const e = this.renderer.checkbox(!!i); - r ? t.tokens.length > 0 && "paragraph" === t.tokens[0].type ? (t.tokens[0].text = e + " " + t.tokens[0].text, - t.tokens[0].tokens && t.tokens[0].tokens.length > 0 && "text" === t.tokens[0].tokens[0].type && (t.tokens[0].tokens[0].text = e + " " + t.tokens[0].tokens[0].text)) : t.tokens.unshift({ - type: "text", - text: e - }) : o += e - } - o += this.parse(t.tokens, r), - a += this.renderer.listitem(o, s, !!i) - } - n += this.renderer.list(a, t, i); - continue - } - case "html": - { - const e = s; - n += this.renderer.html(e.text, e.block); - continue - } - case "paragraph": - { - const e = s; - n += this.renderer.paragraph(this.parseInline(e.tokens)); - continue - } - case "text": - { - let r = s - , a = r.tokens ? this.parseInline(r.tokens) : r.text; - for (; i + 1 < e.length && "text" === e[i + 1].type; ) - r = e[++i], - a += "\n" + (r.tokens ? this.parseInline(r.tokens) : r.text); - n += t ? this.renderer.paragraph(a) : a; - continue - } - default: - { - const e = 'Token with "' + s.type + '" type was not found.'; - if (this.options.silent) - return console.error(e), - ""; - throw new Error(e) - } - } - } - return n - } - parseInline(e, t) { - t = t || this.renderer; - let n = ""; - for (let i = 0; i < e.length; i++) { - const s = e[i]; - if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[s.type]) { - const e = this.options.extensions.renderers[s.type].call({ - parser: this - }, s); - if (!1 !== e || !["escape", "html", "link", "image", "strong", "em", "codespan", "br", "del", "text"].includes(s.type)) { - n += e || ""; - continue - } - } - switch (s.type) { - case "escape": - { - const e = s; - n += t.text(e.text); - break - } - case "html": - { - const e = s; - n += t.html(e.text); - break - } - case "link": - { - const e = s; - n += t.link(e.href, e.title, this.parseInline(e.tokens, t)); - break - } - case "image": - { - const e = s; - n += t.image(e.href, e.title, e.text); - break - } - case "strong": - { - const e = s; - n += t.strong(this.parseInline(e.tokens, t)); - break - } - case "em": - { - const e = s; - n += t.em(this.parseInline(e.tokens, t)); - break - } - case "codespan": - { - const e = s; - n += t.codespan(e.text); - break - } - case "br": - n += t.br(); - break; - case "del": - { - const e = s; - n += t.del(this.parseInline(e.tokens, t)); - break - } - case "text": - { - const e = s; - n += t.text(e.text); - break - } - default: - { - const e = 'Token with "' + s.type + '" type was not found.'; - if (this.options.silent) - return console.error(e), - ""; - throw new Error(e) - } - } - } - return n - } - } - class de { - constructor(e) { - __publicField(this, "options"), - this.options = e || A - } - preprocess(e) { - return e - } - postprocess(e) { - return e - } - } - __publicField(de, "passThroughHooks", new Set(["preprocess", "postprocess"])); - e = new WeakSet, - t = function(e, t) { - return (s,r,a)=>{ - "function" == typeof r && (a = r, - r = null); - const o = __spreadValues({}, r) - , l = __spreadValues(__spreadValues({}, this.defaults), o); - !0 === this.defaults.async && !1 === o.async && (l.silent || console.warn("marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored."), - l.async = !0); - const c = __privateMethod(this, n, i).call(this, !!l.silent, !!l.async, a); - if (null == s) - return c(new Error("marked(): input parameter is undefined or null")); - if ("string" != typeof s) - return c(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(s) + ", string expected")); - if (function(e, t) { - e && !e.silent && (t && console.warn("marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async"), - (e.sanitize || e.sanitizer) && console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options"), - (e.highlight || "language-" !== e.langPrefix) && console.warn("marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight."), - e.mangle && console.warn("marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`."), - e.baseUrl && console.warn("marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url."), - e.smartypants && console.warn("marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants."), - e.xhtml && console.warn("marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml."), - (e.headerIds || e.headerPrefix) && console.warn("marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.")) - }(l, a), - l.hooks && (l.hooks.options = l), - a) { - const n = a - , i = l.highlight; - let r; - try { - l.hooks && (s = l.hooks.preprocess(s)), - r = e(s, l) - } catch (d) { - return c(d) - } - const o = e=>{ - let s; - if (!e) - try { - l.walkTokens && this.walkTokens(r, l.walkTokens), - s = t(r, l), - l.hooks && (s = l.hooks.postprocess(s)) - } catch (d) { - e = d - } - return l.highlight = i, - e ? c(e) : n(null, s) - } - ; - if (!i || i.length < 3) - return o(); - if (delete l.highlight, - !r.length) - return o(); - let h = 0; - return this.walkTokens(r, (e=>{ - "code" === e.type && (h++, - setTimeout((()=>{ - i(e.text, e.lang, ((t,n)=>{ - if (t) - return o(t); - null != n && n !== e.text && (e.text = n, - e.escaped = !0), - h--, - 0 === h && o() - } - )) - } - ), 0)) - } - )), - void (0 === h && o()) - } - if (l.async) - return Promise.resolve(l.hooks ? l.hooks.preprocess(s) : s).then((t=>e(t, l))).then((e=>l.walkTokens ? Promise.all(this.walkTokens(e, l.walkTokens)).then((()=>e)) : e)).then((e=>t(e, l))).then((e=>l.hooks ? l.hooks.postprocess(e) : e)).catch(c); - try { - l.hooks && (s = l.hooks.preprocess(s)); - const n = e(s, l); - l.walkTokens && this.walkTokens(n, l.walkTokens); - let i = t(n, l); - return l.hooks && (i = l.hooks.postprocess(i)), - i - } catch (d) { - return c(d) - } - } - } - , - n = new WeakSet, - i = function(e, t, n) { - return i=>{ - if (i.message += "\nPlease report this to https://github.com/markedjs/marked.", - e) { - const e = "

    An error occurred:

    " + U(i.message + "", !0) + "
    "; - return t ? Promise.resolve(e) : n ? void n(null, e) : e - } - if (t) - return Promise.reject(i); - if (!n) - throw i; - n(i) - } - } - ; - const he = new class { - constructor(...i) { - __privateAdd(this, e), - __privateAdd(this, n), - __publicField(this, "defaults", { - async: !1, - baseUrl: null, - breaks: !1, - extensions: null, - gfm: !0, - headerIds: !1, - headerPrefix: "", - highlight: null, - hooks: null, - langPrefix: "language-", - mangle: !1, - pedantic: !1, - renderer: null, - sanitize: !1, - sanitizer: null, - silent: !1, - smartypants: !1, - tokenizer: null, - walkTokens: null, - xhtml: !1 - }), - __publicField(this, "options", this.setOptions), - __publicField(this, "parse", __privateMethod(this, e, t).call(this, re.lex, ce.parse)), - __publicField(this, "parseInline", __privateMethod(this, e, t).call(this, re.lexInline, ce.parseInline)), - __publicField(this, "Parser", ce), - __publicField(this, "parser", ce.parse), - __publicField(this, "Renderer", ae), - __publicField(this, "TextRenderer", oe), - __publicField(this, "Lexer", re), - __publicField(this, "lexer", re.lex), - __publicField(this, "Tokenizer", ee), - __publicField(this, "Slugger", le), - __publicField(this, "Hooks", de), - this.use(...i) - } - walkTokens(e, t) { - var n, i; - let s = []; - for (const r of e) - switch (s = s.concat(t.call(this, r)), - r.type) { - case "table": - { - const e = r; - for (const n of e.header) - s = s.concat(this.walkTokens(n.tokens, t)); - for (const n of e.rows) - for (const e of n) - s = s.concat(this.walkTokens(e.tokens, t)); - break - } - case "list": - { - const e = r; - s = s.concat(this.walkTokens(e.items, t)); - break - } - default: - { - const e = r; - (null == (i = null == (n = this.defaults.extensions) ? void 0 : n.childTokens) ? void 0 : i[e.type]) ? this.defaults.extensions.childTokens[e.type].forEach((n=>{ - s = s.concat(this.walkTokens(e[n], t)) - } - )) : e.tokens && (s = s.concat(this.walkTokens(e.tokens, t))) - } - } - return s - } - use(...e) { - const t = this.defaults.extensions || { - renderers: {}, - childTokens: {} - }; - return e.forEach((e=>{ - const n = __spreadValues({}, e); - if (n.async = this.defaults.async || n.async || !1, - e.extensions && (e.extensions.forEach((e=>{ - if (!e.name) - throw new Error("extension name required"); - if ("renderer"in e) { - const n = t.renderers[e.name]; - t.renderers[e.name] = n ? function(...t) { - let i = e.renderer.apply(this, t); - return !1 === i && (i = n.apply(this, t)), - i - } - : e.renderer - } - if ("tokenizer"in e) { - if (!e.level || "block" !== e.level && "inline" !== e.level) - throw new Error("extension level must be 'block' or 'inline'"); - const n = t[e.level]; - n ? n.unshift(e.tokenizer) : t[e.level] = [e.tokenizer], - e.start && ("block" === e.level ? t.startBlock ? t.startBlock.push(e.start) : t.startBlock = [e.start] : "inline" === e.level && (t.startInline ? t.startInline.push(e.start) : t.startInline = [e.start])) - } - "childTokens"in e && e.childTokens && (t.childTokens[e.name] = e.childTokens) - } - )), - n.extensions = t), - e.renderer) { - const t = this.defaults.renderer || new ae(this.defaults); - for (const n in e.renderer) { - const i = e.renderer[n] - , s = n - , r = t[s]; - t[s] = (...e)=>{ - let n = i.apply(t, e); - return !1 === n && (n = r.apply(t, e)), - n || "" - } - } - n.renderer = t - } - if (e.tokenizer) { - const t = this.defaults.tokenizer || new ee(this.defaults); - for (const n in e.tokenizer) { - const i = e.tokenizer[n] - , s = n - , r = t[s]; - t[s] = (...e)=>{ - let n = i.apply(t, e); - return !1 === n && (n = r.apply(t, e)), - n - } - } - n.tokenizer = t - } - if (e.hooks) { - const t = this.defaults.hooks || new de; - for (const n in e.hooks) { - const i = e.hooks[n] - , s = n - , r = t[s]; - de.passThroughHooks.has(n) ? t[s] = e=>{ - if (this.defaults.async) - return Promise.resolve(i.call(t, e)).then((e=>r.call(t, e))); - const n = i.call(t, e); - return r.call(t, n) - } - : t[s] = (...e)=>{ - let n = i.apply(t, e); - return !1 === n && (n = r.apply(t, e)), - n - } - } - n.hooks = t - } - if (e.walkTokens) { - const t = this.defaults.walkTokens - , i = e.walkTokens; - n.walkTokens = function(e) { - let n = []; - return n.push(i.call(this, e)), - t && (n = n.concat(t.call(this, e))), - n - } - } - this.defaults = __spreadValues(__spreadValues({}, this.defaults), n) - } - )), - this - } - setOptions(e) { - return this.defaults = __spreadValues(__spreadValues({}, this.defaults), e), - this - } - } - ; - function ue(e, t, n) { - return he.parse(e, t, n) - } - ue.options = ue.setOptions = function(e) { - return he.setOptions(e), - ue.defaults = he.defaults, - F(ue.defaults), - ue - } - , - ue.getDefaults = L, - ue.defaults = A, - ue.use = function(...e) { - return he.use(...e), - ue.defaults = he.defaults, - F(ue.defaults), - ue - } - , - ue.walkTokens = function(e, t) { - return he.walkTokens(e, t) - } - , - ue.parseInline = he.parseInline, - ue.Parser = ce, - ue.parser = ce.parse, - ue.Renderer = ae, - ue.TextRenderer = oe, - ue.Lexer = re, - ue.lexer = re.lex, - ue.Tokenizer = ee, - ue.Slugger = le, - ue.Hooks = de, - ue.parse = ue, - ue.options, - ue.setOptions, - ue.use, - ue.walkTokens, - ue.parseInline; - var pe = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {}; - function me(e) { - return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e - } - var ge = { - "&": "&", - "<": "<", - ">": ">", - '"': """, - "'": "'" - } - , fe = { - "&": "&", - "<": "<", - ">": ">", - """: '"', - "'": "'" - } - , ke = /(&|<|>|"|')/g - , ye = /[&<>"']/g; - function be(e) { - return ge[e] - } - function _e(e) { - return fe[e] - } - function $e(e) { - return null == e ? "" : String(e).replace(ye, be) - } - function xe(e) { - return null == e ? "" : String(e).replace(ke, _e) - } - $e.options = xe.options = {}; - var ve = { - encode: $e, - escape: $e, - decode: xe, - unescape: xe, - version: "1.0.0-browser" - }; - var we = function e(t) { - for (var n, i, s = Array.prototype.slice.call(arguments, 1); s.length; ) - for (i in n = s.shift()) - n.hasOwnProperty(i) && ("[object Object]" === Object.prototype.toString.call(t[i]) ? t[i] = e(t[i], n[i]) : t[i] = n[i]); - return t - } - , Ce = function(e) { - return "string" == typeof e ? e.toLowerCase() : e - }; - function Se(e, t) { - return e[t] = !0, - e - } - var Te = function(e) { - return e.reduce(Se, {}) - } - , Ee = { - uris: Te(["background", "base", "cite", "href", "longdesc", "src", "usemap"]) - } - , Le = { - voids: Te(["area", "br", "col", "hr", "img", "wbr", "input", "base", "basefont", "link", "meta"]) - } - , Ae = ve - , Fe = Ce - , Oe = Le - , Me = /^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/ - , Re = /^<\s*\/\s*([\w:-]+)[^>]*>/ - , Pe = /([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g - , Be = /^= 0 && (t.comment && t.comment(e.substring(4, i)), - e = e.substring(i + 3), - n = !1) : Ie.test(e) ? a(Re, l) : Be.test(e) && a(Me, o); - var i; - !function() { - if (!n) - return; - var i, s = e.indexOf("<"); - s >= 0 ? (i = e.substring(0, s), - e = e.substring(s)) : (i = e, - e = ""); - t.chars && t.chars(i) - }() - }(); - var i = e === s; - s = e, - i && (e = "") - } - function a(t, i) { - var s = e.match(t); - s && (e = e.substring(s[0].length), - s[0].replace(t, i), - n = !1) - } - function o(e, n, s, r) { - var a = {} - , o = Fe(n) - , l = Oe.voids[o] || !!r; - s.replace(Pe, (function(e, t, n, i, s) { - a[t] = void 0 === n && void 0 === i && void 0 === s ? void 0 : Ae.decode(n || i || s || "") - } - )), - l || i.push(o), - t.start && t.start(o, a, l) - } - function l(e, n) { - var s, r = 0, a = Fe(n); - if (a) - for (r = i.length - 1; r >= 0 && i[r] !== a; r--) - ; - if (r >= 0) { - for (s = i.length - 1; s >= r; s--) - t.end && t.end(i[s]); - i.length = r - } - } - l() - } - , Ne = function(e, t) { - var n, i = t || {}; - return o(), - { - start: function(e, t, a) { - var o = De(e); - if (n.ignoring) - return void r(o); - if (-1 === (i.allowedTags || []).indexOf(o)) - return void r(o); - if (i.filter && !i.filter({ - tag: o, - attrs: t - })) - return void r(o); - s("<"), - s(o), - Object.keys(t).forEach((function(e) { - var n = t[e] - , r = (i.allowedClasses || {})[o] || [] - , a = (i.allowedAttributes || {})[o] || [] - , l = De(e); - ("class" === l && -1 === a.indexOf(l) ? (n = n.split(" ").filter((function(e) { - return r && -1 !== r.indexOf(e) - } - )).join(" ").trim()).length : -1 !== a.indexOf(l) && (!0 !== qe.uris[l] || function(e) { - var t = e[0]; - if ("#" === t || "/" === t) - return !0; - var n = e.indexOf(":"); - if (-1 === n) - return !0; - var s = e.indexOf("?"); - if (-1 !== s && n > s) - return !0; - var r = e.indexOf("#"); - return -1 !== r && n > r || i.allowedSchemes.some(a); - function a(t) { - return 0 === e.indexOf(t + ":") - } - }(n))) && (s(" "), - s(e), - "string" == typeof n && (s('="'), - s(Ue.encode(n)), - s('"'))) - } - )), - s(a ? "/>" : ">") - }, - end: function(e) { - var t = De(e); - -1 !== (i.allowedTags || []).indexOf(t) && !1 === n.ignoring ? (s("")) : a(t) - }, - chars: function(e) { - !1 === n.ignoring && s(i.transformText ? i.transformText(e) : e) - } - }; - function s(t) { - e.push(t) - } - function r(e) { - ze.voids[e] || (!1 === n.ignoring ? n = { - ignoring: e, - depth: 1 - } : n.ignoring === e && n.depth++) - } - function a(e) { - n.ignoring === e && --n.depth <= 0 && o() - } - function o() { - n = { - ignoring: !1, - depth: 0 - } - } - } - , He = { - allowedAttributes: { - a: ["href", "name", "target", "title", "aria-label"], - iframe: ["allowfullscreen", "frameborder", "src"], - img: ["src", "alt", "title", "aria-label"] - }, - allowedClasses: {}, - allowedSchemes: ["http", "https", "mailto"], - allowedTags: ["a", "abbr", "article", "b", "blockquote", "br", "caption", "code", "del", "details", "div", "em", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "img", "ins", "kbd", "li", "main", "mark", "ol", "p", "pre", "section", "span", "strike", "strong", "sub", "summary", "sup", "table", "tbody", "td", "th", "thead", "tr", "u", "ul"], - filter: null - }; - function Ve(e, t, n) { - var i = [] - , s = !0 === n ? t : je({}, He, t) - , r = Ne(i, s); - return We(e, r), - i.join("") - } - Ve.defaults = He; - const Qe = me(Ve); - var Ze = { - exports: {} - }; - Ze.exports = function() { - function e(e, t) { - return e(t = { - exports: {} - }, t.exports), - t.exports - } - var t = e((function(e) { - var t = e.exports = function() { - return new RegExp("(?:" + t.line().source + ")|(?:" + t.block().source + ")","gm") - } - ; - t.line = function() { - return /(?:^|\s)\/\/(.+?)$/gm - } - , - t.block = function() { - return /\/\*([\S\s]*?)\*\//gm - } - } - )) - , n = ["23AC69", "91C132", "F19726", "E8552D", "1AAB8E", "E1147F", "2980C1", "1BA1E6", "9FA0A0", "F19726", "E30B20", "E30B20", "A3338B"]; - function i(e) { - return '' + e + "" - } - return function(e, s) { - void 0 === s && (s = {}); - var r = s.colors; - void 0 === r && (r = n); - var a = 0 - , o = {} - , l = new RegExp("(" + /[\u4E00-\u9FFF\u3400-\u4dbf\uf900-\ufaff\u3040-\u309f\uac00-\ud7af\u0400-\u04FF]+|\w+/.source + "|" + /' + t + ""; - return a = ++a % r.length, - l - } - )) - } - }(); - const Ge = me(Ze.exports); - let Ke; - function Ye() { - return Ke - } - function Xe(e, t) { - var n; - let i = null == (n = Ye()) ? void 0 : n.parse(t); - i || (i = t.replace(/```\s*([^]+?.*?[^]+?[^]+?)```/g, ((e,t)=>`
    ${Ge(t)}
    `)).replace(/!\[(.*?)\]\((.*?)\)/g, ((e,t,n)=>`${t}`)).replace(/\[(.*?)\]\((.*?)\)/g, ((e,t,n)=>`
    ${t}`)).replace(/\n/g, "
    ")); - let s = Qe(i, { - allowedClasses: {}, - allowedSchemes: ["http", "https", "mailto", "data"], - allowedTags: ["a", "abbr", "article", "b", "blockquote", "br", "caption", "code", "del", "details", "div", "em", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "img", "ins", "kbd", "li", "main", "mark", "ol", "p", "pre", "section", "span", "strike", "strong", "sub", "summary", "sup", "table", "tbody", "td", "th", "thead", "tr", "u", "ul"], - allowedAttributes: { - "*": ["title", "accesskey"], - a: ["href", "name", "target", "aria-label", "rel"], - img: ["src", "alt", "title", "atk-emoticon", "aria-label"], - code: ["class"], - span: ["class", "style"] - }, - filter: e=>([["code", /^hljs\W+language-(.*)$/], ["span", /^(hljs-.*)$/]].forEach((([t,n])=>{ - e.tag === t && e.attrs.class && !n.test(e.attrs.class) && delete e.attrs.class - } - )), - "span" === e.tag && e.attrs.style && !/^color:(\W+)?#[0-9a-f]{3,6};?$/i.test(e.attrs.style) && delete e.attrs.style, - !0) - }); - return e.markedReplacers.forEach((e=>{ - "function" == typeof e && (s = e(s)) - } - )), - s - } - const Je = { - placeholder: "Leave a comment", - noComment: "No Comment", - send: "Send", - save: "Save", - nick: "Nickname", - email: "Email", - link: "Website", - emoticon: "Emoji", - preview: "Preview", - image: "Image", - refresh: "Refresh", - uploadFail: "Upload Failed", - commentFail: "Failed to comment", - restoredMsg: "Content has been restored", - onlyAdminCanReply: "Only admin can reply", - uploadLoginMsg: "Please fill in your name and email to upload", - counter: "{count} Comments", - sortLatest: "Latest", - sortOldest: "Oldest", - sortBest: "Best", - sortAuthor: "Author", - openComment: "Open Comment", - closeComment: "Close Comment", - listLoadFailMsg: "Failed to load comments", - listRetry: "Click to retry", - loadMore: "Load More", - admin: "Admin", - reply: "Reply", - voteUp: "Up", - voteDown: "Down", - voteFail: "Vote Failed", - readMore: "Read More", - actionConfirm: "Confirm", - collapse: "Collapse", - collapsed: "Collapsed", - collapsedMsg: "This comment has been collapsed", - expand: "Expand", - approved: "Approved", - pending: "Pending", - pendingMsg: "Pending, visible only to commenter.", - edit: "Edit", - editCancel: "Cancel Edit", - delete: "Delete", - deleteConfirm: "Confirm", - pin: "Pin", - unpin: "Unpin", - seconds: "seconds ago", - minutes: "minutes ago", - hours: "hours ago", - days: "days ago", - now: "just now", - adminCheck: "Enter admin password:", - captchaCheck: "Enter the CAPTCHA to continue:", - confirm: "Confirm", - cancel: "Cancel", - msgCenter: "Messages", - ctrlCenter: "Admin", - frontend: "Frontend", - backend: "Backend", - loading: "Loading", - loadFail: "Load Failed", - editing: "Editing", - editFail: "Edit Failed", - deleting: "Deleting", - deleteFail: "Delete Failed", - reqGot: "Request got", - reqAborted: "Request timed out or terminated unexpectedly" - } - , et = "ArtalkI18n" - , tt = { - en: Je, - "en-US": Je, - "zh-CN": { - placeholder: "键入内容...", - noComment: "「此时无声胜有声」", - send: "发送评论", - save: "保存评论", - nick: "昵称", - email: "邮箱", - link: "网址", - emoticon: '', - preview: '', - image: '', - refresh: '', - uploadFail: "上传失败", - commentFail: "评论失败", - restoredMsg: "内容已自动恢复", - onlyAdminCanReply: "仅管理员可评论", - uploadLoginMsg: "填入你的名字邮箱才能上传哦", - counter: "{count} 条评论", - sortLatest: "最新", - sortOldest: "最早", - sortBest: "最热", - sortAuthor: "作者", - openComment: "打开评论", - closeComment: "关闭评论", - listLoadFailMsg: "无法获取评论列表数据", - listRetry: "点击重新获取", - loadMore: "加载更多", - admin: "管理员", - reply: "回复", - voteUp: "赞同", - voteDown: "反对", - voteFail: "投票失败", - readMore: "阅读更多", - actionConfirm: "确认操作", - collapse: "折叠", - collapsed: "已折叠", - collapsedMsg: "该评论已被系统或管理员折叠", - expand: "展开", - approved: "已审", - pending: "待审", - pendingMsg: "审核中,仅本人可见。", - edit: "编辑", - editCancel: "取消编辑", - delete: "删除", - deleteConfirm: "确认删除", - pin: "置顶", - unpin: "取消置顶", - seconds: "秒前", - minutes: "分钟前", - hours: "小时前", - days: "天前", - now: "刚刚", - adminCheck: "键入密码来验证管理员身份:", - captchaCheck: "键入验证码继续:", - confirm: "确认", - cancel: "取消", - msgCenter: "通知中心", - ctrlCenter: "控制中心", - frontend: "前端", - backend: "后端", - loading: "加载中", - loadFail: "加载失败", - editing: "修改中", - editFail: "修改失败", - deleting: "删除中", - deleteFail: "删除失败", - reqGot: "请求响应", - reqAborted: "请求超时或意外终止" - } - }; - function nt(e) { - return e = e.replace(/^([a-zA-Z]+)(-[a-zA-Z]+)?$/, ((e,t,n)=>t.toLowerCase() + (n || "").toUpperCase())), - tt[e] ? tt[e] : window[et] && window[et][e] ? window[et][e] : tt.en - } - let it = "en" - , st = nt(it); - function rt(e) { - e !== it && (it = e, - st = "string" == typeof e ? nt(e) : e) - } - function at(e, t={}) { - let n = (null == st ? void 0 : st[e]) || e; - return n = n.replace(/\{\s*(\w+?)\s*\}/g, ((e,n)=>t[n] || "")), - n - } - const ot = "2.6.2"; - const lt = new class { - constructor() { - __publicField(this, "ctx"), - __publicField(this, "data"); - const e = JSON.parse(window.localStorage.getItem("ArtalkUser") || "{}"); - this.data = { - nick: e.nick || "", - email: e.email || "", - link: e.link || "", - token: e.token || "", - isAdmin: e.isAdmin || !1 - } - } - setContext(e) { - this.ctx = e - } - update(e={}) { - var t; - Object.entries(e).forEach((([e,t])=>{ - this.data[e] = t - } - )), - window.localStorage.setItem("ArtalkUser", JSON.stringify(this.data)), - null == (t = this.ctx) || t.trigger("user-changed", this.data) - } - logout() { - this.update({ - token: "", - isAdmin: !1 - }) - } - checkHasBasicUserInfo() { - return !!this.data.nick && !!this.data.email - } - } - , ct = window || {} - , dt = navigator || {}; - class ht { - constructor(e) { - __publicField(this, "comment"), - __publicField(this, "$el"), - __publicField(this, "$main"), - __publicField(this, "$header"), - __publicField(this, "$headerNick"), - __publicField(this, "$headerBadgeWrap"), - __publicField(this, "$body"), - __publicField(this, "$content"), - __publicField(this, "$childrenWrap"), - __publicField(this, "$actions"), - __publicField(this, "voteBtnUp"), - __publicField(this, "voteBtnDown"), - __publicField(this, "$replyTo"), - __publicField(this, "$replyAt"), - this.comment = e - } - get ctx() { - return this.comment.ctx - } - get data() { - return this.comment.getData() - } - get conf() { - return this.comment.conf - } - get cConf() { - return this.comment.getConf() - } - } - function ut(e) { - if (e.$headerNick = e.$el.querySelector(".atk-nick"), - e.data.link) { - const t = s(''); - t.innerText = e.data.nick, - t.href = h(e.data.link) ? e.data.link : `https://${e.data.link}`, - e.$headerNick.append(t) - } else - e.$headerNick.innerText = e.data.nick - } - function pt(e) { - e.$headerBadgeWrap = e.$el.querySelector(".atk-badge-wrap"), - e.$headerBadgeWrap.innerHTML = ""; - const t = e.data.badge_name - , n = e.data.badge_color; - if (t) { - const i = s(''); - i.innerText = t.replace("管理员", e.ctx.$t("admin")), - i.style.backgroundColor = n || "", - e.$headerBadgeWrap.append(i) - } - if (e.data.is_pinned) { - const t = s(`${e.ctx.$t("pin")}`); - e.$headerBadgeWrap.append(t) - } - } - function mt(e) { - const t = e.$el.querySelector(".atk-date"); - t.innerText = e.comment.getDateFormatted(), - t.setAttribute("data-atk-comment-date", String(+new Date(e.data.date))) - } - function gt(e) { - if (!e.ctx.conf.uaBadge && !e.data.ip_region) - return; - let t = e.$header.querySelector("atk-ua-wrap"); - if (t || (t = s(''), - e.$header.append(t)), - t.innerHTML = "", - e.data.ip_region) { - const n = s(''); - n.innerText = e.data.ip_region, - t.append(n) - } - if (e.ctx.conf.uaBadge) { - const {browser: n, os: i} = e.comment.getUserUA(); - if (String(n).trim()) { - const e = s(''); - e.innerText = n, - t.append(e) - } - if (String(i).trim()) { - const e = s(''); - e.innerText = i, - t.append(e) - } - } - } - class ft { - constructor(e, t) { - __publicField(this, "ctx"), - __publicField(this, "conf"), - __publicField(this, "$el"), - __publicField(this, "isLoading", !1), - __publicField(this, "msgRecTimer"), - __publicField(this, "msgRecTimerFunc"), - __publicField(this, "isConfirming", !1), - __publicField(this, "confirmRecTimer"), - this.ctx = e, - this.$el = s(''), - this.conf = "object" != typeof t ? { - text: t - } : t, - this.$el.innerText = this.getText(), - this.conf.adminOnly && this.$el.setAttribute("atk-only-admin-show", "") - } - get isMessaging() { - return !!this.msgRecTimer - } - appendTo(e) { - return e.append(this.$el), - this - } - getText() { - return "string" == typeof this.conf.text ? this.conf.text : this.conf.text() - } - setClick(e) { - this.$el.onclick = t=>{ - if (t.stopPropagation(), - !this.isLoading) { - if (this.conf.confirm && !this.isMessaging) { - const e = ()=>{ - this.isConfirming = !1, - this.$el.classList.remove("atk-btn-confirm"), - this.$el.innerText = this.getText() - } - ; - if (!this.isConfirming) - return this.isConfirming = !0, - this.$el.classList.add("atk-btn-confirm"), - this.$el.innerText = this.conf.confirmText || this.ctx.$t("actionConfirm"), - void (this.confirmRecTimer = window.setTimeout((()=>e()), 5e3)); - this.confirmRecTimer && window.clearTimeout(this.confirmRecTimer), - e() - } - if (this.msgRecTimer) - return this.fireMsgRecTimer(), - void this.clearMsgRecTimer(); - e() - } - } - } - updateText(e) { - e && (this.conf.text = e), - this.setLoading(!1), - this.$el.innerText = this.getText() - } - setLoading(e, t) { - this.isLoading !== e && (this.isLoading = e, - e ? (this.$el.classList.add("atk-btn-loading"), - this.$el.innerText = t || `${this.ctx.$t("loading")}...`) : (this.$el.classList.remove("atk-btn-loading"), - this.$el.innerText = this.getText())) - } - setError(e) { - this.setMsg(e, "atk-btn-error") - } - setWarn(e) { - this.setMsg(e, "atk-btn-warn") - } - setSuccess(e) { - this.setMsg(e, "atk-btn-success") - } - setMsg(e, t, n, i) { - this.setLoading(!1), - t && this.$el.classList.add(t), - this.$el.innerText = e, - this.setMsgRecTimer((()=>{ - this.$el.innerText = this.getText(), - t && this.$el.classList.remove(t), - i && i() - } - ), n || 2500) - } - setMsgRecTimer(e, t) { - this.fireMsgRecTimer(), - this.clearMsgRecTimer(), - this.msgRecTimerFunc = e, - this.msgRecTimer = window.setTimeout((()=>{ - e(), - this.clearMsgRecTimer() - } - ), t) - } - fireMsgRecTimer() { - this.msgRecTimerFunc && this.msgRecTimerFunc() - } - clearMsgRecTimer() { - this.msgRecTimer && window.clearTimeout(this.msgRecTimer), - this.msgRecTimer = void 0, - this.msgRecTimerFunc = void 0 - } - } - function kt(e) { - e.ctx.conf.vote && (e.voteBtnUp = new ft(e.ctx,(()=>`${e.ctx.$t("voteUp")} (${e.data.vote_up || 0})`)).appendTo(e.$actions), - e.voteBtnUp.setClick((()=>{ - e.comment.getActions().vote("up") - } - )), - e.ctx.conf.voteDown && (e.voteBtnDown = new ft(e.ctx,(()=>`${e.ctx.$t("voteDown")} (${e.data.vote_down || 0})`)).appendTo(e.$actions), - e.voteBtnDown.setClick((()=>{ - e.comment.getActions().vote("down") - } - )))) - } - function yt(e) { - if (!e.data.is_allow_reply) - return; - const t = s(`${e.ctx.$t("reply")}`); - e.$actions.append(t), - t.addEventListener("click", (t=>{ - t.stopPropagation(), - e.cConf.onReplyBtnClick ? e.cConf.onReplyBtnClick() : e.ctx.replyComment(e.data, e.$el) - } - )) - } - function bt(e) { - const t = new ft(e.ctx,{ - text: ()=>e.data.is_collapsed ? e.ctx.$t("expand") : e.ctx.$t("collapse"), - adminOnly: !0 - }); - t.appendTo(e.$actions), - t.setClick((()=>{ - e.comment.getActions().adminEdit("collapsed", t) - } - )) - } - function _t(e) { - const t = new ft(e.ctx,{ - text: ()=>e.data.is_pending ? e.ctx.$t("pending") : e.ctx.$t("approved"), - adminOnly: !0 - }); - t.appendTo(e.$actions), - t.setClick((()=>{ - e.comment.getActions().adminEdit("pending", t) - } - )) - } - function $t(e) { - const t = new ft(e.ctx,{ - text: ()=>e.data.is_pinned ? e.ctx.$t("unpin") : e.ctx.$t("pin"), - adminOnly: !0 - }); - t.appendTo(e.$actions), - t.setClick((()=>{ - e.comment.getActions().adminEdit("pinned", t) - } - )) - } - function xt(e) { - const t = new ft(e.ctx,{ - text: e.ctx.$t("edit"), - adminOnly: !0 - }); - t.appendTo(e.$actions), - t.setClick((()=>{ - e.ctx.editComment(e.data, e.$el) - } - )) - } - function vt(e) { - const t = new ft(e.ctx,{ - text: e.ctx.$t("delete"), - confirm: !0, - confirmText: e.ctx.$t("deleteConfirm"), - adminOnly: !0 - }); - t.appendTo(e.$actions), - t.setClick((()=>{ - e.comment.getActions().adminDelete(t) - } - )) - } - const wt = { - Avatar: function(e) { - const t = e.$el.querySelector(".atk-avatar") - , n = s("") - , i = e.conf.avatarURLBuilder; - if (n.src = i ? i(e.data) : e.comment.getGravatarURL(), - e.data.link) { - const i = s(''); - i.href = h(e.data.link) ? e.data.link : `https://${e.data.link}`, - i.append(n), - t.append(i) - } else - t.append(n) - }, - Header: function(e) { - Object.entries({ - renderNick: ut, - renderVerifyBadge: pt, - renderDate: mt, - renderUABadge: gt - }).forEach((([t,n])=>{ - n(e) - } - )) - }, - Content: function(e) { - if (!e.data.is_collapsed) - return e.$content.innerHTML = e.comment.getContentMarked(), - void e.$content.classList.remove("atk-hide", "atk-collapsed"); - e.$content.classList.add("atk-hide", "atk-type-collapsed"); - const t = s(`\n
    \n ${e.ctx.$t("collapsedMsg")}\n ${e.ctx.$t("expand")}\n
    `); - e.$body.insertAdjacentElement("beforeend", t); - const n = t.querySelector(".atk-show-btn"); - n.addEventListener("click", (t=>{ - t.stopPropagation(), - e.$content.classList.contains("atk-hide") ? (e.$content.innerHTML = e.comment.getContentMarked(), - e.$content.classList.remove("atk-hide"), - b(e.$content), - n.innerHTML = e.ctx.$t("collapse")) : (e.$content.innerHTML = "", - e.$content.classList.add("atk-hide"), - n.innerHTML = e.ctx.$t("expand")) - } - )) - }, - ReplyAt: function(e) { - e.cConf.isFlatMode || 0 === e.data.rid || e.cConf.replyTo && (e.$replyAt = s(''), - e.$replyAt.querySelector(".atk-nick").innerText = `${e.cConf.replyTo.nick}`, - e.$replyAt.onclick = ()=>{ - e.comment.getActions().goToReplyComment() - } - , - e.$headerBadgeWrap.insertAdjacentElement("afterend", e.$replyAt)) - }, - ReplyTo: function(e) { - if (!e.cConf.isFlatMode) - return; - if (!e.cConf.replyTo) - return; - e.$replyTo = s(`\n
    \n
    ${e.ctx.$t("reply")} :
    \n
    \n
    `); - const t = e.$replyTo.querySelector(".atk-nick"); - t.innerText = `@${e.cConf.replyTo.nick}`, - t.onclick = ()=>{ - e.comment.getActions().goToReplyComment() - } - ; - let n = Xe(e.ctx, e.cConf.replyTo.content); - e.cConf.replyTo.is_collapsed && (n = `[${e.ctx.$t("collapsed")}]`), - e.$replyTo.querySelector(".atk-content").innerHTML = n, - e.$body.prepend(e.$replyTo) - }, - Pending: function(e) { - if (!e.data.is_pending) - return; - const t = s(`
    ${e.ctx.$t("pendingMsg")}
    `); - e.$body.prepend(t) - }, - Actions: function(e) { - Object.entries({ - renderVote: kt, - renderReply: yt, - renderCollapse: bt, - renderModerator: _t, - renderPin: $t, - renderEdit: xt, - renderDel: vt - }).forEach((([t,n])=>{ - n(e) - } - )) - } - }; - function Ct(e, t) { - t.forEach((({el: t, max: n, imgContains: i})=>{ - const a = ()=>{ - t && (e.scrollable ? function(e) { - if (!e.el) - return; - if (e.el.classList.contains(Et)) - return; - e.el.classList.add(Et), - e.el.style.height = `${e.maxHeight}px` - }({ - el: t, - maxHeight: n - }) : function(e) { - if (!e.el) - return; - if (!e.maxHeight) - return; - if (e.el.classList.contains(St)) - return; - e.el.classList.add(St), - e.el.style.height = `${e.maxHeight}px`, - e.el.style.overflow = "hidden"; - const t = s(`
    ${at("readMore")}`); - t.onclick = t=>{ - t.stopPropagation(), - Tt(e.el), - e.postBtnClick && e.postBtnClick(t) - } - , - e.el.append(t) - }({ - el: t, - maxHeight: n, - postBtnClick: e.postExpandBtnClick - })) - } - , o = ()=>{ - t && r(t) > n && a() - } - ; - o(), - i && t && function(e, t) { - if (!e) - return; - const n = e.getElementsByTagName("img"); - if (!n.length) - return; - let i = n.length; - for (let s = 0; s < n.length; s++) - n[s].complete ? i-- : n[s].addEventListener("load", (()=>{ - i--, - 0 === i && t() - } - )), - 0 === i && t() - }(t, (()=>o())) - } - )) - } - const St = "atk-height-limit"; - function Tt(e) { - e && e.classList.contains(St) && (e.classList.remove(St), - Array.from(e.children).forEach((e=>{ - e.classList.contains("atk-height-limit-btn") && e.remove() - } - )), - e.style.height = "", - e.style.overflow = "") - } - const Et = "atk-height-limit-scroll"; - class Lt extends ht { - constructor(e) { - super(e) - } - render() { - var e; - return this.$el = s('
    \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n'), - this.$main = this.$el.querySelector(".atk-main"), - this.$header = this.$el.querySelector(".atk-header"), - this.$body = this.$el.querySelector(".atk-body"), - this.$content = this.$body.querySelector(".atk-content"), - this.$actions = this.$el.querySelector(".atk-actions"), - this.$el.setAttribute("id", `atk-comment-${this.data.id}`), - e = this, - Object.entries(wt).forEach((([t,n])=>{ - n(e) - } - )), - this.recoveryChildrenWrap(), - this.$el - } - checkHeightLimit() { - const e = this.ctx.conf.heightLimit; - if (!e || !e.content || !e.children) - return; - const t = e.content - , n = e.children; - Ct({ - postExpandBtnClick: ()=>{ - const e = this.comment.getChildren(); - 1 === e.length && Tt(e[0].getRender().$content) - } - , - scrollable: e.scrollable - }, [{ - el: this.$content, - max: t, - imgContains: !0 - }, { - el: this.$replyTo, - max: t, - imgContains: !0 - }, { - el: this.$childrenWrap, - max: n, - imgContains: !1 - }]) - } - heightLimitRemoveForChildren() { - this.$childrenWrap && Tt(this.$childrenWrap) - } - playFadeAnim() { - b(this.comment.getRender().$el) - } - playFadeAnimForBody() { - b(this.comment.getRender().$body) - } - getChildrenWrap() { - return this.$childrenWrap - } - renderChildrenWrap() { - return this.$childrenWrap || (this.$childrenWrap = s('
    '), - this.$main.append(this.$childrenWrap)), - this.$childrenWrap - } - recoveryChildrenWrap() { - this.$childrenWrap && this.$main.append(this.$childrenWrap) - } - setUnread(e) { - e ? this.$el.classList.add("atk-unread") : this.$el.classList.remove("atk-unread") - } - setOpenable(e) { - e ? this.$el.classList.add("atk-openable") : this.$el.classList.remove("atk-openable") - } - setOpenURL(e) { - this.setOpenable(!0), - this.$el.onclick = t=>{ - t.preventDefault(), - window.open(e), - this.cConf.openEvt && this.cConf.openEvt() - } - } - setOpenAction(e) { - this.setOpenable(!0), - this.$el.onclick = t=>{ - t.preventDefault(), - e() - } - } - } - class At { - constructor(e) { - __publicField(this, "comment"), - this.comment = e - } - get ctx() { - return this.comment.ctx - } - get data() { - return this.comment.getData() - } - get cConf() { - return this.comment.getConf() - } - vote(e) { - const t = "up" === e ? this.comment.getRender().voteBtnUp : this.comment.getRender().voteBtnDown; - this.ctx.getApi().comment.vote(this.data.id, `comment_ ${e}`).then((e=>{ - var t, n; - this.data.vote_up = e.up, - this.data.vote_down = e.down, - null == (t = this.comment.getRender().voteBtnUp) || t.updateText(), - null == (n = this.comment.getRender().voteBtnDown) || n.updateText() - } - )).catch((e=>{ - null == t || t.setError(this.ctx.$t("voteFail")), - console.log(e) - } - )) - } - adminEdit(e, t) { - if (t.isLoading) - return; - t.setLoading(!0, `${this.ctx.$t("editing")}...`); - const n = __spreadValues({}, this.data); - "collapsed" === e ? n.is_collapsed = !n.is_collapsed : "pending" === e ? n.is_pending = !n.is_pending : "pinned" === e && (n.is_pinned = !n.is_pinned), - this.ctx.getApi().comment.commentEdit(n).then((e=>{ - t.setLoading(!1), - this.comment.setData(e), - this.ctx.listRefreshUI() - } - )).catch((e=>{ - console.error(e), - t.setError(this.ctx.$t("editFail")) - } - )) - } - adminDelete(e) { - e.isLoading || (e.setLoading(!0, `${this.ctx.$t("deleting")}...`), - this.ctx.getApi().comment.commentDel(this.data.id, this.data.site_name).then((()=>{ - e.setLoading(!1), - this.cConf.onDelete && this.cConf.onDelete(this.comment) - } - )).catch((t=>{ - console.error(t), - e.setError(this.ctx.$t("deleteFail")) - } - ))) - } - goToReplyComment() { - const e = window.location.hash - , t = `#atk-comment-${this.data.rid}`; - window.location.hash = t, - t === e && window.dispatchEvent(new Event("hashchange")) - } - } - class Ft extends m { - constructor(e, t, n) { - super(e), - __publicField(this, "renderInstance"), - __publicField(this, "actionInstance"), - __publicField(this, "data"), - __publicField(this, "cConf"), - __publicField(this, "parent"), - __publicField(this, "children", []), - __publicField(this, "nestCurt"), - __publicField(this, "nestMax"), - this.nestMax = e.conf.nestMax || 3, - this.cConf = n, - this.data = __spreadValues({}, t), - this.data.date = this.data.date.replace(/-/g, "/"), - this.parent = null, - this.nestCurt = 1, - this.actionInstance = new At(this), - this.renderInstance = new Lt(this) - } - render() { - const e = this.renderInstance.render(); - this.$el && this.$el.replaceWith(e), - this.$el = e, - this.cConf.afterRender && this.cConf.afterRender() - } - getActions() { - return this.actionInstance - } - getRender() { - return this.renderInstance - } - getData() { - return this.data - } - setData(e) { - this.data = e, - this.render(), - this.getRender().playFadeAnimForBody() - } - getParent() { - return this.parent - } - getChildren() { - return this.children - } - getNestCurt() { - return this.nestCurt - } - getIsRoot() { - return 0 === this.data.rid - } - getID() { - return this.data.id - } - putChild(e, t="append") { - e.parent = this, - e.nestCurt = this.nestCurt + 1, - this.children.push(e); - const n = this.getChildrenEl(); - "append" === t ? n.append(e.getEl()) : "prepend" === t && n.prepend(e.getEl()), - e.getRender().playFadeAnim(), - e.getRender().checkHeightLimit() - } - getChildrenEl() { - let e = this.getRender().getChildrenWrap(); - return e || (e = this.nestCurt < this.nestMax ? this.getRender().renderChildrenWrap() : this.parent.getChildrenEl()), - e - } - getParents() { - const e = [] - , t = n=>{ - n.parent && (e.push(n.parent), - t(n.parent)) - } - ; - return t(this), - e - } - getEl() { - return this.$el - } - getGravatarURL() { - return function(e, t) { - const {mirror: n, params: i} = e.conf.gravatar; - return `${n.replace(/\/$/, "")}/${t}?${i.replace(/^\?/, "")}` - }(this.ctx, this.data.email_encrypted) - } - getContentMarked() { - return Xe(this.ctx, this.data.content) - } - getDateFormatted() { - return c(new Date(this.data.date), this.ctx) - } - getUserUA() { - const e = function(e) { - const t = String(e || dt.userAgent) - , n = { - os: "", - osVersion: "", - engine: "", - browser: "", - device: "", - language: "", - version: "" - } - , i = { - Trident: t.includes("Trident") || t.includes("NET CLR"), - Presto: t.includes("Presto"), - WebKit: t.includes("AppleWebKit"), - Gecko: t.includes("Gecko/") - } - , s = { - Safari: t.includes("Safari"), - Chrome: t.includes("Chrome") || t.includes("CriOS"), - IE: t.includes("MSIE") || t.includes("Trident"), - Edge: t.includes("Edge") || t.includes("Edg"), - Firefox: t.includes("Firefox") || t.includes("FxiOS"), - "Firefox Focus": t.includes("Focus"), - Chromium: t.includes("Chromium"), - Opera: t.includes("Opera") || t.includes("OPR"), - Vivaldi: t.includes("Vivaldi"), - Yandex: t.includes("YaBrowser"), - Kindle: t.includes("Kindle") || t.includes("Silk/"), - 360: t.includes("360EE") || t.includes("360SE"), - UC: t.includes("UC") || t.includes(" UBrowser"), - QQBrowser: t.includes("QQBrowser"), - QQ: t.includes("QQ/"), - Baidu: t.includes("Baidu") || t.includes("BIDUBrowser"), - Maxthon: t.includes("Maxthon"), - Sogou: t.includes("MetaSr") || t.includes("Sogou"), - LBBROWSER: t.includes("LBBROWSER"), - "2345Explorer": t.includes("2345Explorer"), - TheWorld: t.includes("TheWorld"), - MIUI: t.includes("MiuiBrowser"), - Quark: t.includes("Quark"), - Qiyu: t.includes("Qiyu"), - Wechat: t.includes("MicroMessenger"), - Taobao: t.includes("AliApp(TB"), - Alipay: t.includes("AliApp(AP"), - Weibo: t.includes("Weibo"), - Douban: t.includes("com.douban.frodo"), - Suning: t.includes("SNEBUY-APP"), - iQiYi: t.includes("IqiyiApp") - } - , r = { - Windows: t.includes("Windows"), - Linux: t.includes("Linux") || t.includes("X11"), - macOS: t.includes("Macintosh"), - Android: t.includes("Android") || t.includes("Adr"), - Ubuntu: t.includes("Ubuntu"), - FreeBSD: t.includes("FreeBSD"), - Debian: t.includes("Debian"), - "Windows Phone": t.includes("IEMobile") || t.includes("Windows Phone"), - BlackBerry: t.includes("BlackBerry") || t.includes("RIM"), - MeeGo: t.includes("MeeGo"), - Symbian: t.includes("Symbian"), - iOS: t.includes("like Mac OS X"), - "Chrome OS": t.includes("CrOS"), - WebOS: t.includes("hpwOS") - } - , a = { - Mobile: t.includes("Mobi") || t.includes("iPh") || t.includes("480"), - Tablet: t.includes("Tablet") || t.includes("Pad") || t.includes("Nexus 7") - }; - a.Mobile ? a.Mobile = !t.includes("iPad") : s.Chrome && t.includes("Edg") ? (s.Chrome = !1, - s.Edge = !0) : ct.showModalDialog && ct.chrome && (s.Chrome = !1, - s[360] = !0), - n.device = "PC", - n.language = (()=>{ - const e = (dt.browserLanguage || dt.language).split("-"); - return e[1] && (e[1] = e[1].toUpperCase()), - e.join("_") - } - )(); - const o = { - engine: i, - browser: s, - os: r, - device: a - }; - Object.entries(o).forEach((([e,t])=>{ - Object.entries(t).forEach((([t,i])=>{ - !0 === i && (n[e] = t) - } - )) - } - )); - const l = { - Windows: ()=>{ - const e = t.replace(/^.*Windows NT ([\d.]+);.*$/, "$1"); - return { - 6.4: "10", - 6.3: "8.1", - 6.2: "8", - 6.1: "7", - "6.0": "Vista", - 5.2: "XP", - 5.1: "XP", - "5.0": "2000", - "10.0": "10", - "11.0": "11" - }[e] || e - } - , - Android: ()=>t.replace(/^.*Android ([\d.]+);.*$/, "$1"), - iOS: ()=>t.replace(/^.*OS ([\d_]+) like.*$/, "$1").replace(/_/g, "."), - Debian: ()=>t.replace(/^.*Debian\/([\d.]+).*$/, "$1"), - "Windows Phone": ()=>t.replace(/^.*Windows Phone( OS)? ([\d.]+);.*$/, "$2"), - macOS: ()=>t.replace(/^.*Mac OS X ([\d_]+).*$/, "$1").replace(/_/g, "."), - WebOS: ()=>t.replace(/^.*hpwOS\/([\d.]+);.*$/, "$1") - }; - n.osVersion = "", - l[n.os] && (n.osVersion = l[n.os](), - n.osVersion === t && (n.osVersion = "")); - const c = { - Safari: ()=>t.replace(/^.*Version\/([\d.]+).*$/, "$1"), - Chrome: ()=>t.replace(/^.*Chrome\/([\d.]+).*$/, "$1").replace(/^.*CriOS\/([\d.]+).*$/, "$1"), - IE: ()=>t.replace(/^.*MSIE ([\d.]+).*$/, "$1").replace(/^.*rv:([\d.]+).*$/, "$1"), - Edge: ()=>t.replace(/^.*(Edge|Edg|Edg[A-Z]{1})\/([\d.]+).*$/, "$2"), - Firefox: ()=>t.replace(/^.*Firefox\/([\d.]+).*$/, "$1").replace(/^.*FxiOS\/([\d.]+).*$/, "$1"), - "Firefox Focus": ()=>t.replace(/^.*Focus\/([\d.]+).*$/, "$1"), - Chromium: ()=>t.replace(/^.*Chromium\/([\d.]+).*$/, "$1"), - Opera: ()=>t.replace(/^.*Opera\/([\d.]+).*$/, "$1").replace(/^.*OPR\/([\d.]+).*$/, "$1"), - Vivaldi: ()=>t.replace(/^.*Vivaldi\/([\d.]+).*$/, "$1"), - Yandex: ()=>t.replace(/^.*YaBrowser\/([\d.]+).*$/, "$1"), - Kindle: ()=>t.replace(/^.*Version\/([\d.]+).*$/, "$1"), - Maxthon: ()=>t.replace(/^.*Maxthon\/([\d.]+).*$/, "$1"), - QQBrowser: ()=>t.replace(/^.*QQBrowser\/([\d.]+).*$/, "$1"), - QQ: ()=>t.replace(/^.*QQ\/([\d.]+).*$/, "$1"), - Baidu: ()=>t.replace(/^.*BIDUBrowser[\s/]([\d.]+).*$/, "$1"), - UC: ()=>t.replace(/^.*UC?Browser\/([\d.]+).*$/, "$1"), - Sogou: ()=>t.replace(/^.*SE ([\d.X]+).*$/, "$1").replace(/^.*SogouMobileBrowser\/([\d.]+).*$/, "$1"), - "2345Explorer": ()=>t.replace(/^.*2345Explorer\/([\d.]+).*$/, "$1"), - TheWorld: ()=>t.replace(/^.*TheWorld ([\d.]+).*$/, "$1"), - MIUI: ()=>t.replace(/^.*MiuiBrowser\/([\d.]+).*$/, "$1"), - Quark: ()=>t.replace(/^.*Quark\/([\d.]+).*$/, "$1"), - Qiyu: ()=>t.replace(/^.*Qiyu\/([\d.]+).*$/, "$1"), - Wechat: ()=>t.replace(/^.*MicroMessenger\/([\d.]+).*$/, "$1"), - Taobao: ()=>t.replace(/^.*AliApp\(TB\/([\d.]+).*$/, "$1"), - Alipay: ()=>t.replace(/^.*AliApp\(AP\/([\d.]+).*$/, "$1"), - Weibo: ()=>t.replace(/^.*weibo__([\d.]+).*$/, "$1"), - Douban: ()=>t.replace(/^.*com.douban.frodo\/([\d.]+).*$/, "$1"), - Suning: ()=>t.replace(/^.*SNEBUY-APP([\d.]+).*$/, "$1"), - iQiYi: ()=>t.replace(/^.*IqiyiVersion\/([\d.]+).*$/, "$1") - }; - return n.version = "", - c[n.browser] && (n.version = c[n.browser](), - n.version === t && (n.version = "")), - n.version.indexOf(".") && (n.version = n.version.substring(0, n.version.indexOf("."))), - "iOS" === n.os && t.includes("iPad") ? n.os = "iPadOS" : "Edge" !== n.browser || t.includes("Edg") ? "MIUI" === n.browser ? n.os = "Android" : "Chrome" === n.browser && Number(n.version) > 27 || "Opera" === n.browser && Number(n.version) > 12 || "Yandex" === n.browser ? n.engine = "Blink" : void 0 === n.browser && (n.browser = "Unknow App") : n.engine = "EdgeHTML", - n - }(this.data.ua); - return { - browser: `${e.browser} ${e.version}`, - os: `${e.os} ${e.osVersion}` - } - } - getConf() { - return this.cConf - } - } - class Ot { - constructor(e, t) { - __publicField(this, "conf"), - __publicField(this, "total"), - __publicField(this, "$el"), - __publicField(this, "$input"), - __publicField(this, "inputTimer"), - __publicField(this, "$prevBtn"), - __publicField(this, "$nextBtn"), - __publicField(this, "page", 1), - this.total = e, - this.conf = t, - this.$el = s('
    \n
    \n
    Prev
    \n \n
    Next
    \n
    \n
    '), - this.$input = this.$el.querySelector(".atk-input"), - this.$input.value = `${this.page}`, - this.$input.oninput = ()=>this.input(), - this.$input.onkeydown = e=>this.keydown(e), - this.$prevBtn = this.$el.querySelector(".atk-btn-prev"), - this.$nextBtn = this.$el.querySelector(".atk-btn-next"), - this.$prevBtn.onclick = ()=>this.prev(), - this.$nextBtn.onclick = ()=>this.next(), - this.checkDisabled() - } - get pageSize() { - return this.conf.pageSize - } - get offset() { - return this.pageSize * (this.page - 1) - } - get maxPage() { - return Math.ceil(this.total / this.pageSize) - } - update(e, t) { - this.page = Math.ceil(e / this.pageSize) + 1, - this.total = t, - this.setInput(this.page), - this.checkDisabled() - } - setInput(e) { - this.$input.value = `${e}` - } - input(e=!1) { - window.clearTimeout(this.inputTimer); - const t = this.$input.value.trim() - , n = ()=>{ - if ("" === t) - return void this.setInput(this.page); - let e = Number(t); - Number.isNaN(e) || e < 1 ? this.setInput(this.page) : (e > this.maxPage && (this.setInput(this.maxPage), - e = this.maxPage), - this.change(e)) - } - ; - e ? n() : this.inputTimer = window.setTimeout((()=>n()), 800) - } - prev() { - const e = this.page - 1; - e < 1 || this.change(e) - } - next() { - const e = this.page + 1; - e > this.maxPage || this.change(e) - } - change(e) { - this.page = e, - this.conf.onChange(this.offset), - this.setInput(e), - this.checkDisabled() - } - checkDisabled() { - this.page + 1 > this.maxPage ? this.$nextBtn.classList.add("atk-disabled") : this.$nextBtn.classList.remove("atk-disabled"), - this.page - 1 < 1 ? this.$prevBtn.classList.add("atk-disabled") : this.$prevBtn.classList.remove("atk-disabled") - } - keydown(e) { - const t = e.keyCode || e.which; - if (38 === t) { - const e = Number(this.$input.value) + 1; - if (e > this.maxPage) - return; - this.setInput(e), - this.input() - } else if (40 === t) { - const e = Number(this.$input.value) - 1; - if (e < 1) - return; - this.setInput(e), - this.input() - } else - 13 === t && this.input(!0) - } - setLoading(e) { - e ? g(this.$el) : f(this.$el) - } - } - const Mt = { - createInstance(e) { - const t = new Ot(e.total,{ - pageSize: e.pageSize, - onChange: t=>__async(this, null, (function*() { - if (!0 === e.list.conf.editorTravel && e.list.ctx.editorTravelBack(), - yield e.list.fetchComments(t), - e.list.repositionAt) { - (e.list.scrollListenerAt || window).scroll({ - top: e.list.repositionAt ? o(e.list.repositionAt).top : 0, - left: 0 - }) - } - } - )) - }); - return [t, t.$el] - }, - setLoading(e) { - this.instance.setLoading(e) - }, - update(e, t) { - this.instance.update(e, t) - }, - next() { - this.instance.next() - } - }; - class Rt { - constructor(e) { - __publicField(this, "conf"), - __publicField(this, "$el"), - __publicField(this, "$loading"), - __publicField(this, "$text"), - __publicField(this, "offset", 0), - __publicField(this, "total", 0), - __publicField(this, "origText", "Load More"), - this.conf = e, - this.origText = this.conf.text || this.origText, - this.$el = s(``), - this.$loading = this.$el.querySelector(".atk-loading-icon"), - this.$text = this.$el.querySelector(".atk-text"), - this.$el.onclick = ()=>{ - this.click() - } - } - get hasMore() { - return this.total > this.offset + this.conf.pageSize - } - click() { - this.hasMore && this.conf.onClick(this.offset + this.conf.pageSize), - this.checkDisabled() - } - show() { - this.$el.style.display = "" - } - hide() { - this.$el.style.display = "none" - } - setLoading(e) { - this.$loading.style.display = e ? "" : "none", - this.$text.style.display = e ? "none" : "" - } - showErr(e) { - this.setLoading(!1), - this.$text.innerText = e, - this.$el.classList.add("atk-err"), - window.setTimeout((()=>{ - this.$text.innerText = this.origText, - this.$el.classList.remove("atk-err") - } - ), 2e3) - } - update(e, t) { - this.offset = e, - this.total = t, - this.checkDisabled() - } - checkDisabled() { - this.hasMore ? this.show() : this.hide() - } - } - const Pt = { - pagination: Mt, - "read-more": { - createInstance(e) { - const t = new Rt({ - pageSize: e.pageSize, - onClick: t=>__async(this, null, (function*() { - yield e.list.fetchComments(t) - } - )), - text: at("loadMore") - }); - if (e.list.conf.pagination.autoLoad) { - const n = e.list.scrollListenerAt || document; - this.autoLoadScrollEvent && n.removeEventListener("scroll", this.autoLoadScrollEvent), - this.autoLoadScrollEvent = ()=>{ - if ("read-more" !== e.mode || !(null == t ? void 0 : t.hasMore) || e.list.getLoading()) - return; - const n = e.list.$el.querySelector(".atk-list-comments-wrap > .atk-comment-wrap:nth-last-child(3)"); - n && function(e, t=document.documentElement) { - const n = t.clientHeight - , i = t.scrollTop - , s = i + n - , r = e.getBoundingClientRect(); - return r.top + i + r.height <= s - }(n, e.list.scrollListenerAt) && t.click() - } - , - n.addEventListener("scroll", this.autoLoadScrollEvent) - } - return [t, t.$el] - }, - setLoading(e) { - this.instance.setLoading(e) - }, - update(e, t) { - this.instance.update(e, t) - }, - showErr(e) { - this.instance.showErr(e) - }, - next() { - this.instance.click() - } - } - }; - class Bt { - constructor(e) { - __publicField(this, "conf"), - this.conf = e, - this.init() - } - getAdaptor() { - return Pt[this.conf.mode] - } - init() { - const e = this.getAdaptor() - , [t,n] = e.createInstance(this.conf); - e.instance = t, - e.el = n, - this.conf.list.$el.append(e.el) - } - setLoading(e) { - this.getAdaptor().setLoading(e) - } - update(e, t) { - this.getAdaptor().update(e, t) - } - getEl() { - return this.getAdaptor().el - } - showErr(e) { - const t = this.getAdaptor() - , n = t.showErr; - n && n.bind(t)(e) - } - setMode(e) { - e !== this.conf.mode && (this.getEl().remove(), - this.conf.mode = e, - this.init()) - } - next() { - this.getAdaptor().next() - } - } - function It(e, t, n) { - const i = function(e, t) { - const n = e.split(".") - , i = t.split("."); - for (let s = 0; s < 3; s++) { - const e = Number(n[s]) - , t = Number(i[s]); - if (e > t) - return 1; - if (t > e) - return -1; - if (!Number.isNaN(e) && Number.isNaN(t)) - return 1; - if (Number.isNaN(e) && !Number.isNaN(t)) - return -1 - } - return 0 - }(t, n); - if (0 !== i) { - const r = s(`
    请更新 Artalk ${at(i < 0 ? "frontend" : "backend")}以获得完整体验 (帮助文档)

    当前版本:${at("frontend")} ${t} / ${at("backend")} ${n}

    `) - , a = s('忽略'); - return a.onclick = ()=>{ - _(e.$el.parentElement, null), - e.ctx.conf.versionCheck = !1, - e.fetchComments(0) - } - , - r.append(a), - _(e.$el.parentElement, r, 'Artalk Warn'), - !0 - } - return !1 - } - function Ut(e) { - const {$dropdownWrap: t, dropdownList: n} = e; - if (t.querySelector(".atk-dropdown")) - return; - t.classList.add("atk-dropdown-wrap"), - t.append(s('')); - let i = 0; - const r = s(''); - n.forEach(((e,t)=>{ - const n = e[0] - , a = e[1] - , o = s('
  • ') - , l = o.querySelector("span"); - l.innerText = n, - l.onclick = ()=>{ - ((e,t,n,s)=>{ - s(), - i = e, - r.querySelectorAll(".active").forEach((e=>{ - e.classList.remove("active") - } - )), - t.classList.add("active"), - r.style.display = "none", - setTimeout((()=>{ - r.style.display = "" - } - ), 80) - } - )(t, o, 0, a) - } - , - r.append(o), - t === i && o.classList.add("active") - } - )), - t.append(r) - } - const Dt = { - el: "", - pageKey: "", - pageTitle: "", - server: "", - site: "", - placeholder: "", - noComment: "", - sendBtn: "", - darkMode: !1, - editorTravel: !0, - flatMode: "auto", - nestMax: 2, - nestSort: "DATE_ASC", - emoticons: "https://cdn.jsdelivr.net/gh/ArtalkJS/Emoticons/grps/default.json", - vote: !0, - voteDown: !1, - uaBadge: !0, - listSort: !0, - preview: !0, - countEl: "#ArtalkCount", - pvEl: "#ArtalkPV", - gravatar: { - mirror: "https://cravatar.cn/avatar/", - params: "d=mp&s=240" - }, - pagination: { - pageSize: 20, - readMore: !0, - autoLoad: !0 - }, - heightLimit: { - content: 300, - children: 400, - scrollable: !1 - }, - imgUpload: !0, - reqTimeout: 15e3, - versionCheck: !0, - useBackendConf: !0, - locale: "zh-CN" - }; - function qt(e) { - const t = p(Dt, e); - if ("string" == typeof t.el && t.el) - try { - const e = document.querySelector(t.el); - if (!e) - throw Error(`Target element "${t.el}" was not found.`); - t.el = e - } catch (n) { - throw console.error(n), - new Error("Please check your Artalk `el` config.") - } - return t.server = t.server.replace(/\/$/, "").replace(/\/api\/?$/, ""), - t.pageKey || (t.pageKey = `${window.location.pathname}`), - t.pageTitle || (t.pageTitle = `${document.title}`), - "auto" === t.locale && (t.locale = navigator.language), - t - } - function zt(e) { - const t = ["el", "pageKey", "pageTitle", "server", "site", "darkMode"]; - return Object.keys(e).forEach((n=>{ - t.includes(n) && delete e[n] - } - )), - e.emoticons && "string" == typeof e.emoticons && (e.emoticons = e.emoticons.trim(), - e.emoticons.startsWith("[") || e.emoticons.startsWith("{") ? e.emoticons = JSON.parse(e.emoticons) : "false" === e.emoticons && (e.emoticons = !1)), - e - } - class jt extends m { - constructor(e) { - super(e), - __publicField(this, "$commentsWrap"), - __publicField(this, "data"), - __publicField(this, "isLoading", !1), - __publicField(this, "confLoaded", !1), - __publicField(this, "noCommentText"), - __publicField(this, "_nestSortBy"), - __publicField(this, "_flatMode"), - __publicField(this, "_pageMode"), - __publicField(this, "pgHolder"), - __publicField(this, "_pageSize"), - __publicField(this, "scrollListenerAt"), - __publicField(this, "repositionAt"), - __publicField(this, "renderComment"), - __publicField(this, "paramsEditor"), - __publicField(this, "onAfterLoad"), - __publicField(this, "unread", []), - __publicField(this, "unreadHighlight"), - this.$el = s('
    \n
    \n
    '), - this.$commentsWrap = this.$el.querySelector(".atk-list-comments-wrap"), - window.setInterval((()=>{ - this.$el.querySelectorAll("[data-atk-comment-date]").forEach((e=>{ - const t = e.getAttribute("data-atk-comment-date"); - e.innerText = c(new Date(Number(t)), this.ctx) - } - )) - } - ), 3e4), - this.ctx.on("conf-loaded", (()=>{} - )) - } - get nestSortBy() { - return this._nestSortBy || this.ctx.conf.nestSort || "DATE_ASC" - } - set nestSortBy(e) { - this._nestSortBy = e - } - get flatMode() { - return void 0 !== this._flatMode ? this._flatMode : !0 === this.ctx.conf.flatMode || Number(this.ctx.conf.nestMax) <= 1 || !("auto" !== this.ctx.conf.flatMode || !window.matchMedia("(max-width: 768px)").matches) - } - set flatMode(e) { - this._flatMode = e - } - get pageMode() { - return this._pageMode || (this.conf.pagination.readMore ? "read-more" : "pagination") - } - set pageMode(e) { - var t; - this._pageMode = e, - null == (t = this.pgHolder) || t.setMode(this._pageMode) - } - get pageSize() { - return this._pageSize || this.conf.pagination.pageSize - } - set pageSize(e) { - this._pageSize = e - } - getData() { - return this.data - } - clearData() { - this.data = void 0 - } - getLoading() { - return this.isLoading - } - getCommentsWrapEl() { - return this.$commentsWrap - } - setLoading(e, t=!1) { - var n; - this.isLoading = e, - t ? function(e, t) { - e ? g(t) : f(t) - }(e, this.$el) : null == (n = this.pgHolder) || n.setLoading(e) - } - fetchComments(e) { - return __async(this, null, (function*() { - if (this.isLoading) - return; - const t = 0 === e - , n = e=>this.setLoading(e, t); - let i; - n(!0), - this.ctx.trigger("list-load"), - ("read-more" === this.pageMode && t || "pagination" === this.pageMode) && this.ctx.clearAllComments(); - try { - i = yield this.ctx.getApi().comment.get(e, this.pageSize, this.flatMode, this.paramsEditor) - } catch (s) { - throw this.onError(s.msg || String(s), e, s.data), - s - } finally { - n(!1) - } - _(this.$el, null); - try { - this.onLoad(i, e) - } catch (s) { - throw this.onError(String(s), e), - s - } finally { - n(!1) - } - } - )) - } - onLoad(e, t) { - if (this.data = e, - !this.confLoaded) { - const t = zt(e.conf.frontend_conf); - this.conf.useBackendConf ? this.ctx.updateConf(t) : this.ctx.updateConf({}), - this.confLoaded = !0 - } - this.ctx.conf.versionCheck && It(this, ot, e.api_version.version) || (this.importComments(e.comments), - this.refreshPagination(t, this.flatMode ? e.total : e.total_roots), - this.refreshUI(), - this.ctx.updateNotifies(e.unread || []), - this.ctx.trigger("list-loaded"), - this.onAfterLoad && this.onAfterLoad(e)) - } - refreshPagination(e, t) { - var n; - this.pgHolder || (this.pgHolder = new Bt({ - list: this, - mode: this.pageMode, - pageSize: this.pageSize, - total: t - })), - null == (n = this.pgHolder) || n.update(e, t) - } - onError(e, t, n) { - var i; - this.confLoaded || this.ctx.updateConf({}), - e = String(e), - console.error(e), - 0 === t || "read-more" !== this.pageMode ? _(this.$el, function(e, t, n) { - const i = s(`${t},${at("listLoadFailMsg")}
    `) - , r = s(`${at("listRetry")}`); - r.onclick = ()=>e.fetchComments(0), - i.appendChild(r); - const a = s(' | 打开控制台'); - i.appendChild(a), - lt.data.isAdmin || a.classList.add("atk-hide"); - let o = ""; - if (null == n ? void 0 : n.err_no_site) { - const t = { - create_name: e.ctx.conf.site, - create_urls: `${window.location.protocol}//${window.location.host}` - }; - o = `sites|${JSON.stringify(t)}` - } - return a.onclick = ()=>e.ctx.showSidebar({ - view: o - }), - i - }(this, e, n)) : null == (i = this.pgHolder) || i.showErr(this.$t("loadFail")) - } - refreshUI() { - !function(e) { - const t = e.ctx.getCommentList().length <= 0; - let n = e.getCommentsWrapEl().querySelector(".atk-list-no-comment"); - t ? n || (n = s('
    '), - n.innerHTML = e.noCommentText || e.ctx.conf.noComment || e.ctx.$t("noComment"), - e.getCommentsWrapEl().appendChild(n)) : null == n || n.remove(), - e.ctx.checkAdminShowEl() - }(this) - } - reload() { - this.fetchComments(0) - } - createComment(e, t) { - t || (t = this.ctx.getCommentDataList()); - const n = new Ft(this.ctx,e,{ - isFlatMode: this.flatMode, - afterRender: ()=>{ - this.renderComment && this.renderComment(n) - } - , - onDelete: e=>{ - this.ctx.deleteComment(e), - this.refreshUI() - } - , - replyTo: e.rid ? t.find((t=>t.id === e.rid)) : void 0 - }); - return n.render(), - this.ctx.getCommentList().push(n), - n - } - importComments(e) { - this.flatMode ? e.forEach((t=>{ - this.putCommentFlatMode(t, e, "append") - } - )) : this.importCommentsNest(e) - } - importCommentsNest(e) { - const t = function(e, t="DATE_DESC", n=2) { - const i = []; - e.filter((e=>0 === e.rid)).forEach((t=>{ - const s = { - id: t.id, - comment: t, - children: [], - level: 1 - }; - s.parent = s, - i.push(s), - function t(i) { - const s = e.filter((e=>e.rid === i.id)); - 0 !== s.length && (i.level >= n && (i = i.parent), - s.forEach((e=>{ - const n = { - id: e.id, - comment: e, - children: [], - parent: i, - level: i.level + 1 - }; - i.children.push(n), - t(n) - } - ))) - }(s) - } - )); - const s = (n,i)=>{ - let s = n.id - i.id; - return "DATE_ASC" === t ? s = +new Date(n.comment.date) - +new Date(i.comment.date) : "DATE_DESC" === t ? s = +new Date(i.comment.date) - +new Date(n.comment.date) : "SRC_INDEX" === t ? s = e.indexOf(n.comment) - e.indexOf(i.comment) : "VOTE_UP_DESC" === t && (s = i.comment.vote_up - n.comment.vote_up), - s - } - ; - return function e(t) { - t.forEach((t=>{ - t.children = t.children.sort(s), - e(t.children) - } - )) - }(i), - i - }(e, this.nestSortBy, this.conf.nestMax); - t.forEach((t=>{ - const n = this.createComment(t.comment, e); - this.$commentsWrap.appendChild(n.getEl()), - n.getRender().playFadeAnim(); - const i = this; - !function t(n, s) { - s.children.forEach((s=>{ - const r = s.comment - , a = i.createComment(r, e); - n.putChild(a), - t(a, s) - } - )) - }(n, t), - n.getRender().checkHeightLimit() - } - )) - } - putCommentFlatMode(e, t, n) { - e.is_collapsed && (e.is_allow_reply = !1); - const i = this.createComment(e, t); - return e.visible && ("append" === n && this.$commentsWrap.append(i.getEl()), - "prepend" === n && this.$commentsWrap.prepend(i.getEl()), - i.getRender().playFadeAnim()), - i.getRender().checkHeightLimit(), - i - } - insertComment(e) { - if (this.flatMode) { - k(this.putCommentFlatMode(e, this.ctx.getCommentDataList(), "prepend").getEl()) - } else { - const t = this.createComment(e); - if (0 === e.rid) - this.$commentsWrap.prepend(t.getEl()); - else { - const n = this.ctx.findComment(e.rid); - n && (n.putChild(t, "DATE_ASC" === this.nestSortBy ? "append" : "prepend"), - t.getParents().forEach((e=>{ - e.getRender().heightLimitRemoveForChildren() - } - ))) - } - t.getRender().checkHeightLimit(), - k(t.getEl()), - t.getRender().playFadeAnim() - } - this.data && (this.data.total += 1), - this.refreshUI(), - this.ctx.trigger("list-loaded"), - this.ctx.trigger("list-inserted", e) - } - updateComment(e) { - const t = this.ctx.findComment(e.id); - t && t.setData(e) - } - updateUnread(e) { - this.unread = e, - !0 === this.unreadHighlight && this.ctx.getCommentList().forEach((e=>{ - const t = this.unread.find((t=>t.comment_id === e.getID())); - t ? (e.getRender().setUnread(!0), - e.getRender().setOpenAction((()=>{ - window.open(t.read_link), - this.unread = this.unread.filter((t=>t.comment_id !== e.getID())), - this.ctx.updateNotifies(this.unread) - } - ))) : e.getRender().setUnread(!1) - } - )) - } - } - class Wt extends jt { - constructor(e) { - const t = s('
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n'); - super(e), - __publicField(this, "$closeCommentBtn"), - __publicField(this, "$openSidebarBtn"), - __publicField(this, "$unreadBadge"), - __publicField(this, "$commentCount"), - __publicField(this, "$commentCountNum"), - __publicField(this, "$dropdownWrap"), - __publicField(this, "goToCommentFounded", !1), - __publicField(this, "goToCommentDelay", !0), - t.querySelector(".atk-list-body").append(this.$el), - this.$el = t, - this.repositionAt = this.$el, - this.initListActionBtn(); - this.$commentCount = this.$el.querySelector(".atk-comment-count"); - const n = ()=>{ - this.$commentCount.innerHTML = this.$t("counter", { - count: '0' - }), - this.$commentCountNum = this.$commentCount.querySelector(".atk-comment-count-num") - } - ; - n(), - this.$el.querySelector(".atk-copyright").innerHTML = `Powered By Artalk`, - this.ctx.on("conf-loaded", (()=>{ - n(), - this.refreshUI() - } - )) - } - initListActionBtn() { - this.$openSidebarBtn = this.$el.querySelector('[data-action="open-sidebar"]'), - this.$closeCommentBtn = this.$el.querySelector('[data-action="admin-close-comment"]'), - this.$unreadBadge = this.$el.querySelector(".atk-unread-badge"), - this.$openSidebarBtn.addEventListener("click", (()=>{ - this.ctx.showSidebar() - } - )), - this.$closeCommentBtn.addEventListener("click", (()=>{ - this.data && (this.data.page.admin_only = !this.data.page.admin_only, - this.adminPageEditSave()) - } - )) - } - refreshUI() { - var e; - super.refreshUI(), - this.$commentCountNum.innerText = String(Number(null == (e = this.data) ? void 0 : e.total) || 0), - lt.data.nick && lt.data.email ? this.$openSidebarBtn.classList.remove("atk-hide") : this.$openSidebarBtn.classList.add("atk-hide"), - this.$openSidebarBtn.querySelector(".atk-text").innerText = lt.data.isAdmin ? this.$t("ctrlCenter") : this.$t("msgCenter"), - this.data && this.data.page && !0 === this.data.page.admin_only ? (this.ctx.editorClose(), - this.$closeCommentBtn.innerHTML = this.$t("openComment")) : (this.ctx.editorOpen(), - this.$closeCommentBtn.innerHTML = this.$t("closeComment")), - this.ctx.conf.listSort ? this.initDropdown() : function(e) { - var t, n; - const {$dropdownWrap: i} = e; - i.classList.remove("atk-dropdown-wrap"), - null == (t = i.querySelector(".atk-arrow-down-icon")) || t.remove(), - null == (n = i.querySelector(".atk-dropdown")) || n.remove() - }({ - $dropdownWrap: this.$commentCount - }) - } - onLoad(e, t) { - super.onLoad(e, t), - this.goToCommentFounded || this.checkGoToCommentByUrlHash(), - !0 === this.ctx.conf.editorTravel && this.ctx.editorTravelBack() - } - checkGoToCommentByUrlHash() { - var e; - let t = Number(a("atk_comment")); - if (!t) { - const e = window.location.hash.match(/#atk-comment-([0-9]+)/); - if (!e || !e[1] || Number.isNaN(Number(e[1]))) - return; - t = Number(e[1]) - } - if (!t) - return; - const n = this.ctx.findComment(t); - if (!n) - return void (null == (e = this.pgHolder) || e.next()); - const i = a("atk_notify_key"); - i && this.ctx.getApi().user.markRead(t, i).then((()=>{ - this.unread = this.unread.filter((e=>e.comment_id !== t)), - this.updateUnread(this.unread) - } - )), - n.getParents().forEach((e=>{ - e.getRender().heightLimitRemoveForChildren() - } - )); - const s = ()=>{ - k(n.getEl(), !1), - n.getEl().classList.remove("atk-flash-once"), - window.setTimeout((()=>{ - n.getEl().classList.add("atk-flash-once") - } - ), 150) - } - ; - this.goToCommentDelay ? window.setTimeout((()=>s()), 350) : s(), - this.goToCommentFounded = !0, - this.goToCommentDelay = !0 - } - adminPageEditSave() { - this.data && this.data.page && (this.ctx.editorShowLoading(), - this.ctx.getApi().page.pageEdit(this.data.page).then((e=>{ - this.data && (this.data.page = __spreadValues({}, e)), - this.refreshUI() - } - )).catch((e=>{ - this.ctx.editorShowNotify(`${this.$t("editFail")}: ${e.msg || String(e)}`, "e") - } - )).finally((()=>{ - this.ctx.editorHideLoading() - } - ))) - } - showUnreadBadge(e) { - e > 0 ? (this.$unreadBadge.innerText = `${Number(e || 0)}`, - this.$unreadBadge.style.display = "block") : this.$unreadBadge.style.display = "none" - } - initDropdown() { - const e = e=>{ - this.paramsEditor = e, - this.fetchComments(0) - } - ; - Ut({ - $dropdownWrap: this.$commentCount, - dropdownList: [[this.$t("sortLatest"), ()=>{ - e((e=>{ - e.sort_by = "date_desc" - } - )) - } - ], [this.$t("sortBest"), ()=>{ - e((e=>{ - e.sort_by = "vote" - } - )) - } - ], [this.$t("sortOldest"), ()=>{ - e((e=>{ - e.sort_by = "date_asc" - } - )) - } - ], [this.$t("sortAuthor"), ()=>{ - e((e=>{ - e.view_only_admin = !0 - } - )) - } - ]] - }) - } - updateUnread(e) { - super.updateUnread(e), - this.showUnreadBadge((null == e ? void 0 : e.length) || 0) - } - } - class Nt { - constructor(e, t) { - __publicField(this, "conf"), - __publicField(this, "$root"), - __publicField(this, "markedReplacers", []), - __publicField(this, "commentList", []), - __publicField(this, "eventList", []), - this.conf = e, - this.$root = t || document.createElement("div"), - this.$root.classList.add("artalk"), - this.$root.innerHTML = "" - } - inject(e, t) { - this[e] = t - } - get(e) { - return this[e] - } - getApi() { - return this.api - } - getCommentList() { - return this.commentList - } - getCommentDataList() { - return this.commentList.map((e=>e.getData())) - } - findComment(e) { - return this.commentList.find((t=>t.getData().id === e)) - } - deleteComment(e) { - let t; - if ("number" == typeof e) { - const n = this.findComment(e); - if (!n) - throw Error(`Comment ${e} cannot be found`); - t = n - } else - t = e; - if (t.getEl().remove(), - this.commentList.splice(this.commentList.indexOf(t), 1), - this.list) { - const e = this.list.getData(); - e && (e.total -= 1), - this.list.refreshUI() - } - } - clearAllComments() { - this.list && (this.list.getCommentsWrapEl().innerHTML = "", - this.list.clearData()), - this.commentList = [] - } - insertComment(e) { - var t; - null == (t = this.list) || t.insertComment(e) - } - updateComment(e) { - var t; - null == (t = this.list) || t.updateComment(e) - } - replyComment(e, t, n) { - this.editor.setReply(e, t, n) - } - cancelReplyComment() { - this.editor.cancelReply() - } - editComment(e, t) { - this.editor.setEditComment(e, t) - } - cancelEditComment() { - this.editor.cancelEditComment() - } - updateNotifies(e) { - var t; - null == (t = this.list) || t.updateUnread(e) - } - listReload() { - var e; - null == (e = this.list) || e.reload() - } - reload() { - this.listReload() - } - listRefreshUI() { - var e; - null == (e = this.list) || e.refreshUI() - } - listHashGotoCheck() { - if (!(this.list && this.list instanceof Wt)) - return; - const e = this.list; - e.goToCommentDelay = !1, - e.checkGoToCommentByUrlHash() - } - editorOpen() { - this.editor.open() - } - editorClose() { - this.editor.close() - } - editorShowLoading() { - this.editor.showLoading() - } - editorHideLoading() { - this.editor.hideLoading() - } - editorShowNotify(e, t) { - this.editor.showNotify(e, t) - } - editorTravel(e) { - this.editor.travel(e) - } - editorTravelBack() { - this.editor.travelBack() - } - showSidebar(e) { - this.sidebarLayer.show(e) - } - hideSidebar() { - this.sidebarLayer.hide() - } - checkAdmin(e) { - this.checkerLauncher.checkAdmin(e) - } - checkCaptcha(e) { - this.checkerLauncher.checkCaptcha(e) - } - checkAdminShowEl() { - const e = []; - this.$root.querySelectorAll("[atk-only-admin-show]").forEach((t=>e.push(t))); - const {$wrap: t} = v(); - t && t.querySelectorAll("[atk-only-admin-show]").forEach((t=>e.push(t))); - const n = document.querySelector(".atk-sidebar"); - n && n.querySelectorAll("[atk-only-admin-show]").forEach((t=>e.push(t))), - e.forEach((e=>{ - this.user.data.isAdmin ? e.classList.remove("atk-hide") : e.classList.add("atk-hide") - } - )) - } - on(e, t, n="internal") { - this.eventList.push({ - name: e, - handler: t, - scope: n - }) - } - off(e, t, n="internal") { - this.eventList = this.eventList.filter((i=>t ? !(i.name === e && i.handler === t && i.scope === n) : !(i.name === e && i.scope === n))) - } - trigger(e, t, n) { - this.eventList.filter((t=>t.name === e && (!n || t.scope === n))).map((e=>e.handler)).forEach((e=>e(t))) - } - $t(e, t={}) { - return at(e, t) - } - setDarkMode(e) { - T(this, e) - } - updateConf(e) { - this.conf = p(this.conf, e), - this.trigger("conf-loaded") - } - getMarkedInstance() { - return Ye() - } - } - class Ht { - constructor(e, t) { - return __publicField(this, "ctx"), - __publicField(this, "$el"), - __publicField(this, "$content"), - __publicField(this, "$actions"), - this.ctx = e, - this.$el = s('
    \n
    \n
    \n
    \n
    \n
    '), - this.$actions = this.$el.querySelector(".atk-layer-dialog-actions"), - this.$content = this.$el.querySelector(".atk-layer-dialog-content"), - this.$content.appendChild(t), - this - } - setYes(e) { - const t = s(``); - return t.onclick = this.onBtnClick(e), - this.$actions.appendChild(t), - this - } - setNo(e) { - const t = s(``); - return t.onclick = this.onBtnClick(e), - this.$actions.appendChild(t), - this - } - onBtnClick(e) { - return t=>{ - const n = e(t.currentTarget, this); - void 0 !== n && !0 !== n || this.$el.remove() - } - } - } - function Vt(e) { - const t = s('
    ') - , n = s(''); - n.style.display = "none", - g(t, { - transparentBg: !0 - }), - n.src = `${e.getCtx().conf.server}/api/captcha/get?t=${+new Date}`, - n.onload = ()=>{ - n.style.display = "", - f(t) - } - , - t.append(n); - const i = s('
    '); - t.append(i), - e.hideInteractInput(); - let r = !1; - return function t() { - return __async(this, null, (function*() { - var n; - if (yield(n = 1e3, - new Promise((e=>{ - window.setTimeout((()=>{ - e(null) - } - ), n) - } - ))), - r) - return; - let i = !1; - try { - i = (yield e.getCtx().getApi().captcha.captchaStatus()).is_pass - } catch (s) { - i = !1 - } - i ? e.triggerSuccess() : t() - } - )) - }(), - i.onclick = ()=>{ - r = !0, - e.cancel() - } - , - t - } - const Qt = { - request: (e,t)=>e.getApi().captcha.captchaCheck(t), - body: e=>e.get("iframe") ? Vt(e) : function(e) { - const t = s(`${e.getCtx().$t("captchaCheck")}`); - return t.querySelector(".atk-captcha-img").onclick = ()=>{ - const n = t.querySelector(".atk-captcha-img"); - e.getApi().captcha.captchaGet().then((e=>{ - n.setAttribute("src", e) - } - )).catch((e=>{ - console.error("Failed to get captcha image ", e) - } - )) - } - , - t - }(e), - onSuccess(e, t, n, i) { - e.set("val", n) - }, - onError(e, t, n, i) { - i.querySelector(".atk-captcha-img").click(), - i.querySelector('input[type="text"]').value = "" - } - } - , Zt = { - inputType: "password", - request(e, t) { - const n = { - name: lt.data.nick, - email: lt.data.email, - password: t - }; - return (()=>__async(this, null, (function*() { - return (yield e.getApi().user.login(n.name, n.email, n.password)).token - } - )))() - }, - body: e=>s(`${e.getCtx().$t("adminCheck")}`), - onSuccess(e, t, n, i) { - lt.update({ - isAdmin: !0, - token: t - }), - e.getCtx().trigger("user-changed", lt.data), - e.getCtx().listReload() - }, - onError(e, t, n, i) {} - }; - class Gt { - constructor(e) { - __publicField(this, "ctx"), - __publicField(this, "launched", []), - this.ctx = e - } - checkCaptcha(e) { - this.fire(Qt, e, (t=>{ - t.set("img_data", e.imgData), - t.set("iframe", e.iframe) - } - )) - } - checkAdmin(e) { - this.fire(Zt, e) - } - fire(e, t, n) { - if (this.launched.includes(e)) - return; - this.launched.push(e); - const i = new x(this.ctx,`checker-${(new Date).getTime()}`); - i.setMaskClickHide(!1), - i.show(); - const r = {}; - let a = !1; - const o = { - set: (e,t)=>{ - r[e] = t - } - , - get: e=>r[e], - getCtx: ()=>this.ctx, - getApi: ()=>this.ctx.getApi(), - getLayer: ()=>i, - hideInteractInput: ()=>{ - a = !0 - } - , - triggerSuccess: ()=>{ - this.close(e, i), - e.onSuccess && e.onSuccess(o, "", "", l), - t.onSuccess && t.onSuccess("", h.$el) - } - , - cancel: ()=>{ - this.close(e, i), - t.onCancel && t.onCancel() - } - }; - n && n(o); - const l = s(); - l.appendChild(e.body(o)); - const c = s(``); - let d; - l.appendChild(c), - setTimeout((()=>c.focus()), 80), - c.onkeyup = e=>{ - "Enter" !== e.key && 13 !== e.keyCode || (e.preventDefault(), - i.getEl().querySelector('button[data-action="confirm"]').click()) - } - ; - const h = new Ht(this.ctx,l); - h.setYes((n=>{ - const s = c.value.trim(); - d || (d = n.innerText); - const r = ()=>{ - n.innerText = d || "", - n.classList.remove("error") - } - ; - return n.innerText = `${this.ctx.$t("loading")}...`, - e.request(o, s).then((n=>{ - this.close(e, i), - e.onSuccess && e.onSuccess(o, n, s, l), - t.onSuccess && t.onSuccess(s, h.$el) - } - )).catch((t=>{ - var i; - i = String(t.msg || String(t)), - n.innerText = i, - n.classList.add("error"), - e.onError && e.onError(o, t, s, l); - const a = setTimeout((()=>r()), 3e3); - c.onfocus = ()=>{ - r(), - clearTimeout(a) - } - } - )), - !1 - } - )), - h.setNo((()=>(this.close(e, i), - t.onCancel && t.onCancel(), - !1))), - a && (c.style.display = "none", - h.$el.querySelector(".atk-layer-dialog-actions").style.display = "none"), - i.getEl().append(h.$el), - t.onMount && t.onMount(h.$el) - } - close(e, t) { - t.disposeNow(), - this.launched = this.launched.filter((t=>t !== e)) - } - } - function Kt(e, t, n, i) { - return __async(this, null, (function*() { - var s, r; - if (lt.data.token) { - const e = new Headers(n.headers); - e.set("Authorization", `Bearer ${lt.data.token}`), - n.headers = e - } - const a = yield function(e, t, n, i) { - var s; - const r = new AbortController; - null == (s = i.signal) || s.addEventListener("abort", (()=>r.abort())); - let a = fetch(t, __spreadProps(__spreadValues({}, i), { - signal: r.signal - })); - if (n > 0) { - const e = setTimeout((()=>r.abort()), n); - a.finally((()=>{ - clearTimeout(e) - } - )) - } - return a = a.catch((e=>{ - throw "AbortError" === (e || {}).name ? new Error(at("reqAborted")) : e - } - )), - a - }(0, t, i || e.conf.reqTimeout || 15e3, n) - , o = a.status - , l = [401, 400].includes(o); - if (!a.ok && !l) - throw new Error(`${at("reqGot")} ${o}`); - let c = yield a.json(); - const d = (i,s)=>{ - Kt(e, t, n).then((e=>{ - i(e) - } - )).catch((e=>{ - s(e) - } - )) - } - ; - if ((null == (s = c.data) ? void 0 : s.need_captcha) ? c = yield new Promise(((t,n)=>{ - e.checkCaptcha({ - imgData: c.data.img_data, - iframe: c.data.iframe, - onSuccess: ()=>{ - d(t, n) - } - , - onCancel: ()=>{ - n(c) - } - }) - } - )) : ((null == (r = c.data) ? void 0 : r.need_login) || l) && (c = yield new Promise(((t,n)=>{ - e.checkAdmin({ - onSuccess: ()=>{ - d(t, n) - } - , - onCancel: ()=>{ - n(c) - } - }) - } - ))), - !c.success) - throw c; - return c - } - )) - } - function Yt(e) { - const t = new FormData; - return Object.keys(e).forEach((n=>t.append(n, String(e[n])))), - t - } - !function() { - function e(e, t) { - if (!(e instanceof t)) - throw new TypeError("Cannot call a class as a function") - } - function t(e, t) { - for (var n = 0; n < t.length; n++) { - var i = t[n]; - i.enumerable = i.enumerable || !1, - i.configurable = !0, - "value"in i && (i.writable = !0), - Object.defineProperty(e, i.key, i) - } - } - function n(e, n, i) { - return n && t(e.prototype, n), - i && t(e, i), - Object.defineProperty(e, "prototype", { - writable: !1 - }), - e - } - function i(e, t) { - if ("function" != typeof t && null !== t) - throw new TypeError("Super expression must either be null or a function"); - e.prototype = Object.create(t && t.prototype, { - constructor: { - value: e, - writable: !0, - configurable: !0 - } - }), - Object.defineProperty(e, "prototype", { - writable: !1 - }), - t && r(e, t) - } - function s(e) { - return (s = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) { - return e.__proto__ || Object.getPrototypeOf(e) - } - )(e) - } - function r(e, t) { - return (r = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) { - return e.__proto__ = t, - e - } - )(e, t) - } - function a() { - if ("undefined" == typeof Reflect || !Reflect.construct) - return !1; - if (Reflect.construct.sham) - return !1; - if ("function" == typeof Proxy) - return !0; - try { - return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {} - ))), - !0 - } catch (e) { - return !1 - } - } - function o(e) { - if (void 0 === e) - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - return e - } - function l(e, t) { - if (t && ("object" == typeof t || "function" == typeof t)) - return t; - if (void 0 !== t) - throw new TypeError("Derived constructors may only return object or undefined"); - return o(e) - } - function c(e) { - var t = a(); - return function() { - var n, i = s(e); - if (t) { - var r = s(this).constructor; - n = Reflect.construct(i, arguments, r) - } else - n = i.apply(this, arguments); - return l(this, n) - } - } - function d(e, t) { - for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = s(e)); ) - ; - return e - } - function h() { - return h = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function(e, t, n) { - var i = d(e, t); - if (i) { - var s = Object.getOwnPropertyDescriptor(i, t); - return s.get ? s.get.call(arguments.length < 3 ? e : n) : s.value - } - } - , - h.apply(this, arguments) - } - var u = function() { - function t() { - e(this, t), - Object.defineProperty(this, "listeners", { - value: {}, - writable: !0, - configurable: !0 - }) - } - return n(t, [{ - key: "addEventListener", - value: function(e, t, n) { - e in this.listeners || (this.listeners[e] = []), - this.listeners[e].push({ - callback: t, - options: n - }) - } - }, { - key: "removeEventListener", - value: function(e, t) { - if (e in this.listeners) - for (var n = this.listeners[e], i = 0, s = n.length; i < s; i++) - if (n[i].callback === t) - return void n.splice(i, 1) - } - }, { - key: "dispatchEvent", - value: function(e) { - if (e.type in this.listeners) { - for (var t = this.listeners[e.type].slice(), n = 0, i = t.length; n < i; n++) { - var s = t[n]; - try { - s.callback.call(this, e) - } catch (r) { - Promise.resolve().then((function() { - throw r - } - )) - } - s.options && s.options.once && this.removeEventListener(e.type, s.callback) - } - return !e.defaultPrevented - } - } - }]), - t - }() - , p = function(t) { - i(a, t); - var r = c(a); - function a() { - var t; - return e(this, a), - (t = r.call(this)).listeners || u.call(o(t)), - Object.defineProperty(o(t), "aborted", { - value: !1, - writable: !0, - configurable: !0 - }), - Object.defineProperty(o(t), "onabort", { - value: null, - writable: !0, - configurable: !0 - }), - Object.defineProperty(o(t), "reason", { - value: void 0, - writable: !0, - configurable: !0 - }), - t - } - return n(a, [{ - key: "toString", - value: function() { - return "[object AbortSignal]" - } - }, { - key: "dispatchEvent", - value: function(e) { - "abort" === e.type && (this.aborted = !0, - "function" == typeof this.onabort && this.onabort.call(this, e)), - h(s(a.prototype), "dispatchEvent", this).call(this, e) - } - }]), - a - }(u) - , m = function() { - function t() { - e(this, t), - Object.defineProperty(this, "signal", { - value: new p, - writable: !0, - configurable: !0 - }) - } - return n(t, [{ - key: "abort", - value: function(e) { - var t; - try { - t = new Event("abort") - } catch (i) { - "undefined" != typeof document ? document.createEvent ? (t = document.createEvent("Event")).initEvent("abort", !1, !1) : (t = document.createEventObject()).type = "abort" : t = { - type: "abort", - bubbles: !1, - cancelable: !1 - } - } - var n = e; - if (void 0 === n) - if ("undefined" == typeof document) - (n = new Error("This operation was aborted")).name = "AbortError"; - else - try { - n = new DOMException("signal is aborted without reason") - } catch (s) { - (n = new Error("This operation was aborted")).name = "AbortError" - } - this.signal.reason = n, - this.signal.dispatchEvent(t) - } - }, { - key: "toString", - value: function() { - return "[object AbortController]" - } - }]), - t - }(); - function g(e) { - return e.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL ? (console.log("__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill"), - !0) : "function" == typeof e.Request && !e.Request.prototype.hasOwnProperty("signal") || !e.AbortController - } - function f(e) { - "function" == typeof e && (e = { - fetch: e - }); - var t = e - , n = t.fetch - , i = t.Request - , s = void 0 === i ? n.Request : i - , r = t.AbortController - , a = t.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL - , o = void 0 !== a && a; - if (!g({ - fetch: n, - Request: s, - AbortController: r, - __FORCE_INSTALL_ABORTCONTROLLER_POLYFILL: o - })) - return { - fetch: n, - Request: l - }; - var l = s; - (l && !l.prototype.hasOwnProperty("signal") || o) && ((l = function(e, t) { - var n; - t && t.signal && (n = t.signal, - delete t.signal); - var i = new s(e,t); - return n && Object.defineProperty(i, "signal", { - writable: !1, - enumerable: !1, - configurable: !0, - value: n - }), - i - } - ).prototype = s.prototype); - var c = n; - return { - fetch: function(e, t) { - var n = l && l.prototype.isPrototypeOf(e) ? e.signal : t ? t.signal : void 0; - if (n) { - var i; - try { - i = new DOMException("Aborted","AbortError") - } catch (r) { - (i = new Error("Aborted")).name = "AbortError" - } - if (n.aborted) - return Promise.reject(i); - var s = new Promise((function(e, t) { - n.addEventListener("abort", (function() { - return t(i) - } - ), { - once: !0 - }) - } - )); - return t && t.signal && delete t.signal, - Promise.race([s, c(e, t)]) - } - return c(e, t) - }, - Request: l - } - } - "undefined" != typeof Symbol && Symbol.toStringTag && (m.prototype[Symbol.toStringTag] = "AbortController", - p.prototype[Symbol.toStringTag] = "AbortSignal"), - function(e) { - if (g(e)) - if (e.fetch) { - var t = f(e) - , n = t.fetch - , i = t.Request; - e.fetch = n, - e.Request = i, - Object.defineProperty(e, "AbortController", { - writable: !0, - enumerable: !1, - configurable: !0, - value: m - }), - Object.defineProperty(e, "AbortSignal", { - writable: !0, - enumerable: !1, - configurable: !0, - value: p - }) - } else - console.warn("fetch() is not available, cannot install abortcontroller-polyfill") - }("undefined" != typeof self ? self : pe) - }(); - class Xt { - constructor(e, t) { - __publicField(this, "api"), - __publicField(this, "ctx"), - this.api = e, - this.ctx = t - } - POST(e, t) { - return __async(this, null, (function*() { - return function(e, t, n) { - return __async(this, null, (function*() { - const i = { - method: "POST" - }; - return n = __spreadValues({ - site_name: e.conf.site || "" - }, n || {}), - i.body = Yt(n), - (yield Kt(e, t, i)).data || {} - } - )) - }(this.ctx, this.api.baseURL + e, t) - } - )) - } - Fetch(e, t, n) { - return __async(this, null, (function*() { - return Kt(this.ctx, this.api.baseURL + e, t, n) - } - )) - } - } - const Jt = { - comment: class extends Xt { - get(e, t, n, i) { - const s = { - page_key: this.ctx.conf.pageKey, - site_name: this.ctx.conf.site || "", - limit: t, - offset: e - }; - return n && (s.flat_mode = n), - lt.checkHasBasicUserInfo() && (s.name = lt.data.nick, - s.email = lt.data.email), - i && i(s), - this.POST("/get", s) - } - add(e) { - return __async(this, null, (function*() { - const t = { - name: e.nick, - email: e.email, - link: e.link, - content: e.content, - rid: e.rid, - page_key: e.page_key, - ua: yield d() - }; - e.page_title && (t.page_title = e.page_title), - e.site_name && (t.site_name = e.site_name); - return (yield this.POST("/add", t)).comment - } - )) - } - commentEdit(e) { - return __async(this, null, (function*() { - const t = __spreadValues({}, e); - return (yield this.POST("/admin/comment-edit", t)).comment - } - )) - } - commentDel(e, t) { - const n = { - id: String(e), - site_name: t || "" - }; - return this.POST("/admin/comment-del", n) - } - vote(e, t) { - return __async(this, null, (function*() { - const n = { - target_id: e, - type: t - }; - lt.checkHasBasicUserInfo() && (n.name = lt.data.nick, - n.email = lt.data.email); - return yield this.POST("/vote", n) - } - )) - } - } - , - page: class extends Xt { - pageGet(e, t, n) { - return __async(this, null, (function*() { - const i = { - site_name: e || "", - offset: t || 0, - limit: n || 15 - }; - return yield this.POST("/admin/page-get", i) - } - )) - } - pageEdit(e) { - return __async(this, null, (function*() { - const t = { - id: e.id, - key: e.key, - title: e.title, - admin_only: e.admin_only, - site_name: e.site_name || this.ctx.conf.site - }; - return (yield this.POST("/admin/page-edit", t)).page - } - )) - } - pageDel(e, t) { - const n = { - key: String(e), - site_name: t || "" - }; - return this.POST("/admin/page-del", n) - } - pageFetch(e, t, n) { - return __async(this, null, (function*() { - const i = {}; - e && (i.id = e), - t && (i.site_name = t), - n && (i.get_status = n); - return yield this.POST("/admin/page-fetch", i) - } - )) - } - pv() { - return __async(this, null, (function*() { - const e = { - page_key: this.ctx.conf.pageKey || "", - page_title: this.ctx.conf.pageTitle || "" - }; - return (yield this.POST("/pv", e)).pv - } - )) - } - stat(e, t, n) { - return __async(this, null, (function*() { - const i = { - type: e - }; - t && (i.page_keys = Array.isArray(t) ? t.join(",") : t), - n && (i.limit = n); - return yield this.POST("/stat", i) - } - )) - } - } - , - site: class extends Xt { - siteGet() { - return __async(this, null, (function*() { - return (yield this.POST("/admin/site-get", {})).sites - } - )) - } - siteAdd(e, t) { - return __async(this, null, (function*() { - const n = { - name: e, - urls: t, - site_name: "" - }; - return (yield this.POST("/admin/site-add", n)).site - } - )) - } - siteEdit(e) { - return __async(this, null, (function*() { - const t = { - id: e.id, - name: e.name || "", - urls: e.urls || "" - }; - return (yield this.POST("/admin/site-edit", t)).site - } - )) - } - siteDel(e, t=!1) { - const n = { - id: e, - del_content: t - }; - return this.POST("/admin/site-del", n) - } - export() { - return __async(this, null, (function*() { - var e; - return (null == (e = (yield this.Fetch("/admin/export", { - method: "POST" - }, 0)).data) ? void 0 : e.data) || "" - } - )) - } - } - , - user: class extends Xt { - login(e, t, n) { - return __async(this, null, (function*() { - const i = { - name: e, - email: t, - password: n - }; - return yield this.POST("/login", i) - } - )) - } - userGet(e, t) { - const n = new AbortController - , i = { - name: e, - email: t - }; - return { - req: this.Fetch("/user-get", { - method: "POST", - body: Yt(i), - signal: n.signal - }).then((e=>({ - user: e.data.user, - is_login: e.data.is_login, - unread: e.data.unread || [], - unread_count: e.data.unread_count || 0 - }))), - abort: ()=>{ - n.abort() - } - } - } - loginStatus() { - return __async(this, null, (function*() { - return (yield this.POST("/login-status", { - name: lt.data.nick, - email: lt.data.email - })) || { - is_login: !1, - is_admin: !1 - } - } - )) - } - logout() { - return __async(this, null, (function*() { - return this.POST("/logout") - } - )) - } - markRead(e, t, n=!1) { - const i = { - comment_id: e, - notify_key: t - }; - return n && (delete i.comment_id, - delete i.notify_key, - i.read_all = !0, - i.name = lt.data.nick, - i.email = lt.data.email), - this.POST("/mark-read", i) - } - userList(e, t, n) { - return __async(this, null, (function*() { - const i = { - offset: e || 0, - limit: t || 15 - }; - n && (i.type = n); - return yield this.POST("/admin/user-get", i) - } - )) - } - userAdd(e, t) { - return __async(this, null, (function*() { - const n = { - name: e.name || "", - email: e.email || "", - password: t || "", - link: e.link || "", - is_admin: e.is_admin || !1, - site_names: e.site_names_raw || "", - receive_email: e.receive_email || !0, - badge_name: e.badge_name || "", - badge_color: e.badge_color || "" - }; - return (yield this.POST("/admin/user-add", n)).user - } - )) - } - userEdit(e, t) { - return __async(this, null, (function*() { - const n = { - id: e.id, - name: e.name || "", - email: e.email || "", - password: t || "", - link: e.link || "", - is_admin: e.is_admin || !1, - site_names: e.site_names_raw || "", - receive_email: e.receive_email || !0, - badge_name: e.badge_name || "", - badge_color: e.badge_color || "" - }; - return (yield this.POST("/admin/user-edit", n)).user - } - )) - } - userDel(e) { - return this.POST("/admin/user-del", { - id: String(e) - }) - } - } - , - system: class extends Xt { - conf() { - return __async(this, null, (function*() { - return zt((yield this.POST("/conf")).frontend_conf || {}) - } - )) - } - getSettings() { - return __async(this, null, (function*() { - return yield this.POST("/admin/setting-get") - } - )) - } - saveSettings(e) { - return __async(this, null, (function*() { - return yield this.POST("/admin/setting-save", { - data: e - }) - } - )) - } - version() { - return __async(this, null, (function*() { - const e = yield fetch(`${this.api.baseURL}/version`, { - method: "POST" - }); - return yield e.json() - } - )) - } - } - , - captcha: class extends Xt { - captchaGet() { - return __async(this, null, (function*() { - return (yield this.POST("/captcha/refresh")).img_data || "" - } - )) - } - captchaCheck(e) { - return __async(this, null, (function*() { - return (yield this.POST("/captcha/check", { - value: e - })).img_data || "" - } - )) - } - captchaStatus() { - return __async(this, null, (function*() { - return (yield this.POST("/captcha/status")) || { - is_pass: !1 - } - } - )) - } - } - , - admin: class extends Xt { - cacheFlushAll() { - return this.POST("/admin/cache-flush", { - flush_all: !0 - }) - } - cacheWarmUp() { - return this.POST("/admin/cache-warm", {}) - } - } - , - upload: class extends Xt { - imgUpload(e) { - return __async(this, null, (function*() { - const t = Yt({ - name: lt.data.nick, - email: lt.data.email, - page_key: this.ctx.conf.pageKey - }); - t.set("file", e); - const n = { - method: "POST", - body: t - }; - return (yield this.Fetch("/img-upload", n)).data || {} - } - )) - } - } - }; - class en { - constructor(e) { - __publicField(this, "ctx"), - this.ctx = e, - Object.entries(Jt).forEach((([e,t])=>{ - this[e] = new t(this,this.ctx) - } - )) - } - get baseURL() { - return `${this.ctx.conf.server}/api` - } - } - function tn(e) { - const t = { - editor: e, - isMoved: !1, - move: e=>function(e, t) { - if (e.isMoved) - return; - e.isMoved = !0; - const n = e.editor.getUI().$el; - n.after(s('
    ')); - const i = s("
    "); - t.after(i), - i.replaceWith(n), - n.classList.add("atk-fade-in") - }(t, e), - back: ()=>function(e) { - var t; - if (!e.isMoved) - return; - e.isMoved = !1, - null == (t = e.editor.ctx.$root.querySelector(".atk-editor-travel-placeholder")) || t.replaceWith(e.editor.getUI().$el), - e.editor.cancelReply() - }(t) - }; - return t - } - class nn { - constructor(e) { - __publicField(this, "editor"), - __publicField(this, "$panel"), - __publicField(this, "$btn"), - __publicField(this, "onHeaderInput"), - __publicField(this, "contentTransformer"), - __publicField(this, "onContentUpdated"), - this.editor = e - } - get ctx() { - return this.editor.ctx - } - registerPanel(e="
    ") { - return this.$panel = s(e), - this.$panel - } - registerBtn(e) { - return this.$btn = s(`${e}`), - this.$btn - } - registerHeaderInputEvt(e) { - this.onHeaderInput = e - } - registerContentTransformer(e) { - this.contentTransformer = e - } - registerContentUpdatedEvt(e) { - this.onContentUpdated = e - } - getPanel() { - return this.$panel - } - getBtn() { - return this.$btn - } - } - __publicField(nn, "Name"); - class sn extends nn { - constructor(e) { - super(e), - __publicField(this, "emoticons", []), - __publicField(this, "loadingTask", null), - __publicField(this, "$grpWrap"), - __publicField(this, "$grpSwitcher"), - __publicField(this, "isListLoaded", !1), - __publicField(this, "isImgLoaded", !1), - this.editor = e, - this.registerPanel('
    '), - this.registerBtn(this.ctx.$t("emoticon")), - this.registerContentTransformer((e=>this.transEmoticonImageText(e))), - window.setTimeout((()=>{ - this.loadEmoticonsData() - } - ), 1e3) - } - onPanelShow() { - (()=>{ - __async(this, null, (function*() { - yield this.loadEmoticonsData(), - this.isImgLoaded || (this.initEmoticonsList(), - this.isImgLoaded = !0), - setTimeout((()=>{ - this.changeListHeight() - } - ), 30) - } - )) - } - )() - } - onPanelHide() { - this.$panel.parentElement.style.height = "", - this.$btn.classList.remove('active') - } - loadEmoticonsData() { - return __async(this, null, (function*() { - this.isListLoaded || (null === this.loadingTask ? (this.loadingTask = (()=>__async(this, null, (function*() { - g(this.$panel), - this.emoticons = yield this.handleData(this.ctx.conf.emoticons), - f(this.$panel), - this.loadingTask = null, - this.isListLoaded = !0 - } - )))(), - yield this.loadingTask) : yield this.loadingTask) - } - )) - } - handleData(e) { - return __async(this, null, (function*() { - if (!Array.isArray(e) && ["object", "string"].includes(typeof e) && (e = [e]), - !Array.isArray(e)) - return _(this.$panel, "表情包数据必须为 Array/Object/String 类型"), - f(this.$panel), - []; - const t = t=>{ - "object" == typeof t && (t.name && e.find((e=>e.name === t.name)) || e.push(t)) - } - , n = e=>__async(this, null, (function*() { - yield Promise.all(e.map(((e,i)=>__async(this, null, (function*() { - if ("object" != typeof e || Array.isArray(e)) { - if (Array.isArray(e)) - yield n(e); - else if ("string" == typeof e) { - const i = yield this.remoteLoad(e); - Array.isArray(i) ? yield n(i) : "object" == typeof i && t(i) - } - } else - t(e) - } - ))))) - } - )); - return yield n(e), - e.forEach((e=>{ - if (this.isOwOFormat(e)) { - this.convertOwO(e).forEach((e=>{ - t(e) - } - )) - } else - Array.isArray(e) && e.forEach((e=>{ - t(e) - } - )) - } - )), - e = e.filter((e=>"object" == typeof e && !Array.isArray(e) && !!e && !!e.name)), - this.solveNullKey(e), - this.solveSameKey(e), - e - } - )) - } - remoteLoad(e) { - return __async(this, null, (function*() { - if (!e) - return []; - try { - const t = yield fetch(e); - return yield t.json() - } catch (t) { - return f(this.$panel), - _(this.$panel, `表情加载失败 ${String(t)}`), - [] - } - } - )) - } - solveNullKey(e) { - e.forEach((e=>{ - e.items.forEach(((t,n)=>{ - t.key || (t.key = `${e.name} ${n + 1}`) - } - )) - } - )) - } - solveSameKey(e) { - const t = {}; - e.forEach((e=>{ - e.items.forEach((e=>{ - e.key && "" !== String(e.key).trim() && (t[e.key] ? t[e.key]++ : t[e.key] = 1, - t[e.key] > 1 && (e.key = `${e.key} ${t[e.key]}`)) - } - )) - } - )) - } - isOwOFormat(e) { - try { - return "object" == typeof e && !!Object.values(e).length && Array.isArray(Object.keys(Object.values(e)[0].container)) && Object.keys(Object.values(e)[0].container[0]).includes("icon") - } catch (t) { - return !1 - } - } - convertOwO(e) { - const t = []; - return Object.entries(e).forEach((([e,n])=>{ - const i = { - name: e, - type: n.type, - items: [] - }; - n.container.forEach(((t,n)=>{ - const s = t.icon; - if (/<(img|IMG)/.test(s)) { - const e = /src=["'](.*?)["']/.exec(s); - e && e.length > 1 && (t.icon = e[1]) - } - i.items.push({ - key: t.text || `${e} ${n + 1}`, - val: t.icon - }) - } - )), - t.push(i) - } - )), - t - } - initEmoticonsList() { - this.$grpWrap = s('
    '), - this.$panel.append(this.$grpWrap), - this.emoticons.forEach(((e,t)=>{ - const n = s(''); - this.$grpWrap.append(n), - n.setAttribute("data-index", String(t)), - n.setAttribute("data-grp-name", e.name), - n.setAttribute("data-type", e.type), - e.items.forEach((t=>{ - const i = s(''); - if (n.append(i), - "image" === e.type) { - const e = document.createElement("img"); - e.src = t.val, - e.alt = t.key.replace(/\s[0-9]/i, ""), - e.setAttribute("atk-emoticon", t.key), - t.notitle && e.setAttribute("notitle", t.notitle), - i.append(e) - } else - i.innerText = t.val; - i.onclick = ()=>{ - "image" === e.type ? this.editor.insertContent(`:[${t.key}]`) : this.editor.insertContent(t.val || "") - } - } - )) - } - )), - this.emoticons.length > 1 && (this.$grpSwitcher = s('
    '), - this.$panel.append(this.$grpSwitcher), - this.emoticons.forEach(((e,t)=>{ - const n = s(""); - n.innerText = e.name, - n.setAttribute("data-index", String(t)), - n.onclick = ()=>this.openGrp(t), - this.$grpSwitcher.append(n) - } - ))), - this.emoticons.length > 0 && this.openGrp(0) - } - openGrp(e) { - var t, n, i; - Array.from(this.$grpWrap.children).forEach((t=>{ - const n = t; - n.getAttribute("data-index") !== String(e) ? n.style.display = "none" : n.style.display = "" - } - )), - null == (t = this.$grpSwitcher) || t.querySelectorAll("span.active").forEach((e=>e.classList.remove("active"))), - null == (i = null == (n = this.$grpSwitcher) ? void 0 : n.querySelector(`span[data-index="${e}"]`)) || i.classList.add("active"), - this.changeListHeight() - } - changeListHeight() {} - transEmoticonImageText(e) { - return this.emoticons && Array.isArray(this.emoticons) ? (this.emoticons.forEach((t=>{ - "image" === t.type && Object.entries(t.items).forEach((([t,i])=>{ - e = "true" === i.notitle ? e.split(`:[${i.key}]`).join(``) : e.split(`:[${i.key}]`).join(`${i.key.replace(/\s[0-9]/i, `) - } - )) - } - )), - e) : e - } - } - __publicField(sn, "Name", "emoticons"); - class rn extends nn { - constructor(e) { - super(e), - __publicField(this, "$imgUploadInput"), - __publicField(this, "allowImgExts", ["png", "jpg", "jpeg", "gif", "bmp", "svg", "webp"]), - this.$imgUploadInput = document.createElement("input"), - this.$imgUploadInput.type = "file", - this.$imgUploadInput.style.display = "none", - this.$imgUploadInput.accept = this.allowImgExts.map((e=>`.${e}`)).join(","); - const t = this.registerBtn(`${this.ctx.$t("image")}`); - t.after(this.$imgUploadInput), - t.onclick = ()=>{ - const e = this.$imgUploadInput; - e.onchange = ()=>{ - (()=>{ - __async(this, null, (function*() { - if (!e.files || 0 === e.files.length) - return; - const t = e.files[0]; - this.uploadImg(t) - } - )) - } - )() - } - , - e.click() - } - , - this.ctx.conf.imgUpload || this.getBtn().setAttribute("atk-only-admin-show", ""); - const n = e=>{ - if (e) - for (let t = 0; t < e.length; t++) { - const n = e[t]; - this.uploadImg(n) - } - } - ; - this.editor.getUI().$textarea.addEventListener("dragover", (e=>{ - e.stopPropagation(), - e.preventDefault() - } - )), - this.editor.getUI().$textarea.addEventListener("drop", (e=>{ - var t; - const i = null == (t = e.dataTransfer) ? void 0 : t.files; - (null == i ? void 0 : i.length) && (e.preventDefault(), - n(i)) - } - )), - this.editor.getUI().$textarea.addEventListener("paste", (e=>{ - var t; - const i = null == (t = e.clipboardData) ? void 0 : t.files; - (null == i ? void 0 : i.length) && (e.preventDefault(), - n(i)) - } - )) - } - uploadImg(e) { - return __async(this, null, (function*() { - const t = /[^.]+$/.exec(e.name); - if (!t || !this.allowImgExts.includes(t[0])) - return; - if (!lt.checkHasBasicUserInfo()) - return void this.editor.showNotify(this.ctx.$t("uploadLoginMsg"), "w"); - let n = "\n"; - "" === this.editor.getUI().$textarea.value.trim() && (n = ""); - const i = `${n}![](Uploading ${e.name}...)`; - let s; - this.editor.insertContent(i); - try { - s = this.ctx.conf.imgUploader ? { - img_url: yield this.ctx.conf.imgUploader(e) - } : yield this.ctx.getApi().upload.imgUpload(e) - } catch (r) { - console.error(r), - this.editor.showNotify(`${this.ctx.$t("uploadFail")},${r.msg}`, "e") - } - if (s && s.img_url) { - let e = s.img_url; - h(e) || (e = u(this.ctx, e)), - this.editor.setContent(this.editor.getUI().$textarea.value.replace(i, `${n}![](${e})`)) - } else - this.editor.setContent(this.editor.getUI().$textarea.value.replace(i, "")) - } - )) - } - } - __publicField(rn, "Name", "upload"); - class an extends nn { - constructor(e) { - super(e), - __publicField(this, "isBind", !1), - this.registerPanel('
    '); - const t = this.editor.$t("preview"); - this.registerBtn(t) - } - onPanelShow() { - if (this.updateContent(), - !this.isBind) { - const e = ()=>{ - this.updateContent() - } - ; - this.editor.getUI().$textarea.addEventListener("input", e), - this.editor.getUI().$textarea.addEventListener("change", e), - this.isBind = !0 - } - } - updateContent() { - "none" !== this.$panel.style.display && (this.$panel.innerHTML = this.editor.getContentMarked()) - } - } - __publicField(an, "Name", "preview"); - class on extends nn { - constructor(e) { - super(e), - __publicField(this, "queryUserInfo", { - timeout: null, - abortFunc: null - }), - this.registerHeaderInputEvt(((e,t)=>{ - "nick" !== e && "email" !== e || this.fetchUserInfo() - } - )), - this.editor.getUI().$link.addEventListener("change", (()=>{ - const e = this.editor.getUI().$link.value.trim(); - e && !/^(http|https):\/\//.test(e) && (this.editor.getUI().$link.value = `https://${e}`, - lt.update({ - link: this.editor.getUI().$link.value - })) - } - )) - } - fetchUserInfo() { - lt.logout(), - this.queryUserInfo.timeout && window.clearTimeout(this.queryUserInfo.timeout), - this.queryUserInfo.abortFunc && this.queryUserInfo.abortFunc(), - this.queryUserInfo.timeout = window.setTimeout((()=>{ - this.queryUserInfo.timeout = null; - const {req: e, abort: t} = this.ctx.getApi().user.userGet(lt.data.nick, lt.data.email); - this.queryUserInfo.abortFunc = t, - e.then((e=>{ - var t; - e.is_login || lt.logout(), - this.ctx.updateNotifies(e.unread), - lt.checkHasBasicUserInfo() && !e.is_login && (null == (t = e.user) ? void 0 : t.is_admin) && this.showLoginDialog(), - e.user && e.user.link && (this.editor.getUI().$link.value = e.user.link, - lt.update({ - link: e.user.link - })) - } - )).catch((()=>{} - )).finally((()=>{ - this.queryUserInfo.abortFunc = null - } - )) - } - ), 400) - } - showLoginDialog() { - this.ctx.checkAdmin({ - onSuccess: ()=>{} - }) - } - } - __publicField(on, "Name", "headerInput"); - const ln = [sn, rn, an, on]; - function cn(e) { - const t = { - editor: e, - plugList: {}, - openedPlugName: null, - openPlugPanel: e=>dn(t, e), - closePlugPanel: ()=>hn(t), - triggerHeaderInputEvt: (e,n)=>function(e, t, n) { - Object.entries(e.plugList).forEach((([e,i])=>{ - i.onHeaderInput && i.onHeaderInput(t, n) - } - )) - }(t, e, n), - triggerContentUpdatedEvt: e=>function(e, t) { - Object.entries(e.plugList).forEach((([e,n])=>{ - n.onContentUpdated && n.onContentUpdated(t) - } - )) - }(t, e), - getTransformedContent: e=>function(e, t) { - let n = t; - return Object.entries(e.plugList).forEach((([e,t])=>{ - t.contentTransformer && (n = t.contentTransformer(n)) - } - )), - n - }(t, e) - }; - e.getUI().$plugPanelWrap.innerHTML = "", - e.getUI().$plugPanelWrap.style.display = "none", - e.getUI().$plugBtnWrap.innerHTML = ""; - const n = [{ - k: "upload", - v: (i = e.conf).imgUpload - }, { - k: "emoticons", - v: i.emoticons - }, { - k: "preview", - v: i.preview - }].filter((e=>!e.v)).flatMap((e=>e.k)); - var i; - return ln.filter((e=>!n.includes(e.Name))).forEach((e=>{ - !function(e, t) { - const n = t.Name - , i = new t(e.editor); - e.plugList[n] = i, - function(e, t, n) { - const i = n.getBtn(); - if (!i) - return; - e.editor.getUI().$plugBtnWrap.appendChild(i), - i.onclick = i.onclick || (s=>{ - s.stopPropagation(), - e.editor.getUI().$plugBtnWrap.querySelectorAll(".active").forEach((e=>e.classList.remove("active"))), - t !== e.openedPlugName ? (dn(e, t), - i.classList.add("active")) : hn(e) - } - ); - const s = n.getPanel(); - s && (s.setAttribute("data-plug-name", t), - s.style.display = "none", - e.editor.getUI().$plugPanelWrap.appendChild(s)) - }(e, n, i) - }(t, e) - } - )), - t - } - function dn(e, t) { - Object.entries(e.plugList).forEach((([e,n])=>{ - const i = n.getPanel(); - i && (e === t ? (i.style.display = "", - n.onPanelShow && n.onPanelShow()) : (i.style.display = "none", - n.onPanelHide && n.onPanelHide())) - } - )), - e.editor.getUI().$plugPanelWrap.style.display = "", - e.openedPlugName = t - } - function hn(e) { - if (!e.openedPlugName) - return; - const t = e.plugList[e.openedPlugName]; - t && (t.onPanelHide && t.onPanelHide(), - e.editor.getUI().$plugPanelWrap.style.display = "none", - e.openedPlugName = null) - } - function un(e) { - const t = { - editor: e, - comment: void 0, - setReply: (e,n,i)=>function(e, t, n, i=!0) { - e.editor.cancelEditComment(), - pn(e); - const r = e.editor.getUI(); - r.$sendReply || (r.$sendReply = s(`
    ${e.editor.$t("reply")} ×
    `), - r.$sendReply.querySelector(".atk-text").innerText = `@${t.nick}`, - r.$sendReply.addEventListener("click", (()=>{ - e.editor.cancelReply() - } - )), - r.$textareaWrap.append(r.$sendReply)); - e.comment = t, - e.editor.travel(n), - i && k(r.$el); - r.$textarea.focus() - }(t, e, n, i), - cancelReply: ()=>pn(t) - }; - return t - } - function pn(e) { - if (!e.comment) - return; - const t = e.editor.getUI(); - t.$sendReply && (t.$sendReply.remove(), - t.$sendReply = void 0), - e.comment = void 0, - e.editor.travelBack() - } - function mn(e) { - const t = { - editor: e, - comment: void 0, - setEdit: (e,n)=>function(e, t, n) { - gn(e), - e.editor.cancelReply(); - const i = e.editor.getUI(); - if (!i.$editCancelBtn) { - const t = s(`
    ${e.editor.$t("editCancel")} ×
    `); - t.onclick = ()=>{ - gn(e) - } - , - i.$textareaWrap.append(t), - i.$editCancelBtn = t - } - e.comment = t, - i.$header.style.display = "none", - e.editor.travel(n), - i.$nick.value = t.nick || "", - i.$email.value = t.email || "", - i.$link.value = t.link || "", - e.editor.setContent(t.content), - i.$textarea.focus(), - e.editor.refreshSendBtnText() - }(t, e, n), - cancelEdit: ()=>gn(t) - }; - return function(e) { - e.editor.getSubmitManager().registerCustom({ - activeCond: ()=>!!e.comment, - req: ()=>__async(this, null, (function*() { - const t = { - content: e.editor.getFinalContent(), - nick: e.editor.getUI().$nick.value, - email: e.editor.getUI().$email.value, - link: e.editor.getUI().$link.value - }; - return yield e.editor.ctx.getApi().comment.commentEdit(__spreadValues(__spreadValues({}, e.comment), t)) - } - )), - post: t=>{ - e.editor.ctx.updateComment(t) - } - }) - }(t), - t - } - function gn(e) { - if (!e.comment) - return; - const t = e.editor.getUI(); - t.$editCancelBtn && (t.$editCancelBtn.remove(), - t.$editCancelBtn = void 0), - e.comment = void 0, - e.editor.travelBack(); - const {nick: n, email: i, link: s} = lt.data; - t.$nick.value = n, - t.$email.value = i, - t.$link.value = s, - e.editor.setContent(""), - e.editor.refreshSendBtnText(), - t.$header.style.display = "" - } - function fn(e) { - const t = { - editor: e, - do: ()=>function(e) { - return __async(this, null, (function*() { - if ("" === e.editor.getFinalContent().trim()) - return void e.editor.focus(); - const t = e.customs.find((e=>e.activeCond())); - e.editor.ctx.trigger("editor-submit"), - e.editor.showLoading(); - try { - let n; - (null == t ? void 0 : t.pre) && t.pre(), - n = (null == t ? void 0 : t.req) ? yield t.req() : yield function(e) { - return __async(this, null, (function*() { - const t = yield e.editor.ctx.getApi().comment.add(__spreadValues({}, function(e) { - var t; - const {nick: n, email: i, link: s} = lt.data - , r = e.editor.ctx.conf - , a = null == (t = e.editor.getReplyManager()) ? void 0 : t.comment; - return { - content: e.editor.getFinalContent(), - nick: n, - email: i, - link: s, - rid: a ? a.id : 0, - page_key: a ? a.page_key : r.pageKey, - page_title: a ? void 0 : r.pageTitle, - site_name: a ? a.site_name : r.site - } - }(e))); - return t - } - )) - }(e), - (null == t ? void 0 : t.post) ? t.post(n) : function(e, t) { - const n = e.editor.getReplyManager() - , i = e.editor.ctx.conf; - (null == n ? void 0 : n.comment) && n.comment.page_key !== i.pageKey && window.open(`${n.comment.page_url}#atk-comment-${t.id}`); - e.editor.ctx.insertComment(t) - }(e, n) - } catch (n) { - return console.error(n), - void e.editor.showNotify(`${e.editor.$t("commentFail")},${n.msg || String(n)}`, "e") - } finally { - e.editor.hideLoading() - } - e.editor.reset(), - e.editor.ctx.trigger("editor-submitted") - } - )) - }(t), - customs: [], - registerCustom: e=>{ - t.customs.push(e) - } - }; - return t - } - const kn = { - localStorage: function(e) { - const t = window.localStorage.getItem("ArtalkContent") || ""; - "" !== t.trim() && (e.showNotify(e.$t("restoredMsg"), "i"), - e.setContent(t)); - e.getUI().$textarea.addEventListener("input", (()=>e.saveToLocalStorage())) - }, - header: function(e) { - const t = e.getHeaderInputEls(); - Object.entries(t).forEach((([t,n])=>{ - n.value = lt.data[t] || "", - n.addEventListener("input", (()=>function(e, t, n) { - var i; - if (e.isEditMode) - return; - lt.update({ - [t]: n.value.trim() - }), - null == (i = e.getPlugs()) || i.triggerHeaderInputEvt(t, n) - }(e, t, n))), - n.placeholder = `${e.$t(t)}` - } - )) - }, - textarea: function(e) { - e.getUI().$textarea.placeholder = e.ctx.conf.placeholder || e.$t("placeholder"), - e.getUI().$textarea.addEventListener("keydown", (t=>{ - 9 === (t.keyCode || t.which) && (t.preventDefault(), - e.insertContent("\t")) - } - )), - e.getUI().$textarea.addEventListener("input", (()=>{ - e.adjustTextareaHeight() - } - )) - }, - submitBtn: function(e) { - e.refreshSendBtnText(), - e.getUI().$submitBtn.addEventListener("click", (()=>e.submit())) - }, - submitManager: function(e) { - e.setSubmitManager(fn(e)) - }, - plugs: function(e) { - e.setPlugs(cn(e)) - }, - mover: function(e) { - if (!e.conf.editorTravel) - return; - e.setMover(tn(e)) - }, - replyManager: function(e) { - e.setReplyManager(un(e)) - }, - editModeManager: function(e) { - e.setEditModeManager(mn(e)) - } - }; - const yn = { - $header: ".atk-header", - $nick: '.atk-header [name="nick"]', - $email: '.atk-header [name="email"]', - $link: '.atk-header [name="link"]', - $textareaWrap: ".atk-textarea-wrap", - $textarea: ".atk-textarea", - $bottom: ".atk-bottom", - $submitBtn: ".atk-send-btn", - $notifyWrap: ".atk-notify-wrap", - $plugBtnWrap: ".atk-plug-btn-wrap", - $plugPanelWrap: ".atk-plug-panel-wrap" - }; - class bn extends m { - constructor(e) { - super(e), - __publicField(this, "ui"), - __publicField(this, "plugs"), - __publicField(this, "mover"), - __publicField(this, "reply"), - __publicField(this, "editMode"), - __publicField(this, "submitManager"), - this.ui = function() { - const e = s('
    \n
    \n \n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n') - , t = { - $el: e - }; - return Object.entries(yn).forEach((([n,i])=>{ - t[n] = e.querySelector(i) - } - )), - t - }(), - this.$el = this.ui.$el, - this.ctx.on("conf-loaded", (()=>{ - var e; - e = this, - Object.entries(kn).forEach((([t,n])=>{ - n(e) - } - )) - } - )) - } - getUI() { - return this.ui - } - getPlugs() { - return this.plugs - } - setPlugs(e) { - this.plugs = e - } - setMover(e) { - this.mover = e - } - setReplyManager(e) { - this.reply = e - } - getReplyManager() { - return this.reply - } - get isReplyMode() { - var e; - return !!(null == (e = this.reply) ? void 0 : e.comment) - } - setEditModeManager(e) { - this.editMode = e - } - get isEditMode() { - var e; - return !!(null == (e = this.editMode) ? void 0 : e.comment) - } - setSubmitManager(e) { - this.submitManager = e - } - getSubmitManager() { - return this.submitManager - } - getHeaderInputEls() { - return { - nick: this.ui.$nick, - email: this.ui.$email, - link: this.ui.$link - } - } - saveToLocalStorage() { - window.localStorage.setItem("ArtalkContent", this.getContentOriginal().trim()) - } - refreshSendBtnText() { - this.isEditMode ? this.ui.$submitBtn.innerText = this.$t("save") : this.ui.$submitBtn.innerText = this.ctx.conf.sendBtn || this.$t("send") - } - getFinalContent() { - let e = this.getContentOriginal(); - return this.plugs && (e = this.plugs.getTransformedContent(e)), - e - } - getContentOriginal() { - return this.ui.$textarea.value || "" - } - getContentMarked() { - return Xe(this.ctx, this.getFinalContent()) - } - setContent(e) { - this.ui.$textarea.value = e, - this.saveToLocalStorage(), - this.plugs && this.plugs.triggerContentUpdatedEvt(e), - window.setTimeout((()=>{ - this.adjustTextareaHeight() - } - ), 80) - } - insertContent(e) { - const t = document.querySelector("#owo-big"); - if (t && t.style && (t.style.display = "none"), - document.selection) - this.ui.$textarea.focus(), - document.selection.createRange().text = e, - this.ui.$textarea.focus(); - else if (this.ui.$textarea.selectionStart || 0 === this.ui.$textarea.selectionStart) { - const t = this.ui.$textarea.selectionStart - , n = this.ui.$textarea.selectionEnd - , i = this.ui.$textarea.scrollTop; - this.setContent(this.ui.$textarea.value.substring(0, t) + e + this.ui.$textarea.value.substring(n, this.ui.$textarea.value.length)), - this.ui.$textarea.focus(), - this.ui.$textarea.selectionStart = t + e.length, - this.ui.$textarea.selectionEnd = t + e.length, - this.ui.$textarea.scrollTop = i - } else - this.ui.$textarea.focus(), - this.ui.$textarea.value += e - } - adjustTextareaHeight() { - const e = this.ui.$textarea.offsetHeight - this.ui.$textarea.clientHeight; - this.ui.$textarea.style.height = "0px", - this.ui.$textarea.style.height = `${this.ui.$textarea.scrollHeight + e}px` - } - focus() { - this.ui.$textarea.focus() - } - reset() { - this.setContent(""), - this.cancelReply(), - this.cancelEditComment() - } - setReply(e, t, n=!0) { - var i; - null == (i = this.reply) || i.setReply(e, t, n) - } - cancelReply() { - var e; - null == (e = this.reply) || e.cancelReply() - } - setEditComment(e, t) { - var n; - null == (n = this.editMode) || n.setEdit(e, t) - } - cancelEditComment() { - var e; - null == (e = this.editMode) || e.cancelEdit() - } - showNotify(e, t) { - y(this.ui.$notifyWrap, e, t) - } - showLoading() { - g(this.ui.$el) - } - hideLoading() { - f(this.ui.$el) - } - submit() { - return __async(this, null, (function*() { - this.submitManager && (yield this.submitManager.do()) - } - )) - } - close() { - this.ui.$textareaWrap.querySelector(".atk-comment-closed") || this.ui.$textareaWrap.prepend(s(`
    ${this.$t("onlyAdminCanReply")}
    `)), - lt.data.isAdmin ? (this.ui.$textarea.style.display = "", - this.ui.$bottom.style.display = "") : (this.ui.$textarea.style.display = "none", - this.closePlugPanel(), - this.ui.$bottom.style.display = "none") - } - open() { - var e; - null == (e = this.ui.$textareaWrap.querySelector(".atk-comment-closed")) || e.remove(), - this.ui.$textarea.style.display = "", - this.ui.$bottom.style.display = "" - } - travel(e) { - var t; - null == (t = this.mover) || t.move(e) - } - travelBack() { - var e; - null == (e = this.mover) || e.back() - } - openPlugPanel(e) { - var t; - null == (t = this.plugs) || t.openPlugPanel(e) - } - closePlugPanel() { - var e; - null == (e = this.plugs) || e.closePlugPanel() - } - } - class _n extends m { - constructor(e) { - super(e), - __publicField(this, "layer"), - __publicField(this, "$header"), - __publicField(this, "$closeBtn"), - __publicField(this, "$iframeWrap"), - __publicField(this, "$iframe"), - __publicField(this, "firstShow", !0), - this.$el = s('
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n'), - this.$header = this.$el.querySelector(".atk-sidebar-header"), - this.$closeBtn = this.$header.querySelector(".atk-sidebar-close"), - this.$iframeWrap = this.$el.querySelector(".atk-sidebar-iframe-wrap"), - this.$closeBtn.onclick = ()=>{ - this.hide() - } - , - this.ctx.on("user-changed", (()=>{ - this.firstShow = !0 - } - )) - } - show() { - return __async(this, arguments, (function*(e={}) { - if (this.$el.style.transform = "", - null == this.layer && (this.layer = new x(this.ctx,"sidebar",this.$el), - this.layer.afterHide = ()=>{ - !0 === this.ctx.conf.editorTravel && this.ctx.editorTravelBack() - } - ), - this.layer.show(), - (()=>{ - __async(this, null, (function*() { - var t; - const n = yield this.ctx.getApi().user.loginStatus(); - n.is_admin && !n.is_login && (null == (t = this.layer) || t.hide(), - this.firstShow = !0, - this.ctx.checkAdmin({ - onSuccess: ()=>{ - setTimeout((()=>{ - this.show(e) - } - ), 500) - } - , - onCancel: ()=>{} - })) - } - )) - } - )(), - this.firstShow) { - this.$iframeWrap.innerHTML = "", - this.$iframe = s(""); - const t = u(this.ctx, "/sidebar/") - , n = { - pageKey: this.conf.pageKey, - site: this.conf.site || "", - user: JSON.stringify(lt.data), - time: +new Date - }; - e.view && (n.view = e.view), - this.conf.darkMode && (n.darkMode = "1"), - "string" == typeof this.conf.locale && (n.locale = this.conf.locale); - const i = new URLSearchParams(n); - this.iframeLoad(`${t}?${i.toString()}`), - this.$iframeWrap.append(this.$iframe), - this.firstShow = !1 - } else { - const e = this.$iframe.src.includes("darkMode=1"); - this.conf.darkMode && !e && this.iframeLoad(`${this.$iframe.src}&darkMode=1`), - !this.conf.darkMode && e && this.iframeLoad(this.$iframe.src.replace("&darkMode=1", "")) - } - setTimeout((()=>{ - this.$el.style.transform = "translate(0, 0)" - } - ), 100), - setTimeout((()=>{ - this.ctx.updateNotifies([]) - } - ), 0), - this.ctx.trigger("sidebar-show") - } - )) - } - hide() { - var e; - this.$el.style.transform = "", - null == (e = this.layer) || e.hide(), - this.ctx.trigger("sidebar-hide") - } - iframeLoad(e) { - this.$iframe && (this.$iframe.src = e, - g(this.$iframeWrap), - this.$iframe.onload = ()=>{ - f(this.$iframeWrap) - } - ) - } - } - const $n = { - i18n(e) { - rt(e.conf.locale), - e.on("conf-loaded", (()=>{ - rt(e.conf.locale) - } - )) - }, - markdown() { - !function() { - try { - if (!ue.name) - return - } catch (i) { - return - } - const e = new ue.Renderer - , t = e.link; - e.link = (n,i,s)=>{ - const r = null == n ? void 0 : n.startsWith(`${window.location.protocol}//${window.location.hostname}`); - return t.call(e, n, i, s).replace(/^{ - const n = t || "plaintext"; - let i = e; - return window.hljs ? n && window.hljs.getLanguage(n) && (i = window.hljs.highlight(n, e).value) : i = Ge(e), - `
    \n${i.replace(/&/g, "&")}\n
    ` - } - ; - const n = ue; - ue.setOptions({ - renderer: e, - pedantic: !1, - gfm: !0, - breaks: !0, - smartLists: !0, - smartypants: !0, - xhtml: !1, - sanitize: !1, - silent: !0 - }), - Ke = n - }() - }, - user: e=>(lt.setContext(e), - lt), - api: e=>new en(e), - checkerLauncher: e=>new Gt(e), - editor(e) { - const t = new bn(e); - return e.$root.appendChild(t.$el), - t - }, - list(e) { - const t = new Wt(e); - return e.$root.appendChild(t.$el), - t.fetchComments(0), - t - }, - layer(e) { - x.BodyOrgOverflow = document.body.style.overflow, - x.BodyOrgPaddingRight = document.body.style.paddingRight - }, - sidebarLayer: e=>new _n(e), - eventsDefault(e) { - window.addEventListener("hashchange", (()=>{ - e.listHashGotoCheck() - } - )), - e.on("user-changed", (()=>{ - e.checkAdminShowEl(), - e.listRefreshUI() - } - )) - }, - darkMode(e) { - S(e), - e.on("conf-loaded", (()=>{ - S(e) - } - )) - } - }; - function xn(e) { - return __async(this, null, (function*() { - const t = e.ctx.conf.countEl; - t && document.querySelector(t) && vn(e, { - api: "page_comment", - countEl: t - }); - const n = e.pvAdd ? yield e.ctx.getApi().page.pv() : void 0 - , i = e.ctx.conf.pvEl; - i && document.querySelector(i) && vn(e, { - api: "page_pv", - countEl: i, - curtPageCount: n - }) - } - )) - } - function vn(e, t) { - return __async(this, null, (function*() { - let n = {}; - const i = e.ctx.conf.pageKey; - t.curtPageCount && (n[i] = t.curtPageCount); - let s = Array.from(document.querySelectorAll(t.countEl)).map((e=>e.getAttribute("data-page-key") || i)).filter((e=>void 0 === n[e])); - if (s = [...new Set(s)], - s.length > 0) { - const i = yield e.ctx.getApi().page.stat(t.api, s); - n = __spreadValues(__spreadValues({}, n), i) - } - document.querySelectorAll(t.countEl).forEach((e=>{ - const t = e.getAttribute("data-page-key") || i; - e.innerHTML = `${Number(n[t] || 0)}` - } - )) - } - )) - } - const wn = class e { - constructor(t) { - __publicField(this, "conf"), - __publicField(this, "ctx"), - __publicField(this, "$root"), - e.instance && e.destroy(), - this.conf = qt(t), - this.conf.el instanceof HTMLElement && (this.$root = this.conf.el), - this.showOwoBig(this.conf.el), - this.ctx = new Nt(this.conf,this.$root), - Object.entries($n).forEach((([t,n])=>{ - if (e.DisabledComponents.includes(t)) - return; - const i = n(this.ctx); - i && this.ctx.inject(t, i) - } - )), - e.plugins.forEach((e=>{ - "function" == typeof e && e(this.ctx) - } - )) - } - /** 表情包放大 */ - showOwoBig(e) { - const t = 200 - , i = document.querySelector("body"); - let n = document.createElement("div"); - document.querySelector("#owo-big") ? n = document.querySelector("#owo-big") : (n.id = "owo-big", - i.appendChild(n)); - new MutationObserver((e=>{ - var s, r, a, o, l, c, h, d; - for (let u = 0; u < e.length; u++) { - const p = e[u].addedNodes; - let m = 1 - , g = 0; - ((null == (r = null == (s = p[0]) ? void 0 : s.classList) ? void 0 : r.contains("atk-grp")) || (null == (o = null == (a = p[0]) ? void 0 : a.classList) ? void 0 : o.contains("atk-comment-wrap")) || (null == (l = p[0]) ? void 0 : l.attributes) && (null == (c = p[0]) ? void 0 : c.attributes["atk-emoticon"]) || "function" == typeof (null == (h = p[0]) ? void 0 : h.querySelector) && (null == (d = p[0]) ? void 0 : d.querySelector("img[atk-emoticon]"))) && (p[0].onmouseover = e=>{ - m && "IMG" === e.target.tagName && e.target.attributes["atk-emoticon"] && (m = 0, - g = setTimeout((()=>{ - const s = "true" === e.target.getAttribute("notitle") ? "" : e.target.alt || "" - , r = e.target.clientHeight - , a = e.target.clientWidth; - if (r <= t && a <= t) { - const o = e.target.naturalHeight - , l = e.target.naturalWidth - , c = 2 * r - , h = 2 * a - , d = o > r ? c < o && o < t ? c : o : r - , u = l > a ? h < l && l < t ? h : l : a; - let p = 0 - , m = 0; - u / d >= 1 ? u >= t ? (p = t, - m = d * t / u) : (p = u, - m = d) : d >= t ? (m = t, - p = u * t / d) : (p = u, - m = d); - const g = e.y - e.offsetY; - let f = e.x - e.offsetX - (p - e.target.clientWidth) / 2; - f + p > i.clientWidth && (f -= f + p - i.clientWidth + 10), - f < 0 && (f = 10), - "" !== s && (m += 10), - n.style.cssText = `display:block;height:${m + 34}px;width:${p + 34}px;left:${f}px;top:${g}px;`, - n.innerHTML = `

    ${s}

    ` - } - } - ), 300)) - } - , - p[0].onmouseout = ()=>{ - m = 1, - n.style.display = "none", - clearTimeout(g) - } - ) - } - } - )).observe(e, { - subtree: !0, - childList: !0 - }) - } - static init(t) { - return this.instance && e.destroy(), - this.instance = new e(t), - this.instance - } - use(t) { - e.plugins.push(t), - "function" == typeof t && t(this.ctx) - } - update(t) { - if (!e.instance) - throw Error("cannot call `update` function before call `load`"); - return e.instance.ctx.updateConf(t), - e.instance - } - reload() { - this.ctx.listReload() - } - destroy() { - if (!e.instance) - throw Error("cannot call `destroy` function before call `load`"); - e.instance.$root.remove(), - delete e.instance - } - on(e, t) { - this.ctx.on(e, t, "external") - } - off(e, t) { - this.ctx.off(e, t, "external") - } - trigger(e, t) { - this.ctx.trigger(e, t, "external") - } - setDarkMode(e) { - this.ctx.setDarkMode(e) - } - static use(e) { - this.plugins.push(e), - this.instance && "function" == typeof e && e(this.instance.ctx) - } - static update(e) { - var t; - return null == (t = this.instance) ? void 0 : t.update(e) - } - static reload() { - var e; - null == (e = this.instance) || e.reload() - } - static destroy() { - var e; - null == (e = this.instance) || e.destroy() - } - static on(e, t) { - var n; - null == (n = this.instance) || n.on(e, t) - } - static off(e, t) { - var n; - null == (n = this.instance) || n.off(e, t) - } - static trigger(e, t) { - var n; - null == (n = this.instance) || n.trigger(e, t) - } - static setDarkMode(e) { - var t; - null == (t = this.instance) || t.setDarkMode(e) - } - static loadCountWidget(e) { - const t = new Nt(qt(e)); - t.inject("api", new en(t)), - xn({ - ctx: t, - pvAdd: !1 - }) - } - static LoadCountWidget(e) { - console.warn("The method `LoadCountWidget` is deprecated, please use `loadCountWidget` instead."), - this.loadCountWidget(e) - } - } - ; - return __publicField(wn, "instance"), - __publicField(wn, "ListLite", jt), - __publicField(wn, "defaults", Dt), - __publicField(wn, "plugins", [e=>{ - e.conf.useBackendConf ? e.on("list-loaded", (()=>{ - xn({ - ctx: e, - pvAdd: !0 - }) - } - )) : xn({ - ctx: e, - pvAdd: !0 - }) - } - ]), - __publicField(wn, "DisabledComponents", []), - wn - } -)); +var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__publicField=(e,t,n)=>(__defNormalProp(e,"symbol"!=typeof t?t+"":t,n),n),__accessCheck=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)},__privateAdd=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},__privateMethod=(e,t,n)=>(__accessCheck(e,t,"access private method"),n),__async=(e,t,n)=>new Promise(((i,s)=>{var r=e=>{try{o(n.next(e))}catch(t){s(t)}},a=e=>{try{o(n.throw(e))}catch(t){s(t)}},o=e=>e.done?i(e.value):Promise.resolve(e.value).then(r,a);o((n=n.apply(e,t)).next())}));!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Artalk=t()}(this,(function(){var e,t,n,i;function s(e=""){const t=document.createElement("div");return t.innerHTML=e.trim(),t.firstElementChild||t}function r(e){return parseFloat(getComputedStyle(e,null).height.replace("px",""))}function a(e){const t=RegExp(`[?&]${e}=([^&]*)`).exec(window.location.search);return t&&decodeURIComponent(t[1].replace(/\+/g," "))}function o(e){const t=e.getBoundingClientRect();return{top:t.top+window.scrollY,left:t.left+window.scrollX}}function l(e,t){let n=e.toString();for(;n.length=13?e.replace(/Windows NT 10.0/,"Windows NT 11.0"):"macOS"===t.platform&&i>=11?e.replace(/(Mac OS X \d+_\d+_\d+|Mac OS X)/,`Mac OS X ${n.platformVersion.replace(/\./g,"_")}`):e}))}function h(e){let t;try{t=new URL(e)}catch(n){return!1}return"http:"===t.protocol||"https:"===t.protocol}function u(e,t){return function(e,t){return`${e.replace(/\/$/,"")}/${t.replace(/^\//,"")}`}(e.conf.server,t)}function p(e,t){const n=e=>e&&"object"==typeof e;return n(e)&&n(t)?(Object.keys(t).forEach((i=>{const s=e[i],r=t[i];Array.isArray(s)&&Array.isArray(r)?e[i]=s.concat(r):n(s)&&n(r)?e[i]=p(__spreadValues({},s),r):e[i]=r})),e):t}class m{constructor(e){__publicField(this,"$el"),__publicField(this,"ctx"),__publicField(this,"conf"),this.ctx=e,this.conf=e.conf}$t(e,t={}){return this.ctx.$t(e,t)}}function g(e,t){let n=e.querySelector(":scope > .atk-loading");n||(n=s(''),(null==t?void 0:t.transparentBg)&&(n.style.background="transparent"),e.appendChild(n)),n.style.display="";const i=n.querySelector(".atk-loading-spinner");i&&(i.style.display="none",window.setTimeout((()=>{i.style.display=""}),500))}function f(e){const t=e.querySelector(":scope > .atk-loading");t&&(t.style.display="none")}function k(e,t=!0){const n=o(e).top+r(e)/2-document.documentElement.clientHeight/2;t?window.scroll({top:n>0?n:0,left:0}):window.scroll(0,n>0?n:0)}function b(e,t){!function(e,t,n="in"){e.classList.add(`atk-fade-${n}`);const i=()=>{e.classList.remove(`atk-fade-${n}`),e.removeEventListener("animationend",i),t&&t()};e.addEventListener("animationend",i)}(e,t,"in")}function _(e,t,n='Artalk Error'){let i=e.querySelector(".atk-error-layer");if(null===t)return void(null!==i&&i.remove());i||(i=s(`
    ${n}
    `),e.appendChild(i));const r=i.querySelector(".atk-error-text");r.innerHTML="",null!==t&&(t instanceof HTMLElement?r.appendChild(t):r.innerText=t)}const $=class e extends m{constructor(e,t,n){super(e),__publicField(this,"name"),__publicField(this,"$wrap"),__publicField(this,"$mask"),__publicField(this,"maskClickHideEnable",!0),__publicField(this,"afterHide"),this.name=t;const{$wrap:i,$mask:r}=v();this.$wrap=i,this.$mask=r,this.$el=this.$wrap.querySelector(`[data-layer-name="${t}"].atk-layer-item`),null===this.$el&&(n?this.$el=n:(this.$el=s(),this.$el.classList.add("atk-layer-item"))),this.$el.setAttribute("data-layer-name",t),this.$el.style.display="none",this.$wrap.append(this.$el)}getName(){return this.name}getWrapEl(){return this.$wrap}getEl(){return this.$el}show(){this.fireAllActionTimer(),this.$wrap.style.display="block",this.$mask.style.display="block",this.$mask.classList.add("atk-fade-in"),this.$el.style.display="",this.$mask.onclick=()=>{this.maskClickHideEnable&&this.hide()},this.pageBodyScrollBarHide()}hide(){this.afterHide&&this.afterHide(),this.$wrap.classList.add("atk-fade-out"),this.$el.style.display="none",this.pageBodyScrollBarShow(),this.newActionTimer((()=>{this.$wrap.style.display="none",this.checkCleanLayer()}),450),this.newActionTimer((()=>{this.$wrap.style.display="none",this.$wrap.classList.remove("atk-fade-out")}),200)}setMaskClickHide(e){this.maskClickHideEnable=e}pageBodyScrollBarHide(){document.body.style.overflow="hidden";const e=parseInt(window.getComputedStyle(document.body,null).getPropertyValue("padding-right"),10);document.body.style.paddingRight=`${function(){const e=document.createElement("p");e.style.width="100%",e.style.height="200px";const t=document.createElement("div");t.style.position="absolute",t.style.top="0px",t.style.left="0px",t.style.visibility="hidden",t.style.width="200px",t.style.height="150px",t.style.overflow="hidden",t.appendChild(e),document.body.appendChild(t);const n=e.offsetWidth;t.style.overflow="scroll";let i=e.offsetWidth;return n===i&&(i=t.clientWidth),document.body.removeChild(t),n-i}()+e||0}px`}pageBodyScrollBarShow(){document.body.style.overflow=e.BodyOrgOverflow,document.body.style.paddingRight=e.BodyOrgPaddingRight}newActionTimer(t,n){const i=()=>{t(),e.actionTimers=e.actionTimers.filter((e=>e.act!==i))},s=window.setTimeout((()=>i()),n);e.actionTimers.push({act:i,tid:s})}fireAllActionTimer(){e.actionTimers.forEach((e=>{clearTimeout(e.tid),e.act()}))}disposeNow(){this.$el.remove(),this.pageBodyScrollBarShow(),this.checkCleanLayer()}dispose(){this.hide(),this.$el.remove(),this.checkCleanLayer()}checkCleanLayer(){0===this.getWrapEl().querySelectorAll(".atk-layer-item").length&&(this.$wrap.style.display="none")}};__publicField($,"BodyOrgOverflow"),__publicField($,"BodyOrgPaddingRight"),__publicField($,"actionTimers",[]);let x=$;function v(){let e=document.querySelector(".atk-layer-wrap");e||(e=s(''),document.body.appendChild(e));const t=e.querySelector(".atk-layer-mask");return{$wrap:e,$mask:t}}const w=window.matchMedia("(prefers-color-scheme: dark)");let C;function S(e){T(e,e.conf.darkMode,!1)}function T(e,t,n=!0){const i=t=>{!function(e,t){t?e.$root.classList.add(E):e.$root.classList.remove(E);const{$wrap:n}=v();n&&(t?n.classList.add(E):n.classList.remove(E))}(e,t),n&&function(e,t){e.conf.darkMode=t}(e,t)};"auto"===t?(C||(C=e=>i(e.matches),w.addEventListener("change",C)),i(w.matches)):(C&&w.removeEventListener("change",C),i(t))}const E="atk-dark-mode";let A={async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!1,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!1,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1};function F(e){A=e}const O=/[&<>"']/,M=new RegExp(O.source,"g"),R=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,P=new RegExp(R.source,"g"),B={"&":"&","<":"<",">":">",'"':""","'":"'"},I=e=>B[e];function U(e,t){if(t){if(O.test(e))return e.replace(M,I)}else if(R.test(e))return e.replace(P,I);return e}const D=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function q(e){return e.replace(D,((e,t)=>"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""))}const z=/(^|[^\[])\^/g;function j(e,t){e="string"==typeof e?e:e.source,t=t||"";const n={replace:(t,i)=>(i=(i="object"==typeof i&&"source"in i?i.source:i).replace(z,"$1"),e=e.replace(t,i),n),getRegex:()=>new RegExp(e,t)};return n}const W=/[^\w:]/g,N=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function H(e,t,n){if(e){let e;try{e=decodeURIComponent(q(n)).replace(W,"").toLowerCase()}catch(i){return null}if(0===e.indexOf("javascript:")||0===e.indexOf("vbscript:")||0===e.indexOf("data:"))return null}t&&!N.test(n)&&(n=function(e,t){V[" "+e]||(Q.test(e)?V[" "+e]=e+"/":V[" "+e]=X(e,"/",!0));const n=-1===(e=V[" "+e]).indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(Z,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(G,"$1")+t:e+t}(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(i){return null}return n}const V={},Q=/^[^:]+:\/*[^/]*$/,Z=/^([^:]+:)[\s\S]*$/,G=/^([^:]+:\/*[^/]*)[\s\S]*$/,K={exec:()=>null};function Y(e,t){const n=e.replace(/\|/g,((e,t,n)=>{let i=!1,s=t;for(;--s>=0&&"\\"===n[s];)i=!i;return i?"|":" |"})).split(/ \|/);let i=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length0)return{type:"space",raw:t[0]}}code(e){const t=this.rules.block.code.exec(e);if(t){const e=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:X(e,"\n")}}}fences(e){const t=this.rules.block.fences.exec(e);if(t){const e=t[0],n=function(e,t){const n=e.match(/^(\s+)(?:```)/);if(null===n)return t;const i=n[1];return t.split("\n").map((e=>{const t=e.match(/^\s+/);if(null===t)return e;const[n]=t;return n.length>=i.length?e.slice(i.length):e})).join("\n")}(e,t[3]||"");return{type:"code",raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline._escapes,"$1"):t[2],text:n}}}heading(e){const t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(/#$/.test(e)){const t=X(e,"#");this.options.pedantic?e=t.trim():t&&!/ $/.test(t)||(e=t.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){const t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}}blockquote(e){const t=this.rules.block.blockquote.exec(e);if(t){const e=t[0].replace(/^ *>[ \t]?/gm,""),n=this.lexer.state.top;this.lexer.state.top=!0;const i=this.lexer.blockTokens(e);return this.lexer.state.top=n,{type:"blockquote",raw:t[0],tokens:i,text:e}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim();const i=n.length>1,s={type:"list",raw:"",ordered:i,start:i?+n.slice(0,-1):"",loose:!1,items:[]};n=i?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=i?n:"[*+-]");const r=new RegExp(`^( {0,3}${n})((?:[\t ][^\\n]*)?(?:\\n|$))`);let a="",o="",l=!1;for(;e;){let n=!1;if(!(t=r.exec(e)))break;if(this.rules.block.hr.test(e))break;a=t[0],e=e.substring(a.length);let i=t[2].split("\n",1)[0].replace(/^\t+/,(e=>" ".repeat(3*e.length))),c=e.split("\n",1)[0],d=0;this.options.pedantic?(d=2,o=i.trimLeft()):(d=t[2].search(/[^ ]/),d=d>4?1:d,o=i.slice(d),d+=t[1].length);let h=!1;if(!i&&/^ *$/.test(c)&&(a+=c+"\n",e=e.substring(c.length+1),n=!0),!n){const t=new RegExp(`^ {0,${Math.min(3,d-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),n=new RegExp(`^ {0,${Math.min(3,d-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),s=new RegExp(`^ {0,${Math.min(3,d-1)}}(?:\`\`\`|~~~)`),r=new RegExp(`^ {0,${Math.min(3,d-1)}}#`);for(;e;){const l=e.split("\n",1)[0];if(c=l,this.options.pedantic&&(c=c.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),s.test(c))break;if(r.test(c))break;if(t.test(c))break;if(n.test(e))break;if(c.search(/[^ ]/)>=d||!c.trim())o+="\n"+c.slice(d);else{if(h)break;if(i.search(/[^ ]/)>=4)break;if(s.test(i))break;if(r.test(i))break;if(n.test(i))break;o+="\n"+c}h||c.trim()||(h=!0),a+=l+"\n",e=e.substring(l.length+1),i=c.slice(d)}}s.loose||(l?s.loose=!0:/\n *\n *$/.test(a)&&(l=!0));let u,p=null;this.options.gfm&&(p=/^\[[ xX]\] /.exec(o),p&&(u="[ ] "!==p[0],o=o.replace(/^\[[ xX]\] +/,""))),s.items.push({type:"list_item",raw:a,task:!!p,checked:u,loose:!1,text:o,tokens:[]}),s.raw+=a}s.items[s.items.length-1].raw=a.trimRight(),s.items[s.items.length-1].text=o.trimRight(),s.raw=s.raw.trimRight();for(let e=0;e"space"===e.type)),n=t.length>0&&t.some((e=>/\n.*\n/.test(e.raw)));s.loose=n}if(s.loose)for(let e=0;e$/,"$1").replace(this.rules.inline._escapes,"$1"):"",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline._escapes,"$1"):t[3];return{type:"def",tag:e,raw:t[0],href:n,title:i}}}table(e){const t=this.rules.block.table.exec(e);if(t){const e={type:"table",raw:t[0],header:Y(t[1]).map((e=>({text:e,tokens:[]}))),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(e.header.length===e.align.length){let t,n,i,s,r=e.align.length;for(t=0;t({text:e,tokens:[]})));for(r=e.header.length,n=0;n/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):U(t[0]):t[0]}}link(e){const t=this.rules.inline.link.exec(e);if(t){const e=t[2].trim();if(!this.options.pedantic&&/^$/.test(e))return;const t=X(e.slice(0,-1),"\\");if((e.length-t.length)%2==0)return}else{const e=function(e,t){if(-1===e.indexOf(t[1]))return-1;let n=0;for(let i=0;i-1){const n=(0===t[0].indexOf("!")?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=""}}let n=t[2],i="";if(this.options.pedantic){const e=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(n);e&&(n=e[1],i=e[3])}else i=t[3]?t[3].slice(1,-1):"";return n=n.trim(),/^$/.test(e)?n.slice(1):n.slice(1,-1)),J(t,{href:n?n.replace(this.rules.inline._escapes,"$1"):n,title:i?i.replace(this.rules.inline._escapes,"$1"):i},t[0],this.lexer)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=(n[2]||n[1]).replace(/\s+/g," ");if(e=t[e.toLowerCase()],!e){const e=n[0].charAt(0);return{type:"text",raw:e,text:e}}return J(n,e,n[0],this.lexer)}}emStrong(e,t,n=""){let i=this.rules.inline.emStrong.lDelim.exec(e);if(i&&(!i[3]||!n.match(/[\p{L}\p{N}]/u))&&(!i[1]&&!i[2]||!n||this.rules.inline.punctuation.exec(n))){const n=[...i[0]].length-1;let s,r,a=n,o=0;const l="*"===i[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(l.lastIndex=0,t=t.slice(-1*e.length+n);null!=(i=l.exec(t));){if(s=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!s)continue;if(r=[...s].length,i[3]||i[4]){a+=r;continue}if((i[5]||i[6])&&n%3&&!((n+r)%3)){o+=r;continue}if(a-=r,a>0)continue;r=Math.min(r,r+a+o);const t=[...e].slice(0,n+i.index+r+1).join("");if(Math.min(n,r)%2){const e=t.slice(1,-1);return{type:"em",raw:t,text:e,tokens:this.lexer.inlineTokens(e)}}const l=t.slice(2,-2);return{type:"strong",raw:t,text:l,tokens:this.lexer.inlineTokens(l)}}}}codespan(e){const t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(/\n/g," ");const n=/[^ ]/.test(e),i=/^ /.test(e)&&/ $/.test(e);return n&&i&&(e=e.substring(1,e.length-1)),e=U(e,!0),{type:"codespan",raw:t[0],text:e}}}br(e){const t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){const t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e,t){const n=this.rules.inline.autolink.exec(e);if(n){let e,i;return"@"===n[2]?(e=U(this.options.mangle?t(n[1]):n[1]),i="mailto:"+e):(e=U(n[1]),i=e),{type:"link",raw:n[0],text:e,href:i,tokens:[{type:"text",raw:e,text:e}]}}}url(e,t){let n;if(n=this.rules.inline.url.exec(e)){let e,i;if("@"===n[2])e=U(this.options.mangle?t(n[0]):n[0]),i="mailto:"+e;else{let t;do{t=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(t!==n[0]);e=U(n[0]),i="www."===n[1]?"http://"+n[0]:n[0]}return{type:"link",raw:n[0],text:e,href:i,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(e,t){const n=this.rules.inline.text.exec(e);if(n){let e;return e=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(n[0]):U(n[0]):n[0]:U(this.options.smartypants?t(n[0]):n[0]),{type:"text",raw:n[0],text:e}}}}const te={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:K,lheading:/^((?:(?!^bull ).|\n(?!\n|bull ))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};te.def=j(te.def).replace("label",te._label).replace("title",te._title).getRegex(),te.bullet=/(?:[*+-]|\d{1,9}[.)])/,te.listItemStart=j(/^( *)(bull) */).replace("bull",te.bullet).getRegex(),te.list=j(te.list).replace(/bull/g,te.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+te.def.source+")").getRegex(),te._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",te._comment=/|$)/,te.html=j(te.html,"i").replace("comment",te._comment).replace("tag",te._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),te.lheading=j(te.lheading).replace(/bull/g,te.bullet).getRegex(),te.paragraph=j(te._paragraph).replace("hr",te.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",te._tag).getRegex(),te.blockquote=j(te.blockquote).replace("paragraph",te.paragraph).getRegex(),te.normal=__spreadValues({},te),te.gfm=__spreadProps(__spreadValues({},te.normal),{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),te.gfm.table=j(te.gfm.table).replace("hr",te.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",te._tag).getRegex(),te.gfm.paragraph=j(te._paragraph).replace("hr",te.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",te.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",te._tag).getRegex(),te.pedantic=__spreadProps(__spreadValues({},te.normal),{html:j("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",te._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:K,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:j(te.normal._paragraph).replace("hr",te.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",te.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});const ne={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:K,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,rDelimAst:/^[^_*]*?__[^_*]*?\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\*)[punct](\*+)(?=[\s]|$)|[^punct\s](\*+)(?!\*)(?=[punct\s]|$)|(?!\*)[punct\s](\*+)(?=[^punct\s])|[\s](\*+)(?!\*)(?=[punct])|(?!\*)[punct](\*+)(?!\*)(?=[punct])|[^punct\s](\*+)(?=[^punct\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\s]|$)|[^punct\s](_+)(?!_)(?=[punct\s]|$)|(?!_)[punct\s](_+)(?=[^punct\s])|[\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:K,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\.5?"x"+e.charCodeAt(n).toString(16):e.charCodeAt(n).toString())+";";return t}ne._punctuation="\\p{P}$+<=>`^|~",ne.punctuation=j(ne.punctuation,"u").replace(/punctuation/g,ne._punctuation).getRegex(),ne.blockSkip=/\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g,ne.anyPunctuation=/\\[punct]/g,ne._escapes=/\\([punct])/g,ne._comment=j(te._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),ne.emStrong.lDelim=j(ne.emStrong.lDelim,"u").replace(/punct/g,ne._punctuation).getRegex(),ne.emStrong.rDelimAst=j(ne.emStrong.rDelimAst,"gu").replace(/punct/g,ne._punctuation).getRegex(),ne.emStrong.rDelimUnd=j(ne.emStrong.rDelimUnd,"gu").replace(/punct/g,ne._punctuation).getRegex(),ne.anyPunctuation=j(ne.anyPunctuation,"gu").replace(/punct/g,ne._punctuation).getRegex(),ne._escapes=j(ne._escapes,"gu").replace(/punct/g,ne._punctuation).getRegex(),ne._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,ne._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,ne.autolink=j(ne.autolink).replace("scheme",ne._scheme).replace("email",ne._email).getRegex(),ne._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,ne.tag=j(ne.tag).replace("comment",ne._comment).replace("attribute",ne._attribute).getRegex(),ne._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,ne._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,ne._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,ne.link=j(ne.link).replace("label",ne._label).replace("href",ne._href).replace("title",ne._title).getRegex(),ne.reflink=j(ne.reflink).replace("label",ne._label).replace("ref",te._label).getRegex(),ne.nolink=j(ne.nolink).replace("ref",te._label).getRegex(),ne.reflinkSearch=j(ne.reflinkSearch,"g").replace("reflink",ne.reflink).replace("nolink",ne.nolink).getRegex(),ne.normal=__spreadValues({},ne),ne.pedantic=__spreadProps(__spreadValues({},ne.normal),{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:j(/^!?\[(label)\]\((.*?)\)/).replace("label",ne._label).getRegex(),reflink:j(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",ne._label).getRegex()}),ne.gfm=__spreadProps(__spreadValues({},ne.normal),{escape:j(ne.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\t+" ".repeat(n.length)));e;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some((i=>!!(n=i.call({lexer:this},e,t))&&(e=e.substring(n.raw.length),t.push(n),!0)))))if(n=this.tokenizer.space(e))e=e.substring(n.raw.length),1===n.raw.length&&t.length>0?t[t.length-1].raw+="\n":t.push(n);else if(n=this.tokenizer.code(e))e=e.substring(n.raw.length),i=t[t.length-1],!i||"paragraph"!==i.type&&"text"!==i.type?t.push(n):(i.raw+="\n"+n.raw,i.text+="\n"+n.text,this.inlineQueue[this.inlineQueue.length-1].src=i.text);else if(n=this.tokenizer.fences(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.heading(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.hr(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.blockquote(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.list(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.html(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.def(e))e=e.substring(n.raw.length),i=t[t.length-1],!i||"paragraph"!==i.type&&"text"!==i.type?this.tokens.links[n.tag]||(this.tokens.links[n.tag]={href:n.href,title:n.title}):(i.raw+="\n"+n.raw,i.text+="\n"+n.raw,this.inlineQueue[this.inlineQueue.length-1].src=i.text);else if(n=this.tokenizer.table(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.lheading(e))e=e.substring(n.raw.length),t.push(n);else{if(s=e,this.options.extensions&&this.options.extensions.startBlock){let t=1/0;const n=e.slice(1);let i;this.options.extensions.startBlock.forEach((e=>{i=e.call({lexer:this},n),"number"==typeof i&&i>=0&&(t=Math.min(t,i))})),t<1/0&&t>=0&&(s=e.substring(0,t+1))}if(this.state.top&&(n=this.tokenizer.paragraph(s)))i=t[t.length-1],r&&"paragraph"===i.type?(i.raw+="\n"+n.raw,i.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=i.text):t.push(n),r=s.length!==e.length,e=e.substring(n.raw.length);else if(n=this.tokenizer.text(e))e=e.substring(n.raw.length),i=t[t.length-1],i&&"text"===i.type?(i.raw+="\n"+n.raw,i.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=i.text):t.push(n);else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n,i,s,r,a,o,l=e;if(this.tokens.links){const e=Object.keys(this.tokens.links);if(e.length>0)for(;null!=(r=this.tokenizer.rules.inline.reflinkSearch.exec(l));)e.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(l=l.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(r=this.tokenizer.rules.inline.blockSkip.exec(l));)l=l.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(r=this.tokenizer.rules.inline.anyPunctuation.exec(l));)l=l.slice(0,r.index)+"++"+l.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;e;)if(a||(o=""),a=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some((i=>!!(n=i.call({lexer:this},e,t))&&(e=e.substring(n.raw.length),t.push(n),!0)))))if(n=this.tokenizer.escape(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.tag(e))e=e.substring(n.raw.length),i=t[t.length-1],i&&"text"===n.type&&"text"===i.type?(i.raw+=n.raw,i.text+=n.text):t.push(n);else if(n=this.tokenizer.link(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(n.raw.length),i=t[t.length-1],i&&"text"===n.type&&"text"===i.type?(i.raw+=n.raw,i.text+=n.text):t.push(n);else if(n=this.tokenizer.emStrong(e,l,o))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.codespan(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.br(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.del(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.autolink(e,se))e=e.substring(n.raw.length),t.push(n);else if(this.state.inLink||!(n=this.tokenizer.url(e,se))){if(s=e,this.options.extensions&&this.options.extensions.startInline){let t=1/0;const n=e.slice(1);let i;this.options.extensions.startInline.forEach((e=>{i=e.call({lexer:this},n),"number"==typeof i&&i>=0&&(t=Math.min(t,i))})),t<1/0&&t>=0&&(s=e.substring(0,t+1))}if(n=this.tokenizer.inlineText(s,ie))e=e.substring(n.raw.length),"_"!==n.raw.slice(-1)&&(o=n.raw.slice(-1)),a=!0,i=t[t.length-1],i&&"text"===i.type?(i.raw+=n.raw,i.text+=n.text):t.push(n);else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}else e=e.substring(n.raw.length),t.push(n);return t}}class ae{constructor(e){__publicField(this,"options"),this.options=e||A}code(e,t,n){var i;const s=null==(i=(t||"").match(/^\S*/))?void 0:i[0];if(this.options.highlight){const t=this.options.highlight(e,s);null!=t&&t!==e&&(n=!0,e=t)}return e=e.replace(/\n$/,"")+"\n",s?'
    '+(n?e:U(e,!0))+"
    \n":"
    "+(n?e:U(e,!0))+"
    \n"}blockquote(e){return`
    \n ${e}
    \n`}html(e,t){return e}heading(e,t,n,i){return this.options.headerIds?`${e}\n`:`${e}\n`}hr(){return this.options.xhtml?"
    \n":"
    \n"}list(e,t,n){const i=t?"ol":"ul";return"<"+i+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"}listitem(e,t,n){return`
  • ${e}
  • \n`}checkbox(e){return" "}paragraph(e){return`

    ${e}

    \n`}table(e,t){return t&&(t=`${t}`),"\n\n"+e+"\n"+t+"
    \n"}tablerow(e){return`\n ${e}\n`}tablecell(e,t){const n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+`\n`}strong(e){return`${e}`}em(e){return`${e}`}codespan(e){return`${e}`}br(){return this.options.xhtml?"
    ":"
    "}del(e){return`${e}`}link(e,t,n){const i=H(this.options.sanitize,this.options.baseUrl,e);if(null===i)return n;let s='
    ",s}image(e,t,n){const i=H(this.options.sanitize,this.options.baseUrl,e);if(null===i)return n;let s=`${n}":">",s}text(e){return e}}class oe{strong(e){return e}em(e){return e}codespan(e){return e}del(e){return e}html(e){return e}text(e){return e}link(e,t,n){return""+n}image(e,t,n){return""+n}br(){return""}}class le{constructor(){__publicField(this,"seen"),this.seen={}}serialize(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(e,t){let n=e,i=0;if(this.seen.hasOwnProperty(n)){i=this.seen[e];do{i++,n=e+"-"+i}while(this.seen.hasOwnProperty(n))}return t||(this.seen[e]=i,this.seen[n]=0),n}slug(e,t={}){const n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)}}class ce{constructor(e){__publicField(this,"options"),__publicField(this,"renderer"),__publicField(this,"textRenderer"),__publicField(this,"slugger"),this.options=e||A,this.options.renderer=this.options.renderer||new ae,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new oe,this.slugger=new le}static parse(e,t){return new ce(t).parse(e)}static parseInline(e,t){return new ce(t).parseInline(e)}parse(e,t=!0){let n="";for(let i=0;i0&&"paragraph"===t.tokens[0].type?(t.tokens[0].text=e+" "+t.tokens[0].text,t.tokens[0].tokens&&t.tokens[0].tokens.length>0&&"text"===t.tokens[0].tokens[0].type&&(t.tokens[0].tokens[0].text=e+" "+t.tokens[0].tokens[0].text)):t.tokens.unshift({type:"text",text:e}):o+=e}o+=this.parse(t.tokens,r),a+=this.renderer.listitem(o,s,!!i)}n+=this.renderer.list(a,t,i);continue}case"html":{const e=s;n+=this.renderer.html(e.text,e.block);continue}case"paragraph":{const e=s;n+=this.renderer.paragraph(this.parseInline(e.tokens));continue}case"text":{let r=s,a=r.tokens?this.parseInline(r.tokens):r.text;for(;i+1{"function"==typeof r&&(a=r,r=null);const o=__spreadValues({},r),l=__spreadValues(__spreadValues({},this.defaults),o);!0===this.defaults.async&&!1===o.async&&(l.silent||console.warn("marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored."),l.async=!0);const c=__privateMethod(this,n,i).call(this,!!l.silent,!!l.async,a);if(null==s)return c(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof s)return c(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(s)+", string expected"));if(function(e,t){e&&!e.silent&&(t&&console.warn("marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async"),(e.sanitize||e.sanitizer)&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options"),(e.highlight||"language-"!==e.langPrefix)&&console.warn("marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight."),e.mangle&&console.warn("marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`."),e.baseUrl&&console.warn("marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url."),e.smartypants&&console.warn("marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants."),e.xhtml&&console.warn("marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml."),(e.headerIds||e.headerPrefix)&&console.warn("marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`."))}(l,a),l.hooks&&(l.hooks.options=l),a){const n=a,i=l.highlight;let r;try{l.hooks&&(s=l.hooks.preprocess(s)),r=e(s,l)}catch(d){return c(d)}const o=e=>{let s;if(!e)try{l.walkTokens&&this.walkTokens(r,l.walkTokens),s=t(r,l),l.hooks&&(s=l.hooks.postprocess(s))}catch(d){e=d}return l.highlight=i,e?c(e):n(null,s)};if(!i||i.length<3)return o();if(delete l.highlight,!r.length)return o();let h=0;return this.walkTokens(r,(e=>{"code"===e.type&&(h++,setTimeout((()=>{i(e.text,e.lang,((t,n)=>{if(t)return o(t);null!=n&&n!==e.text&&(e.text=n,e.escaped=!0),h--,0===h&&o()}))}),0))})),void(0===h&&o())}if(l.async)return Promise.resolve(l.hooks?l.hooks.preprocess(s):s).then((t=>e(t,l))).then((e=>l.walkTokens?Promise.all(this.walkTokens(e,l.walkTokens)).then((()=>e)):e)).then((e=>t(e,l))).then((e=>l.hooks?l.hooks.postprocess(e):e)).catch(c);try{l.hooks&&(s=l.hooks.preprocess(s));const n=e(s,l);l.walkTokens&&this.walkTokens(n,l.walkTokens);let i=t(n,l);return l.hooks&&(i=l.hooks.postprocess(i)),i}catch(d){return c(d)}}},n=new WeakSet,i=function(e,t,n){return i=>{if(i.message+="\nPlease report this to https://github.com/markedjs/marked.",e){const e="

    An error occurred:

    "+U(i.message+"",!0)+"
    ";return t?Promise.resolve(e):n?void n(null,e):e}if(t)return Promise.reject(i);if(!n)throw i;n(i)}};const he=new class{constructor(...i){__privateAdd(this,e),__privateAdd(this,n),__publicField(this,"defaults",{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!1,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!1,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}),__publicField(this,"options",this.setOptions),__publicField(this,"parse",__privateMethod(this,e,t).call(this,re.lex,ce.parse)),__publicField(this,"parseInline",__privateMethod(this,e,t).call(this,re.lexInline,ce.parseInline)),__publicField(this,"Parser",ce),__publicField(this,"parser",ce.parse),__publicField(this,"Renderer",ae),__publicField(this,"TextRenderer",oe),__publicField(this,"Lexer",re),__publicField(this,"lexer",re.lex),__publicField(this,"Tokenizer",ee),__publicField(this,"Slugger",le),__publicField(this,"Hooks",de),this.use(...i)}walkTokens(e,t){var n,i;let s=[];for(const r of e)switch(s=s.concat(t.call(this,r)),r.type){case"table":{const e=r;for(const n of e.header)s=s.concat(this.walkTokens(n.tokens,t));for(const n of e.rows)for(const e of n)s=s.concat(this.walkTokens(e.tokens,t));break}case"list":{const e=r;s=s.concat(this.walkTokens(e.items,t));break}default:{const e=r;(null==(i=null==(n=this.defaults.extensions)?void 0:n.childTokens)?void 0:i[e.type])?this.defaults.extensions.childTokens[e.type].forEach((n=>{s=s.concat(this.walkTokens(e[n],t))})):e.tokens&&(s=s.concat(this.walkTokens(e.tokens,t)))}}return s}use(...e){const t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach((e=>{const n=__spreadValues({},e);if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach((e=>{if(!e.name)throw new Error("extension name required");if("renderer"in e){const n=t.renderers[e.name];t.renderers[e.name]=n?function(...t){let i=e.renderer.apply(this,t);return!1===i&&(i=n.apply(this,t)),i}:e.renderer}if("tokenizer"in e){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");const n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}"childTokens"in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)})),n.extensions=t),e.renderer){const t=this.defaults.renderer||new ae(this.defaults);for(const n in e.renderer){const i=e.renderer[n],s=n,r=t[s];t[s]=(...e)=>{let n=i.apply(t,e);return!1===n&&(n=r.apply(t,e)),n||""}}n.renderer=t}if(e.tokenizer){const t=this.defaults.tokenizer||new ee(this.defaults);for(const n in e.tokenizer){const i=e.tokenizer[n],s=n,r=t[s];t[s]=(...e)=>{let n=i.apply(t,e);return!1===n&&(n=r.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){const t=this.defaults.hooks||new de;for(const n in e.hooks){const i=e.hooks[n],s=n,r=t[s];de.passThroughHooks.has(n)?t[s]=e=>{if(this.defaults.async)return Promise.resolve(i.call(t,e)).then((e=>r.call(t,e)));const n=i.call(t,e);return r.call(t,n)}:t[s]=(...e)=>{let n=i.apply(t,e);return!1===n&&(n=r.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){const t=this.defaults.walkTokens,i=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(i.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults=__spreadValues(__spreadValues({},this.defaults),n)})),this}setOptions(e){return this.defaults=__spreadValues(__spreadValues({},this.defaults),e),this}};function ue(e,t,n){return he.parse(e,t,n)}ue.options=ue.setOptions=function(e){return he.setOptions(e),ue.defaults=he.defaults,F(ue.defaults),ue},ue.getDefaults=function(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!1,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!1,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}},ue.defaults=A,ue.use=function(...e){return he.use(...e),ue.defaults=he.defaults,F(ue.defaults),ue},ue.walkTokens=function(e,t){return he.walkTokens(e,t)},ue.parseInline=he.parseInline,ue.Parser=ce,ue.parser=ce.parse,ue.Renderer=ae,ue.TextRenderer=oe,ue.Lexer=re,ue.lexer=re.lex,ue.Tokenizer=ee,ue.Slugger=le,ue.Hooks=de,ue.parse=ue,ue.options,ue.setOptions,ue.use,ue.walkTokens,ue.parseInline;var pe="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function me(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ge={"&":"&","<":"<",">":">",'"':""","'":"'"},fe={"&":"&","<":"<",">":">",""":'"',"'":"'"},ke=/(&|<|>|"|')/g,ye=/[&<>"']/g;function be(e){return ge[e]}function _e(e){return fe[e]}function $e(e){return null==e?"":String(e).replace(ye,be)}function xe(e){return null==e?"":String(e).replace(ke,_e)}$e.options=xe.options={};var ve={encode:$e,escape:$e,decode:xe,unescape:xe,version:"1.0.0-browser"},Ce=function(e){return"string"==typeof e?e.toLowerCase():e};function Se(e,t){return e[t]=!0,e}var Te=function(e){return e.reduce(Se,{})},Ee={uris:Te(["background","base","cite","href","longdesc","src","usemap"])},Le={voids:Te(["area","br","col","hr","img","wbr","input","base","basefont","link","meta"])},Ae=ve,Fe=Ce,Oe=Le,Me=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,Re=/^<\s*\/\s*([\w:-]+)[^>]*>/,Pe=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,Be=/^s)return!0;var r=e.indexOf("#");return-1!==r&&n>r||i.allowedSchemes.some((function(t){return 0===e.indexOf(t+":")}))}(n)))&&(s(" "),s(e),"string"==typeof n&&(s('="'),s(Ue.encode(n)),s('"')))})),s(a?"/>":">")):r(o)},end:function(e){var t=De(e);-1!==(i.allowedTags||[]).indexOf(t)&&!1===n.ignoring?(s("")):function(e){n.ignoring===e&&--n.depth<=0&&o()}(t)},chars:function(e){!1===n.ignoring&&s(i.transformText?i.transformText(e):e)}};function s(t){e.push(t)}function r(e){ze.voids[e]||(!1===n.ignoring?n={ignoring:e,depth:1}:n.ignoring===e&&n.depth++)}function o(){n={ignoring:!1,depth:0}}},He={allowedAttributes:{a:["href","name","target","title","aria-label"],iframe:["allowfullscreen","frameborder","src"],img:["src","alt","title","aria-label"]},allowedClasses:{},allowedSchemes:["http","https","mailto"],allowedTags:["a","abbr","article","b","blockquote","br","caption","code","del","details","div","em","h1","h2","h3","h4","h5","h6","hr","i","img","ins","kbd","li","main","mark","ol","p","pre","section","span","strike","strong","sub","summary","sup","table","tbody","td","th","thead","tr","u","ul"],filter:null};function Ve(e,t,n){var i=[],s=!0===n?t:je({},He,t);return function(e,t){for(var n,i=function(){var e=[];return e.lastItem=function(){return e[e.length-1]},e}(),s=e;e;)r();function r(){n=!0,function(){var i;"\x3c!--"===e.substr(0,4)?(i=e.indexOf("--\x3e"))>=0&&(t.comment&&t.comment(e.substring(4,i)),e=e.substring(i+3),n=!1):Ie.test(e)?a(Re,l):Be.test(e)&&a(Me,o),function(){if(n){var i,s=e.indexOf("<");s>=0?(i=e.substring(0,s),e=e.substring(s)):(i=e,e=""),t.chars&&t.chars(i)}}()}();var i=e===s;s=e,i&&(e="")}function a(t,i){var s=e.match(t);s&&(e=e.substring(s[0].length),s[0].replace(t,i),n=!1)}function o(e,n,s,r){var a={},o=Fe(n),l=Oe.voids[o]||!!r;s.replace(Pe,(function(e,t,n,i,s){a[t]=void 0===n&&void 0===i&&void 0===s?void 0:Ae.decode(n||i||s||"")})),l||i.push(o),t.start&&t.start(o,a,l)}function l(e,n){var s,r=0,a=Fe(n);if(a)for(r=i.length-1;r>=0&&i[r]!==a;r--);if(r>=0){for(s=i.length-1;s>=r;s--)t.end&&t.end(i[s]);i.length=r}}l()}(e,Ne(i,s)),i.join("")}Ve.defaults=He;const Qe=me(Ve);var Ze={exports:{}};Ze.exports=function(){var t=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e){var t=e.exports=function(){return new RegExp("(?:"+t.line().source+")|(?:"+t.block().source+")","gm")};t.line=function(){return/(?:^|\s)\/\/(.+?)$/gm},t.block=function(){return/\/\*([\S\s]*?)\*\//gm}})),n=["23AC69","91C132","F19726","E8552D","1AAB8E","E1147F","2980C1","1BA1E6","9FA0A0","F19726","E30B20","E30B20","A3338B"];return function(e,s){void 0===s&&(s={});var r=s.colors;void 0===r&&(r=n);var a=0,o={},l=new RegExp("("+/[\u4E00-\u9FFF\u3400-\u4dbf\uf900-\ufaff\u3040-\u309f\uac00-\ud7af\u0400-\u04FF]+|\w+/.source+"|"+/'+e+"
    "}(n);if("<"===t)return"<";var s;o[t]?s=o[t]:(s=r[a],o[t]=s);var l=''+t+"";return a=++a%r.length,l}))}}();const Ge=me(Ze.exports);let Ke;function Ye(){return Ke}function Xe(e,t){var n;let i=null==(n=Ye())?void 0:n.parse(t);i||(i=t.replace(/```\s*([^]+?.*?[^]+?[^]+?)```/g,((e,t)=>`
    ${Ge(t)}
    `)).replace(/!\[(.*?)\]\((.*?)\)/g,((e,t,n)=>`${t}`)).replace(/\[(.*?)\]\((.*?)\)/g,((e,t,n)=>`
    ${t}`)).replace(/\n/g,"
    "));let s=Qe(i,{allowedClasses:{},allowedSchemes:["http","https","mailto","data"],allowedTags:["a","abbr","article","b","blockquote","br","caption","code","del","details","div","em","h1","h2","h3","h4","h5","h6","hr","i","img","ins","kbd","li","main","mark","ol","p","pre","section","span","strike","strong","sub","summary","sup","table","tbody","td","th","thead","tr","u","ul"],allowedAttributes:{"*":["title","accesskey"],a:["href","name","target","aria-label","rel"],img:["src","alt","title","atk-emoticon","aria-label"],code:["class"],span:["class","style"]},filter:e=>([["code",/^hljs\W+language-(.*)$/],["span",/^(hljs-.*)$/]].forEach((([t,n])=>{e.tag===t&&e.attrs.class&&!n.test(e.attrs.class)&&delete e.attrs.class})),"span"===e.tag&&e.attrs.style&&!/^color:(\W+)?#[0-9a-f]{3,6};?$/i.test(e.attrs.style)&&delete e.attrs.style,!0)});return e.markedReplacers.forEach((e=>{"function"==typeof e&&(s=e(s))})),s}const Je={placeholder:"Leave a comment",noComment:"No Comment",send:"Send",save:"Save",nick:"Nickname",email:"Email",link:"Website",emoticon:"Emoji",preview:"Preview",image:"Image",refresh:"Refresh",uploadFail:"Upload Failed",commentFail:"Failed to comment",restoredMsg:"Content has been restored",onlyAdminCanReply:"Only admin can reply",uploadLoginMsg:"Please fill in your name and email to upload",counter:"{count} Comments",sortLatest:"Latest",sortOldest:"Oldest",sortBest:"Best",sortAuthor:"Author",openComment:"Open Comment",closeComment:"Close Comment",listLoadFailMsg:"Failed to load comments",listRetry:"Click to retry",loadMore:"Load More",admin:"Admin",reply:"Reply",voteUp:"Up",voteDown:"Down",voteFail:"Vote Failed",readMore:"Read More",actionConfirm:"Confirm",collapse:"Collapse",collapsed:"Collapsed",collapsedMsg:"This comment has been collapsed",expand:"Expand",approved:"Approved",pending:"Pending",pendingMsg:"Pending, visible only to commenter.",edit:"Edit",editCancel:"Cancel Edit",delete:"Delete",deleteConfirm:"Confirm",pin:"Pin",unpin:"Unpin",seconds:"seconds ago",minutes:"minutes ago",hours:"hours ago",days:"days ago",now:"just now",adminCheck:"Enter admin password:",captchaCheck:"Enter the CAPTCHA to continue:",confirm:"Confirm",cancel:"Cancel",msgCenter:"Messages",ctrlCenter:"Admin",frontend:"Frontend",backend:"Backend",loading:"Loading",loadFail:"Load Failed",editing:"Editing",editFail:"Edit Failed",deleting:"Deleting",deleteFail:"Delete Failed",reqGot:"Request got",reqAborted:"Request timed out or terminated unexpectedly"},et="ArtalkI18n",tt={en:Je,"en-US":Je,"zh-CN":{placeholder:"键入内容...",noComment:"「此时无声胜有声」",send:"发送评论",save:"保存评论",nick:"昵称",email:"邮箱",link:"网址",emoticon:'',preview:'',image:'',refresh:'',uploadFail:"上传失败",commentFail:"评论失败",restoredMsg:"内容已自动恢复",onlyAdminCanReply:"仅管理员可评论",uploadLoginMsg:"填入你的名字邮箱才能上传哦",counter:"{count} 条评论",sortLatest:"最新",sortOldest:"最早",sortBest:"最热",sortAuthor:"作者",openComment:"打开评论",closeComment:"关闭评论",listLoadFailMsg:"无法获取评论列表数据",listRetry:"点击重新获取",loadMore:"加载更多",admin:"管理员",reply:"回复",voteUp:"赞同",voteDown:"反对",voteFail:"投票失败",readMore:"阅读更多",actionConfirm:"确认操作",collapse:"折叠",collapsed:"已折叠",collapsedMsg:"该评论已被系统或管理员折叠",expand:"展开",approved:"已审",pending:"待审",pendingMsg:"审核中,仅本人可见。",edit:"编辑",editCancel:"取消编辑",delete:"删除",deleteConfirm:"确认删除",pin:"置顶",unpin:"取消置顶",seconds:"秒前",minutes:"分钟前",hours:"小时前",days:"天前",now:"刚刚",adminCheck:"键入密码来验证管理员身份:",captchaCheck:"键入验证码继续:",confirm:"确认",cancel:"取消",msgCenter:"通知中心",ctrlCenter:"控制中心",frontend:"前端",backend:"后端",loading:"加载中",loadFail:"加载失败",editing:"修改中",editFail:"修改失败",deleting:"删除中",deleteFail:"删除失败",reqGot:"请求响应",reqAborted:"请求超时或意外终止"}};function nt(e){return e=e.replace(/^([a-zA-Z]+)(-[a-zA-Z]+)?$/,((e,t,n)=>t.toLowerCase()+(n||"").toUpperCase())),tt[e]?tt[e]:window[et]&&window[et][e]?window[et][e]:tt.en}let it="en",st=nt(it);function rt(e){e!==it&&(it=e,st="string"==typeof e?nt(e):e)}function at(e,t={}){let n=(null==st?void 0:st[e])||e;return n=n.replace(/\{\s*(\w+?)\s*\}/g,((e,n)=>t[n]||"")),n}const lt=new class{constructor(){__publicField(this,"ctx"),__publicField(this,"data");const e=JSON.parse(window.localStorage.getItem("ArtalkUser")||"{}");this.data={nick:e.nick||"",email:e.email||"",link:e.link||"",token:e.token||"",isAdmin:e.isAdmin||!1}}setContext(e){this.ctx=e}update(e={}){var t;Object.entries(e).forEach((([e,t])=>{this.data[e]=t})),window.localStorage.setItem("ArtalkUser",JSON.stringify(this.data)),null==(t=this.ctx)||t.trigger("user-changed",this.data)}logout(){this.update({token:"",isAdmin:!1})}checkHasBasicUserInfo(){return!!this.data.nick&&!!this.data.email}},ct=window||{},dt=navigator||{};function ut(e){if(e.$headerNick=e.$el.querySelector(".atk-nick"),e.data.link){const t=s('');t.innerText=e.data.nick,t.href=h(e.data.link)?e.data.link:`https://${e.data.link}`,e.$headerNick.append(t)}else e.$headerNick.innerText=e.data.nick}function pt(e){e.$headerBadgeWrap=e.$el.querySelector(".atk-badge-wrap"),e.$headerBadgeWrap.innerHTML="";const t=e.data.badge_name,n=e.data.badge_color;if(t){const i=s('');i.innerText=t.replace("管理员",e.ctx.$t("admin")),i.style.backgroundColor=n||"",e.$headerBadgeWrap.append(i)}if(e.data.is_pinned){const t=s(`${e.ctx.$t("pin")}`);e.$headerBadgeWrap.append(t)}}function mt(e){const t=e.$el.querySelector(".atk-date");t.innerText=e.comment.getDateFormatted(),t.setAttribute("data-atk-comment-date",String(+new Date(e.data.date)))}function gt(e){if(!e.ctx.conf.uaBadge&&!e.data.ip_region)return;let t=e.$header.querySelector("atk-ua-wrap");if(t||(t=s(''),e.$header.append(t)),t.innerHTML="",e.data.ip_region){const n=s('');n.innerText=e.data.ip_region,t.append(n)}if(e.ctx.conf.uaBadge){const{browser:n,os:i}=e.comment.getUserUA();if(String(n).trim()){const e=s('');e.innerText=n,t.append(e)}if(String(i).trim()){const e=s('');e.innerText=i,t.append(e)}}}class ft{constructor(e,t){__publicField(this,"ctx"),__publicField(this,"conf"),__publicField(this,"$el"),__publicField(this,"isLoading",!1),__publicField(this,"msgRecTimer"),__publicField(this,"msgRecTimerFunc"),__publicField(this,"isConfirming",!1),__publicField(this,"confirmRecTimer"),this.ctx=e,this.$el=s(''),this.conf="object"!=typeof t?{text:t}:t,this.$el.innerText=this.getText(),this.conf.adminOnly&&this.$el.setAttribute("atk-only-admin-show","")}get isMessaging(){return!!this.msgRecTimer}appendTo(e){return e.append(this.$el),this}getText(){return"string"==typeof this.conf.text?this.conf.text:this.conf.text()}setClick(e){this.$el.onclick=t=>{if(t.stopPropagation(),!this.isLoading){if(this.conf.confirm&&!this.isMessaging){const e=()=>{this.isConfirming=!1,this.$el.classList.remove("atk-btn-confirm"),this.$el.innerText=this.getText()};if(!this.isConfirming)return this.isConfirming=!0,this.$el.classList.add("atk-btn-confirm"),this.$el.innerText=this.conf.confirmText||this.ctx.$t("actionConfirm"),void(this.confirmRecTimer=window.setTimeout((()=>e()),5e3));this.confirmRecTimer&&window.clearTimeout(this.confirmRecTimer),e()}if(this.msgRecTimer)return this.fireMsgRecTimer(),void this.clearMsgRecTimer();e()}}}updateText(e){e&&(this.conf.text=e),this.setLoading(!1),this.$el.innerText=this.getText()}setLoading(e,t){this.isLoading!==e&&(this.isLoading=e,e?(this.$el.classList.add("atk-btn-loading"),this.$el.innerText=t||`${this.ctx.$t("loading")}...`):(this.$el.classList.remove("atk-btn-loading"),this.$el.innerText=this.getText()))}setError(e){this.setMsg(e,"atk-btn-error")}setWarn(e){this.setMsg(e,"atk-btn-warn")}setSuccess(e){this.setMsg(e,"atk-btn-success")}setMsg(e,t,n,i){this.setLoading(!1),t&&this.$el.classList.add(t),this.$el.innerText=e,this.setMsgRecTimer((()=>{this.$el.innerText=this.getText(),t&&this.$el.classList.remove(t),i&&i()}),n||2500)}setMsgRecTimer(e,t){this.fireMsgRecTimer(),this.clearMsgRecTimer(),this.msgRecTimerFunc=e,this.msgRecTimer=window.setTimeout((()=>{e(),this.clearMsgRecTimer()}),t)}fireMsgRecTimer(){this.msgRecTimerFunc&&this.msgRecTimerFunc()}clearMsgRecTimer(){this.msgRecTimer&&window.clearTimeout(this.msgRecTimer),this.msgRecTimer=void 0,this.msgRecTimerFunc=void 0}}function kt(e){e.ctx.conf.vote&&(e.voteBtnUp=new ft(e.ctx,(()=>`${e.ctx.$t("voteUp")} (${e.data.vote_up||0})`)).appendTo(e.$actions),e.voteBtnUp.setClick((()=>{e.comment.getActions().vote("up")})),e.ctx.conf.voteDown&&(e.voteBtnDown=new ft(e.ctx,(()=>`${e.ctx.$t("voteDown")} (${e.data.vote_down||0})`)).appendTo(e.$actions),e.voteBtnDown.setClick((()=>{e.comment.getActions().vote("down")}))))}function yt(e){if(!e.data.is_allow_reply)return;const t=s(`${e.ctx.$t("reply")}`);e.$actions.append(t),t.addEventListener("click",(t=>{t.stopPropagation(),e.cConf.onReplyBtnClick?e.cConf.onReplyBtnClick():e.ctx.replyComment(e.data,e.$el)}))}function bt(e){const t=new ft(e.ctx,{text:()=>e.data.is_collapsed?e.ctx.$t("expand"):e.ctx.$t("collapse"),adminOnly:!0});t.appendTo(e.$actions),t.setClick((()=>{e.comment.getActions().adminEdit("collapsed",t)}))}function _t(e){const t=new ft(e.ctx,{text:()=>e.data.is_pending?e.ctx.$t("pending"):e.ctx.$t("approved"),adminOnly:!0});t.appendTo(e.$actions),t.setClick((()=>{e.comment.getActions().adminEdit("pending",t)}))}function $t(e){const t=new ft(e.ctx,{text:()=>e.data.is_pinned?e.ctx.$t("unpin"):e.ctx.$t("pin"),adminOnly:!0});t.appendTo(e.$actions),t.setClick((()=>{e.comment.getActions().adminEdit("pinned",t)}))}function xt(e){const t=new ft(e.ctx,{text:e.ctx.$t("edit"),adminOnly:!0});t.appendTo(e.$actions),t.setClick((()=>{e.ctx.editComment(e.data,e.$el)}))}function vt(e){const t=new ft(e.ctx,{text:e.ctx.$t("delete"),confirm:!0,confirmText:e.ctx.$t("deleteConfirm"),adminOnly:!0});t.appendTo(e.$actions),t.setClick((()=>{e.comment.getActions().adminDelete(t)}))}const wt={Avatar:function(e){const t=e.$el.querySelector(".atk-avatar"),n=s(""),i=e.conf.avatarURLBuilder;if(n.src=i?i(e.data):e.comment.getGravatarURL(),e.data.link){const i=s('');i.href=h(e.data.link)?e.data.link:`https://${e.data.link}`,i.append(n),t.append(i)}else t.append(n)},Header:function(e){Object.entries({renderNick:ut,renderVerifyBadge:pt,renderDate:mt,renderUABadge:gt}).forEach((([t,n])=>{n(e)}))},Content:function(e){if(!e.data.is_collapsed)return e.$content.innerHTML=e.comment.getContentMarked(),void e.$content.classList.remove("atk-hide","atk-collapsed");e.$content.classList.add("atk-hide","atk-type-collapsed");const t=s(`\n
    \n ${e.ctx.$t("collapsedMsg")}\n ${e.ctx.$t("expand")}\n
    `);e.$body.insertAdjacentElement("beforeend",t);const n=t.querySelector(".atk-show-btn");n.addEventListener("click",(t=>{t.stopPropagation(),e.$content.classList.contains("atk-hide")?(e.$content.innerHTML=e.comment.getContentMarked(),e.$content.classList.remove("atk-hide"),b(e.$content),n.innerHTML=e.ctx.$t("collapse")):(e.$content.innerHTML="",e.$content.classList.add("atk-hide"),n.innerHTML=e.ctx.$t("expand"))}))},ReplyAt:function(e){e.cConf.isFlatMode||0===e.data.rid||e.cConf.replyTo&&(e.$replyAt=s(''),e.$replyAt.querySelector(".atk-nick").innerText=`${e.cConf.replyTo.nick}`,e.$replyAt.onclick=()=>{e.comment.getActions().goToReplyComment()},e.$headerBadgeWrap.insertAdjacentElement("afterend",e.$replyAt))},ReplyTo:function(e){if(!e.cConf.isFlatMode)return;if(!e.cConf.replyTo)return;e.$replyTo=s(`\n
    \n
    ${e.ctx.$t("reply")} :
    \n
    \n
    `);const t=e.$replyTo.querySelector(".atk-nick");t.innerText=`@${e.cConf.replyTo.nick}`,t.onclick=()=>{e.comment.getActions().goToReplyComment()};let n=Xe(e.ctx,e.cConf.replyTo.content);e.cConf.replyTo.is_collapsed&&(n=`[${e.ctx.$t("collapsed")}]`),e.$replyTo.querySelector(".atk-content").innerHTML=n,e.$body.prepend(e.$replyTo)},Pending:function(e){if(!e.data.is_pending)return;const t=s(`
    ${e.ctx.$t("pendingMsg")}
    `);e.$body.prepend(t)},Actions:function(e){Object.entries({renderVote:kt,renderReply:yt,renderCollapse:bt,renderModerator:_t,renderPin:$t,renderEdit:xt,renderDel:vt}).forEach((([t,n])=>{n(e)}))}};function Ct(e,t){t.forEach((({el:t,max:n,imgContains:i})=>{const o=()=>{t&&r(t)>n&&t&&(e.scrollable?function(e){e.el&&(e.el.classList.contains(Et)||(e.el.classList.add(Et),e.el.style.height=`${e.maxHeight}px`))}({el:t,maxHeight:n}):function(e){if(!e.el)return;if(!e.maxHeight)return;if(e.el.classList.contains(St))return;e.el.classList.add(St),e.el.style.height=`${e.maxHeight}px`,e.el.style.overflow="hidden";const t=s(`
    ${at("readMore")}`);t.onclick=t=>{t.stopPropagation(),Tt(e.el),e.postBtnClick&&e.postBtnClick(t)},e.el.append(t)}({el:t,maxHeight:n,postBtnClick:e.postExpandBtnClick}))};o(),i&&t&&function(e,t){if(!e)return;const n=e.getElementsByTagName("img");if(!n.length)return;let i=n.length;for(let s=0;s{i--,0===i&&t()})),0===i&&t()}(t,(()=>o()))}))}const St="atk-height-limit";function Tt(e){e&&e.classList.contains(St)&&(e.classList.remove(St),Array.from(e.children).forEach((e=>{e.classList.contains("atk-height-limit-btn")&&e.remove()})),e.style.height="",e.style.overflow="")}const Et="atk-height-limit-scroll";class Lt extends class{constructor(e){__publicField(this,"comment"),__publicField(this,"$el"),__publicField(this,"$main"),__publicField(this,"$header"),__publicField(this,"$headerNick"),__publicField(this,"$headerBadgeWrap"),__publicField(this,"$body"),__publicField(this,"$content"),__publicField(this,"$childrenWrap"),__publicField(this,"$actions"),__publicField(this,"voteBtnUp"),__publicField(this,"voteBtnDown"),__publicField(this,"$replyTo"),__publicField(this,"$replyAt"),this.comment=e}get ctx(){return this.comment.ctx}get data(){return this.comment.getData()}get conf(){return this.comment.conf}get cConf(){return this.comment.getConf()}}{constructor(e){super(e)}render(){var e;return this.$el=s('
    \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n'),this.$main=this.$el.querySelector(".atk-main"),this.$header=this.$el.querySelector(".atk-header"),this.$body=this.$el.querySelector(".atk-body"),this.$content=this.$body.querySelector(".atk-content"),this.$actions=this.$el.querySelector(".atk-actions"),this.$el.setAttribute("id",`atk-comment-${this.data.id}`),e=this,Object.entries(wt).forEach((([t,n])=>{n(e)})),this.recoveryChildrenWrap(),this.$el}checkHeightLimit(){const e=this.ctx.conf.heightLimit;if(!e||!e.content||!e.children)return;const t=e.content,n=e.children;Ct({postExpandBtnClick:()=>{const e=this.comment.getChildren();1===e.length&&Tt(e[0].getRender().$content)},scrollable:e.scrollable},[{el:this.$content,max:t,imgContains:!0},{el:this.$replyTo,max:t,imgContains:!0},{el:this.$childrenWrap,max:n,imgContains:!1}])}heightLimitRemoveForChildren(){this.$childrenWrap&&Tt(this.$childrenWrap)}playFadeAnim(){b(this.comment.getRender().$el)}playFadeAnimForBody(){b(this.comment.getRender().$body)}getChildrenWrap(){return this.$childrenWrap}renderChildrenWrap(){return this.$childrenWrap||(this.$childrenWrap=s('
    '),this.$main.append(this.$childrenWrap)),this.$childrenWrap}recoveryChildrenWrap(){this.$childrenWrap&&this.$main.append(this.$childrenWrap)}setUnread(e){e?this.$el.classList.add("atk-unread"):this.$el.classList.remove("atk-unread")}setOpenable(e){e?this.$el.classList.add("atk-openable"):this.$el.classList.remove("atk-openable")}setOpenURL(e){this.setOpenable(!0),this.$el.onclick=t=>{t.preventDefault(),window.open(e),this.cConf.openEvt&&this.cConf.openEvt()}}setOpenAction(e){this.setOpenable(!0),this.$el.onclick=t=>{t.preventDefault(),e()}}}class At{constructor(e){__publicField(this,"comment"),this.comment=e}get ctx(){return this.comment.ctx}get data(){return this.comment.getData()}get cConf(){return this.comment.getConf()}vote(e){const t="up"===e?this.comment.getRender().voteBtnUp:this.comment.getRender().voteBtnDown;this.ctx.getApi().comment.vote(this.data.id,`comment_ ${e}`).then((e=>{var t,n;this.data.vote_up=e.up,this.data.vote_down=e.down,null==(t=this.comment.getRender().voteBtnUp)||t.updateText(),null==(n=this.comment.getRender().voteBtnDown)||n.updateText()})).catch((e=>{null==t||t.setError(this.ctx.$t("voteFail")),console.log(e)}))}adminEdit(e,t){if(t.isLoading)return;t.setLoading(!0,`${this.ctx.$t("editing")}...`);const n=__spreadValues({},this.data);"collapsed"===e?n.is_collapsed=!n.is_collapsed:"pending"===e?n.is_pending=!n.is_pending:"pinned"===e&&(n.is_pinned=!n.is_pinned),this.ctx.getApi().comment.commentEdit(n).then((e=>{t.setLoading(!1),this.comment.setData(e),this.ctx.listRefreshUI()})).catch((e=>{console.error(e),t.setError(this.ctx.$t("editFail"))}))}adminDelete(e){e.isLoading||(e.setLoading(!0,`${this.ctx.$t("deleting")}...`),this.ctx.getApi().comment.commentDel(this.data.id,this.data.site_name).then((()=>{e.setLoading(!1),this.cConf.onDelete&&this.cConf.onDelete(this.comment)})).catch((t=>{console.error(t),e.setError(this.ctx.$t("deleteFail"))})))}goToReplyComment(){const e=window.location.hash,t=`#atk-comment-${this.data.rid}`;window.location.hash=t,t===e&&window.dispatchEvent(new Event("hashchange"))}}class Ft extends m{constructor(e,t,n){super(e),__publicField(this,"renderInstance"),__publicField(this,"actionInstance"),__publicField(this,"data"),__publicField(this,"cConf"),__publicField(this,"parent"),__publicField(this,"children",[]),__publicField(this,"nestCurt"),__publicField(this,"nestMax"),this.nestMax=e.conf.nestMax||3,this.cConf=n,this.data=__spreadValues({},t),this.data.date=this.data.date.replace(/-/g,"/"),this.parent=null,this.nestCurt=1,this.actionInstance=new At(this),this.renderInstance=new Lt(this)}render(){const e=this.renderInstance.render();this.$el&&this.$el.replaceWith(e),this.$el=e,this.cConf.afterRender&&this.cConf.afterRender()}getActions(){return this.actionInstance}getRender(){return this.renderInstance}getData(){return this.data}setData(e){this.data=e,this.render(),this.getRender().playFadeAnimForBody()}getParent(){return this.parent}getChildren(){return this.children}getNestCurt(){return this.nestCurt}getIsRoot(){return 0===this.data.rid}getID(){return this.data.id}putChild(e,t="append"){e.parent=this,e.nestCurt=this.nestCurt+1,this.children.push(e);const n=this.getChildrenEl();"append"===t?n.append(e.getEl()):"prepend"===t&&n.prepend(e.getEl()),e.getRender().playFadeAnim(),e.getRender().checkHeightLimit()}getChildrenEl(){let e=this.getRender().getChildrenWrap();return e||(e=this.nestCurt{n.parent&&(e.push(n.parent),t(n.parent))};return t(this),e}getEl(){return this.$el}getGravatarURL(){return function(e,t){const{mirror:n,params:i}=e.conf.gravatar;return`${n.replace(/\/$/,"")}/${t}?${i.replace(/^\?/,"")}`}(this.ctx,this.data.email_encrypted)}getContentMarked(){return Xe(this.ctx,this.data.content)}getDateFormatted(){return c(new Date(this.data.date),this.ctx)}getUserUA(){const e=function(e){const t=String(e||dt.userAgent),n={os:"",osVersion:"",engine:"",browser:"",device:"",language:"",version:""},i={Trident:t.includes("Trident")||t.includes("NET CLR"),Presto:t.includes("Presto"),WebKit:t.includes("AppleWebKit"),Gecko:t.includes("Gecko/")},s={Safari:t.includes("Safari"),Chrome:t.includes("Chrome")||t.includes("CriOS"),IE:t.includes("MSIE")||t.includes("Trident"),Edge:t.includes("Edge")||t.includes("Edg"),Firefox:t.includes("Firefox")||t.includes("FxiOS"),"Firefox Focus":t.includes("Focus"),Chromium:t.includes("Chromium"),Opera:t.includes("Opera")||t.includes("OPR"),Vivaldi:t.includes("Vivaldi"),Yandex:t.includes("YaBrowser"),Kindle:t.includes("Kindle")||t.includes("Silk/"),360:t.includes("360EE")||t.includes("360SE"),UC:t.includes("UC")||t.includes(" UBrowser"),QQBrowser:t.includes("QQBrowser"),QQ:t.includes("QQ/"),Baidu:t.includes("Baidu")||t.includes("BIDUBrowser"),Maxthon:t.includes("Maxthon"),Sogou:t.includes("MetaSr")||t.includes("Sogou"),LBBROWSER:t.includes("LBBROWSER"),"2345Explorer":t.includes("2345Explorer"),TheWorld:t.includes("TheWorld"),MIUI:t.includes("MiuiBrowser"),Quark:t.includes("Quark"),Qiyu:t.includes("Qiyu"),Wechat:t.includes("MicroMessenger"),Taobao:t.includes("AliApp(TB"),Alipay:t.includes("AliApp(AP"),Weibo:t.includes("Weibo"),Douban:t.includes("com.douban.frodo"),Suning:t.includes("SNEBUY-APP"),iQiYi:t.includes("IqiyiApp")},r={Windows:t.includes("Windows"),Linux:t.includes("Linux")||t.includes("X11"),macOS:t.includes("Macintosh"),Android:t.includes("Android")||t.includes("Adr"),Ubuntu:t.includes("Ubuntu"),FreeBSD:t.includes("FreeBSD"),Debian:t.includes("Debian"),"Windows Phone":t.includes("IEMobile")||t.includes("Windows Phone"),BlackBerry:t.includes("BlackBerry")||t.includes("RIM"),MeeGo:t.includes("MeeGo"),Symbian:t.includes("Symbian"),iOS:t.includes("like Mac OS X"),"Chrome OS":t.includes("CrOS"),WebOS:t.includes("hpwOS")},a={Mobile:t.includes("Mobi")||t.includes("iPh")||t.includes("480"),Tablet:t.includes("Tablet")||t.includes("Pad")||t.includes("Nexus 7")};a.Mobile?a.Mobile=!t.includes("iPad"):s.Chrome&&t.includes("Edg")?(s.Chrome=!1,s.Edge=!0):ct.showModalDialog&&ct.chrome&&(s.Chrome=!1,s[360]=!0),n.device="PC",n.language=(()=>{const e=(dt.browserLanguage||dt.language).split("-");return e[1]&&(e[1]=e[1].toUpperCase()),e.join("_")})();const o={engine:i,browser:s,os:r,device:a};Object.entries(o).forEach((([e,t])=>{Object.entries(t).forEach((([t,i])=>{!0===i&&(n[e]=t)}))}));const l={Windows:()=>{const e=t.replace(/^.*Windows NT ([\d.]+);.*$/,"$1");return{6.4:"10",6.3:"8.1",6.2:"8",6.1:"7","6.0":"Vista",5.2:"XP",5.1:"XP","5.0":"2000","10.0":"10","11.0":"11"}[e]||e},Android:()=>t.replace(/^.*Android ([\d.]+);.*$/,"$1"),iOS:()=>t.replace(/^.*OS ([\d_]+) like.*$/,"$1").replace(/_/g,"."),Debian:()=>t.replace(/^.*Debian\/([\d.]+).*$/,"$1"),"Windows Phone":()=>t.replace(/^.*Windows Phone( OS)? ([\d.]+);.*$/,"$2"),macOS:()=>t.replace(/^.*Mac OS X ([\d_]+).*$/,"$1").replace(/_/g,"."),WebOS:()=>t.replace(/^.*hpwOS\/([\d.]+);.*$/,"$1")};n.osVersion="",l[n.os]&&(n.osVersion=l[n.os](),n.osVersion===t&&(n.osVersion=""));const c={Safari:()=>t.replace(/^.*Version\/([\d.]+).*$/,"$1"),Chrome:()=>t.replace(/^.*Chrome\/([\d.]+).*$/,"$1").replace(/^.*CriOS\/([\d.]+).*$/,"$1"),IE:()=>t.replace(/^.*MSIE ([\d.]+).*$/,"$1").replace(/^.*rv:([\d.]+).*$/,"$1"),Edge:()=>t.replace(/^.*(Edge|Edg|Edg[A-Z]{1})\/([\d.]+).*$/,"$2"),Firefox:()=>t.replace(/^.*Firefox\/([\d.]+).*$/,"$1").replace(/^.*FxiOS\/([\d.]+).*$/,"$1"),"Firefox Focus":()=>t.replace(/^.*Focus\/([\d.]+).*$/,"$1"),Chromium:()=>t.replace(/^.*Chromium\/([\d.]+).*$/,"$1"),Opera:()=>t.replace(/^.*Opera\/([\d.]+).*$/,"$1").replace(/^.*OPR\/([\d.]+).*$/,"$1"),Vivaldi:()=>t.replace(/^.*Vivaldi\/([\d.]+).*$/,"$1"),Yandex:()=>t.replace(/^.*YaBrowser\/([\d.]+).*$/,"$1"),Kindle:()=>t.replace(/^.*Version\/([\d.]+).*$/,"$1"),Maxthon:()=>t.replace(/^.*Maxthon\/([\d.]+).*$/,"$1"),QQBrowser:()=>t.replace(/^.*QQBrowser\/([\d.]+).*$/,"$1"),QQ:()=>t.replace(/^.*QQ\/([\d.]+).*$/,"$1"),Baidu:()=>t.replace(/^.*BIDUBrowser[\s/]([\d.]+).*$/,"$1"),UC:()=>t.replace(/^.*UC?Browser\/([\d.]+).*$/,"$1"),Sogou:()=>t.replace(/^.*SE ([\d.X]+).*$/,"$1").replace(/^.*SogouMobileBrowser\/([\d.]+).*$/,"$1"),"2345Explorer":()=>t.replace(/^.*2345Explorer\/([\d.]+).*$/,"$1"),TheWorld:()=>t.replace(/^.*TheWorld ([\d.]+).*$/,"$1"),MIUI:()=>t.replace(/^.*MiuiBrowser\/([\d.]+).*$/,"$1"),Quark:()=>t.replace(/^.*Quark\/([\d.]+).*$/,"$1"),Qiyu:()=>t.replace(/^.*Qiyu\/([\d.]+).*$/,"$1"),Wechat:()=>t.replace(/^.*MicroMessenger\/([\d.]+).*$/,"$1"),Taobao:()=>t.replace(/^.*AliApp\(TB\/([\d.]+).*$/,"$1"),Alipay:()=>t.replace(/^.*AliApp\(AP\/([\d.]+).*$/,"$1"),Weibo:()=>t.replace(/^.*weibo__([\d.]+).*$/,"$1"),Douban:()=>t.replace(/^.*com.douban.frodo\/([\d.]+).*$/,"$1"),Suning:()=>t.replace(/^.*SNEBUY-APP([\d.]+).*$/,"$1"),iQiYi:()=>t.replace(/^.*IqiyiVersion\/([\d.]+).*$/,"$1")};return n.version="",c[n.browser]&&(n.version=c[n.browser](),n.version===t&&(n.version="")),n.version.indexOf(".")&&(n.version=n.version.substring(0,n.version.indexOf("."))),"iOS"===n.os&&t.includes("iPad")?n.os="iPadOS":"Edge"!==n.browser||t.includes("Edg")?"MIUI"===n.browser?n.os="Android":"Chrome"===n.browser&&Number(n.version)>27||"Opera"===n.browser&&Number(n.version)>12||"Yandex"===n.browser?n.engine="Blink":void 0===n.browser&&(n.browser="Unknow App"):n.engine="EdgeHTML",n}(this.data.ua);return{browser:`${e.browser} ${e.version}`,os:`${e.os} ${e.osVersion}`}}getConf(){return this.cConf}}class Ot{constructor(e,t){__publicField(this,"conf"),__publicField(this,"total"),__publicField(this,"$el"),__publicField(this,"$input"),__publicField(this,"inputTimer"),__publicField(this,"$prevBtn"),__publicField(this,"$nextBtn"),__publicField(this,"page",1),this.total=e,this.conf=t,this.$el=s('
    \n
    \n
    Prev
    \n \n
    Next
    \n
    \n
    '),this.$input=this.$el.querySelector(".atk-input"),this.$input.value=`${this.page}`,this.$input.oninput=()=>this.input(),this.$input.onkeydown=e=>this.keydown(e),this.$prevBtn=this.$el.querySelector(".atk-btn-prev"),this.$nextBtn=this.$el.querySelector(".atk-btn-next"),this.$prevBtn.onclick=()=>this.prev(),this.$nextBtn.onclick=()=>this.next(),this.checkDisabled()}get pageSize(){return this.conf.pageSize}get offset(){return this.pageSize*(this.page-1)}get maxPage(){return Math.ceil(this.total/this.pageSize)}update(e,t){this.page=Math.ceil(e/this.pageSize)+1,this.total=t,this.setInput(this.page),this.checkDisabled()}setInput(e){this.$input.value=`${e}`}input(e=!1){window.clearTimeout(this.inputTimer);const t=this.$input.value.trim(),n=()=>{if(""===t)return void this.setInput(this.page);let e=Number(t);Number.isNaN(e)||e<1?this.setInput(this.page):(e>this.maxPage&&(this.setInput(this.maxPage),e=this.maxPage),this.change(e))};e?n():this.inputTimer=window.setTimeout((()=>n()),800)}prev(){const e=this.page-1;e<1||this.change(e)}next(){const e=this.page+1;e>this.maxPage||this.change(e)}change(e){this.page=e,this.conf.onChange(this.offset),this.setInput(e),this.checkDisabled()}checkDisabled(){this.page+1>this.maxPage?this.$nextBtn.classList.add("atk-disabled"):this.$nextBtn.classList.remove("atk-disabled"),this.page-1<1?this.$prevBtn.classList.add("atk-disabled"):this.$prevBtn.classList.remove("atk-disabled")}keydown(e){const t=e.keyCode||e.which;if(38===t){const e=Number(this.$input.value)+1;if(e>this.maxPage)return;this.setInput(e),this.input()}else if(40===t){const e=Number(this.$input.value)-1;if(e<1)return;this.setInput(e),this.input()}else 13===t&&this.input(!0)}setLoading(e){e?g(this.$el):f(this.$el)}}const Mt={createInstance(e){const t=new Ot(e.total,{pageSize:e.pageSize,onChange:t=>__async(this,null,(function*(){!0===e.list.conf.editorTravel&&e.list.ctx.editorTravelBack(),yield e.list.fetchComments(t),e.list.repositionAt&&(e.list.scrollListenerAt||window).scroll({top:e.list.repositionAt?o(e.list.repositionAt).top:0,left:0})}))});return[t,t.$el]},setLoading(e){this.instance.setLoading(e)},update(e,t){this.instance.update(e,t)},next(){this.instance.next()}};class Rt{constructor(e){__publicField(this,"conf"),__publicField(this,"$el"),__publicField(this,"$loading"),__publicField(this,"$text"),__publicField(this,"offset",0),__publicField(this,"total",0),__publicField(this,"origText","Load More"),this.conf=e,this.origText=this.conf.text||this.origText,this.$el=s(``),this.$loading=this.$el.querySelector(".atk-loading-icon"),this.$text=this.$el.querySelector(".atk-text"),this.$el.onclick=()=>{this.click()}}get hasMore(){return this.total>this.offset+this.conf.pageSize}click(){this.hasMore&&this.conf.onClick(this.offset+this.conf.pageSize),this.checkDisabled()}show(){this.$el.style.display=""}hide(){this.$el.style.display="none"}setLoading(e){this.$loading.style.display=e?"":"none",this.$text.style.display=e?"none":""}showErr(e){this.setLoading(!1),this.$text.innerText=e,this.$el.classList.add("atk-err"),window.setTimeout((()=>{this.$text.innerText=this.origText,this.$el.classList.remove("atk-err")}),2e3)}update(e,t){this.offset=e,this.total=t,this.checkDisabled()}checkDisabled(){this.hasMore?this.show():this.hide()}}const Pt={pagination:Mt,"read-more":{createInstance(e){const t=new Rt({pageSize:e.pageSize,onClick:t=>__async(this,null,(function*(){yield e.list.fetchComments(t)})),text:at("loadMore")});if(e.list.conf.pagination.autoLoad){const n=e.list.scrollListenerAt||document;this.autoLoadScrollEvent&&n.removeEventListener("scroll",this.autoLoadScrollEvent),this.autoLoadScrollEvent=()=>{if("read-more"!==e.mode||!(null==t?void 0:t.hasMore)||e.list.getLoading())return;const n=e.list.$el.querySelector(".atk-list-comments-wrap > .atk-comment-wrap:nth-last-child(3)");n&&function(e,t=document.documentElement){const n=t.clientHeight,i=t.scrollTop,s=i+n,r=e.getBoundingClientRect();return r.top+i+r.height<=s}(n,e.list.scrollListenerAt)&&t.click()},n.addEventListener("scroll",this.autoLoadScrollEvent)}return[t,t.$el]},setLoading(e){this.instance.setLoading(e)},update(e,t){this.instance.update(e,t)},showErr(e){this.instance.showErr(e)},next(){this.instance.click()}}};class Bt{constructor(e){__publicField(this,"conf"),this.conf=e,this.init()}getAdaptor(){return Pt[this.conf.mode]}init(){const e=this.getAdaptor(),[t,n]=e.createInstance(this.conf);e.instance=t,e.el=n,this.conf.list.$el.append(e.el)}setLoading(e){this.getAdaptor().setLoading(e)}update(e,t){this.getAdaptor().update(e,t)}getEl(){return this.getAdaptor().el}showErr(e){const t=this.getAdaptor(),n=t.showErr;n&&n.bind(t)(e)}setMode(e){e!==this.conf.mode&&(this.getEl().remove(),this.conf.mode=e,this.init())}next(){this.getAdaptor().next()}}const Dt={el:"",pageKey:"",pageTitle:"",server:"",site:"",placeholder:"",noComment:"",sendBtn:"",darkMode:!1,editorTravel:!0,flatMode:"auto",nestMax:2,nestSort:"DATE_ASC",emoticons:"https://cdn.jsdelivr.net/gh/ArtalkJS/Emoticons/grps/default.json",vote:!0,voteDown:!1,uaBadge:!0,listSort:!0,preview:!0,countEl:"#ArtalkCount",pvEl:"#ArtalkPV",gravatar:{mirror:"https://cravatar.cn/avatar/",params:"d=mp&s=240"},pagination:{pageSize:20,readMore:!0,autoLoad:!0},heightLimit:{content:300,children:400,scrollable:!1},imgUpload:!0,reqTimeout:15e3,versionCheck:!0,useBackendConf:!0,locale:"zh-CN"};function qt(e){const t=p(Dt,e);if("string"==typeof t.el&&t.el)try{const e=document.querySelector(t.el);if(!e)throw Error(`Target element "${t.el}" was not found.`);t.el=e}catch(n){throw console.error(n),new Error("Please check your Artalk `el` config.")}return t.server=t.server.replace(/\/$/,"").replace(/\/api\/?$/,""),t.pageKey||(t.pageKey=`${window.location.pathname}`),t.pageTitle||(t.pageTitle=`${document.title}`),"auto"===t.locale&&(t.locale=navigator.language),t}function zt(e){const t=["el","pageKey","pageTitle","server","site","darkMode"];return Object.keys(e).forEach((n=>{t.includes(n)&&delete e[n]})),e.emoticons&&"string"==typeof e.emoticons&&(e.emoticons=e.emoticons.trim(),e.emoticons.startsWith("[")||e.emoticons.startsWith("{")?e.emoticons=JSON.parse(e.emoticons):"false"===e.emoticons&&(e.emoticons=!1)),e}class jt extends m{constructor(e){super(e),__publicField(this,"$commentsWrap"),__publicField(this,"data"),__publicField(this,"isLoading",!1),__publicField(this,"confLoaded",!1),__publicField(this,"noCommentText"),__publicField(this,"_nestSortBy"),__publicField(this,"_flatMode"),__publicField(this,"_pageMode"),__publicField(this,"pgHolder"),__publicField(this,"_pageSize"),__publicField(this,"scrollListenerAt"),__publicField(this,"repositionAt"),__publicField(this,"renderComment"),__publicField(this,"paramsEditor"),__publicField(this,"onAfterLoad"),__publicField(this,"unread",[]),__publicField(this,"unreadHighlight"),this.$el=s('
    \n
    \n
    '),this.$commentsWrap=this.$el.querySelector(".atk-list-comments-wrap"),window.setInterval((()=>{this.$el.querySelectorAll("[data-atk-comment-date]").forEach((e=>{const t=e.getAttribute("data-atk-comment-date");e.innerText=c(new Date(Number(t)),this.ctx)}))}),3e4),this.ctx.on("conf-loaded",(()=>{}))}get nestSortBy(){return this._nestSortBy||this.ctx.conf.nestSort||"DATE_ASC"}set nestSortBy(e){this._nestSortBy=e}get flatMode(){return void 0!==this._flatMode?this._flatMode:!0===this.ctx.conf.flatMode||Number(this.ctx.conf.nestMax)<=1||!("auto"!==this.ctx.conf.flatMode||!window.matchMedia("(max-width: 768px)").matches)}set flatMode(e){this._flatMode=e}get pageMode(){return this._pageMode||(this.conf.pagination.readMore?"read-more":"pagination")}set pageMode(e){var t;this._pageMode=e,null==(t=this.pgHolder)||t.setMode(this._pageMode)}get pageSize(){return this._pageSize||this.conf.pagination.pageSize}set pageSize(e){this._pageSize=e}getData(){return this.data}clearData(){this.data=void 0}getLoading(){return this.isLoading}getCommentsWrapEl(){return this.$commentsWrap}setLoading(e,t=!1){var n;this.isLoading=e,t?function(e,t){e?g(t):f(t)}(e,this.$el):null==(n=this.pgHolder)||n.setLoading(e)}fetchComments(e){return __async(this,null,(function*(){if(this.isLoading)return;const t=0===e,n=e=>this.setLoading(e,t);let i;n(!0),this.ctx.trigger("list-load"),("read-more"===this.pageMode&&t||"pagination"===this.pageMode)&&this.ctx.clearAllComments();try{i=yield this.ctx.getApi().comment.get(e,this.pageSize,this.flatMode,this.paramsEditor)}catch(s){throw this.onError(s.msg||String(s),e,s.data),s}finally{n(!1)}_(this.$el,null);try{this.onLoad(i,e)}catch(s){throw this.onError(String(s),e),s}finally{n(!1)}}))}onLoad(e,t){if(this.data=e,!this.confLoaded){const t=zt(e.conf.frontend_conf);this.conf.useBackendConf?this.ctx.updateConf(t):this.ctx.updateConf({}),this.confLoaded=!0}this.ctx.conf.versionCheck&&function(e,t,n){const i=function(e,t){const n=e.split("."),i=t.split(".");for(let s=0;s<3;s++){const e=Number(n[s]),t=Number(i[s]);if(e>t)return 1;if(t>e)return-1;if(!Number.isNaN(e)&&Number.isNaN(t))return 1;if(Number.isNaN(e)&&!Number.isNaN(t))return-1}return 0}(t,n);if(0!==i){const r=s(`
    请更新 Artalk ${at(i<0?"frontend":"backend")}以获得完整体验 (帮助文档)

    当前版本:${at("frontend")} ${t} / ${at("backend")} ${n}

    `),a=s('忽略');return a.onclick=()=>{_(e.$el.parentElement,null),e.ctx.conf.versionCheck=!1,e.fetchComments(0)},r.append(a),_(e.$el.parentElement,r,'Artalk Warn'),!0}return!1}(this,"2.6.2",e.api_version.version)||(this.importComments(e.comments),this.refreshPagination(t,this.flatMode?e.total:e.total_roots),this.refreshUI(),this.ctx.updateNotifies(e.unread||[]),this.ctx.trigger("list-loaded"),this.onAfterLoad&&this.onAfterLoad(e))}refreshPagination(e,t){var n;this.pgHolder||(this.pgHolder=new Bt({list:this,mode:this.pageMode,pageSize:this.pageSize,total:t})),null==(n=this.pgHolder)||n.update(e,t)}onError(e,t,n){var i;this.confLoaded||this.ctx.updateConf({}),e=String(e),console.error(e),0===t||"read-more"!==this.pageMode?_(this.$el,function(e,t,n){const i=s(`${t},${at("listLoadFailMsg")}
    `),r=s(`${at("listRetry")}`);r.onclick=()=>e.fetchComments(0),i.appendChild(r);const a=s(' | 打开控制台');i.appendChild(a),lt.data.isAdmin||a.classList.add("atk-hide");let o="";if(null==n?void 0:n.err_no_site){const t={create_name:e.ctx.conf.site,create_urls:`${window.location.protocol}//${window.location.host}`};o=`sites|${JSON.stringify(t)}`}return a.onclick=()=>e.ctx.showSidebar({view:o}),i}(this,e,n)):null==(i=this.pgHolder)||i.showErr(this.$t("loadFail"))}refreshUI(){!function(e){const t=e.ctx.getCommentList().length<=0;let n=e.getCommentsWrapEl().querySelector(".atk-list-no-comment");t?n||(n=s('
    '),n.innerHTML=e.noCommentText||e.ctx.conf.noComment||e.ctx.$t("noComment"),e.getCommentsWrapEl().appendChild(n)):null==n||n.remove(),e.ctx.checkAdminShowEl()}(this)}reload(){this.fetchComments(0)}createComment(e,t){t||(t=this.ctx.getCommentDataList());const n=new Ft(this.ctx,e,{isFlatMode:this.flatMode,afterRender:()=>{this.renderComment&&this.renderComment(n)},onDelete:e=>{this.ctx.deleteComment(e),this.refreshUI()},replyTo:e.rid?t.find((t=>t.id===e.rid)):void 0});return n.render(),this.ctx.getCommentList().push(n),n}importComments(e){this.flatMode?e.forEach((t=>{this.putCommentFlatMode(t,e,"append")})):this.importCommentsNest(e)}importCommentsNest(e){const t=function(e,t="DATE_DESC",n=2){const i=[];e.filter((e=>0===e.rid)).forEach((t=>{const s={id:t.id,comment:t,children:[],level:1};s.parent=s,i.push(s),function t(i){const s=e.filter((e=>e.rid===i.id));0!==s.length&&(i.level>=n&&(i=i.parent),s.forEach((e=>{const n={id:e.id,comment:e,children:[],parent:i,level:i.level+1};i.children.push(n),t(n)})))}(s)}));const s=(n,i)=>{let s=n.id-i.id;return"DATE_ASC"===t?s=+new Date(n.comment.date)-+new Date(i.comment.date):"DATE_DESC"===t?s=+new Date(i.comment.date)-+new Date(n.comment.date):"SRC_INDEX"===t?s=e.indexOf(n.comment)-e.indexOf(i.comment):"VOTE_UP_DESC"===t&&(s=i.comment.vote_up-n.comment.vote_up),s};return function e(t){t.forEach((t=>{t.children=t.children.sort(s),e(t.children)}))}(i),i}(e,this.nestSortBy,this.conf.nestMax);t.forEach((t=>{const n=this.createComment(t.comment,e);this.$commentsWrap.appendChild(n.getEl()),n.getRender().playFadeAnim();const i=this;!function t(n,s){s.children.forEach((s=>{const r=s.comment,a=i.createComment(r,e);n.putChild(a),t(a,s)}))}(n,t),n.getRender().checkHeightLimit()}))}putCommentFlatMode(e,t,n){e.is_collapsed&&(e.is_allow_reply=!1);const i=this.createComment(e,t);return e.visible&&("append"===n&&this.$commentsWrap.append(i.getEl()),"prepend"===n&&this.$commentsWrap.prepend(i.getEl()),i.getRender().playFadeAnim()),i.getRender().checkHeightLimit(),i}insertComment(e){if(this.flatMode)k(this.putCommentFlatMode(e,this.ctx.getCommentDataList(),"prepend").getEl());else{const t=this.createComment(e);if(0===e.rid)this.$commentsWrap.prepend(t.getEl());else{const n=this.ctx.findComment(e.rid);n&&(n.putChild(t,"DATE_ASC"===this.nestSortBy?"append":"prepend"),t.getParents().forEach((e=>{e.getRender().heightLimitRemoveForChildren()})))}t.getRender().checkHeightLimit(),k(t.getEl()),t.getRender().playFadeAnim()}this.data&&(this.data.total+=1),this.refreshUI(),this.ctx.trigger("list-loaded"),this.ctx.trigger("list-inserted",e)}updateComment(e){const t=this.ctx.findComment(e.id);t&&t.setData(e)}updateUnread(e){this.unread=e,!0===this.unreadHighlight&&this.ctx.getCommentList().forEach((e=>{const t=this.unread.find((t=>t.comment_id===e.getID()));t?(e.getRender().setUnread(!0),e.getRender().setOpenAction((()=>{window.open(t.read_link),this.unread=this.unread.filter((t=>t.comment_id!==e.getID())),this.ctx.updateNotifies(this.unread)}))):e.getRender().setUnread(!1)}))}}class Wt extends jt{constructor(e){const t=s('
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n');super(e),__publicField(this,"$closeCommentBtn"),__publicField(this,"$openSidebarBtn"),__publicField(this,"$unreadBadge"),__publicField(this,"$commentCount"),__publicField(this,"$commentCountNum"),__publicField(this,"$dropdownWrap"),__publicField(this,"goToCommentFounded",!1),__publicField(this,"goToCommentDelay",!0),t.querySelector(".atk-list-body").append(this.$el),this.$el=t,this.repositionAt=this.$el,this.initListActionBtn(),this.$commentCount=this.$el.querySelector(".atk-comment-count");const n=()=>{this.$commentCount.innerHTML=this.$t("counter",{count:'0'}),this.$commentCountNum=this.$commentCount.querySelector(".atk-comment-count-num")};n(),this.$el.querySelector(".atk-copyright").innerHTML='Powered By Artalk',this.ctx.on("conf-loaded",(()=>{n(),this.refreshUI()}))}initListActionBtn(){this.$openSidebarBtn=this.$el.querySelector('[data-action="open-sidebar"]'),this.$closeCommentBtn=this.$el.querySelector('[data-action="admin-close-comment"]'),this.$unreadBadge=this.$el.querySelector(".atk-unread-badge"),this.$openSidebarBtn.addEventListener("click",(()=>{this.ctx.showSidebar()})),this.$closeCommentBtn.addEventListener("click",(()=>{this.data&&(this.data.page.admin_only=!this.data.page.admin_only,this.adminPageEditSave())}))}refreshUI(){var e;super.refreshUI(),this.$commentCountNum.innerText=String(Number(null==(e=this.data)?void 0:e.total)||0),lt.data.nick&<.data.email?this.$openSidebarBtn.classList.remove("atk-hide"):this.$openSidebarBtn.classList.add("atk-hide"),this.$openSidebarBtn.querySelector(".atk-text").innerText=lt.data.isAdmin?this.$t("ctrlCenter"):this.$t("msgCenter"),this.data&&this.data.page&&!0===this.data.page.admin_only?(this.ctx.editorClose(),this.$closeCommentBtn.innerHTML=this.$t("openComment")):(this.ctx.editorOpen(),this.$closeCommentBtn.innerHTML=this.$t("closeComment")),this.ctx.conf.listSort?this.initDropdown():function(e){var t,n;const{$dropdownWrap:i}=e;i.classList.remove("atk-dropdown-wrap"),null==(t=i.querySelector(".atk-arrow-down-icon"))||t.remove(),null==(n=i.querySelector(".atk-dropdown"))||n.remove()}({$dropdownWrap:this.$commentCount})}onLoad(e,t){super.onLoad(e,t),this.goToCommentFounded||this.checkGoToCommentByUrlHash(),!0===this.ctx.conf.editorTravel&&this.ctx.editorTravelBack()}checkGoToCommentByUrlHash(){var e;let t=Number(a("atk_comment"));if(!t){const e=window.location.hash.match(/#atk-comment-([0-9]+)/);if(!e||!e[1]||Number.isNaN(Number(e[1])))return;t=Number(e[1])}if(!t)return;const n=this.ctx.findComment(t);if(!n)return void(null==(e=this.pgHolder)||e.next());const i=a("atk_notify_key");i&&this.ctx.getApi().user.markRead(t,i).then((()=>{this.unread=this.unread.filter((e=>e.comment_id!==t)),this.updateUnread(this.unread)})),n.getParents().forEach((e=>{e.getRender().heightLimitRemoveForChildren()}));const s=()=>{k(n.getEl(),!1),n.getEl().classList.remove("atk-flash-once"),window.setTimeout((()=>{n.getEl().classList.add("atk-flash-once")}),150)};this.goToCommentDelay?window.setTimeout((()=>s()),350):s(),this.goToCommentFounded=!0,this.goToCommentDelay=!0}adminPageEditSave(){this.data&&this.data.page&&(this.ctx.editorShowLoading(),this.ctx.getApi().page.pageEdit(this.data.page).then((e=>{this.data&&(this.data.page=__spreadValues({},e)),this.refreshUI()})).catch((e=>{this.ctx.editorShowNotify(`${this.$t("editFail")}: ${e.msg||String(e)}`,"e")})).finally((()=>{this.ctx.editorHideLoading()})))}showUnreadBadge(e){e>0?(this.$unreadBadge.innerText=`${Number(e||0)}`,this.$unreadBadge.style.display="block"):this.$unreadBadge.style.display="none"}initDropdown(){const e=e=>{this.paramsEditor=e,this.fetchComments(0)};!function(e){const{$dropdownWrap:t,dropdownList:n}=e;if(t.querySelector(".atk-dropdown"))return;t.classList.add("atk-dropdown-wrap"),t.append(s(''));let i=0;const r=s('
      ');n.forEach(((e,t)=>{const n=e[0],a=e[1],o=s('
    • '),l=o.querySelector("span");l.innerText=n,l.onclick=()=>{((e,t,n,s)=>{s(),i=e,r.querySelectorAll(".active").forEach((e=>{e.classList.remove("active")})),t.classList.add("active"),r.style.display="none",setTimeout((()=>{r.style.display=""}),80)})(t,o,0,a)},r.append(o),t===i&&o.classList.add("active")})),t.append(r)}({$dropdownWrap:this.$commentCount,dropdownList:[[this.$t("sortLatest"),()=>{e((e=>{e.sort_by="date_desc"}))}],[this.$t("sortBest"),()=>{e((e=>{e.sort_by="vote"}))}],[this.$t("sortOldest"),()=>{e((e=>{e.sort_by="date_asc"}))}],[this.$t("sortAuthor"),()=>{e((e=>{e.view_only_admin=!0}))}]]})}updateUnread(e){super.updateUnread(e),this.showUnreadBadge((null==e?void 0:e.length)||0)}}class Nt{constructor(e,t){__publicField(this,"conf"),__publicField(this,"$root"),__publicField(this,"markedReplacers",[]),__publicField(this,"commentList",[]),__publicField(this,"eventList",[]),this.conf=e,this.$root=t||document.createElement("div"),this.$root.classList.add("artalk"),this.$root.innerHTML=""}inject(e,t){this[e]=t}get(e){return this[e]}getApi(){return this.api}getCommentList(){return this.commentList}getCommentDataList(){return this.commentList.map((e=>e.getData()))}findComment(e){return this.commentList.find((t=>t.getData().id===e))}deleteComment(e){let t;if("number"==typeof e){const n=this.findComment(e);if(!n)throw Error(`Comment ${e} cannot be found`);t=n}else t=e;if(t.getEl().remove(),this.commentList.splice(this.commentList.indexOf(t),1),this.list){const e=this.list.getData();e&&(e.total-=1),this.list.refreshUI()}}clearAllComments(){this.list&&(this.list.getCommentsWrapEl().innerHTML="",this.list.clearData()),this.commentList=[]}insertComment(e){var t;null==(t=this.list)||t.insertComment(e)}updateComment(e){var t;null==(t=this.list)||t.updateComment(e)}replyComment(e,t,n){this.editor.setReply(e,t,n)}cancelReplyComment(){this.editor.cancelReply()}editComment(e,t){this.editor.setEditComment(e,t)}cancelEditComment(){this.editor.cancelEditComment()}updateNotifies(e){var t;null==(t=this.list)||t.updateUnread(e)}listReload(){var e;null==(e=this.list)||e.reload()}reload(){this.listReload()}listRefreshUI(){var e;null==(e=this.list)||e.refreshUI()}listHashGotoCheck(){if(!(this.list&&this.list instanceof Wt))return;const e=this.list;e.goToCommentDelay=!1,e.checkGoToCommentByUrlHash()}editorOpen(){this.editor.open()}editorClose(){this.editor.close()}editorShowLoading(){this.editor.showLoading()}editorHideLoading(){this.editor.hideLoading()}editorShowNotify(e,t){this.editor.showNotify(e,t)}editorTravel(e){this.editor.travel(e)}editorTravelBack(){this.editor.travelBack()}showSidebar(e){this.sidebarLayer.show(e)}hideSidebar(){this.sidebarLayer.hide()}checkAdmin(e){this.checkerLauncher.checkAdmin(e)}checkCaptcha(e){this.checkerLauncher.checkCaptcha(e)}checkAdminShowEl(){const e=[];this.$root.querySelectorAll("[atk-only-admin-show]").forEach((t=>e.push(t)));const{$wrap:t}=v();t&&t.querySelectorAll("[atk-only-admin-show]").forEach((t=>e.push(t)));const n=document.querySelector(".atk-sidebar");n&&n.querySelectorAll("[atk-only-admin-show]").forEach((t=>e.push(t))),e.forEach((e=>{this.user.data.isAdmin?e.classList.remove("atk-hide"):e.classList.add("atk-hide")}))}on(e,t,n="internal"){this.eventList.push({name:e,handler:t,scope:n})}off(e,t,n="internal"){this.eventList=this.eventList.filter((i=>t?!(i.name===e&&i.handler===t&&i.scope===n):!(i.name===e&&i.scope===n)))}trigger(e,t,n){this.eventList.filter((t=>t.name===e&&(!n||t.scope===n))).map((e=>e.handler)).forEach((e=>e(t)))}$t(e,t={}){return at(e,t)}setDarkMode(e){T(this,e)}updateConf(e){this.conf=p(this.conf,e),this.trigger("conf-loaded")}getMarkedInstance(){return Ye()}}class Ht{constructor(e,t){return __publicField(this,"ctx"),__publicField(this,"$el"),__publicField(this,"$content"),__publicField(this,"$actions"),this.ctx=e,this.$el=s('
      \n
      \n
      \n
      \n
      \n
      '),this.$actions=this.$el.querySelector(".atk-layer-dialog-actions"),this.$content=this.$el.querySelector(".atk-layer-dialog-content"),this.$content.appendChild(t),this}setYes(e){const t=s(``);return t.onclick=this.onBtnClick(e),this.$actions.appendChild(t),this}setNo(e){const t=s(``);return t.onclick=this.onBtnClick(e),this.$actions.appendChild(t),this}onBtnClick(e){return t=>{const n=e(t.currentTarget,this);void 0!==n&&!0!==n||this.$el.remove()}}}const Qt={request:(e,t)=>e.getApi().captcha.captchaCheck(t),body:e=>e.get("iframe")?function(e){const t=s('
      '),n=s('');n.style.display="none",g(t,{transparentBg:!0}),n.src=`${e.getCtx().conf.server}/api/captcha/get?t=${+new Date}`,n.onload=()=>{n.style.display="",f(t)},t.append(n);const i=s('
      ');t.append(i),e.hideInteractInput();let r=!1;return function t(){return __async(this,null,(function*(){if(yield new Promise((e=>{window.setTimeout((()=>{e(null)}),1e3)})),r)return;let i=!1;try{i=(yield e.getCtx().getApi().captcha.captchaStatus()).is_pass}catch(s){i=!1}i?e.triggerSuccess():t()}))}(),i.onclick=()=>{r=!0,e.cancel()},t}(e):function(e){const t=s(`${e.getCtx().$t("captchaCheck")}`);return t.querySelector(".atk-captcha-img").onclick=()=>{const n=t.querySelector(".atk-captcha-img");e.getApi().captcha.captchaGet().then((e=>{n.setAttribute("src",e)})).catch((e=>{console.error("Failed to get captcha image ",e)}))},t}(e),onSuccess(e,t,n,i){e.set("val",n)},onError(e,t,n,i){i.querySelector(".atk-captcha-img").click(),i.querySelector('input[type="text"]').value=""}},Zt={inputType:"password",request(e,t){const n={name:lt.data.nick,email:lt.data.email,password:t};return(()=>__async(this,null,(function*(){return(yield e.getApi().user.login(n.name,n.email,n.password)).token})))()},body:e=>s(`${e.getCtx().$t("adminCheck")}`),onSuccess(e,t,n,i){lt.update({isAdmin:!0,token:t}),e.getCtx().trigger("user-changed",lt.data),e.getCtx().listReload()},onError(e,t,n,i){}};class Gt{constructor(e){__publicField(this,"ctx"),__publicField(this,"launched",[]),this.ctx=e}checkCaptcha(e){this.fire(Qt,e,(t=>{t.set("img_data",e.imgData),t.set("iframe",e.iframe)}))}checkAdmin(e){this.fire(Zt,e)}fire(e,t,n){if(this.launched.includes(e))return;this.launched.push(e);const i=new x(this.ctx,`checker-${(new Date).getTime()}`);i.setMaskClickHide(!1),i.show();const r={};let a=!1;const o={set:(e,t)=>{r[e]=t},get:e=>r[e],getCtx:()=>this.ctx,getApi:()=>this.ctx.getApi(),getLayer:()=>i,hideInteractInput:()=>{a=!0},triggerSuccess:()=>{this.close(e,i),e.onSuccess&&e.onSuccess(o,"","",l),t.onSuccess&&t.onSuccess("",h.$el)},cancel:()=>{this.close(e,i),t.onCancel&&t.onCancel()}};n&&n(o);const l=s();l.appendChild(e.body(o));const c=s(``);let d;l.appendChild(c),setTimeout((()=>c.focus()),80),c.onkeyup=e=>{"Enter"!==e.key&&13!==e.keyCode||(e.preventDefault(),i.getEl().querySelector('button[data-action="confirm"]').click())};const h=new Ht(this.ctx,l);h.setYes((n=>{const s=c.value.trim();d||(d=n.innerText);const r=()=>{n.innerText=d||"",n.classList.remove("error")};return n.innerText=`${this.ctx.$t("loading")}...`,e.request(o,s).then((n=>{this.close(e,i),e.onSuccess&&e.onSuccess(o,n,s,l),t.onSuccess&&t.onSuccess(s,h.$el)})).catch((t=>{var i;i=String(t.msg||String(t)),n.innerText=i,n.classList.add("error"),e.onError&&e.onError(o,t,s,l);const a=setTimeout((()=>r()),3e3);c.onfocus=()=>{r(),clearTimeout(a)}})),!1})),h.setNo((()=>(this.close(e,i),t.onCancel&&t.onCancel(),!1))),a&&(c.style.display="none",h.$el.querySelector(".atk-layer-dialog-actions").style.display="none"),i.getEl().append(h.$el),t.onMount&&t.onMount(h.$el)}close(e,t){t.disposeNow(),this.launched=this.launched.filter((t=>t!==e))}}function Kt(e,t,n,i){return __async(this,null,(function*(){var s,r;if(lt.data.token){const e=new Headers(n.headers);e.set("Authorization",`Bearer ${lt.data.token}`),n.headers=e}const a=yield function(e,t,n,i){var s;const r=new AbortController;null==(s=i.signal)||s.addEventListener("abort",(()=>r.abort()));let a=fetch(t,__spreadProps(__spreadValues({},i),{signal:r.signal}));if(n>0){const e=setTimeout((()=>r.abort()),n);a.finally((()=>{clearTimeout(e)}))}return a=a.catch((e=>{throw"AbortError"===(e||{}).name?new Error(at("reqAborted")):e})),a}(0,t,i||e.conf.reqTimeout||15e3,n),o=a.status,l=[401,400].includes(o);if(!a.ok&&!l)throw new Error(`${at("reqGot")} ${o}`);let c=yield a.json();const d=(i,s)=>{Kt(e,t,n).then((e=>{i(e)})).catch((e=>{s(e)}))};if((null==(s=c.data)?void 0:s.need_captcha)?c=yield new Promise(((t,n)=>{e.checkCaptcha({imgData:c.data.img_data,iframe:c.data.iframe,onSuccess:()=>{d(t,n)},onCancel:()=>{n(c)}})})):((null==(r=c.data)?void 0:r.need_login)||l)&&(c=yield new Promise(((t,n)=>{e.checkAdmin({onSuccess:()=>{d(t,n)},onCancel:()=>{n(c)}})}))),!c.success)throw c;return c}))}function Yt(e){const t=new FormData;return Object.keys(e).forEach((n=>t.append(n,String(e[n])))),t}!function(){function e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function t(e,t){for(var n=0;n({user:e.data.user,is_login:e.data.is_login,unread:e.data.unread||[],unread_count:e.data.unread_count||0}))),abort:()=>{n.abort()}}}loginStatus(){return __async(this,null,(function*(){return(yield this.POST("/login-status",{name:lt.data.nick,email:lt.data.email}))||{is_login:!1,is_admin:!1}}))}logout(){return __async(this,null,(function*(){return this.POST("/logout")}))}markRead(e,t,n=!1){const i={comment_id:e,notify_key:t};return n&&(delete i.comment_id,delete i.notify_key,i.read_all=!0,i.name=lt.data.nick,i.email=lt.data.email),this.POST("/mark-read",i)}userList(e,t,n){return __async(this,null,(function*(){const i={offset:e||0,limit:t||15};return n&&(i.type=n),yield this.POST("/admin/user-get",i)}))}userAdd(e,t){return __async(this,null,(function*(){const n={name:e.name||"",email:e.email||"",password:t||"",link:e.link||"",is_admin:e.is_admin||!1,site_names:e.site_names_raw||"",receive_email:e.receive_email||!0,badge_name:e.badge_name||"",badge_color:e.badge_color||""};return(yield this.POST("/admin/user-add",n)).user}))}userEdit(e,t){return __async(this,null,(function*(){const n={id:e.id,name:e.name||"",email:e.email||"",password:t||"",link:e.link||"",is_admin:e.is_admin||!1,site_names:e.site_names_raw||"",receive_email:e.receive_email||!0,badge_name:e.badge_name||"",badge_color:e.badge_color||""};return(yield this.POST("/admin/user-edit",n)).user}))}userDel(e){return this.POST("/admin/user-del",{id:String(e)})}},system:class extends Xt{conf(){return __async(this,null,(function*(){return zt((yield this.POST("/conf")).frontend_conf||{})}))}getSettings(){return __async(this,null,(function*(){return yield this.POST("/admin/setting-get")}))}saveSettings(e){return __async(this,null,(function*(){return yield this.POST("/admin/setting-save",{data:e})}))}version(){return __async(this,null,(function*(){const e=yield fetch(`${this.api.baseURL}/version`,{method:"POST"});return yield e.json()}))}},captcha:class extends Xt{captchaGet(){return __async(this,null,(function*(){return(yield this.POST("/captcha/refresh")).img_data||""}))}captchaCheck(e){return __async(this,null,(function*(){return(yield this.POST("/captcha/check",{value:e})).img_data||""}))}captchaStatus(){return __async(this,null,(function*(){return(yield this.POST("/captcha/status"))||{is_pass:!1}}))}},admin:class extends Xt{cacheFlushAll(){return this.POST("/admin/cache-flush",{flush_all:!0})}cacheWarmUp(){return this.POST("/admin/cache-warm",{})}},upload:class extends Xt{imgUpload(e){return __async(this,null,(function*(){const t=Yt({name:lt.data.nick,email:lt.data.email,page_key:this.ctx.conf.pageKey});t.set("file",e);const n={method:"POST",body:t};return(yield this.Fetch("/img-upload",n)).data||{}}))}}};class en{constructor(e){__publicField(this,"ctx"),this.ctx=e,Object.entries(Jt).forEach((([e,t])=>{this[e]=new t(this,this.ctx)}))}get baseURL(){return`${this.ctx.conf.server}/api`}}class nn{constructor(e){__publicField(this,"editor"),__publicField(this,"$panel"),__publicField(this,"$btn"),__publicField(this,"onHeaderInput"),__publicField(this,"contentTransformer"),__publicField(this,"onContentUpdated"),this.editor=e}get ctx(){return this.editor.ctx}registerPanel(e="
      "){return this.$panel=s(e),this.$panel}registerBtn(e){return this.$btn=s(`${e}`),this.$btn}registerHeaderInputEvt(e){this.onHeaderInput=e}registerContentTransformer(e){this.contentTransformer=e}registerContentUpdatedEvt(e){this.onContentUpdated=e}getPanel(){return this.$panel}getBtn(){return this.$btn}}__publicField(nn,"Name");class sn extends nn{constructor(e){super(e),__publicField(this,"emoticons",[]),__publicField(this,"loadingTask",null),__publicField(this,"$grpWrap"),__publicField(this,"$grpSwitcher"),__publicField(this,"isListLoaded",!1),__publicField(this,"isImgLoaded",!1),this.editor=e,this.registerPanel('
      '),this.registerBtn(this.ctx.$t("emoticon")),this.registerContentTransformer((e=>this.transEmoticonImageText(e))),window.setTimeout((()=>{this.loadEmoticonsData()}),1e3)}onPanelShow(){(()=>{__async(this,null,(function*(){yield this.loadEmoticonsData(),this.isImgLoaded||(this.initEmoticonsList(),this.isImgLoaded=!0),setTimeout((()=>{this.changeListHeight()}),30)}))})()}onPanelHide(){this.$panel.parentElement.style.height="",this.$btn.classList.remove("active")}loadEmoticonsData(){return __async(this,null,(function*(){this.isListLoaded||(null===this.loadingTask?(this.loadingTask=(()=>__async(this,null,(function*(){g(this.$panel),this.emoticons=yield this.handleData(this.ctx.conf.emoticons),f(this.$panel),this.loadingTask=null,this.isListLoaded=!0})))(),yield this.loadingTask):yield this.loadingTask)}))}handleData(e){return __async(this,null,(function*(){if(!Array.isArray(e)&&["object","string"].includes(typeof e)&&(e=[e]),!Array.isArray(e))return _(this.$panel,"表情包数据必须为 Array/Object/String 类型"),f(this.$panel),[];const t=t=>{"object"==typeof t&&(t.name&&e.find((e=>e.name===t.name))||e.push(t))},n=e=>__async(this,null,(function*(){yield Promise.all(e.map(((e,i)=>__async(this,null,(function*(){if("object"!=typeof e||Array.isArray(e)){if(Array.isArray(e))yield n(e);else if("string"==typeof e){const i=yield this.remoteLoad(e);Array.isArray(i)?yield n(i):"object"==typeof i&&t(i)}}else t(e)})))))}));return yield n(e),e.forEach((e=>{this.isOwOFormat(e)?this.convertOwO(e).forEach((e=>{t(e)})):Array.isArray(e)&&e.forEach((e=>{t(e)}))})),e=e.filter((e=>"object"==typeof e&&!Array.isArray(e)&&!!e&&!!e.name)),this.solveNullKey(e),this.solveSameKey(e),e}))}remoteLoad(e){return __async(this,null,(function*(){if(!e)return[];try{const t=yield fetch(e);return yield t.json()}catch(t){return f(this.$panel),_(this.$panel,`表情加载失败 ${String(t)}`),[]}}))}solveNullKey(e){e.forEach((e=>{e.items.forEach(((t,n)=>{t.key||(t.key=`${e.name} ${n+1}`)}))}))}solveSameKey(e){const t={};e.forEach((e=>{e.items.forEach((e=>{e.key&&""!==String(e.key).trim()&&(t[e.key]?t[e.key]++:t[e.key]=1,t[e.key]>1&&(e.key=`${e.key} ${t[e.key]}`))}))}))}isOwOFormat(e){try{return"object"==typeof e&&!!Object.values(e).length&&Array.isArray(Object.keys(Object.values(e)[0].container))&&Object.keys(Object.values(e)[0].container[0]).includes("icon")}catch(t){return!1}}convertOwO(e){const t=[];return Object.entries(e).forEach((([e,n])=>{const i={name:e,type:n.type,items:[]};n.container.forEach(((t,n)=>{const s=t.icon;if(/<(img|IMG)/.test(s)){const e=/src=["'](.*?)["']/.exec(s);e&&e.length>1&&(t.icon=e[1])}i.items.push({key:t.text||`${e} ${n+1}`,val:t.icon})})),t.push(i)})),t}initEmoticonsList(){this.$grpWrap=s('
      '),this.$panel.append(this.$grpWrap),this.emoticons.forEach(((e,t)=>{const n=s('');this.$grpWrap.append(n),n.setAttribute("data-index",String(t)),n.setAttribute("data-grp-name",e.name),n.setAttribute("data-type",e.type),e.items.forEach((t=>{const i=s('');if(n.append(i),"image"===e.type){const e=document.createElement("img");e.src=t.val,e.alt=t.key.replace(/\s[0-9]/i,""),e.setAttribute("atk-emoticon",t.key),t.notitle&&e.setAttribute("notitle",t.notitle),i.append(e)}else i.innerText=t.val;i.onclick=()=>{"image"===e.type?this.editor.insertContent(`:[${t.key}]`):this.editor.insertContent(t.val||"")}}))})),this.emoticons.length>1&&(this.$grpSwitcher=s('
      '),this.$panel.append(this.$grpSwitcher),this.emoticons.forEach(((e,t)=>{const n=s("");n.innerText=e.name,n.setAttribute("data-index",String(t)),n.onclick=()=>this.openGrp(t),this.$grpSwitcher.append(n)}))),this.emoticons.length>0&&this.openGrp(0)}openGrp(e){var t,n,i;Array.from(this.$grpWrap.children).forEach((t=>{const n=t;n.getAttribute("data-index")!==String(e)?n.style.display="none":n.style.display=""})),null==(t=this.$grpSwitcher)||t.querySelectorAll("span.active").forEach((e=>e.classList.remove("active"))),null==(i=null==(n=this.$grpSwitcher)?void 0:n.querySelector(`span[data-index="${e}"]`))||i.classList.add("active"),this.changeListHeight()}changeListHeight(){}transEmoticonImageText(e){return this.emoticons&&Array.isArray(this.emoticons)?(this.emoticons.forEach((t=>{"image"===t.type&&Object.entries(t.items).forEach((([t,i])=>{e="true"===i.notitle?e.split(`:[${i.key}]`).join(``):e.split(`:[${i.key}]`).join(`${i.key.replace(/\s[0-9]/i,`)}))})),e):e}}__publicField(sn,"Name","emoticons");class rn extends nn{constructor(e){super(e),__publicField(this,"$imgUploadInput"),__publicField(this,"allowImgExts",["png","jpg","jpeg","gif","bmp","svg","webp"]),this.$imgUploadInput=document.createElement("input"),this.$imgUploadInput.type="file",this.$imgUploadInput.style.display="none",this.$imgUploadInput.accept=this.allowImgExts.map((e=>`.${e}`)).join(",");const t=this.registerBtn(`${this.ctx.$t("image")}`);t.after(this.$imgUploadInput),t.onclick=()=>{const e=this.$imgUploadInput;e.onchange=()=>{(()=>{__async(this,null,(function*(){if(!e.files||0===e.files.length)return;const t=e.files[0];this.uploadImg(t)}))})()},e.click()},this.ctx.conf.imgUpload||this.getBtn().setAttribute("atk-only-admin-show","");const n=e=>{if(e)for(let t=0;t{e.stopPropagation(),e.preventDefault()})),this.editor.getUI().$textarea.addEventListener("drop",(e=>{var t;const i=null==(t=e.dataTransfer)?void 0:t.files;(null==i?void 0:i.length)&&(e.preventDefault(),n(i))})),this.editor.getUI().$textarea.addEventListener("paste",(e=>{var t;const i=null==(t=e.clipboardData)?void 0:t.files;(null==i?void 0:i.length)&&(e.preventDefault(),n(i))}))}uploadImg(e){return __async(this,null,(function*(){const t=/[^.]+$/.exec(e.name);if(!t||!this.allowImgExts.includes(t[0]))return;if(!lt.checkHasBasicUserInfo())return void this.editor.showNotify(this.ctx.$t("uploadLoginMsg"),"w");let n="\n";""===this.editor.getUI().$textarea.value.trim()&&(n="");const i=`${n}![](Uploading ${e.name}...)`;let s;this.editor.insertContent(i);try{s=this.ctx.conf.imgUploader?{img_url:yield this.ctx.conf.imgUploader(e)}:yield this.ctx.getApi().upload.imgUpload(e)}catch(r){console.error(r),this.editor.showNotify(`${this.ctx.$t("uploadFail")},${r.msg}`,"e")}if(s&&s.img_url){let e=s.img_url;h(e)||(e=u(this.ctx,e)),this.editor.setContent(this.editor.getUI().$textarea.value.replace(i,`${n}![](${e})`))}else this.editor.setContent(this.editor.getUI().$textarea.value.replace(i,""))}))}}__publicField(rn,"Name","upload");class an extends nn{constructor(e){super(e),__publicField(this,"isBind",!1),this.registerPanel('
      ');const t=this.editor.$t("preview");this.registerBtn(t)}onPanelShow(){if(this.updateContent(),!this.isBind){const e=()=>{this.updateContent()};this.editor.getUI().$textarea.addEventListener("input",e),this.editor.getUI().$textarea.addEventListener("change",e),this.isBind=!0}}updateContent(){"none"!==this.$panel.style.display&&(this.$panel.innerHTML=this.editor.getContentMarked())}}__publicField(an,"Name","preview");class on extends nn{constructor(e){super(e),__publicField(this,"queryUserInfo",{timeout:null,abortFunc:null}),this.registerHeaderInputEvt(((e,t)=>{"nick"!==e&&"email"!==e||this.fetchUserInfo()})),this.editor.getUI().$link.addEventListener("change",(()=>{const e=this.editor.getUI().$link.value.trim();e&&!/^(http|https):\/\//.test(e)&&(this.editor.getUI().$link.value=`https://${e}`,lt.update({link:this.editor.getUI().$link.value}))}))}fetchUserInfo(){lt.logout(),this.queryUserInfo.timeout&&window.clearTimeout(this.queryUserInfo.timeout),this.queryUserInfo.abortFunc&&this.queryUserInfo.abortFunc(),this.queryUserInfo.timeout=window.setTimeout((()=>{this.queryUserInfo.timeout=null;const{req:e,abort:t}=this.ctx.getApi().user.userGet(lt.data.nick,lt.data.email);this.queryUserInfo.abortFunc=t,e.then((e=>{var t;e.is_login||lt.logout(),this.ctx.updateNotifies(e.unread),lt.checkHasBasicUserInfo()&&!e.is_login&&(null==(t=e.user)?void 0:t.is_admin)&&this.showLoginDialog(),e.user&&e.user.link&&(this.editor.getUI().$link.value=e.user.link,lt.update({link:e.user.link}))})).catch((()=>{})).finally((()=>{this.queryUserInfo.abortFunc=null}))}),400)}showLoginDialog(){this.ctx.checkAdmin({onSuccess:()=>{}})}}__publicField(on,"Name","headerInput");const ln=[sn,rn,an,on];function dn(e,t){Object.entries(e.plugList).forEach((([e,n])=>{const i=n.getPanel();i&&(e===t?(i.style.display="",n.onPanelShow&&n.onPanelShow()):(i.style.display="none",n.onPanelHide&&n.onPanelHide()))})),e.editor.getUI().$plugPanelWrap.style.display="",e.openedPlugName=t}function hn(e){if(!e.openedPlugName)return;const t=e.plugList[e.openedPlugName];t&&(t.onPanelHide&&t.onPanelHide(),e.editor.getUI().$plugPanelWrap.style.display="none",e.openedPlugName=null)}function pn(e){if(!e.comment)return;const t=e.editor.getUI();t.$sendReply&&(t.$sendReply.remove(),t.$sendReply=void 0),e.comment=void 0,e.editor.travelBack()}function gn(e){if(!e.comment)return;const t=e.editor.getUI();t.$editCancelBtn&&(t.$editCancelBtn.remove(),t.$editCancelBtn=void 0),e.comment=void 0,e.editor.travelBack();const{nick:n,email:i,link:s}=lt.data;t.$nick.value=n,t.$email.value=i,t.$link.value=s,e.editor.setContent(""),e.editor.refreshSendBtnText(),t.$header.style.display=""}const kn={localStorage:function(e){const t=window.localStorage.getItem("ArtalkContent")||"";""!==t.trim()&&(e.showNotify(e.$t("restoredMsg"),"i"),e.setContent(t)),e.getUI().$textarea.addEventListener("input",(()=>e.saveToLocalStorage()))},header:function(e){const t=e.getHeaderInputEls();Object.entries(t).forEach((([t,n])=>{n.value=lt.data[t]||"",n.addEventListener("input",(()=>function(e,t,n){var i;e.isEditMode||(lt.update({[t]:n.value.trim()}),null==(i=e.getPlugs())||i.triggerHeaderInputEvt(t,n))}(e,t,n))),n.placeholder=`${e.$t(t)}`}))},textarea:function(e){e.getUI().$textarea.placeholder=e.ctx.conf.placeholder||e.$t("placeholder"),e.getUI().$textarea.addEventListener("keydown",(t=>{9===(t.keyCode||t.which)&&(t.preventDefault(),e.insertContent("\t"))})),e.getUI().$textarea.addEventListener("input",(()=>{e.adjustTextareaHeight()}))},submitBtn:function(e){e.refreshSendBtnText(),e.getUI().$submitBtn.addEventListener("click",(()=>e.submit()))},submitManager:function(e){e.setSubmitManager(function(e){const t={editor:e,do:()=>function(e){return __async(this,null,(function*(){if(""===e.editor.getFinalContent().trim())return void e.editor.focus();const t=e.customs.find((e=>e.activeCond()));e.editor.ctx.trigger("editor-submit"),e.editor.showLoading();try{let n;(null==t?void 0:t.pre)&&t.pre(),n=(null==t?void 0:t.req)?yield t.req():yield function(e){return __async(this,null,(function*(){const t=yield e.editor.ctx.getApi().comment.add(__spreadValues({},function(e){var t;const{nick:n,email:i,link:s}=lt.data,r=e.editor.ctx.conf,a=null==(t=e.editor.getReplyManager())?void 0:t.comment;return{content:e.editor.getFinalContent(),nick:n,email:i,link:s,rid:a?a.id:0,page_key:a?a.page_key:r.pageKey,page_title:a?void 0:r.pageTitle,site_name:a?a.site_name:r.site}}(e)));return t}))}(e),(null==t?void 0:t.post)?t.post(n):function(e,t){const n=e.editor.getReplyManager(),i=e.editor.ctx.conf;(null==n?void 0:n.comment)&&n.comment.page_key!==i.pageKey&&window.open(`${n.comment.page_url}#atk-comment-${t.id}`),e.editor.ctx.insertComment(t)}(e,n)}catch(n){return console.error(n),void e.editor.showNotify(`${e.editor.$t("commentFail")},${n.msg||String(n)}`,"e")}finally{e.editor.hideLoading()}e.editor.reset(),e.editor.ctx.trigger("editor-submitted")}))}(t),customs:[],registerCustom:e=>{t.customs.push(e)}};return t}(e))},plugs:function(e){e.setPlugs(function(e){const t={editor:e,plugList:{},openedPlugName:null,openPlugPanel:e=>dn(t,e),closePlugPanel:()=>hn(t),triggerHeaderInputEvt:(e,n)=>function(e,t,n){Object.entries(e.plugList).forEach((([e,i])=>{i.onHeaderInput&&i.onHeaderInput(t,n)}))}(t,e,n),triggerContentUpdatedEvt:e=>function(e,t){Object.entries(e.plugList).forEach((([e,n])=>{n.onContentUpdated&&n.onContentUpdated(t)}))}(t,e),getTransformedContent:e=>function(e,t){let n=t;return Object.entries(e.plugList).forEach((([e,t])=>{t.contentTransformer&&(n=t.contentTransformer(n))})),n}(t,e)};e.getUI().$plugPanelWrap.innerHTML="",e.getUI().$plugPanelWrap.style.display="none",e.getUI().$plugBtnWrap.innerHTML="";const n=[{k:"upload",v:(i=e.conf).imgUpload},{k:"emoticons",v:i.emoticons},{k:"preview",v:i.preview}].filter((e=>!e.v)).flatMap((e=>e.k));var i;return ln.filter((e=>!n.includes(e.Name))).forEach((e=>{!function(e,t){const n=t.Name,i=new t(e.editor);e.plugList[n]=i,function(e,t,n){const i=n.getBtn();if(!i)return;e.editor.getUI().$plugBtnWrap.appendChild(i),i.onclick=i.onclick||(s=>{s.stopPropagation(),e.editor.getUI().$plugBtnWrap.querySelectorAll(".active").forEach((e=>e.classList.remove("active"))),t!==e.openedPlugName?(dn(e,t),i.classList.add("active")):hn(e)});const s=n.getPanel();s&&(s.setAttribute("data-plug-name",t),s.style.display="none",e.editor.getUI().$plugPanelWrap.appendChild(s))}(e,n,i)}(t,e)})),t}(e))},mover:function(e){e.conf.editorTravel&&e.setMover(function(e){const t={editor:e,isMoved:!1,move:e=>function(e,t){if(e.isMoved)return;e.isMoved=!0;const n=e.editor.getUI().$el;n.after(s('
      '));const i=s("
      ");t.after(i),i.replaceWith(n),n.classList.add("atk-fade-in")}(t,e),back:()=>function(e){var t;e.isMoved&&(e.isMoved=!1,null==(t=e.editor.ctx.$root.querySelector(".atk-editor-travel-placeholder"))||t.replaceWith(e.editor.getUI().$el),e.editor.cancelReply())}(t)};return t}(e))},replyManager:function(e){e.setReplyManager(function(e){const t={editor:e,comment:void 0,setReply:(e,n,i)=>function(e,t,n,i=!0){e.editor.cancelEditComment(),pn(e);const r=e.editor.getUI();r.$sendReply||(r.$sendReply=s(`
      ${e.editor.$t("reply")} ×
      `),r.$sendReply.querySelector(".atk-text").innerText=`@${t.nick}`,r.$sendReply.addEventListener("click",(()=>{e.editor.cancelReply()})),r.$textareaWrap.append(r.$sendReply)),e.comment=t,e.editor.travel(n),i&&k(r.$el),r.$textarea.focus()}(t,e,n,i),cancelReply:()=>pn(t)};return t}(e))},editModeManager:function(e){e.setEditModeManager(function(e){const t={editor:e,comment:void 0,setEdit:(e,n)=>function(e,t,n){gn(e),e.editor.cancelReply();const i=e.editor.getUI();if(!i.$editCancelBtn){const t=s(`
      ${e.editor.$t("editCancel")} ×
      `);t.onclick=()=>{gn(e)},i.$textareaWrap.append(t),i.$editCancelBtn=t}e.comment=t,i.$header.style.display="none",e.editor.travel(n),i.$nick.value=t.nick||"",i.$email.value=t.email||"",i.$link.value=t.link||"",e.editor.setContent(t.content),i.$textarea.focus(),e.editor.refreshSendBtnText()}(t,e,n),cancelEdit:()=>gn(t)};return function(e){e.editor.getSubmitManager().registerCustom({activeCond:()=>!!e.comment,req:()=>__async(this,null,(function*(){const t={content:e.editor.getFinalContent(),nick:e.editor.getUI().$nick.value,email:e.editor.getUI().$email.value,link:e.editor.getUI().$link.value};return yield e.editor.ctx.getApi().comment.commentEdit(__spreadValues(__spreadValues({},e.comment),t))})),post:t=>{e.editor.ctx.updateComment(t)}})}(t),t}(e))}},yn={$header:".atk-header",$nick:'.atk-header [name="nick"]',$email:'.atk-header [name="email"]',$link:'.atk-header [name="link"]',$textareaWrap:".atk-textarea-wrap",$textarea:".atk-textarea",$bottom:".atk-bottom",$submitBtn:".atk-send-btn",$notifyWrap:".atk-notify-wrap",$plugBtnWrap:".atk-plug-btn-wrap",$plugPanelWrap:".atk-plug-panel-wrap"};class bn extends m{constructor(e){super(e),__publicField(this,"ui"),__publicField(this,"plugs"),__publicField(this,"mover"),__publicField(this,"reply"),__publicField(this,"editMode"),__publicField(this,"submitManager"),this.ui=function(){const e=s('
      \n
      \n \n \n \n
      \n
      \n \n
      \n \n
      \n
      \n
      \n \n
      \n
      \n
      \n
      \n'),t={$el:e};return Object.entries(yn).forEach((([n,i])=>{t[n]=e.querySelector(i)})),t}(),this.$el=this.ui.$el,this.ctx.on("conf-loaded",(()=>{var e;e=this,Object.entries(kn).forEach((([t,n])=>{n(e)}))}))}getUI(){return this.ui}getPlugs(){return this.plugs}setPlugs(e){this.plugs=e}setMover(e){this.mover=e}setReplyManager(e){this.reply=e}getReplyManager(){return this.reply}get isReplyMode(){var e;return!!(null==(e=this.reply)?void 0:e.comment)}setEditModeManager(e){this.editMode=e}get isEditMode(){var e;return!!(null==(e=this.editMode)?void 0:e.comment)}setSubmitManager(e){this.submitManager=e}getSubmitManager(){return this.submitManager}getHeaderInputEls(){return{nick:this.ui.$nick,email:this.ui.$email,link:this.ui.$link}}saveToLocalStorage(){window.localStorage.setItem("ArtalkContent",this.getContentOriginal().trim())}refreshSendBtnText(){this.isEditMode?this.ui.$submitBtn.innerText=this.$t("save"):this.ui.$submitBtn.innerText=this.ctx.conf.sendBtn||this.$t("send")}getFinalContent(){let e=this.getContentOriginal();return this.plugs&&(e=this.plugs.getTransformedContent(e)),e}getContentOriginal(){return this.ui.$textarea.value||""}getContentMarked(){return Xe(this.ctx,this.getFinalContent())}setContent(e){this.ui.$textarea.value=e,this.saveToLocalStorage(),this.plugs&&this.plugs.triggerContentUpdatedEvt(e),window.setTimeout((()=>{this.adjustTextareaHeight()}),80)}insertContent(e){const t=document.querySelector("#owo-big");if(t&&t.style&&(t.style.display="none"),document.selection)this.ui.$textarea.focus(),document.selection.createRange().text=e,this.ui.$textarea.focus();else if(this.ui.$textarea.selectionStart||0===this.ui.$textarea.selectionStart){const t=this.ui.$textarea.selectionStart,n=this.ui.$textarea.selectionEnd,i=this.ui.$textarea.scrollTop;this.setContent(this.ui.$textarea.value.substring(0,t)+e+this.ui.$textarea.value.substring(n,this.ui.$textarea.value.length)),this.ui.$textarea.focus(),this.ui.$textarea.selectionStart=t+e.length,this.ui.$textarea.selectionEnd=t+e.length,this.ui.$textarea.scrollTop=i}else this.ui.$textarea.focus(),this.ui.$textarea.value+=e}adjustTextareaHeight(){const e=this.ui.$textarea.offsetHeight-this.ui.$textarea.clientHeight;this.ui.$textarea.style.height="0px",this.ui.$textarea.style.height=`${this.ui.$textarea.scrollHeight+e}px`}focus(){this.ui.$textarea.focus()}reset(){this.setContent(""),this.cancelReply(),this.cancelEditComment()}setReply(e,t,n=!0){var i;null==(i=this.reply)||i.setReply(e,t,n)}cancelReply(){var e;null==(e=this.reply)||e.cancelReply()}setEditComment(e,t){var n;null==(n=this.editMode)||n.setEdit(e,t)}cancelEditComment(){var e;null==(e=this.editMode)||e.cancelEdit()}showNotify(e,t){!function(e,t,n){const i=s(`
      `);i.querySelector(".atk-notify-content").innerHTML=function(e){const t=document.createElement("div");return t.innerText=e,t.innerHTML}(t).replace("\n","
      "),e.appendChild(i);const r=()=>{i.classList.add("atk-fade-out"),setTimeout((()=>{i.remove()}),200)};let a;a=window.setTimeout((()=>{r()}),3e3),i.addEventListener("click",(()=>{r(),window.clearTimeout(a)}))}(this.ui.$notifyWrap,e,t)}showLoading(){g(this.ui.$el)}hideLoading(){f(this.ui.$el)}submit(){return __async(this,null,(function*(){this.submitManager&&(yield this.submitManager.do())}))}close(){this.ui.$textareaWrap.querySelector(".atk-comment-closed")||this.ui.$textareaWrap.prepend(s(`
      ${this.$t("onlyAdminCanReply")}
      `)),lt.data.isAdmin?(this.ui.$textarea.style.display="",this.ui.$bottom.style.display=""):(this.ui.$textarea.style.display="none",this.closePlugPanel(),this.ui.$bottom.style.display="none")}open(){var e;null==(e=this.ui.$textareaWrap.querySelector(".atk-comment-closed"))||e.remove(),this.ui.$textarea.style.display="",this.ui.$bottom.style.display=""}travel(e){var t;null==(t=this.mover)||t.move(e)}travelBack(){var e;null==(e=this.mover)||e.back()}openPlugPanel(e){var t;null==(t=this.plugs)||t.openPlugPanel(e)}closePlugPanel(){var e;null==(e=this.plugs)||e.closePlugPanel()}}class _n extends m{constructor(e){super(e),__publicField(this,"layer"),__publicField(this,"$header"),__publicField(this,"$closeBtn"),__publicField(this,"$iframeWrap"),__publicField(this,"$iframe"),__publicField(this,"firstShow",!0),this.$el=s('
      \n
      \n
      \n
      \n
      \n
      \n
      \n
      \n'),this.$header=this.$el.querySelector(".atk-sidebar-header"),this.$closeBtn=this.$header.querySelector(".atk-sidebar-close"),this.$iframeWrap=this.$el.querySelector(".atk-sidebar-iframe-wrap"),this.$closeBtn.onclick=()=>{this.hide()},this.ctx.on("user-changed",(()=>{this.firstShow=!0}))}show(){return __async(this,arguments,(function*(e={}){if(this.$el.style.transform="",null==this.layer&&(this.layer=new x(this.ctx,"sidebar",this.$el),this.layer.afterHide=()=>{!0===this.ctx.conf.editorTravel&&this.ctx.editorTravelBack()}),this.layer.show(),(()=>{__async(this,null,(function*(){var t;const n=yield this.ctx.getApi().user.loginStatus();n.is_admin&&!n.is_login&&(null==(t=this.layer)||t.hide(),this.firstShow=!0,this.ctx.checkAdmin({onSuccess:()=>{setTimeout((()=>{this.show(e)}),500)},onCancel:()=>{}}))}))})(),this.firstShow){this.$iframeWrap.innerHTML="",this.$iframe=s("");const t=u(this.ctx,"/sidebar/"),n={pageKey:this.conf.pageKey,site:this.conf.site||"",user:JSON.stringify(lt.data),time:+new Date};e.view&&(n.view=e.view),this.conf.darkMode&&(n.darkMode="1"),"string"==typeof this.conf.locale&&(n.locale=this.conf.locale);const i=new URLSearchParams(n);this.iframeLoad(`${t}?${i.toString()}`),this.$iframeWrap.append(this.$iframe),this.firstShow=!1}else{const e=this.$iframe.src.includes("darkMode=1");this.conf.darkMode&&!e&&this.iframeLoad(`${this.$iframe.src}&darkMode=1`),!this.conf.darkMode&&e&&this.iframeLoad(this.$iframe.src.replace("&darkMode=1",""))}setTimeout((()=>{this.$el.style.transform="translate(0, 0)"}),100),setTimeout((()=>{this.ctx.updateNotifies([])}),0),this.ctx.trigger("sidebar-show")}))}hide(){var e;this.$el.style.transform="",null==(e=this.layer)||e.hide(),this.ctx.trigger("sidebar-hide")}iframeLoad(e){this.$iframe&&(this.$iframe.src=e,g(this.$iframeWrap),this.$iframe.onload=()=>{f(this.$iframeWrap)})}}const $n={i18n(e){rt(e.conf.locale),e.on("conf-loaded",(()=>{rt(e.conf.locale)}))},markdown(){!function(){try{if(!ue.name)return}catch(i){return}const e=new ue.Renderer,t=e.link;e.link=(n,i,s)=>{const r=null==n?void 0:n.startsWith(`${window.location.protocol}//${window.location.hostname}`);return t.call(e,n,i,s).replace(/^{const n=t||"plaintext";let i=e;return window.hljs?n&&window.hljs.getLanguage(n)&&(i=window.hljs.highlight(n,e).value):i=Ge(e),`
      \n${i.replace(/&/g,"&")}\n
      `};const n=ue;ue.setOptions({renderer:e,pedantic:!1,gfm:!0,breaks:!0,smartLists:!0,smartypants:!0,xhtml:!1,sanitize:!1,silent:!0}),Ke=n}()},user:e=>(lt.setContext(e),lt),api:e=>new en(e),checkerLauncher:e=>new Gt(e),editor(e){const t=new bn(e);return e.$root.appendChild(t.$el),t},list(e){const t=new Wt(e);return e.$root.appendChild(t.$el),t.fetchComments(0),t},layer(e){x.BodyOrgOverflow=document.body.style.overflow,x.BodyOrgPaddingRight=document.body.style.paddingRight},sidebarLayer:e=>new _n(e),eventsDefault(e){window.addEventListener("hashchange",(()=>{e.listHashGotoCheck()})),e.on("user-changed",(()=>{e.checkAdminShowEl(),e.listRefreshUI()}))},darkMode(e){S(e),e.on("conf-loaded",(()=>{S(e)}))}};function xn(e){return __async(this,null,(function*(){const t=e.ctx.conf.countEl;t&&document.querySelector(t)&&vn(e,{api:"page_comment",countEl:t});const n=e.pvAdd?yield e.ctx.getApi().page.pv():void 0,i=e.ctx.conf.pvEl;i&&document.querySelector(i)&&vn(e,{api:"page_pv",countEl:i,curtPageCount:n})}))}function vn(e,t){return __async(this,null,(function*(){let n={};const i=e.ctx.conf.pageKey;t.curtPageCount&&(n[i]=t.curtPageCount);let s=Array.from(document.querySelectorAll(t.countEl)).map((e=>e.getAttribute("data-page-key")||i)).filter((e=>void 0===n[e]));if(s=[...new Set(s)],s.length>0){const i=yield e.ctx.getApi().page.stat(t.api,s);n=__spreadValues(__spreadValues({},n),i)}document.querySelectorAll(t.countEl).forEach((e=>{const t=e.getAttribute("data-page-key")||i;e.innerHTML=`${Number(n[t]||0)}`}))}))}const wn=class e{constructor(t){__publicField(this,"conf"),__publicField(this,"ctx"),__publicField(this,"$root"),e.instance&&e.destroy(),this.conf=qt(t),this.conf.el instanceof HTMLElement&&(this.$root=this.conf.el),this.showOwoBig(this.conf.el),this.ctx=new Nt(this.conf,this.$root),Object.entries($n).forEach((([t,n])=>{if(e.DisabledComponents.includes(t))return;const i=n(this.ctx);i&&this.ctx.inject(t,i)})),e.plugins.forEach((e=>{"function"==typeof e&&e(this.ctx)}))}showOwoBig(e){const t=200,i=document.querySelector("body");let n=document.createElement("div");document.querySelector("#owo-big")?n=document.querySelector("#owo-big"):(n.id="owo-big",i.appendChild(n)),new MutationObserver((e=>{var s,r,a,o,l,c,h,d;for(let u=0;u{m&&"IMG"===e.target.tagName&&e.target.attributes["atk-emoticon"]&&(m=0,g=setTimeout((()=>{const s="true"===e.target.getAttribute("notitle")?"":e.target.alt||"",r=e.target.clientHeight,a=e.target.clientWidth;if(r<=t&&a<=t){const o=e.target.naturalHeight,l=e.target.naturalWidth,c=2*r,h=2*a,d=o>r?ca?h=1?u>=t?(p=t,m=d*t/u):(p=u,m=d):d>=t?(m=t,p=u*t/d):(p=u,m=d);const g=e.y-e.offsetY;let f=e.x-e.offsetX-(p-e.target.clientWidth)/2;f+p>i.clientWidth&&(f-=f+p-i.clientWidth+10),f<0&&(f=10),""!==s&&(m+=10),n.style.cssText=`display:block;height:${m+34}px;width:${p+34}px;left:${f}px;top:${g}px;`,n.innerHTML=`

      ${s}

      `}}),300))},p[0].onmouseout=()=>{m=1,n.style.display="none",clearTimeout(g)})}})).observe(e,{subtree:!0,childList:!0})}static init(t){return this.instance&&e.destroy(),this.instance=new e(t),this.instance}use(t){e.plugins.push(t),"function"==typeof t&&t(this.ctx)}update(t){if(!e.instance)throw Error("cannot call `update` function before call `load`");return e.instance.ctx.updateConf(t),e.instance}reload(){this.ctx.listReload()}destroy(){if(!e.instance)throw Error("cannot call `destroy` function before call `load`");e.instance.$root.remove(),delete e.instance}on(e,t){this.ctx.on(e,t,"external")}off(e,t){this.ctx.off(e,t,"external")}trigger(e,t){this.ctx.trigger(e,t,"external")}setDarkMode(e){this.ctx.setDarkMode(e)}static use(e){this.plugins.push(e),this.instance&&"function"==typeof e&&e(this.instance.ctx)}static update(e){var t;return null==(t=this.instance)?void 0:t.update(e)}static reload(){var e;null==(e=this.instance)||e.reload()}static destroy(){var e;null==(e=this.instance)||e.destroy()}static on(e,t){var n;null==(n=this.instance)||n.on(e,t)}static off(e,t){var n;null==(n=this.instance)||n.off(e,t)}static trigger(e,t){var n;null==(n=this.instance)||n.trigger(e,t)}static setDarkMode(e){var t;null==(t=this.instance)||t.setDarkMode(e)}static loadCountWidget(e){const t=new Nt(qt(e));t.inject("api",new en(t)),xn({ctx:t,pvAdd:!1})}static LoadCountWidget(e){console.warn("The method `LoadCountWidget` is deprecated, please use `loadCountWidget` instead."),this.loadCountWidget(e)}};return __publicField(wn,"instance"),__publicField(wn,"ListLite",jt),__publicField(wn,"defaults",Dt),__publicField(wn,"plugins",[e=>{e.conf.useBackendConf?e.on("list-loaded",(()=>{xn({ctx:e,pvAdd:!0})})):xn({ctx:e,pvAdd:!0})}]),__publicField(wn,"DisabledComponents",[]),wn})); \ No newline at end of file