UNPKG

filestack-js

Version:

Official JavaScript library for Filestack

90 lines (88 loc) 10.3 kB
"use strict"; /* * Copyright (c) 2018 by Filestack. * Some rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.preview = exports.getUrl = void 0; var tslib_1 = require("tslib"); var utils_1 = require("../utils"); var schema_1 = require("./../../schema"); var filestack_error_1 = require("./../../filestack_error"); /** * Returns file preview url * * @private * @param session * @param handle * @param opts * @param security */ var getUrl = function (session, handle, opts, security) { var options = tslib_1.__assign({}, opts); var policy = security && security.policy || session.policy; var signature = security && security.signature || session.signature; var hasSecurity = signature && policy; var baseUrl = [session.urls.cdnUrl]; var css = options.css && encodeURIComponent("\"".concat(options.css, "\"")); var previewTask = css ? "preview=css:".concat(css) : 'preview'; // @todo move to utils? if (handle.indexOf('src:') !== -1) { baseUrl.push("".concat(session.apikey, "/").concat(previewTask)); } else { baseUrl.push(previewTask); } if (hasSecurity) { baseUrl.push("security=policy:".concat(policy, ",signature:").concat(signature)); } baseUrl.push(handle); return baseUrl.join('/'); }; exports.getUrl = getUrl; /** * Appends image preview into page * * @private * @param session * @param handle * @param opts */ var preview = function (session, handle, opts) { if (!handle || typeof handle !== 'string') { throw new Error('A valid Filestack handle or storage alias is required for preview'); } var validateRes = (0, schema_1.getValidator)(schema_1.PreviewParamsSchema)(opts); if (validateRes.errors.length) { throw new filestack_error_1.FilestackError("Invalid preview params", validateRes.errors, filestack_error_1.FilestackErrorType.VALIDATION); } var options = (0, utils_1.removeEmpty)(opts || {}); var url = (0, exports.getUrl)(session, handle, options); if (options && options.id) { var id = options.id; var iframe = document.createElement('iframe'); var domElement = document.getElementById(id); iframe.src = url; iframe.width = '100%'; iframe.height = '100%'; if (!domElement) { throw new Error("DOM Element with id \"".concat(id, "\" not found.")); } return domElement.appendChild(iframe); } return window.open(url, handle); }; exports.preview = preview; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXBpL3ByZXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRzs7OztBQUdILGtDQUF1QztBQUN2Qyx5Q0FBbUU7QUFDbkUsMkRBQTZFO0FBYzdFOzs7Ozs7OztHQVFHO0FBQ0ksSUFBTSxNQUFNLEdBQUcsVUFDcEIsT0FBZ0IsRUFDaEIsTUFBYyxFQUNkLElBQVUsRUFDVixRQUFtQjtJQUVuQixJQUFNLE9BQU8sd0JBQVEsSUFBSSxDQUFFLENBQUM7SUFDNUIsSUFBTSxNQUFNLEdBQUcsUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUM3RCxJQUFNLFNBQVMsR0FBRyxRQUFRLElBQUksUUFBUSxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDO0lBQ3RFLElBQU0sV0FBVyxHQUFHLFNBQVMsSUFBSSxNQUFNLENBQUM7SUFDeEMsSUFBTSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLElBQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksa0JBQWtCLENBQUMsWUFBSSxPQUFPLENBQUMsR0FBRyxPQUFHLENBQUMsQ0FBQztJQUNsRSxJQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLHNCQUFlLEdBQUcsQ0FBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFM0QsdUJBQXVCO0lBQ3ZCLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUNqQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQUcsT0FBTyxDQUFDLE1BQU0sY0FBSSxXQUFXLENBQUUsQ0FBQyxDQUFDO0tBQ2xEO1NBQU07UUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBQzNCO0lBQ0QsSUFBSSxXQUFXLEVBQUU7UUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLDBCQUFtQixNQUFNLHdCQUFjLFNBQVMsQ0FBRSxDQUFDLENBQUM7S0FDbEU7SUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQixDQUFDLENBQUM7QUExQlcsUUFBQSxNQUFNLFVBMEJqQjtBQUVGOzs7Ozs7O0dBT0c7QUFDSSxJQUFNLE9BQU8sR0FBRyxVQUFDLE9BQWdCLEVBQUUsTUFBZSxFQUFFLElBQXFCO0lBQzlFLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFO1FBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUVBQW1FLENBQUMsQ0FBQztLQUN0RjtJQUVELElBQU0sV0FBVyxHQUFHLElBQUEscUJBQVksRUFBQyw0QkFBbUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTVELElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDN0IsTUFBTSxJQUFJLGdDQUFjLENBQUMsd0JBQXdCLEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxvQ0FBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUN2RztJQUVELElBQU0sT0FBTyxHQUFHLElBQUEsbUJBQVcsRUFBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEMsSUFBTSxHQUFHLEdBQUcsSUFBQSxjQUFNLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUU3QyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFO1FBQ3pCLElBQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDdEIsSUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxJQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRS9DLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBRXZCLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUF3QixFQUFFLGtCQUFjLENBQUMsQ0FBQztTQUMzRDtRQUNELE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN2QztJQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEMsQ0FBQyxDQUFDO0FBN0JXLFFBQUEsT0FBTyxXQTZCbEIiLCJmaWxlIjoibGliL2FwaS9wcmV2aWV3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOCBieSBGaWxlc3RhY2suXG4gKiBTb21lIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgU2VjdXJpdHksIFNlc3Npb24gfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHsgcmVtb3ZlRW1wdHkgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBnZXRWYWxpZGF0b3IsIFByZXZpZXdQYXJhbXNTY2hlbWEgfSBmcm9tICcuLy4uLy4uL3NjaGVtYSc7XG5pbXBvcnQgeyBGaWxlc3RhY2tFcnJvciwgRmlsZXN0YWNrRXJyb3JUeXBlIH0gZnJvbSAnLi8uLi8uLi9maWxlc3RhY2tfZXJyb3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXZpZXdPcHRpb25zIHtcbiAgLyoqXG4gICAqIElkIGZvciBET00gZWxlbWVudCB0byBlbWJlZCBwcmV2aWV3IGludG8uXG4gICAqIE9taXQgdGhpcyB0byBvcGVuIHRoZSBwcmV2aWV3IGluIGEgbmV3IHRhYlxuICAgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFVSTCB0byBjdXN0b20gQ1NTXG4gICAqL1xuICBjc3M/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmV0dXJucyBmaWxlIHByZXZpZXcgdXJsXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBzZXNzaW9uXG4gKiBAcGFyYW0gaGFuZGxlXG4gKiBAcGFyYW0gb3B0c1xuICogQHBhcmFtIHNlY3VyaXR5XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRVcmwgPSAoXG4gIHNlc3Npb246IFNlc3Npb24sXG4gIGhhbmRsZTogc3RyaW5nLFxuICBvcHRzPzogYW55LFxuICBzZWN1cml0eT86IFNlY3VyaXR5XG4pID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHsgLi4ub3B0cyB9O1xuICBjb25zdCBwb2xpY3kgPSBzZWN1cml0eSAmJiBzZWN1cml0eS5wb2xpY3kgfHwgc2Vzc2lvbi5wb2xpY3k7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IHNlY3VyaXR5ICYmIHNlY3VyaXR5LnNpZ25hdHVyZSB8fCBzZXNzaW9uLnNpZ25hdHVyZTtcbiAgY29uc3QgaGFzU2VjdXJpdHkgPSBzaWduYXR1cmUgJiYgcG9saWN5O1xuICBjb25zdCBiYXNlVXJsID0gW3Nlc3Npb24udXJscy5jZG5VcmxdO1xuICBjb25zdCBjc3MgPSBvcHRpb25zLmNzcyAmJiBlbmNvZGVVUklDb21wb25lbnQoYFwiJHtvcHRpb25zLmNzc31cImApO1xuICBjb25zdCBwcmV2aWV3VGFzayA9IGNzcyA/IGBwcmV2aWV3PWNzczoke2Nzc31gIDogJ3ByZXZpZXcnO1xuXG4gIC8vIEB0b2RvIG1vdmUgdG8gdXRpbHM/XG4gIGlmIChoYW5kbGUuaW5kZXhPZignc3JjOicpICE9PSAtMSkge1xuICAgIGJhc2VVcmwucHVzaChgJHtzZXNzaW9uLmFwaWtleX0vJHtwcmV2aWV3VGFza31gKTtcbiAgfSBlbHNlIHtcbiAgICBiYXNlVXJsLnB1c2gocHJldmlld1Rhc2spO1xuICB9XG4gIGlmIChoYXNTZWN1cml0eSkge1xuICAgIGJhc2VVcmwucHVzaChgc2VjdXJpdHk9cG9saWN5OiR7cG9saWN5fSxzaWduYXR1cmU6JHtzaWduYXR1cmV9YCk7XG4gIH1cblxuICBiYXNlVXJsLnB1c2goaGFuZGxlKTtcbiAgcmV0dXJuIGJhc2VVcmwuam9pbignLycpO1xufTtcblxuLyoqXG4gKiBBcHBlbmRzIGltYWdlIHByZXZpZXcgaW50byBwYWdlXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBzZXNzaW9uXG4gKiBAcGFyYW0gaGFuZGxlXG4gKiBAcGFyYW0gb3B0c1xuICovXG5leHBvcnQgY29uc3QgcHJldmlldyA9IChzZXNzaW9uOiBTZXNzaW9uLCBoYW5kbGU/OiBzdHJpbmcsIG9wdHM/OiBQcmV2aWV3T3B0aW9ucykgPT4ge1xuICBpZiAoIWhhbmRsZSB8fCB0eXBlb2YgaGFuZGxlICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignQSB2YWxpZCBGaWxlc3RhY2sgaGFuZGxlIG9yIHN0b3JhZ2UgYWxpYXMgaXMgcmVxdWlyZWQgZm9yIHByZXZpZXcnKTtcbiAgfVxuXG4gIGNvbnN0IHZhbGlkYXRlUmVzID0gZ2V0VmFsaWRhdG9yKFByZXZpZXdQYXJhbXNTY2hlbWEpKG9wdHMpO1xuXG4gIGlmICh2YWxpZGF0ZVJlcy5lcnJvcnMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEZpbGVzdGFja0Vycm9yKGBJbnZhbGlkIHByZXZpZXcgcGFyYW1zYCwgdmFsaWRhdGVSZXMuZXJyb3JzLCBGaWxlc3RhY2tFcnJvclR5cGUuVkFMSURBVElPTik7XG4gIH1cblxuICBjb25zdCBvcHRpb25zID0gcmVtb3ZlRW1wdHkob3B0cyB8fCB7fSk7XG4gIGNvbnN0IHVybCA9IGdldFVybChzZXNzaW9uLCBoYW5kbGUsIG9wdGlvbnMpO1xuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaWQpIHtcbiAgICBjb25zdCBpZCA9IG9wdGlvbnMuaWQ7XG4gICAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gICAgY29uc3QgZG9tRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcblxuICAgIGlmcmFtZS5zcmMgPSB1cmw7XG4gICAgaWZyYW1lLndpZHRoID0gJzEwMCUnO1xuICAgIGlmcmFtZS5oZWlnaHQgPSAnMTAwJSc7XG5cbiAgICBpZiAoIWRvbUVsZW1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRE9NIEVsZW1lbnQgd2l0aCBpZCBcIiR7aWR9XCIgbm90IGZvdW5kLmApO1xuICAgIH1cbiAgICByZXR1cm4gZG9tRWxlbWVudC5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICB9XG4gIHJldHVybiB3aW5kb3cub3Blbih1cmwsIGhhbmRsZSk7XG59O1xuIl19