@zodiac-ui/editor
Version:
A rich text editor for Angular based on `@atlaskit/editor-core`.
159 lines • 15.5 kB
JavaScript
import { PluginKey } from 'prosemirror-state';
// import { CardProvider, CardPluginState, Request } from '../types';
// import reducer from './reducers';
// import { EditorView } from 'prosemirror-view';
// import { setProvider, resolveCard } from './actions';
// import inlineCardNodeView from '../nodeviews/inlineCard';
// import blockCardNodeView from '../nodeviews/blockCard';
// import { replaceQueuedUrlWithCard } from './doc';
// import { CardNodeView } from '../nodeviews';
export const pluginKey = new PluginKey('cardPlugin');
//
// export const getPluginState = (editorState: EditorState) =>
// pluginKey.getState(editorState) as CardPluginState | undefined;
//
// const handleResolved = (view: EditorView, request: Request) => resolvedCard => {
// replaceQueuedUrlWithCard(request.url, resolvedCard)(
// view.state,
// view.dispatch,
// );
// return resolvedCard;
// };
//
// const handleRejected = (view: EditorView, request: Request) => rejected => {
// view.dispatch(resolveCard(request.url)(view.state.tr));
// };
//
// export const resolveWithProvider = (
// view: EditorView,
// outstandingRequests,
// provider,
// request: Request,
// ) => {
// const $pos = view.state.doc.resolve(request.pos);
// const { parent } = $pos;
// const isBlock =
// parent.type.name === 'paragraph' &&
// parent.childCount === 1 &&
// parent.firstChild!.type.isText &&
// parent.firstChild!.text === request.url &&
// $pos.node($pos.depth - 1).type.name === 'doc';
//
// outstandingRequests[request.url] = provider
// .resolve(request.url, isBlock ? 'block' : 'inline')
// .then(resolvedCard => {
// delete outstandingRequests[request.url];
// return resolvedCard;
// })
// .then(handleResolved(view, request), handleRejected(view, request));
// };
//
// export const createPlugin = ({
// portalProviderAPI,
// dispatch,
// providerFactory,
// }) =>
// new Plugin({
// state: {
// init(): CardPluginState {
// return {
// requests: [],
// provider: null,
// };
// },
//
// apply(tr, pluginState: CardPluginState) {
// // update all the positions
// const remappedState = {
// ...pluginState,
// requests: pluginState.requests.map(request => ({
// ...request,
// pos: tr.mapping.map(request.pos),
// })),
// };
//
// // apply any actions
// const meta = tr.getMeta(pluginKey);
// if (meta) {
// const nextPluginState = reducer(remappedState, meta);
// return nextPluginState;
// }
//
// return remappedState;
// },
// },
//
// view(view: EditorView) {
// // listen for card provider changes
// const handleProvider = (name, provider) => {
// if (name !== 'cardProvider') {
// return;
// }
//
// provider.then((cardProvider: CardProvider) => {
// const { state, dispatch } = view;
// dispatch(setProvider(cardProvider)(state.tr));
// });
// };
//
// providerFactory.subscribe('cardProvider', handleProvider);
// const outstandingRequests = {};
//
// return {
// update(view: EditorView, prevState: EditorState) {
// const currentState = getPluginState(view.state);
// const oldState = getPluginState(prevState);
//
// if (currentState && currentState.provider) {
// // find requests in this state that weren't in the old one
// const newRequests = oldState
// ? currentState.requests.filter(
// req =>
// !oldState.requests.find(
// oldReq =>
// oldReq.url === req.url && oldReq.pos === req.pos,
// ),
// )
// : currentState.requests;
//
// // ask the CardProvider to resolve all new requests
// const { provider } = currentState;
// newRequests.forEach(request => {
// resolveWithProvider(view, outstandingRequests, provider, request);
// });
// }
// },
//
// destroy() {
// // cancel all outstanding requests
// Object.keys(outstandingRequests).forEach(url =>
// Promise.reject(outstandingRequests[url]),
// );
//
// providerFactory.unsubscribe('cardProvider', handleProvider);
// },
// };
// },
//
// props: {
// nodeViews: {
// inlineCard: CardNodeView.fromComponent(
// inlineCardNodeView,
// portalProviderAPI,
// {
// providerFactory,
// },
// ),
// blockCard: CardNodeView.fromComponent(
// blockCardNodeView,
// portalProviderAPI,
// {
// providerFactory,
// },
// ),
// },
// },
//
// key: pluginKey,
// });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B6b2RpYWMtdWkvZWRpdG9yLyIsInNvdXJjZXMiOlsicGx1Z2lucy9jYXJkL3BtLXBsdWdpbnMvbWFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsU0FBUyxFQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFDbkUscUVBQXFFO0FBQ3JFLG9DQUFvQztBQUNwQyxpREFBaUQ7QUFDakQsd0RBQXdEO0FBQ3hELDREQUE0RDtBQUM1RCwwREFBMEQ7QUFDMUQsb0RBQW9EO0FBQ3BELCtDQUErQztBQUUvQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDckQsRUFBRTtBQUNGLDhEQUE4RDtBQUM5RCxvRUFBb0U7QUFDcEUsRUFBRTtBQUNGLG1GQUFtRjtBQUNuRix5REFBeUQ7QUFDekQsa0JBQWtCO0FBQ2xCLHFCQUFxQjtBQUNyQixPQUFPO0FBQ1AseUJBQXlCO0FBQ3pCLEtBQUs7QUFDTCxFQUFFO0FBQ0YsK0VBQStFO0FBQy9FLDREQUE0RDtBQUM1RCxLQUFLO0FBQ0wsRUFBRTtBQUNGLHVDQUF1QztBQUN2QyxzQkFBc0I7QUFDdEIseUJBQXlCO0FBQ3pCLGNBQWM7QUFDZCxzQkFBc0I7QUFDdEIsU0FBUztBQUNULHNEQUFzRDtBQUN0RCw2QkFBNkI7QUFDN0Isb0JBQW9CO0FBQ3BCLDBDQUEwQztBQUMxQyxpQ0FBaUM7QUFDakMsd0NBQXdDO0FBQ3hDLGlEQUFpRDtBQUNqRCxxREFBcUQ7QUFDckQsRUFBRTtBQUNGLGdEQUFnRDtBQUNoRCwwREFBMEQ7QUFDMUQsOEJBQThCO0FBQzlCLGlEQUFpRDtBQUNqRCw2QkFBNkI7QUFDN0IsU0FBUztBQUNULDJFQUEyRTtBQUMzRSxLQUFLO0FBQ0wsRUFBRTtBQUNGLGlDQUFpQztBQUNqQyx1QkFBdUI7QUFDdkIsY0FBYztBQUNkLHFCQUFxQjtBQUNyQixRQUFRO0FBQ1IsaUJBQWlCO0FBQ2pCLGVBQWU7QUFDZixrQ0FBa0M7QUFDbEMsbUJBQW1CO0FBQ25CLDBCQUEwQjtBQUMxQiw0QkFBNEI7QUFDNUIsYUFBYTtBQUNiLFdBQVc7QUFDWCxFQUFFO0FBQ0Ysa0RBQWtEO0FBQ2xELHNDQUFzQztBQUN0QyxrQ0FBa0M7QUFDbEMsNEJBQTRCO0FBQzVCLDZEQUE2RDtBQUM3RCwwQkFBMEI7QUFDMUIsZ0RBQWdEO0FBQ2hELGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsRUFBRTtBQUNGLCtCQUErQjtBQUMvQiw4Q0FBOEM7QUFDOUMsc0JBQXNCO0FBQ3RCLGtFQUFrRTtBQUNsRSxvQ0FBb0M7QUFDcEMsWUFBWTtBQUNaLEVBQUU7QUFDRixnQ0FBZ0M7QUFDaEMsV0FBVztBQUNYLFNBQVM7QUFDVCxFQUFFO0FBQ0YsK0JBQStCO0FBQy9CLDRDQUE0QztBQUM1QyxxREFBcUQ7QUFDckQseUNBQXlDO0FBQ3pDLG9CQUFvQjtBQUNwQixZQUFZO0FBQ1osRUFBRTtBQUNGLDBEQUEwRDtBQUMxRCw4Q0FBOEM7QUFDOUMsMkRBQTJEO0FBQzNELGNBQWM7QUFDZCxXQUFXO0FBQ1gsRUFBRTtBQUNGLG1FQUFtRTtBQUNuRSx3Q0FBd0M7QUFDeEMsRUFBRTtBQUNGLGlCQUFpQjtBQUNqQiw2REFBNkQ7QUFDN0QsNkRBQTZEO0FBQzdELHdEQUF3RDtBQUN4RCxFQUFFO0FBQ0YseURBQXlEO0FBQ3pELHlFQUF5RTtBQUN6RSwyQ0FBMkM7QUFDM0MsZ0RBQWdEO0FBQ2hELDJCQUEyQjtBQUMzQiwrQ0FBK0M7QUFDL0Msa0NBQWtDO0FBQ2xDLDRFQUE0RTtBQUM1RSx5QkFBeUI7QUFDekIsb0JBQW9CO0FBQ3BCLHlDQUF5QztBQUN6QyxFQUFFO0FBQ0Ysa0VBQWtFO0FBQ2xFLGlEQUFpRDtBQUNqRCwrQ0FBK0M7QUFDL0MsbUZBQW1GO0FBQ25GLGtCQUFrQjtBQUNsQixjQUFjO0FBQ2QsYUFBYTtBQUNiLEVBQUU7QUFDRixzQkFBc0I7QUFDdEIsK0NBQStDO0FBQy9DLDREQUE0RDtBQUM1RCx3REFBd0Q7QUFDeEQsZUFBZTtBQUNmLEVBQUU7QUFDRix5RUFBeUU7QUFDekUsYUFBYTtBQUNiLFdBQVc7QUFDWCxTQUFTO0FBQ1QsRUFBRTtBQUNGLGVBQWU7QUFDZixxQkFBcUI7QUFDckIsa0RBQWtEO0FBQ2xELGdDQUFnQztBQUNoQywrQkFBK0I7QUFDL0IsY0FBYztBQUNkLCtCQUErQjtBQUMvQixlQUFlO0FBQ2YsYUFBYTtBQUNiLGlEQUFpRDtBQUNqRCwrQkFBK0I7QUFDL0IsK0JBQStCO0FBQy9CLGNBQWM7QUFDZCwrQkFBK0I7QUFDL0IsZUFBZTtBQUNmLGFBQWE7QUFDYixXQUFXO0FBQ1gsU0FBUztBQUNULEVBQUU7QUFDRixzQkFBc0I7QUFDdEIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsdWdpbiwgUGx1Z2luS2V5LCBFZGl0b3JTdGF0ZSB9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcclxuLy8gaW1wb3J0IHsgQ2FyZFByb3ZpZGVyLCBDYXJkUGx1Z2luU3RhdGUsIFJlcXVlc3QgfSBmcm9tICcuLi90eXBlcyc7XHJcbi8vIGltcG9ydCByZWR1Y2VyIGZyb20gJy4vcmVkdWNlcnMnO1xyXG4vLyBpbXBvcnQgeyBFZGl0b3JWaWV3IH0gZnJvbSAncHJvc2VtaXJyb3Itdmlldyc7XHJcbi8vIGltcG9ydCB7IHNldFByb3ZpZGVyLCByZXNvbHZlQ2FyZCB9IGZyb20gJy4vYWN0aW9ucyc7XHJcbi8vIGltcG9ydCBpbmxpbmVDYXJkTm9kZVZpZXcgZnJvbSAnLi4vbm9kZXZpZXdzL2lubGluZUNhcmQnO1xyXG4vLyBpbXBvcnQgYmxvY2tDYXJkTm9kZVZpZXcgZnJvbSAnLi4vbm9kZXZpZXdzL2Jsb2NrQ2FyZCc7XHJcbi8vIGltcG9ydCB7IHJlcGxhY2VRdWV1ZWRVcmxXaXRoQ2FyZCB9IGZyb20gJy4vZG9jJztcclxuLy8gaW1wb3J0IHsgQ2FyZE5vZGVWaWV3IH0gZnJvbSAnLi4vbm9kZXZpZXdzJztcclxuXHJcbmV4cG9ydCBjb25zdCBwbHVnaW5LZXkgPSBuZXcgUGx1Z2luS2V5KCdjYXJkUGx1Z2luJyk7XHJcbi8vXHJcbi8vIGV4cG9ydCBjb25zdCBnZXRQbHVnaW5TdGF0ZSA9IChlZGl0b3JTdGF0ZTogRWRpdG9yU3RhdGUpID0+XHJcbi8vICAgcGx1Z2luS2V5LmdldFN0YXRlKGVkaXRvclN0YXRlKSBhcyBDYXJkUGx1Z2luU3RhdGUgfCB1bmRlZmluZWQ7XHJcbi8vXHJcbi8vIGNvbnN0IGhhbmRsZVJlc29sdmVkID0gKHZpZXc6IEVkaXRvclZpZXcsIHJlcXVlc3Q6IFJlcXVlc3QpID0+IHJlc29sdmVkQ2FyZCA9PiB7XHJcbi8vICAgcmVwbGFjZVF1ZXVlZFVybFdpdGhDYXJkKHJlcXVlc3QudXJsLCByZXNvbHZlZENhcmQpKFxyXG4vLyAgICAgdmlldy5zdGF0ZSxcclxuLy8gICAgIHZpZXcuZGlzcGF0Y2gsXHJcbi8vICAgKTtcclxuLy8gICByZXR1cm4gcmVzb2x2ZWRDYXJkO1xyXG4vLyB9O1xyXG4vL1xyXG4vLyBjb25zdCBoYW5kbGVSZWplY3RlZCA9ICh2aWV3OiBFZGl0b3JWaWV3LCByZXF1ZXN0OiBSZXF1ZXN0KSA9PiByZWplY3RlZCA9PiB7XHJcbi8vICAgdmlldy5kaXNwYXRjaChyZXNvbHZlQ2FyZChyZXF1ZXN0LnVybCkodmlldy5zdGF0ZS50cikpO1xyXG4vLyB9O1xyXG4vL1xyXG4vLyBleHBvcnQgY29uc3QgcmVzb2x2ZVdpdGhQcm92aWRlciA9IChcclxuLy8gICB2aWV3OiBFZGl0b3JWaWV3LFxyXG4vLyAgIG91dHN0YW5kaW5nUmVxdWVzdHMsXHJcbi8vICAgcHJvdmlkZXIsXHJcbi8vICAgcmVxdWVzdDogUmVxdWVzdCxcclxuLy8gKSA9PiB7XHJcbi8vICAgY29uc3QgJHBvcyA9IHZpZXcuc3RhdGUuZG9jLnJlc29sdmUocmVxdWVzdC5wb3MpO1xyXG4vLyAgIGNvbnN0IHsgcGFyZW50IH0gPSAkcG9zO1xyXG4vLyAgIGNvbnN0IGlzQmxvY2sgPVxyXG4vLyAgICAgcGFyZW50LnR5cGUubmFtZSA9PT0gJ3BhcmFncmFwaCcgJiZcclxuLy8gICAgIHBhcmVudC5jaGlsZENvdW50ID09PSAxICYmXHJcbi8vICAgICBwYXJlbnQuZmlyc3RDaGlsZCEudHlwZS5pc1RleHQgJiZcclxuLy8gICAgIHBhcmVudC5maXJzdENoaWxkIS50ZXh0ID09PSByZXF1ZXN0LnVybCAmJlxyXG4vLyAgICAgJHBvcy5ub2RlKCRwb3MuZGVwdGggLSAxKS50eXBlLm5hbWUgPT09ICdkb2MnO1xyXG4vL1xyXG4vLyAgIG91dHN0YW5kaW5nUmVxdWVzdHNbcmVxdWVzdC51cmxdID0gcHJvdmlkZXJcclxuLy8gICAgIC5yZXNvbHZlKHJlcXVlc3QudXJsLCBpc0Jsb2NrID8gJ2Jsb2NrJyA6ICdpbmxpbmUnKVxyXG4vLyAgICAgLnRoZW4ocmVzb2x2ZWRDYXJkID0+IHtcclxuLy8gICAgICAgZGVsZXRlIG91dHN0YW5kaW5nUmVxdWVzdHNbcmVxdWVzdC51cmxdO1xyXG4vLyAgICAgICByZXR1cm4gcmVzb2x2ZWRDYXJkO1xyXG4vLyAgICAgfSlcclxuLy8gICAgIC50aGVuKGhhbmRsZVJlc29sdmVkKHZpZXcsIHJlcXVlc3QpLCBoYW5kbGVSZWplY3RlZCh2aWV3LCByZXF1ZXN0KSk7XHJcbi8vIH07XHJcbi8vXHJcbi8vIGV4cG9ydCBjb25zdCBjcmVhdGVQbHVnaW4gPSAoe1xyXG4vLyAgIHBvcnRhbFByb3ZpZGVyQVBJLFxyXG4vLyAgIGRpc3BhdGNoLFxyXG4vLyAgIHByb3ZpZGVyRmFjdG9yeSxcclxuLy8gfSkgPT5cclxuLy8gICBuZXcgUGx1Z2luKHtcclxuLy8gICAgIHN0YXRlOiB7XHJcbi8vICAgICAgIGluaXQoKTogQ2FyZFBsdWdpblN0YXRlIHtcclxuLy8gICAgICAgICByZXR1cm4ge1xyXG4vLyAgICAgICAgICAgcmVxdWVzdHM6IFtdLFxyXG4vLyAgICAgICAgICAgcHJvdmlkZXI6IG51bGwsXHJcbi8vICAgICAgICAgfTtcclxuLy8gICAgICAgfSxcclxuLy9cclxuLy8gICAgICAgYXBwbHkodHIsIHBsdWdpblN0YXRlOiBDYXJkUGx1Z2luU3RhdGUpIHtcclxuLy8gICAgICAgICAvLyB1cGRhdGUgYWxsIHRoZSBwb3NpdGlvbnNcclxuLy8gICAgICAgICBjb25zdCByZW1hcHBlZFN0YXRlID0ge1xyXG4vLyAgICAgICAgICAgLi4ucGx1Z2luU3RhdGUsXHJcbi8vICAgICAgICAgICByZXF1ZXN0czogcGx1Z2luU3RhdGUucmVxdWVzdHMubWFwKHJlcXVlc3QgPT4gKHtcclxuLy8gICAgICAgICAgICAgLi4ucmVxdWVzdCxcclxuLy8gICAgICAgICAgICAgcG9zOiB0ci5tYXBwaW5nLm1hcChyZXF1ZXN0LnBvcyksXHJcbi8vICAgICAgICAgICB9KSksXHJcbi8vICAgICAgICAgfTtcclxuLy9cclxuLy8gICAgICAgICAvLyBhcHBseSBhbnkgYWN0aW9uc1xyXG4vLyAgICAgICAgIGNvbnN0IG1ldGEgPSB0ci5nZXRNZXRhKHBsdWdpbktleSk7XHJcbi8vICAgICAgICAgaWYgKG1ldGEpIHtcclxuLy8gICAgICAgICAgIGNvbnN0IG5leHRQbHVnaW5TdGF0ZSA9IHJlZHVjZXIocmVtYXBwZWRTdGF0ZSwgbWV0YSk7XHJcbi8vICAgICAgICAgICByZXR1cm4gbmV4dFBsdWdpblN0YXRlO1xyXG4vLyAgICAgICAgIH1cclxuLy9cclxuLy8gICAgICAgICByZXR1cm4gcmVtYXBwZWRTdGF0ZTtcclxuLy8gICAgICAgfSxcclxuLy8gICAgIH0sXHJcbi8vXHJcbi8vICAgICB2aWV3KHZpZXc6IEVkaXRvclZpZXcpIHtcclxuLy8gICAgICAgLy8gbGlzdGVuIGZvciBjYXJkIHByb3ZpZGVyIGNoYW5nZXNcclxuLy8gICAgICAgY29uc3QgaGFuZGxlUHJvdmlkZXIgPSAobmFtZSwgcHJvdmlkZXIpID0+IHtcclxuLy8gICAgICAgICBpZiAobmFtZSAhPT0gJ2NhcmRQcm92aWRlcicpIHtcclxuLy8gICAgICAgICAgIHJldHVybjtcclxuLy8gICAgICAgICB9XHJcbi8vXHJcbi8vICAgICAgICAgcHJvdmlkZXIudGhlbigoY2FyZFByb3ZpZGVyOiBDYXJkUHJvdmlkZXIpID0+IHtcclxuLy8gICAgICAgICAgIGNvbnN0IHsgc3RhdGUsIGRpc3BhdGNoIH0gPSB2aWV3O1xyXG4vLyAgICAgICAgICAgZGlzcGF0Y2goc2V0UHJvdmlkZXIoY2FyZFByb3ZpZGVyKShzdGF0ZS50cikpO1xyXG4vLyAgICAgICAgIH0pO1xyXG4vLyAgICAgICB9O1xyXG4vL1xyXG4vLyAgICAgICBwcm92aWRlckZhY3Rvcnkuc3Vic2NyaWJlKCdjYXJkUHJvdmlkZXInLCBoYW5kbGVQcm92aWRlcik7XHJcbi8vICAgICAgIGNvbnN0IG91dHN0YW5kaW5nUmVxdWVzdHMgPSB7fTtcclxuLy9cclxuLy8gICAgICAgcmV0dXJuIHtcclxuLy8gICAgICAgICB1cGRhdGUodmlldzogRWRpdG9yVmlldywgcHJldlN0YXRlOiBFZGl0b3JTdGF0ZSkge1xyXG4vLyAgICAgICAgICAgY29uc3QgY3VycmVudFN0YXRlID0gZ2V0UGx1Z2luU3RhdGUodmlldy5zdGF0ZSk7XHJcbi8vICAgICAgICAgICBjb25zdCBvbGRTdGF0ZSA9IGdldFBsdWdpblN0YXRlKHByZXZTdGF0ZSk7XHJcbi8vXHJcbi8vICAgICAgICAgICBpZiAoY3VycmVudFN0YXRlICYmIGN1cnJlbnRTdGF0ZS5wcm92aWRlcikge1xyXG4vLyAgICAgICAgICAgICAvLyBmaW5kIHJlcXVlc3RzIGluIHRoaXMgc3RhdGUgdGhhdCB3ZXJlbid0IGluIHRoZSBvbGQgb25lXHJcbi8vICAgICAgICAgICAgIGNvbnN0IG5ld1JlcXVlc3RzID0gb2xkU3RhdGVcclxuLy8gICAgICAgICAgICAgICA/IGN1cnJlbnRTdGF0ZS5yZXF1ZXN0cy5maWx0ZXIoXHJcbi8vICAgICAgICAgICAgICAgICAgIHJlcSA9PlxyXG4vLyAgICAgICAgICAgICAgICAgICAgICFvbGRTdGF0ZS5yZXF1ZXN0cy5maW5kKFxyXG4vLyAgICAgICAgICAgICAgICAgICAgICAgb2xkUmVxID0+XHJcbi8vICAgICAgICAgICAgICAgICAgICAgICAgIG9sZFJlcS51cmwgPT09IHJlcS51cmwgJiYgb2xkUmVxLnBvcyA9PT0gcmVxLnBvcyxcclxuLy8gICAgICAgICAgICAgICAgICAgICApLFxyXG4vLyAgICAgICAgICAgICAgICAgKVxyXG4vLyAgICAgICAgICAgICAgIDogY3VycmVudFN0YXRlLnJlcXVlc3RzO1xyXG4vL1xyXG4vLyAgICAgICAgICAgICAvLyBhc2sgdGhlIENhcmRQcm92aWRlciB0byByZXNvbHZlIGFsbCBuZXcgcmVxdWVzdHNcclxuLy8gICAgICAgICAgICAgY29uc3QgeyBwcm92aWRlciB9ID0gY3VycmVudFN0YXRlO1xyXG4vLyAgICAgICAgICAgICBuZXdSZXF1ZXN0cy5mb3JFYWNoKHJlcXVlc3QgPT4ge1xyXG4vLyAgICAgICAgICAgICAgIHJlc29sdmVXaXRoUHJvdmlkZXIodmlldywgb3V0c3RhbmRpbmdSZXF1ZXN0cywgcHJvdmlkZXIsIHJlcXVlc3QpO1xyXG4vLyAgICAgICAgICAgICB9KTtcclxuLy8gICAgICAgICAgIH1cclxuLy8gICAgICAgICB9LFxyXG4vL1xyXG4vLyAgICAgICAgIGRlc3Ryb3koKSB7XHJcbi8vICAgICAgICAgICAvLyBjYW5jZWwgYWxsIG91dHN0YW5kaW5nIHJlcXVlc3RzXHJcbi8vICAgICAgICAgICBPYmplY3Qua2V5cyhvdXRzdGFuZGluZ1JlcXVlc3RzKS5mb3JFYWNoKHVybCA9PlxyXG4vLyAgICAgICAgICAgICBQcm9taXNlLnJlamVjdChvdXRzdGFuZGluZ1JlcXVlc3RzW3VybF0pLFxyXG4vLyAgICAgICAgICAgKTtcclxuLy9cclxuLy8gICAgICAgICAgIHByb3ZpZGVyRmFjdG9yeS51bnN1YnNjcmliZSgnY2FyZFByb3ZpZGVyJywgaGFuZGxlUHJvdmlkZXIpO1xyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICAgIH07XHJcbi8vICAgICB9LFxyXG4vL1xyXG4vLyAgICAgcHJvcHM6IHtcclxuLy8gICAgICAgbm9kZVZpZXdzOiB7XHJcbi8vICAgICAgICAgaW5saW5lQ2FyZDogQ2FyZE5vZGVWaWV3LmZyb21Db21wb25lbnQoXHJcbi8vICAgICAgICAgICBpbmxpbmVDYXJkTm9kZVZpZXcsXHJcbi8vICAgICAgICAgICBwb3J0YWxQcm92aWRlckFQSSxcclxuLy8gICAgICAgICAgIHtcclxuLy8gICAgICAgICAgICAgcHJvdmlkZXJGYWN0b3J5LFxyXG4vLyAgICAgICAgICAgfSxcclxuLy8gICAgICAgICApLFxyXG4vLyAgICAgICAgIGJsb2NrQ2FyZDogQ2FyZE5vZGVWaWV3LmZyb21Db21wb25lbnQoXHJcbi8vICAgICAgICAgICBibG9ja0NhcmROb2RlVmlldyxcclxuLy8gICAgICAgICAgIHBvcnRhbFByb3ZpZGVyQVBJLFxyXG4vLyAgICAgICAgICAge1xyXG4vLyAgICAgICAgICAgICBwcm92aWRlckZhY3RvcnksXHJcbi8vICAgICAgICAgICB9LFxyXG4vLyAgICAgICAgICksXHJcbi8vICAgICAgIH0sXHJcbi8vICAgICB9LFxyXG4vL1xyXG4vLyAgICAga2V5OiBwbHVnaW5LZXksXHJcbi8vICAgfSk7XHJcbiJdfQ==