UNPKG

filestack-js

Version:

Official JavaScript library for Filestack

85 lines (83 loc) 10.2 kB
/* * 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. */ import { __assign } from "tslib"; import { removeEmpty } from '../utils'; import { getValidator, PreviewParamsSchema } from './../../schema'; import { FilestackError, FilestackErrorType } from './../../filestack_error'; /** * Returns file preview url * * @private * @param session * @param handle * @param opts * @param security */ export var getUrl = function (session, handle, opts, security) { var options = __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('/'); }; /** * Appends image preview into page * * @private * @param session * @param handle * @param opts */ export 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 = getValidator(PreviewParamsSchema)(opts); if (validateRes.errors.length) { throw new FilestackError("Invalid preview params", validateRes.errors, FilestackErrorType.VALIDATION); } var options = removeEmpty(opts || {}); var url = 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); }; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXBpL3ByZXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHOztBQUdILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQWM3RTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxJQUFNLE1BQU0sR0FBRyxVQUNwQixPQUFnQixFQUNoQixNQUFjLEVBQ2QsSUFBVSxFQUNWLFFBQW1CO0lBRW5CLElBQU0sT0FBTyxnQkFBUSxJQUFJLENBQUUsQ0FBQztJQUM1QixJQUFNLE1BQU0sR0FBRyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQzdELElBQU0sU0FBUyxHQUFHLFFBQVEsSUFBSSxRQUFRLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDdEUsSUFBTSxXQUFXLEdBQUcsU0FBUyxJQUFJLE1BQU0sQ0FBQztJQUN4QyxJQUFNLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsSUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxZQUFJLE9BQU8sQ0FBQyxHQUFHLE9BQUcsQ0FBQyxDQUFDO0lBQ2xFLElBQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsc0JBQWUsR0FBRyxDQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUUzRCx1QkFBdUI7SUFDdkIsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1FBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBRyxPQUFPLENBQUMsTUFBTSxjQUFJLFdBQVcsQ0FBRSxDQUFDLENBQUM7S0FDbEQ7U0FBTTtRQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDM0I7SUFDRCxJQUFJLFdBQVcsRUFBRTtRQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsMEJBQW1CLE1BQU0sd0JBQWMsU0FBUyxDQUFFLENBQUMsQ0FBQztLQUNsRTtJQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLENBQUMsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsSUFBTSxPQUFPLEdBQUcsVUFBQyxPQUFnQixFQUFFLE1BQWUsRUFBRSxJQUFxQjtJQUM5RSxJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtRQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7S0FDdEY7SUFFRCxJQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUU1RCxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQzdCLE1BQU0sSUFBSSxjQUFjLENBQUMsd0JBQXdCLEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUN2RztJQUVELElBQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEMsSUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFN0MsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRTtRQUN6QixJQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3RCLElBQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsSUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUvQyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNqQixNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUN0QixNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUV2QixJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBd0IsRUFBRSxrQkFBYyxDQUFDLENBQUM7U0FDM0Q7UUFDRCxPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDdkM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQyIsImZpbGUiOiJsaWIvYXBpL3ByZXZpZXcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4IGJ5IEZpbGVzdGFjay5cbiAqIFNvbWUgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBTZWN1cml0eSwgU2Vzc2lvbiB9IGZyb20gJy4uL2NsaWVudCc7XG5pbXBvcnQgeyByZW1vdmVFbXB0eSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGdldFZhbGlkYXRvciwgUHJldmlld1BhcmFtc1NjaGVtYSB9IGZyb20gJy4vLi4vLi4vc2NoZW1hJztcbmltcG9ydCB7IEZpbGVzdGFja0Vycm9yLCBGaWxlc3RhY2tFcnJvclR5cGUgfSBmcm9tICcuLy4uLy4uL2ZpbGVzdGFja19lcnJvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJldmlld09wdGlvbnMge1xuICAvKipcbiAgICogSWQgZm9yIERPTSBlbGVtZW50IHRvIGVtYmVkIHByZXZpZXcgaW50by5cbiAgICogT21pdCB0aGlzIHRvIG9wZW4gdGhlIHByZXZpZXcgaW4gYSBuZXcgdGFiXG4gICAqL1xuICBpZDogc3RyaW5nO1xuICAvKipcbiAgICogVVJMIHRvIGN1c3RvbSBDU1NcbiAgICovXG4gIGNzcz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGZpbGUgcHJldmlldyB1cmxcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHNlc3Npb25cbiAqIEBwYXJhbSBoYW5kbGVcbiAqIEBwYXJhbSBvcHRzXG4gKiBAcGFyYW0gc2VjdXJpdHlcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFVybCA9IChcbiAgc2Vzc2lvbjogU2Vzc2lvbixcbiAgaGFuZGxlOiBzdHJpbmcsXG4gIG9wdHM/OiBhbnksXG4gIHNlY3VyaXR5PzogU2VjdXJpdHlcbikgPT4ge1xuICBjb25zdCBvcHRpb25zID0geyAuLi5vcHRzIH07XG4gIGNvbnN0IHBvbGljeSA9IHNlY3VyaXR5ICYmIHNlY3VyaXR5LnBvbGljeSB8fCBzZXNzaW9uLnBvbGljeTtcbiAgY29uc3Qgc2lnbmF0dXJlID0gc2VjdXJpdHkgJiYgc2VjdXJpdHkuc2lnbmF0dXJlIHx8IHNlc3Npb24uc2lnbmF0dXJlO1xuICBjb25zdCBoYXNTZWN1cml0eSA9IHNpZ25hdHVyZSAmJiBwb2xpY3k7XG4gIGNvbnN0IGJhc2VVcmwgPSBbc2Vzc2lvbi51cmxzLmNkblVybF07XG4gIGNvbnN0IGNzcyA9IG9wdGlvbnMuY3NzICYmIGVuY29kZVVSSUNvbXBvbmVudChgXCIke29wdGlvbnMuY3NzfVwiYCk7XG4gIGNvbnN0IHByZXZpZXdUYXNrID0gY3NzID8gYHByZXZpZXc9Y3NzOiR7Y3NzfWAgOiAncHJldmlldyc7XG5cbiAgLy8gQHRvZG8gbW92ZSB0byB1dGlscz9cbiAgaWYgKGhhbmRsZS5pbmRleE9mKCdzcmM6JykgIT09IC0xKSB7XG4gICAgYmFzZVVybC5wdXNoKGAke3Nlc3Npb24uYXBpa2V5fS8ke3ByZXZpZXdUYXNrfWApO1xuICB9IGVsc2Uge1xuICAgIGJhc2VVcmwucHVzaChwcmV2aWV3VGFzayk7XG4gIH1cbiAgaWYgKGhhc1NlY3VyaXR5KSB7XG4gICAgYmFzZVVybC5wdXNoKGBzZWN1cml0eT1wb2xpY3k6JHtwb2xpY3l9LHNpZ25hdHVyZToke3NpZ25hdHVyZX1gKTtcbiAgfVxuXG4gIGJhc2VVcmwucHVzaChoYW5kbGUpO1xuICByZXR1cm4gYmFzZVVybC5qb2luKCcvJyk7XG59O1xuXG4vKipcbiAqIEFwcGVuZHMgaW1hZ2UgcHJldmlldyBpbnRvIHBhZ2VcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHNlc3Npb25cbiAqIEBwYXJhbSBoYW5kbGVcbiAqIEBwYXJhbSBvcHRzXG4gKi9cbmV4cG9ydCBjb25zdCBwcmV2aWV3ID0gKHNlc3Npb246IFNlc3Npb24sIGhhbmRsZT86IHN0cmluZywgb3B0cz86IFByZXZpZXdPcHRpb25zKSA9PiB7XG4gIGlmICghaGFuZGxlIHx8IHR5cGVvZiBoYW5kbGUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBIHZhbGlkIEZpbGVzdGFjayBoYW5kbGUgb3Igc3RvcmFnZSBhbGlhcyBpcyByZXF1aXJlZCBmb3IgcHJldmlldycpO1xuICB9XG5cbiAgY29uc3QgdmFsaWRhdGVSZXMgPSBnZXRWYWxpZGF0b3IoUHJldmlld1BhcmFtc1NjaGVtYSkob3B0cyk7XG5cbiAgaWYgKHZhbGlkYXRlUmVzLmVycm9ycy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRmlsZXN0YWNrRXJyb3IoYEludmFsaWQgcHJldmlldyBwYXJhbXNgLCB2YWxpZGF0ZVJlcy5lcnJvcnMsIEZpbGVzdGFja0Vycm9yVHlwZS5WQUxJREFUSU9OKTtcbiAgfVxuXG4gIGNvbnN0IG9wdGlvbnMgPSByZW1vdmVFbXB0eShvcHRzIHx8IHt9KTtcbiAgY29uc3QgdXJsID0gZ2V0VXJsKHNlc3Npb24sIGhhbmRsZSwgb3B0aW9ucyk7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5pZCkge1xuICAgIGNvbnN0IGlkID0gb3B0aW9ucy5pZDtcbiAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgICBjb25zdCBkb21FbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuXG4gICAgaWZyYW1lLnNyYyA9IHVybDtcbiAgICBpZnJhbWUud2lkdGggPSAnMTAwJSc7XG4gICAgaWZyYW1lLmhlaWdodCA9ICcxMDAlJztcblxuICAgIGlmICghZG9tRWxlbWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBET00gRWxlbWVudCB3aXRoIGlkIFwiJHtpZH1cIiBub3QgZm91bmQuYCk7XG4gICAgfVxuICAgIHJldHVybiBkb21FbGVtZW50LmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIH1cbiAgcmV0dXJuIHdpbmRvdy5vcGVuKHVybCwgaGFuZGxlKTtcbn07XG4iXX0=