Files
wordpress-theme-aksrt/assets/js/runtime/imgbox.min.js
T
kate522 5fd7c212ed fix(runtime): 按参考主题硬切换为 loader/main/auto_fun 单一 DOM 生命周期
- 删除 AksrtFrontend registry/rehydrate 双路架构及 build/public.js 拼包入口,
  前台唯一初始路径为 PHP 本地栈(jQuery 1.9.1 → Bootstrap 3.4.1)
  → loader_js(_win/aksrtData 唯一注入)→ tbquire(['main']) → runtime/main.min.js
- window.auto_fun = debounce(z_auto_fun, 100) 为唯一重扫入口;所有模块改为
  执行一次 + off/on('auto_fun.aksrt-*') 命名空间重扫,data/class 标记幂等
- 局部更新协议统一:HTML 注入 → post_ajax.ed → auto_fun();
  远程 modal → loaded.bs.modal → auto_fun();JSON 成功 → zib_ajax.success
- 灯箱恢复 Miniimgbox/imgbox 唯一 owner(imgbox-container、a[data-imgbox]、
  imgbox_data),删除 AksrtLightbox/data-aksrt-lightbox 第二实现及 CSS/overlay,
  _win.imgbox* 重新接上 post-display 设置
- 死代码清理:runtime 下 11 组被自有实现替代的旧模块副本、无消费 vendored 库、
  顶层 grade.min.js、revenue.js、无调用方的 aksrt_get_win_runtime_config(),
  以及 loader 中 16 条死 mapping
- PHP 入队改为本地栈 + loader_js,routed/widget/submit 依赖统一换绑;
  用户卡片发布按钮恢复 nav_user_newposts_btn 设置门控
- 测试对齐:新增 frontend-lifecycle-contract,重写 navigation/lazyload/toast/
  auth-source/comment/page-display/post-visual 等断言为目标架构契约

验证:node --test widget-system+navigation 223 通过 0 失败;
构建脚本重建 main/imgbox min 与 CSS bundles;改动 PHP php -l、JS node --check
全部通过;git diff --check 干净;credits 重入 harness 通过。
2026-09-03 12:44:31 +08:00

2 lines
13 KiB
JavaScript

