UNPKG

@zodiac-ui/editor

Version:

A rich text editor for Angular based on `@atlaskit/editor-core`.

159 lines 15.5 kB
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==