Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /home/nandedex/www/wp-content/plugins/better-smart-thumbnails/assets/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : /home/nandedex/www/wp-content/plugins/better-smart-thumbnails/assets/js/smart-thumbnails.js.map
{"version":3,"sources":[".before-concat.txt","utils.js","preview-data.js","preview-modal.js","focus-point.js","media-modal.js","media-lib-page.js",".after-concat.txt"],"names":[],"mappings":"AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrKA","file":"smart-thumbnails.js","sourcesContent":["jQuery(document).ready(function($) {","var helper = {\n    isObject: function (obj) {\n        var type = typeof obj;\n        return type === 'function' || type === 'object' && !!obj;\n    },\n    isUndefined: function (obj) {\n\n        return obj === void 0;\n    },\n\n    notify: function ($el, message) {\n\n        $el.append(\"<div class='bt-user-message success' style='display: none;'>\" + message + \"</div>\");\n\n        $(\".bt-user-message\", $el).fadeIn().delay(5e3).queue(function (n) {\n\n            $(this).fadeOut(function () {\n                $(this).remove();\n            });\n            n();\n        });\n    },\n\n    defaultFocusPoint: function (imageWidth, imageHeight) {\n\n        if (loc.get('portrait_default_top') &&\n            this.isImagePortrait(imageWidth, imageHeight)) {\n\n            return [0.5, 0];\n        }\n\n        return loc.get('default_fp');\n    },\n\n    isImagePortrait: function (imageWidth, imageHeight) {\n\n        return ( imageWidth + ( imageHeight * 0.14 ) ) < imageHeight;\n    }\n};\nvar cache = {\n    storage: {},\n\n    add: function (name, data, group) {\n\n        if (helper.isUndefined(cache[group]))\n            cache[group] = {};\n\n        cache[group][name] = data;\n    },\n\n    get: function (name, group) {\n\n        if (this.exist(name, group)) {\n\n            return cache[group][name];\n        }\n    },\n\n    exist: function (name, group) {\n\n        return !helper.isUndefined(cache[group]) && !helper.isUndefined(cache[group][name]);\n    }\n};\n\n\nvar UI = {\n\n    is_blocked: function ($element) {\n\n        return !!$element.data('bc-el-blocked');\n    },\n\n    block: function ($element) {\n\n        if (this.is_blocked($element)) {\n            return;\n        }\n\n        $element.data('bc-el-blocked', true);\n\n        $element.prepend('<div class=\"bc-block-overlay\" style=\"z-index:10;display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0;display:none;position: absolute;background:rgba(255,255,255,0.4)\"></div>');\n\n        $(\".bc-block-overlay\").fadeIn();\n    },\n\n\n    unblock: function ($element) {\n\n        if (!this.is_blocked($element)) {\n            return;\n        }\n\n        $element.data('bc-el-blocked', false);\n\n        $(\".bc-block-overlay\").fadeOut(function () {\n            $(this).remove();\n        });\n    },\n};\n\n\nvar loc = {\n\n    get: function (loc) {\n\n        if (!loc) {\n            return;\n        }\n\n        if (loc.indexOf('.') == -1) {\n\n            return st_loc[loc];\n        }\n\n        var _v = loc.split('.');\n        var current = st_loc[_v[0]];\n        _v = _v.splice(1);\n\n        var len = _v.length - 1;\n\n        for (var i = 0; i <= len; i++) {\n\n            if (typeof current[_v[i]] !== 'object' && i !== len) {\n                return;\n            }\n\n            current = current[_v[i]];\n        }\n\n        return current;\n    },\n\n    translate: function (index) {\n\n        return this.get('translate.' + index);\n    }\n};","var previewData = {\n\n    get: function (attachmentId, securityNonce) {\n\n        return $.Deferred(function (deferred) {\n\n            if (cache.exist(attachmentId, 'selector-data')) {\n\n                deferred.resolveWith(this, [cache.get(attachmentId, 'selector-data')]);\n\n                return;\n            }\n\n            var ajax = wp.ajax.post('bt-preview-thumbnails', {\n                thumbnail_id: attachmentId,\n                nonce: securityNonce\n            });\n\n            ajax.done(function (res) {\n                cache.add(attachmentId, res, 'selector-data');\n                deferred.resolveWith(this, [res]);\n            });\n\n            ajax.fail(function () {\n\n                deferred.rejectWith(this);\n            });\n        }).promise();\n    },\n};","var previewModal = {\n\n    info: {},\n\n    setup: function (info) {\n\n        this.info = info;\n\n        this.open();\n    },\n\n    open: function () {\n\n        var self = this;\n\n        if (!self.info.images) {\n            return;\n        }\n\n\n        $.bs_selector_modal({\n            bsModal: {\n                destroyHtml: true,\n                show: true\n            },\n\n            noSidebar: true,\n\n            id: 'bt-thumbnil-selector',\n            modalClass: 'bt-modal',\n\n            itemInnerHtml: '<div class=\"bf-item-container\">\\n    <figure>\\n        <img src=\"{{img}}\"\\n             alt=\"{{label}}\"\\n             class=\"bs-style-thumbnail\" data-current-image=\"{{current_img}}\">\\n    </figure>\\n</div>',\n\n            content: self.info.l10n,\n            items: self.info.images.map(self.noCacheImage),\n\n            itemsGroupSize: 9,\n\n            events: {}\n        }, {\n            initialZIndex: 209901\n        });\n    },\n\n    noCacheImage: function (obj) {\n\n        obj.img += \"?\" + new Date().getTime();\n\n        return obj;\n    }\n};","var focusPoint = {\n\n    markerArea: 10,\n\n    isMouseDown: false,\n    $element: false,\n    $container: false,\n\n    options: {},\n\n    events: {},\n\n    setup: function (options, events) {\n\n        this.events = events || {};\n        this.options = options || {};\n\n        this.prepare();\n        this.bindEvents();\n    },\n\n    prepare: function () {\n\n        this.$element = this.options.$el;\n        this.$element.wrap(\"<div class='bt-focus-point'></div>\");\n        //\n        this.$container = this.$element.parent();\n        this.$container.append('<div class=\"bt-focus-point-marker\"></div>');\n\n        if (this.options.defaultPosition) {\n            this.fixMarkerPosition(this.options.defaultPosition);\n        }\n\n        if (this.options.grid) {\n            this.appendGrid();\n        }\n\n    },\n\n    handle_event: function (event) {\n        var args = Array.prototype.slice.call(arguments, 1);\n\n        if (typeof this.events[event] === 'function')\n            return this.events[event].apply(this, args);\n    },\n\n    appendGrid: function () {\n\n        var $grid = $(\"<div>\", {\"class\": \"grid\"}).insertAfter(this.$container.find('img'));\n\n        $grid.html('<div class=\"x1\"></div>\\n<div class=\"x2\"></div>\\n\\n<div class=\"y1\"></div>\\n<div class=\"y2\"></div>');\n    },\n\n    fixMarkerPosition: function (pos) {\n\n        var x = parseFloat(pos[0]),\n            y = parseFloat(pos[1]);\n\n        if (!(x >= 0 && x <= 1)) {\n            return;\n        }\n\n        if (!(y >= 0 && y <= 1)) {\n            return;\n        }\n\n        var $img = this.$container.find('img');\n        var markerArea = this.markerArea;\n\n        $(\".bt-focus-point-marker\", this.$container).css({\n            top: Math.floor($img.height() * y) - markerArea,\n            left: Math.floor($img.width() * x) - markerArea\n        });\n    },\n\n    bindEvents: function () {\n\n        var self = this;\n\n        var markerArea = this.markerArea,\n            $marker = $(\".bt-focus-point-marker\", this.$container);\n\n        var $markerWrapper = (function () {\n\n            var $m = self.options.parentSelector ? $(\".bt-focus-point-marker\", this.$container).closest(self.options.parentSelector) : '';\n\n            if ($m && $m.length) {\n                return $m;\n            }\n\n            return $(\".bt-focus-point-marker\", this.$container);\n\n        })();\n\n        $marker.mousedown(function () {\n\n            self.isMouseDown = true;\n        });\n\n        $(\".bt-focus-point\").mousedown(function (e) {\n\n            self.isMouseDown = true;\n\n            $(document).trigger('mousemove.bt-focus-point', [e.pageX, e.pageY]);\n        });\n\n\n        $markerWrapper.mouseup(function () {\n\n            if (!self.isMouseDown) {\n                return;\n            }\n\n            self.isMouseDown = false;\n\n\n            var top = parseInt($marker.css('top').replace('px', '')),\n                left = parseInt($marker.css('left').replace('px', ''));\n\n            var topPercent = Math.ceil((top + markerArea) / (self.$container.find('img').height() / 100)),\n                leftPercent = Math.ceil((left + markerArea) / (self.$container.find('img').width() / 100));\n\n\n            self.handle_event('done', Math.min(leftPercent, 100), Math.min(topPercent, 100));\n        });\n\n        var offset = this.$container.offset();\n\n        if (!offset) {\n            throw 'cannot initialize image focus point';\n        }\n\n        $(document).on('mousemove.bt-focus-point', function (e, pageX, pageY) {\n\n            if (!self.isMouseDown) {\n                return;\n            }\n\n            pageX = pageX || e.pageX;\n            pageY = pageY || e.pageY;\n\n            var x = pageX - offset.left - markerArea,\n                y = pageY - offset.top - markerArea;\n\n\n            var $img = self.$container.find('img'),\n                box = {\n\n                    top: $img.height() - markerArea,\n                    left: $img.width() - markerArea,\n                };\n\n            y = Math.max(-markerArea, y);\n            y = Math.min(box.top, y);\n\n            x = Math.max(-markerArea, x);\n            x = Math.min(box.left, x);\n\n            $marker.css({\n                top: Math.floor(y),\n                left: Math.floor(x),\n            });\n        });\n    }\n};","var mediaModal = {\n\n    initialized: false,\n    $context: '',\n\n    setup: function () {\n\n        if (!wp || !wp.media) {\n            return;\n        }\n\n        var self = this;\n\n        if (wp.media.featuredImage && wp.media.featuredImage.frame) {\n\n            this.initFeaturedImageModal();\n        }\n\n        if (wp.media.frames && self.isUploadPage()) {\n\n            $(document).one('click', \".media-frame-content li.attachment\", function () {\n\n                setTimeout(function () {\n                    self.initMediaLibraryModal();\n\n                    self.initFocusPoint();\n                    self.appendPreviewButton($(\".attachment-actions .button\", self.$context));\n                });\n            });\n        }\n    },\n\n    initFeaturedImageModal: function () {\n\n        var self = this;\n\n        var frame = wp.media.featuredImage.frame();\n        frame.on('ready', function () {\n\n            if (self.initialized) {\n                return;\n            }\n\n            self.$context = this.models[0].frame.$el;\n            self.initialized = true;\n\n            wp.Uploader.queue.on('reset', function () { // Upload completed\n\n                setTimeout(function () {\n                    self.initFocusPoint();\n                    self.appendPreviewLink();\n                })\n            });\n        });\n\n        frame.on('selection:toggle', function () { // Image selected\n\n            self.initFocusPoint();\n            self.appendPreviewLink();\n        });\n    },\n\n    initMediaLibraryModal: function () {\n\n        var self = this;\n\n        wp.media.frames.edit.on('refresh', function (e) {\n\n            self.initFocusPoint();\n            self.appendPreviewButton($(\".attachment-actions .button\", self.$context));\n        });\n    },\n\n    initFocusPoint: function () {\n\n        focusPoint.setup({\n                $el: $(\".thumbnail-image img\", this.$context),\n                parentSelector: \".media-frame-content\",\n                grid: loc.get(\"grid\"),\n                defaultPosition: this.getFocusPoint()\n            },\n            {\n                done: $.proxy(this.saveFocusPoint, this)\n            }\n        );\n    },\n\n    appendPreviewLink: function () {\n\n        var self = this,\n            link = \"<div class='preview-thumbnails'><a href='#'>\" + loc.translate('preview') + \"</a></div>\";\n\n        var $link = $(link).insertAfter($(\".attachment-info .edit-attachment\", this.$context));\n\n        $link.on('click', function (e) {\n            e.preventDefault();\n\n            self.previewModal();\n        });\n    },\n\n    appendPreviewButton: function ($afterEl) {\n\n        var self = this,\n            link = \"<input type='button' class='button preview-images-btn' value='\" + loc.translate('preview') + \"'>\";\n\n        var $link = $(link).insertAfter($afterEl);\n\n        $link.on('click', function (e) {\n            e.preventDefault();\n\n            self.previewModal();\n        });\n    },\n\n    previewModal: function () {\n\n        var self = this;\n\n        self.loading('start');\n\n        var ajax = previewData.get(self.attachmentId(), self.securityNonce());\n\n        ajax.done(function (res) {\n\n            if (!helper.isUndefined(res.data))\n                previewModal.setup(res.data);\n        });\n\n        ajax.always(function () {\n\n            self.loading('stop');\n        });\n\n    },\n\n    saveFocusPoint: function (topPercent, leftPercent) {\n\n        this.regenerateThumbnails(topPercent, leftPercent);\n        this.setFocusPoint(topPercent / 100, leftPercent / 100);\n    },\n\n    regenerateThumbnails: function (topPercent, leftPercent) {\n\n        var self = this;\n\n        var attachment_id = self.attachmentId();\n\n        self.loading('start');\n\n        var ajax = wp.ajax.post('bt-regenerate-thumbnails', {\n            thumbnail_id: attachment_id,\n            nonce: self.securityNonce(),\n            focus_x: topPercent,\n            focus_y: leftPercent,\n        });\n\n        ajax.done(function (res) {\n\n            if (!helper.isUndefined(res.message)) {\n\n                var $msgParent = self.isUploadPage() ? $(\".thumbnail-image\", self.$context) : $(\".attachment-info\", self.$context);\n\n                helper.notify($msgParent, res.message);\n            }\n        });\n\n        ajax.always(function () {\n\n            self.loading('stop');\n        });\n    },\n\n    loading: function (state) {\n\n        switch (state) {\n\n            case 'start':\n\n                UI.block($(\".attachment-info\", this.$context));\n\n                break;\n\n            case 'stop':\n                UI.unblock($(\".attachment-info\", this.$context));\n\n                break;\n        }\n    },\n\n    attachmentId: function () {\n\n        if (this.isUploadPage()) {\n\n            return $(\".attachment-details\", this.$context).data('id');\n\n        } else {\n\n            return $(\".attachment.selected\", this.$context).data('id');\n        }\n    },\n\n\n    isUploadPage: function () {\n        return $(document.body).hasClass('upload-php');\n    },\n\n    securityNonce: function () {\n        return $(\".bt-regenerate-nonce\", this.$context).val();\n    },\n\n    getFocusPoint: function () {\n\n        var $attachment = $(\".attachment.selected\", this.$context),\n            point = $attachment.data('focus-point');\n\n        return point ? point.split('-') : this.getDefaultFocusPoint();\n\n    },\n    setFocusPoint: function (top, left) {\n\n        $(\".attachment.selected\", this.$context).data(\"focus-point\", top + \"-\" + left);\n    },\n    getDefaultFocusPoint: function () {\n\n        var point = $(\".bt-focus-point-xy\", this.$context).val(),\n            $img = $(\".thumbnail-image img\", this.$context);\n\n        return point && point.indexOf('-') > -1 ? point.split('-') : helper.defaultFocusPoint($img.width(), $img.height());\n    }\n};\n\nmediaModal.setup();\n","var mediaLibPage = {\n\n    initialized: false,\n    $context: '',\n\n    $img: '',\n\n    setup: function () {\n\n        if (!wp || !wp.media) {\n            return;\n        }\n\n        var $body = $(document.body);\n\n        this.$context = $body;\n\n        if (!$body.hasClass('post-type-attachment') || !$body.hasClass('post-php')) {\n            return\n        }\n\n        this.$img = $(\".wp_attachment_image img.thumbnail\", this.$context);\n\n        this.editAttachmentPage();\n    },\n\n    editAttachmentPage: function () {\n\n        this.initFocusPoint();\n\n        this.appendPreviewButton($(\".wp_attachment_image .button\", this.$context));\n    },\n\n    initFocusPoint: function () {\n\n        focusPoint.setup({\n                $el: this.$img,\n                parentSelector: \"#wpbody-content\",\n\n                grid: loc.get(\"grid\"),\n                defaultPosition: this.getFocusPoint()\n            }, {\n                done: $.proxy(this.saveFocusPoint, this)\n            }\n        );\n    },\n\n\n    appendPreviewButton: function ($afterEl) {\n\n        var self = this,\n            link = \"<input type='button' class='button preview-images-btn' value='\" + loc.translate('preview') + \"'>\";\n\n        var $link = $(link).insertAfter($afterEl);\n\n        $link.on('click', function (e) {\n            e.preventDefault();\n\n            self.previewModal();\n        });\n    },\n\n    previewModal: function () {\n\n        var self = this;\n\n        self.loading('start');\n\n        var ajax = previewData.get(self.attachmentId(), self.securityNonce());\n\n        ajax.done(function (res) {\n\n            if (!helper.isUndefined(res.data))\n                previewModal.setup(res.data);\n        });\n\n        ajax.always(function () {\n\n            self.loading('stop');\n        });\n\n    },\n\n    saveFocusPoint: function (topPercent, leftPercent) {\n\n        this.regenerateThumbnails(topPercent, leftPercent);\n        this.setFocusPoint(topPercent / 100, leftPercent / 100);\n    },\n\n    regenerateThumbnails: function (topPercent, leftPercent) {\n\n        var self = this;\n\n        var attachment_id = self.attachmentId();\n\n        self.loading('start');\n\n        var ajax = wp.ajax.post('bt-regenerate-thumbnails', {\n            thumbnail_id: attachment_id,\n            nonce: self.securityNonce(),\n            focus_x: topPercent,\n            focus_y: leftPercent,\n        });\n\n        ajax.done(function (res) {\n\n            if (!helper.isUndefined(res.message)) {\n\n                helper.notify($(\".wp_attachment_holder\", this.$context), res.message);\n            }\n        });\n\n        ajax.always(function () {\n\n            self.loading('stop');\n        });\n    },\n\n    loading: function (state) {\n\n        switch (state) {\n\n            case 'start':\n\n                UI.block($(\".wp_attachment_holder\", this.$context));\n\n                break;\n\n            case 'stop':\n                UI.unblock($(\".wp_attachment_holder\", this.$context));\n\n                break;\n        }\n    },\n\n    attachmentId: function () {\n\n        return $(\"#post_ID\", this.$context).val();\n    },\n\n\n    securityNonce: function () {\n\n        return $(\".bt-regenerate-nonce\", this.$context).val();\n    },\n\n    getFocusPoint: function () {\n\n        return this.getDefaultFocusPoint();\n    },\n\n    setFocusPoint: function (top, left) {\n\n        $(\".attachment.selected\", this.$context).data(\"focus-point\", top + \"-\" + left);\n    },\n\n    getDefaultFocusPoint: function () {\n\n        var point = $(\".bt-focus-point-xy\", this.$context).val();\n\n        return point && point.indexOf('-') > -1 ? point.split('-') : helper.defaultFocusPoint(this.$img.width(), this.$img.height());\n    }\n};\n\nmediaLibPage.setup();\n","});"]}

F1le Man4ger