(function($,window2){"use strict";var Miniimgbox=function(img_selector,container_selector){return _Miniimgbox(img_selector,container_selector,Miniimgbox.options)};Miniimgbox.options={group:!0,thumbs:!0,down:!0,play:!0,zoom:!0,full:!0,exclude:".no-imgbox,.avatar,.img-icon,.avatar-badge"},Miniimgbox.swiper="",Miniimgbox.thumbs_swiper="",window2.Miniimgbox=Miniimgbox;function _Miniimgbox(img_selector,container_selector,options){var imgbox_calss="mini-imgbox imgbox",imgbox_id="mini-imgbox",data_key="imgbox_data",imgbox_selector="#"+imgbox_id,_imgbox=$(imgbox_selector),Miniimgbox2=window2.Miniimgbox,imgbox_swiper=Miniimgbox2.swiper,imgbox_thumbs_swiper=Miniimgbox2.thumbs_swiper,_body=$("body"),_fixed=$(".nav-fixed header");options.group||(options.thumbs=!1),init();function init(){add_dom(),options.exclude&&(img_selector+=":not("+options.exclude+")");var all_img_selector=container_selector?container_selector+" "+img_selector:img_selector;container_selector=options.group?container_selector:!1,setTimeout(function(){update_all_slide_data(img_selector,container_selector)},1e3),_body.data("imgbox-ison-"+all_img_selector)||(_body.on("click",all_img_selector,function(){var _this=$(this);imgbox_open(_this,container_selector)}),_body.data("imgbox-ison-"+all_img_selector,!0))}function imgbox_open(_this,container_s){var slide_lists=get_slide_lists(_this,container_s);if(slide_lists.slide){slide_lists.node_length>1?$(".imgbox-an .toggle-palay").show():$(".imgbox-an .toggle-palay").hide(),$(imgbox_selector+" .swiper-imgbox .swiper-wrapper").html(slide_lists.slide),options.thumbs&&$(imgbox_selector+" .swiper-thumbsbox .swiper-wrapper").html(slide_lists.thumbs);var index=~~_this.attr("imgbox-index")||0;setTimeout(function(){options.thumbs&&imgbox_thumbs_swiper.update(),imgbox_swiper.update(),imgbox_swiper.slideTo(index,2),imgbox_swiper.autoplay.stop(),thumb_open()},16),show(_this)}}function get_slide_lists(_this,container_s){var data=_this.data(data_key);if(data)return data;var _container=container_s?$(_this.parents(container_s)[0]):{};if(_container.length){var _data=_container.data(data_key);if(_data&&_data.node_length==get_node_length(_container))return _data}return update_slide_data(_this,_container)}function get_node_length(_container){return _container.find(img_selector).length}function update_all_slide_data(img_selector2,container_s){container_s?$(container_s).each(function(){var each_this=$(this);each_this.data(data_key)||update_slide_data(each_this.find(img_selector2).eq(0),each_this)}):$(img_selector2).each(function(){var each_this=$(this);each_this.data(data_key)||update_slide_data(each_this,{})})}function update_slide_data(_this,_container){var data={slide:"",thumbs:"",length:0};if(_container.length){var index=0;_container.find(img_selector).each(function(i){i==0&&(index=0);var each_this=$(this);is_no(each_this)||(each_this.attr("imgbox-index",index),data.slide+=get_slide(each_this),data.length=index+1,options.thumbs&&(data.thumbs+=get_thumbs(each_this)),index++)}),data.node_length=get_node_length(_container),_container.data(data_key,data)}else!is_no(_this)&&!_this.find("img").length&&(data.slide=get_slide(_this),data.length=index,_this.attr("imgbox-no-cache")||_this.data(data_key,data));return data}function add_dom(){if(!_imgbox.length){var swiper='<div class="swiper-imgbox"><div class="swiper-wrapper"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div><div class="abs-left counter-con"></div></div>',thumbs_swiper='<div class="swiper-thumbsbox"><div class="swiper-wrapper"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div><div class="abs-center right-top"><i class="hide-but fa fas fa-angle-down em12"></i></div></div>',button=options.down?'<a href="javascript:;" download class="img-down toggle-radius mr6" title="'+aksrt__("imgbox_download")+'"><i class="fa fas fa-download"></i></a>':"";options.group&&(button+=options.play?'<a href="javascript:;" class="toggle-palay toggle-radius mr6" title="'+aksrt__("imgbox_play")+'"><i class="fa fas fa-play"></i></a>':"",options.thumbs&&(button+='<a href="javascript:;" class="toggle-thumbs toggle-radius mr6" title="'+aksrt__("imgbox_view_more")+'"><i class="fa fas fa-th-large"></i></a>',swiper+=thumbs_swiper)),button+=options.zoom?'<a href="javascript:;" class="toggle-zoom toggle-radius mr6" title="'+aksrt__("imgbox_toggle_zoom")+'"><i class="fa fas fa-search"></i></a>':"",button+=options.full?'<a href="javascript:;" class="hide-sm toggle-full toggle-radius mr6" title="'+aksrt__("imgbox_toggle_full")+'"><i class="fa fas fa-expand"></i></a>':"",button+='<a href="javascript:;" title="'+aksrt__("close")+'" class="icon-close toggle-radius"><svg viewBox="0 0 1024 1024" class="icon em12"><path d="M573.44 512.128l237.888 237.696a43.328 43.328 0 0 1 0 59.712 43.392 43.392 0 0 1-59.712 0L513.728 571.84 265.856 819.712a44.672 44.672 0 0 1-61.568 0 44.672 44.672 0 0 1 0-61.568L452.16 510.272 214.208 272.448a43.328 43.328 0 0 1 0-59.648 43.392 43.392 0 0 1 59.712 0l237.952 237.76 246.272-246.272a44.672 44.672 0 0 1 61.568 0 44.672 44.672 0 0 1 0 61.568L573.44 512.128z"></path></svg></a>',_body.append('<div class="'+imgbox_calss+'" id="'+imgbox_id+'"><div class="modal-backdrop imgbox-bg"></div><div class="imgbox-an">'+button+"</div>"+swiper+"</div>"),_imgbox=$(imgbox_selector),new_swiper(),imgbox_on()}}function new_swiper(){var selector=imgbox_selector+" .swiper-imgbox",speed=~~(($(window2).width()+1600)/600),option={};option.mousewheel={speed:10},option.speed=speed*100,option.zoom={maxRatio:$(window2).width()<769?3:2},option.autoplay={disableOnInteraction:!1},option.grabCursor=!0,option.navigation={nextEl:selector+" .swiper-button-next",prevEl:selector+" .swiper-button-prev"},option.keyboard={enabled:!0,onlyInViewport:!1},option.pagination={el:selector+" .counter-con",type:"custom",renderCustom:function(swiper,current,total){return total>1?'<badge class="b-black counter">'+current+"/"+total+"</badge>":""}},options.thumbs&&options.group&&(new_thumbs_swiper(),option.thumbs={swiper:imgbox_thumbs_swiper,autoScrollOffset:~~(speed/1.6)}),Miniimgbox2.swiper=imgbox_swiper=new Swiper(selector,option)}function new_thumbs_swiper(){var selector=imgbox_selector+" .swiper-thumbsbox",option={};option.watchSlidesVisibility=!0,option.navigation={nextEl:selector+" .swiper-button-next",prevEl:selector+" .swiper-button-prev"},option.slidesPerView="auto",option.freeMode=!0,option.freeModeSticky=!0,Miniimgbox2.thumbs_swiper=imgbox_thumbs_swiper=new Swiper(selector,option)}function imgbox_on(){_imgbox.data("is_on")||(touch_close(),_imgbox.on("click",".img-close,.imgbox-bg,.imgbox-an .icon-close",close),_imgbox.on("click",".imgbox-an .toggle-thumbs,.hide-but",function(){_imgbox.toggleClass("show-thumb")}),_imgbox.on("click",".imgbox-an .img-down",function(){var _this=$(this),img=_imgbox.find(".swiper-imgbox .swiper-slide-active img"),src=img.attr("data-src")||img.attr("src"),down_name=src.substring(src.lastIndexOf("/")+1)||src;_this.attr("href",src).attr("download",down_name)}),_imgbox.on("click",".imgbox-an .toggle-palay",function(){var _this=$(this);_this.hasClass("is-play")?imgbox_swiper.autoplay.stop():imgbox_swiper.autoplay.start(),_this.toggleClass("is-play")}),_imgbox.on("click",".imgbox-an .toggle-zoom",function(){var _this=$(this);imgbox_swiper.zoom.toggle(),_this.toggleClass("is-zoom")}),_imgbox.on("click",".imgbox-an .toggle-full",function(){document.fullscreenElement?full_out():full_in()}),_imgbox.data("is_on",!0))}function full_in(){var docElm=document.documentElement;docElm.requestFullscreen?docElm.requestFullscreen():docElm.msRequestFullscreen?docElm.msRequestFullscreen():docElm.mozRequestFullScreen?docElm.mozRequestFullScreen():docElm.webkitRequestFullScreen&&docElm.webkitRequestFullScreen(),$(imgbox_selector+" .imgbox-an .toggle-full .fa").removeClass("fa-expand").addClass("fa-compress"),$(imgbox_selector+".show").addClass("full-screen")}function full_out(){document.fullscreenElement&&(document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitCancelFullScreen&&document.webkitCancelFullScreen()),$(imgbox_selector+" .imgbox-an .toggle-full .fa").removeClass("fa-compress").addClass("fa-expand"),_imgbox.removeClass("full-screen")}function link_replace(link){return link.indexOf("base64,")==-1&&link.length<300?link.replace(/(.*\/)(.*)(-\d+x\d+\.)(.*)/g,"$1$2.$4").replace(/\??x-oss-process(.*)/,""):link}function show_style(_this){var offset=_this.offset(),offset_top=offset.top,offset_left=offset.left,scrollTop=$(document).scrollTop(),height=_this.height(),width=_this.width(),s_top=offset_top-scrollTop+height/2,s_left=offset_left+width/2;_imgbox.attr("style","--imgbox-origin-top:"+s_top+"px;--imgbox-origin-left:"+s_left+"px;")}function thumb_open(){var _thumb_btn=$(imgbox_selector+" .imgbox-an .toggle-thumbs,.hide-but");options.thumbs&&_thumb_btn.length&&(imgbox_swiper.slides.length>1?_thumb_btn.show():(_imgbox.removeClass("show-thumb"),_thumb_btn.hide()))}function checkScrollbar(){var fullWindowWidth=window2.innerWidth;if(!fullWindowWidth){var documentElementRect=document.documentElement.getBoundingClientRect();fullWindowWidth=documentElementRect.right-Math.abs(documentElementRect.left)}return document.body.clientWidth<fullWindowWidth}function measureScrollbar(){var scrollbarWidthData=_body.data("scrollbar-width");if(scrollbarWidthData!==void 0)return scrollbarWidthData;var scrollDiv=document.createElement("div");scrollDiv.className="modal-scrollbar-measure",_body.append(scrollDiv);var scrollbarWidth=scrollDiv.offsetWidth-scrollDiv.clientWidth;return _body[0].removeChild(scrollDiv),_body.data("scrollbar-width",scrollbarWidth),scrollbarWidth}function setScrollbar(){var bodyPad=parseInt(_body.css("padding-right")||0,10),scrollbarWidth=measureScrollbar();checkScrollbar()&&(_body.css("padding-right",bodyPad+scrollbarWidth),_fixed.each(function(index,element){var actualPadding=element.style.paddingRight,calculatedPadding=$(element).css("padding-right");$(element).data("padding-right",actualPadding).css("transition","none").css("padding-right",parseFloat(calculatedPadding)+scrollbarWidth+"px")}))}function show(_this){setScrollbar(),_body.addClass("imgbox-show"),show_style(_this),_imgbox.addClass("show").removeClass("hide")}function close(){_body.removeClass("imgbox-show").css("padding-right",""),_fixed.css("padding-right",""),setTimeout(function(){_fixed.css("transition","")},10),_imgbox.addClass("hideing").removeClass("show"),full_out(),setTimeout(function(){_imgbox.removeClass("hideing").addClass("hide").attr("style",""),$(".toggle-palay.is-play").removeClass("is-play");try{imgbox_swiper.zoom.out(),imgbox_swiper.autoplay.stop()}catch(e){console.log(e)}$(imgbox_selector+" .swiper-close").css({opacity:"",transform:""})},300)}function touch_close(){_imgbox.on("touchmove pointermove MSPointerMove",function(e){e.preventDefault?e.preventDefault():e.returnValue=!1}),_imgbox.minitouch({direction:"bottom",selector:".swiper-close",depreciation:100,onStart:!1,stop:function(_e,_this){var scale=_this.find("img").css("transform").replace(/[^0-9\-,]/g,"").split(",")[0];return scale&&scale>1},onIng:function(_e,_this,distanceX,distanceY){var set_opacity=(150-distanceY)/80;set_opacity=set_opacity<1&&set_opacity>.2&&set_opacity,_this.css("opacity",set_opacity)},inEnd:function(_e,_this){_this.css({opacity:""})},onEnd:function(_e,_this){_imgbox.attr("style","--imgbox-origin-top:"+t_h+"px;--imgbox-origin-left:conter;");var t_h=_this.height();_this.css({transform:"translate3D(0px, "+t_h+"px, 0px)",transition:".2s linear",opacity:0}),setTimeout(close,150)}})}function get_slide(each_this){var thumbs_src=each_this.attr("src")||each_this.attr("box-img"),data_src=each_this.attr("data-src");if(!thumbs_src&&!data_src)return"";var full_src=each_this.attr("data-full-url")||link_replace(data_src||thumbs_src),main_img='<img src="'+thumbs_src+'" data-src="'+full_src+'" class="lazyload"><div class="swiper-lazy-preloader"></div>',main_img_html='<div class="swiper-slide"><div class="swiper-close"><div class="swiper-zoom-container"><div class="absolute img-close"></div>'+main_img+"</div></div></div>";return main_img_html}function get_thumbs(each_this){var thumbs_src_b=each_this.attr("data-src")||each_this.attr("src");if(!thumbs_src_b)return"";var thumbs_img='<img data-src="'+thumbs_src_b+'" class="lazyload fit-cover">',thumbs_img_html='<div class="swiper-slide">'+thumbs_img+"</div>";return thumbs_img_html}function is_no(_this){var src=_this.attr("data-src")||_this.attr("src");if(!src)return!1;src=link_replace(src);var parent=_this.parent("a");if(!parent.length)return!1;var href=parent.attr("box-img")||parent.attr("href");return href=link_replace(href),href&&(href.indexOf(src)==-1||src.indexOf(href)==-1)}}tbquire(["swiper"],function(){$("link#swiper").length||$("head").append('<link type="text/css" id="swiper" rel="stylesheet" href="'+_win.uri+"/css/swiper.min.css?ver="+_win.ver+'">'),Miniimgbox.options.group=_win.imgbox_type==="group",Miniimgbox.options.thumbs=_win.imgbox_thumbs,Miniimgbox.options.down=_win.imgbox_down,Miniimgbox.options.play=_win.imgbox_play,Miniimgbox.options.zoom=_win.imgbox_zoom,Miniimgbox.options.full=_win.imgbox_full,Miniimgbox(".alone-imgbox-img,a[data-imgbox]"),Miniimgbox("img",".wp-posts-content"),Miniimgbox("img",".imgbox-container"),Miniimgbox(".box-img",".comment-content")})})(jQuery,window);