lightgallery
Version:
lightGallery is a feature-rich, modular JavaScript gallery plugin for building beautiful image and video galleries for the web and the mobile
140 lines • 5.8 kB
JavaScript
"use strict";
/**
* lightGallery comments module
* Supports facebook and disqus comments
*
* @ref - https://help.disqus.com/customer/portal/articles/472098-javascript-configuration-variables
* @ref - https://github.com/disqus/DISQUS-API-Recipes/blob/master/snippets/js/disqus-reset/disqus_reset.html
* @ref - https://css-tricks.com/lazy-loading-disqus-comments/
* @ref - https://developers.facebook.com/docs/plugins/comments/#comments-plugin
*
*/
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
var lg_events_1 = require("../../lg-events");
var lg_comment_settings_1 = require("./lg-comment-settings");
var CommentBox = /** @class */ (function () {
function CommentBox(instance, $LG) {
// get lightGallery core plugin instance
this.core = instance;
this.$LG = $LG;
// extend module default settings with lightGallery core settings
this.settings = __assign(__assign({}, lg_comment_settings_1.commentSettings), this.core.settings);
return this;
}
CommentBox.prototype.init = function () {
if (!this.settings.commentBox) {
return;
}
this.setMarkup();
this.toggleCommentBox();
if (this.settings.fbComments) {
this.addFbComments();
}
else if (this.settings.disqusComments) {
this.addDisqusComments();
}
};
CommentBox.prototype.setMarkup = function () {
this.core.outer.append(this.settings.commentsMarkup +
'<div class="lg-comment-overlay"></div>');
var commentToggleBtn = "<button type=\"button\" aria-label=\"" + this.settings.commentPluginStrings['toggleComments'] + "\" class=\"lg-comment-toggle lg-icon\"></button>";
this.core.$toolbar.append(commentToggleBtn);
};
CommentBox.prototype.toggleCommentBox = function () {
var _this_1 = this;
this.core.outer
.find('.lg-comment-toggle')
.first()
.on('click.lg.comment', function () {
_this_1.core.outer.toggleClass('lg-comment-active');
});
this.core.outer
.find('.lg-comment-overlay')
.first()
.on('click.lg.comment', function () {
_this_1.core.outer.removeClass('lg-comment-active');
});
this.core.outer
.find('.lg-comment-close')
.first()
.on('click.lg.comment', function () {
_this_1.core.outer.removeClass('lg-comment-active');
});
};
CommentBox.prototype.addFbComments = function () {
var _this_1 = this;
// eslint-disable-next-line @typescript-eslint/no-this-alias
var _this = this;
this.core.LGel.on(lg_events_1.lGEvents.beforeSlide + ".comment", function (event) {
var html = _this_1.core.galleryItems[event.detail.index].fbHtml;
_this_1.core.outer.find('.lg-comment-body').html(html);
});
this.core.LGel.on(lg_events_1.lGEvents.afterSlide + ".comment", function () {
try {
FB.XFBML.parse();
}
catch (err) {
_this.$LG(window).on('fbAsyncInit', function () {
FB.XFBML.parse();
});
}
});
};
CommentBox.prototype.addDisqusComments = function () {
var _this_1 = this;
// eslint-disable-next-line @typescript-eslint/no-this-alias
var _this = this;
var $disqusThread = this.$LG('#disqus_thread');
$disqusThread.remove();
this.core.outer
.find('.lg-comment-body')
.append('<div id="disqus_thread"></div>');
this.core.LGel.on(lg_events_1.lGEvents.beforeSlide + ".comment", function () {
$disqusThread.html('');
});
this.core.LGel.on(lg_events_1.lGEvents.afterSlide + ".comment", function (event) {
var index = event.detail.index;
// eslint-disable-next-line @typescript-eslint/no-this-alias
var _this = _this_1;
// DISQUS needs sometime to intialize when lightGallery is opened from direct url(hash plugin).
setTimeout(function () {
try {
DISQUS.reset({
reload: true,
config: function () {
this.page.identifier =
_this.core.galleryItems[index].disqusIdentifier;
this.page.url =
_this.core.galleryItems[index].disqusURL;
this.page.title =
_this.settings.disqusConfig.title;
this.language =
_this.settings.disqusConfig.language;
},
});
}
catch (err) {
console.error('Make sure you have included disqus JavaScript code in your document. Ex - https://lg-disqus.disqus.com/admin/install/platforms/universalcode/');
}
}, _this.core.lGalleryOn ? 0 : 1000);
});
};
CommentBox.prototype.destroy = function () {
this.core.LGel.off('.lg.comment');
this.core.LGel.off('.comment');
};
return CommentBox;
}());
exports.default = CommentBox;
//# sourceMappingURL=lg-comment.js.map