晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/rainic/www/wp-contentTZh/plugins/elementor/assets/js/ |
Upload File : |
"use strict";
(self["webpackChunkelementorFrontend"] = self["webpackChunkelementorFrontend"] || []).push([["video"],{
/***/ "../assets/dev/js/frontend/handlers/video.js":
/*!***************************************************!*\
!*** ../assets/dev/js/frontend/handlers/video.js ***!
\***************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
__webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
__webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js");
class Video extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
imageOverlay: '.elementor-custom-embed-image-overlay',
video: '.elementor-video',
videoIframe: '.elementor-video-iframe',
playIcon: '.elementor-custom-embed-play'
}
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$imageOverlay: this.$element.find(selectors.imageOverlay),
$video: this.$element.find(selectors.video),
$videoIframe: this.$element.find(selectors.videoIframe),
$playIcon: this.$element.find(selectors.playIcon)
};
}
handleVideo() {
if (this.getElementSettings('lightbox')) {
return;
}
if ('youtube' === this.getElementSettings('video_type')) {
this.apiProvider.onApiReady(apiObject => {
this.elements.$imageOverlay.remove();
this.prepareYTVideo(apiObject, true);
});
} else {
this.elements.$imageOverlay.remove();
this.playVideo();
}
}
playVideo() {
if (this.elements.$video.length) {
// This.youtubePlayer exists only for YouTube videos, and its play function is different.
if (this.youtubePlayer) {
this.youtubePlayer.playVideo();
} else {
this.elements.$video[0].play();
}
return;
}
const $videoIframe = this.elements.$videoIframe,
lazyLoad = $videoIframe.data('lazy-load');
if (lazyLoad) {
$videoIframe.attr('src', lazyLoad);
}
if (this.getElementSettings('autoplay')) {
$videoIframe.attr('allow', 'autoplay');
$videoIframe[0].src = this.apiProvider.getAutoplayURL($videoIframe[0].src);
}
}
async animateVideo() {
const lightbox = await elementorFrontend.utils.lightbox;
lightbox.setEntranceAnimation(this.getCurrentDeviceSetting('lightbox_content_animation'));
}
async hideLightbox() {
const lightbox = await elementorFrontend.utils.lightbox;
lightbox.getModal().hide();
}
prepareYTVideo(YT, onOverlayClick) {
const elementSettings = this.getElementSettings(),
playerOptions = {
videoId: this.videoID,
events: {
onReady: () => {
if (elementSettings.mute) {
this.youtubePlayer.mute();
}
if (elementSettings.autoplay || onOverlayClick) {
this.youtubePlayer.playVideo();
}
},
onStateChange: event => {
if (event.data === YT.PlayerState.ENDED && elementSettings.loop) {
this.youtubePlayer.seekTo(elementSettings.start || 0);
}
}
},
playerVars: {
controls: elementSettings.controls ? 1 : 0,
rel: elementSettings.rel ? 1 : 0,
playsinline: elementSettings.play_on_mobile ? 1 : 0,
cc_load_policy: elementSettings.cc_load_policy ? 1 : 0,
autoplay: elementSettings.autoplay ? 1 : 0,
start: elementSettings.start,
end: elementSettings.end
}
};
// To handle CORS issues, when the default host is changed, the origin parameter has to be set.
if (elementSettings.yt_privacy) {
playerOptions.host = 'https://www.youtube-nocookie.com';
playerOptions.origin = window.location.hostname;
}
this.youtubePlayer = new YT.Player(this.elements.$video[0], playerOptions);
}
bindEvents() {
this.elements.$imageOverlay.on('click', this.handleVideo.bind(this));
this.elements.$playIcon.on('keydown', event => {
const playKeys = [13,
// Enter key.
32 // Space bar key.
];
if (playKeys.includes(event.keyCode)) {
this.handleVideo();
}
});
}
onInit() {
super.onInit();
const elementSettings = this.getElementSettings();
if (elementorFrontend.utils[elementSettings.video_type]) {
this.apiProvider = elementorFrontend.utils[elementSettings.video_type];
} else {
this.apiProvider = elementorFrontend.utils.baseVideoLoader;
}
if ('youtube' !== elementSettings.video_type) {
// Currently the only API integration in the Video widget is for the YT API
return;
}
this.videoID = this.apiProvider.getVideoIDFromURL(elementSettings.youtube_url);
// If there is an image overlay, the YouTube video prep method will be triggered on click
if (!this.videoID) {
return;
}
// If the user is using an image overlay, loading the API happens on overlay click instead of on init.
if (elementSettings.show_image_overlay && elementSettings.image_overlay.url) {
return;
}
if (elementSettings.lazy_load) {
this.intersectionObserver = elementorModules.utils.Scroll.scrollObserver({
callback: event => {
if (event.isInViewport) {
this.intersectionObserver.unobserve(this.elements.$video.parent()[0]);
this.apiProvider.onApiReady(apiObject => this.prepareYTVideo(apiObject));
}
}
});
// We observe the parent, since the video container has a height of 0.
this.intersectionObserver.observe(this.elements.$video.parent()[0]);
return;
}
this.apiProvider.onApiReady(apiObject => this.prepareYTVideo(apiObject));
}
onElementChange(propertyName) {
if (0 === propertyName.indexOf('lightbox_content_animation')) {
this.animateVideo();
return;
}
const isLightBoxEnabled = this.getElementSettings('lightbox');
if ('lightbox' === propertyName && !isLightBoxEnabled) {
this.hideLightbox();
}
}
}
exports["default"] = Video;
/***/ })
}]);
//# sourceMappingURL=video.0b07a49a1eb81c3098c5.bundle.js.map