From 21ee2a10d039258a7830781551549e9f4d5f74c0 Mon Sep 17 00:00:00 2001 From: fire833 Date: Mon, 9 Aug 2021 12:59:20 -0500 Subject: [PATCH 1/9] messed around with injecting response into DOM --- package-lock.json | 96 +++++++-------------------------------------- package.json | 3 +- src/ButtonPanel.tsx | 11 ++++-- src/module.ts | 8 +++- src/types.ts | 3 ++ 5 files changed, 34 insertions(+), 87 deletions(-) diff --git a/package-lock.json b/package-lock.json index 782d863..89d44a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1696,6 +1696,16 @@ "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "dev": true }, + "react": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz", + "integrity": "sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, "rxjs": { "version": "6.6.3", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", @@ -5718,78 +5728,6 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, - "copy-webpack-plugin": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-7.0.0.tgz", - "integrity": "sha512-SLjQNa5iE3BoCP76ESU9qYo9ZkEWtXoZxDurHoqPchAFRblJ9g96xTeC560UXBMre1Nx6ixIIUfiY3VcjpJw3g==", - "dev": true, - "requires": { - "fast-glob": "^3.2.4", - "glob-parent": "^5.1.1", - "globby": "^11.0.1", - "loader-utils": "^2.0.0", - "normalize-path": "^3.0.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1" - }, - "dependencies": { - "globby": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", - "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - } - } - }, "core-js": { "version": "2.6.12", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", @@ -12068,8 +12006,7 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.14.1", @@ -12527,7 +12464,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } @@ -13229,8 +13165,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-copy": { "version": "0.1.0", @@ -15733,10 +15668,9 @@ } }, "react": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz", - "integrity": "sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==", - "dev": true, + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" diff --git a/package.json b/package.json index 638aa9d..6e8f69b 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ } }, "dependencies": { - "archiver": "^5.2.0" + "archiver": "^5.2.0", + "react": "^17.0.2" } } diff --git a/src/ButtonPanel.tsx b/src/ButtonPanel.tsx index 67fe5fd..ef231b2 100644 --- a/src/ButtonPanel.tsx +++ b/src/ButtonPanel.tsx @@ -138,7 +138,7 @@ export class ButtonPanel extends PureComponent { render() { const { options } = this.props; - const exeucte = () => { + const execute = () => { this.setState({ api_call: 'IN_PROGRESS' }); const url = new URL(this.interpolateVariables(options.url)); @@ -159,9 +159,9 @@ export class ButtonPanel extends PureComponent { api_call: 'SUCCESS', response: response.statusText, }); - console.log('Requeste successful: ', response); + console.log('Request successful: ', response); } else { - console.log('Requeste failed: ', response); + console.log('Request failed: ', response); throw new Error(response.status + response.statusText); } }) @@ -185,11 +185,14 @@ export class ButtonPanel extends PureComponent { size="lg" className={this.apiStateClassName()} icon={this.apiStateIcon()} - onClick={exeucte} + onClick={execute} style={this.customStyle()} > {this.buttonText()} +
+

+
); } diff --git a/src/module.ts b/src/module.ts index d481b44..4361ed3 100644 --- a/src/module.ts +++ b/src/module.ts @@ -218,5 +218,11 @@ export const plugin = new PanelPlugin(ButtonPanel).setPanelO category: ['Authentication'], description: '⚠️ The password is NOT stored encrypted in Grafana!', showIf: (config) => config.isAuth, - }); + }) + .addBooleanSwitch({ + path: 'showResponse', + name: 'showResponse', + description: "Use this to toggle showing API response below the button.", + defaultValue: true, + }) }); diff --git a/src/types.ts b/src/types.ts index 402c94f..58ca963 100644 --- a/src/types.ts +++ b/src/types.ts @@ -15,6 +15,9 @@ export interface ButtonPanelOptions { username?: string; password?: string; + printResponse: boolean; + response: string; + params: Array<[string, string]>; text: string; From 34cb1af57229021f50a554d1a6d58d2c4f3e46ff Mon Sep 17 00:00:00 2001 From: fire833 Date: Tue, 17 Aug 2021 10:23:43 -0500 Subject: [PATCH 2/9] more implementation of the box/response processing --- src/ButtonPanel.tsx | 37 +++++++++++++++++++++++++++++++++---- src/static/button-panel.css | 10 ++++++++++ 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/src/ButtonPanel.tsx b/src/ButtonPanel.tsx index ef231b2..2f63884 100644 --- a/src/ButtonPanel.tsx +++ b/src/ButtonPanel.tsx @@ -63,7 +63,7 @@ export class ButtonPanel extends PureComponent { customStyle() { if (this.props.options.variant === 'custom') { return { - // Resaet Grafana defaults + // Reset Grafana defaults background: 'none', border: 'none', // Set custom styles @@ -135,6 +135,22 @@ export class ButtonPanel extends PureComponent { return fetchOpts; } + returnRespBox() { + // const { options } = this.props; + + // Inject paragraph for adding API response + if (this.props.options.printResponse === true) { + return ( +
+

+
+ ) + } else { + return "" + } + + } + render() { const { options } = this.props; @@ -148,6 +164,9 @@ export class ButtonPanel extends PureComponent { fetch(url.toString(), fetchOpts) .then((response) => { + + const reader = response.body?.getReader(); + if (response.type === 'opaque') { // CORS prevents us from knowing what's up - so be it this.setState({ @@ -160,8 +179,20 @@ export class ButtonPanel extends PureComponent { response: response.statusText, }); console.log('Request successful: ', response); + + if (response.bodyUsed) { + let elem = document.getElementById("returnText") + elem?.textContent == reader?.read() + } + } else { console.log('Request failed: ', response); + + if (response.bodyUsed) { + let elem = document.getElementById("returnText") + elem?.textContent == reader?.read() + } + throw new Error(response.status + response.statusText); } }) @@ -190,10 +221,8 @@ export class ButtonPanel extends PureComponent { > {this.buttonText()} -
-

+ {this.returnRespBox}
- ); } } diff --git a/src/static/button-panel.css b/src/static/button-panel.css index 68d1b6e..871d7a2 100644 --- a/src/static/button-panel.css +++ b/src/static/button-panel.css @@ -17,3 +17,13 @@ .right { float: right; } + +.returnText { + inline-size: 250px; + overflow-wrap: break-word; + align-items: center; + display: flex; + background-color: black; + border-radius: 5%; + color: honeydew; +} From dbf352e79838739e0279d5b864ad77468796af5e Mon Sep 17 00:00:00 2001 From: fire833 Date: Wed, 18 Aug 2021 11:21:52 -0500 Subject: [PATCH 3/9] got the first build, doesn't work --- dist/module.js | 4086 +++++++++++++++++++++++++++++++++- dist/module.js.map | 2 +- dist/plugin.json | 2 +- dist/static/button-panel.css | 10 + package.json | 1 - src/ButtonPanel.test.tsx | 2 + src/ButtonPanel.tsx | 20 +- src/module.ts | 2 +- yarn.lock | 3978 ++++++++++++++++----------------- 9 files changed, 6000 insertions(+), 2103 deletions(-) diff --git a/dist/module.js b/dist/module.js index 57adce5..bbadfc5 100644 --- a/dist/module.js +++ b/dist/module.js @@ -1,2 +1,4086 @@ -define(["react","@grafana/ui","@grafana/runtime","@grafana/data"],(function(e,t,n,r){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=49)}([function(t,n){t.exports=e},function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}}},function(e,n){e.exports=t},function(e,t,n){"use strict";var r=n(1);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"noop",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"compose",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"deepMerge",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(t,"makeCancelable",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(t,"monaco",{enumerable:!0,get:function(){return c.default}});var o=r(n(30)),a=r(n(31)),i=r(n(32)),u=r(n(33)),c=r(n(34))},function(e,t,n){var r=n(18);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}e.exports=function(e){for(var t=1;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}},function(e,t,n){"use strict";var r=n(1);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useMount",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"useUpdate",{enumerable:!0,get:function(){return a.default}});var o=r(n(38)),a=r(n(39))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={"night-dark":{base:"vs-dark",inherit:!0,rules:[],colors:{"editor.background":"#202124"}}};t.default=r},function(e,t){e.exports=r},function(e,t,n){"use strict";var r=n(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(0),a=r(n(16)),i=(0,o.memo)(a.default);t.default=i},function(e,t,n){"use strict";var r=n(8),o=n(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(4)),i=o(n(9)),u=r(n(0)),c=o(n(5)),l=o(n(10)),s=n(3),f=n(12),d=o(n(13)),p=function(e){var t=e.value,n=e.language,r=e.editorDidMount,o=e.theme,c=e.line,p=e.width,v=e.height,h=e.loading,g=e.options,m=e.overrideServices,y=e._isControlledMode,b=e.className,O=e.wrapperClassName,j=(0,u.useState)(!1),w=(0,i.default)(j,2),C=w[0],S=w[1],P=(0,u.useState)(!0),A=(0,i.default)(P,2),_=A[0],T=A[1],E=(0,u.useRef)(),M=(0,u.useRef)(),x=(0,u.useRef)();(0,f.useMount)((function(){var e=s.monaco.init();return e.then((function(e){return(M.current=e)&&T(!1)})).catch((function(e){return"cancelation"!==(null==e?void 0:e.type)&&console.error("Monaco initialization: error:",e)})),function(){return E.current?k():e.cancel()}})),(0,f.useUpdate)((function(){E.current.updateOptions(g)}),[g],C),(0,f.useUpdate)((function(){if(E.current.getOption(M.current.editor.EditorOption.readOnly))E.current.setValue(t);else if(t!==E.current.getValue()){if(E.current.executeEdits("",[{range:E.current.getModel().getFullModelRange(),text:t}]),y){var e=E.current.getModel();e.forceTokenization(e.getLineCount())}E.current.pushUndoStop()}}),[t],C),(0,f.useUpdate)((function(){M.current.editor.setModelLanguage(E.current.getModel(),n)}),[n],C),(0,f.useUpdate)((function(){E.current.setScrollPosition({scrollTop:c})}),[c],C),(0,f.useUpdate)((function(){M.current.editor.setTheme(o)}),[o],C);var R=(0,u.useCallback)((function(){E.current=M.current.editor.create(x.current,(0,a.default)({value:t,language:n,automaticLayout:!0},g),m),r(E.current.getValue.bind(E.current),E.current),M.current.editor.defineTheme("dark",d.default["night-dark"]),M.current.editor.setTheme(o),S(!0)}),[r,n,g,m,o,t]);(0,u.useEffect)((function(){!_&&!C&&R()}),[_,C,R]);var k=function(){return E.current.dispose()};return u.default.createElement(l.default,{width:p,height:v,isEditorReady:C,loading:h,_ref:x,className:b,wrapperClassName:O})};p.propTypes={value:c.default.string,language:c.default.string,editorDidMount:c.default.func,theme:c.default.string,line:c.default.number,width:c.default.oneOfType([c.default.number,c.default.string]),height:c.default.oneOfType([c.default.number,c.default.string]),loading:c.default.oneOfType([c.default.element,c.default.string]),options:c.default.object,className:c.default.string,wrapperClassName:c.default.string,overrideServices:c.default.object,_isControlledMode:c.default.bool},p.defaultProps={editorDidMount:s.noop,theme:"light",width:"100%",height:"100%",loading:"Loading...",options:{},overrideServices:{},_isControlledMode:!1};var v=p;t.default=v},function(e,t){function n(t){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?e.exports=n=function(e){return typeof e}:e.exports=n=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(t)}e.exports=n},function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t){e.exports=function(e){if(Array.isArray(e))return e}},function(e,t){e.exports=function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,o=!1,a=void 0;try{for(var i,u=e[Symbol.iterator]();!(r=(i=u.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==u.return||u.return()}finally{if(o)throw a}}return n}}},function(e,t,n){var r=n(22);e.exports=function(e,t){if(e){if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}},function(e,t){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}},function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";function r(){for(var e=arguments.length,t=new Array(e),n=0;n=e.length?e.apply(this,o):function(){for(var e=arguments.length,r=new Array(e),a=0;a1&&void 0!==arguments[1]?arguments[1]:{};c.initial(e),c.handler(t);var n={current:e},a=o(h)(n,t),i=o(v)(n),u=o(c.changes)(e),l=o(p)(n);function s(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(e){return e};return c.selector(e),e(n.current)}function f(e){r(a,i,u,l)(e)}return[s,f]}function p(e,t){return i(t)?t(e.current):t}function v(e,t){return e.current=s(s({},e.current),t),t}function h(e,t,n){return i(t)?t(e.current):Object.keys(n).forEach((function(n){var r;return null===(r=t[n])||void 0===r?void 0:r.call(t,e.current[n])})),n}t.default={create:d}}])},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={paths:{vs:"https://cdn.jsdelivr.net/npm/monaco-editor@0.21.2/min/vs"}};t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(0),o=function(e){return(0,r.useEffect)(e,[])};t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(0),o=function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],o=(0,r.useRef)(!0);(0,r.useEffect)(o.current||!n?function(){o.current=!1}:e,t)};t.default=o},function(e,t,n){"use strict";var r=n(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(0),a=r(n(41)),i=(0,o.memo)(a.default);t.default=i},function(e,t,n){"use strict";var r=n(8),o=n(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(4)),i=o(n(9)),u=r(n(0)),c=o(n(5)),l=o(n(10)),s=n(3),f=n(12),d=o(n(13)),p=function(e){var t=e.original,n=e.modified,r=e.language,o=e.originalLanguage,c=e.modifiedLanguage,p=e.editorDidMount,v=e.theme,h=e.width,g=e.height,m=e.loading,y=e.options,b=e.className,O=e.wrapperClassName,j=(0,u.useState)(!1),w=(0,i.default)(j,2),C=w[0],S=w[1],P=(0,u.useState)(!0),A=(0,i.default)(P,2),_=A[0],T=A[1],E=(0,u.useRef)(),M=(0,u.useRef)(),x=(0,u.useRef)();(0,f.useMount)((function(){var e=s.monaco.init();return e.then((function(e){return(M.current=e)&&T(!1)})).catch((function(e){return"cancelation"!==(null==e?void 0:e.type)&&console.error("Monaco initialization: error:",e)})),function(){return E.current?I():e.cancel()}})),(0,f.useUpdate)((function(){E.current.getModel().modified.setValue(n)}),[n],C),(0,f.useUpdate)((function(){E.current.getModel().original.setValue(t)}),[t],C),(0,f.useUpdate)((function(){var e=E.current.getModel(),t=e.original,n=e.modified;M.current.editor.setModelLanguage(t,o||r),M.current.editor.setModelLanguage(n,c||r)}),[r,o,c],C),(0,f.useUpdate)((function(){M.current.editor.setTheme(v)}),[v],C),(0,f.useUpdate)((function(){E.current.updateOptions(y)}),[y],C);var R=(0,u.useCallback)((function(){var e=M.current.editor.createModel(t,o||r),a=M.current.editor.createModel(n,c||r);E.current.setModel({original:e,modified:a})}),[r,n,c,t,o]),k=(0,u.useCallback)((function(){E.current=M.current.editor.createDiffEditor(x.current,(0,a.default)({automaticLayout:!0},y)),R();var e=E.current.getModel(),t=e.original,n=e.modified;p(n.getValue.bind(n),t.getValue.bind(t),E.current),M.current.editor.defineTheme("dark",d.default["night-dark"]),M.current.editor.setTheme(v),S(!0)}),[p,y,v,R]);(0,u.useEffect)((function(){!_&&!C&&k()}),[_,C,k]);var I=function(){return E.current.dispose()};return u.default.createElement(l.default,{width:h,height:g,isEditorReady:C,loading:m,_ref:x,className:b,wrapperClassName:O})};p.propTypes={original:c.default.string,modified:c.default.string,language:c.default.string,originalLanguage:c.default.string,modifiedLanguage:c.default.string,editorDidMount:c.default.func,theme:c.default.string,width:c.default.oneOfType([c.default.number,c.default.string]),height:c.default.oneOfType([c.default.number,c.default.string]),loading:c.default.oneOfType([c.default.element,c.default.string]),options:c.default.object,className:c.default.string,wrapperClassName:c.default.string},p.defaultProps={editorDidMount:s.noop,theme:"light",width:"100%",height:"100%",loading:"Loading...",options:{}};var v=p;t.default=v},function(e,t,n){"use strict";var r=n(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(0),a=r(n(43)),i=(0,o.memo)(a.default);t.default=i},function(e,t,n){"use strict";var r=n(8),o=n(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=o(n(44)),i=o(n(11)),u=r(n(0)),c=o(n(5)),l=o(n(7)),s=n(3);function f(e){var t=e.value,n=e.onChange,r=e.editorDidMount,o=(0,i.default)(e,["value","onChange","editorDidMount"]),c=(0,u.useRef)(null),s=(0,u.useRef)(null),f=(0,u.useRef)(t);f.current=t;var d=(0,u.useCallback)((function(e){var t=c.current.getValue();if(f.current!==t){var r=n(e,t);"string"==typeof r&&t!==r&&c.current.setValue(r)}}),[n]),p=(0,u.useCallback)((function(){var e;s.current=null===(e=c.current)||void 0===e?void 0:e.onDidChangeModelContent(d)}),[d]);(0,u.useEffect)((function(){return p(),function(){var e;return null===(e=s.current)||void 0===e?void 0:e.dispose()}}),[p]);var v=(0,u.useCallback)((function(e,t){c.current=t,p(),r(e,t)}),[p,r]);return u.default.createElement(l.default,(0,a.default)({value:t,editorDidMount:v,_isControlledMode:!0},o))}f.propTypes={value:c.default.string,editorDidMount:c.default.func,onChange:c.default.func},f.defaultProps={editorDidMount:s.noop,onChange:s.noop};var d=f;t.default=d},function(e,t){function n(){return e.exports=n=Object.assign||function(e){for(var t=1;t*>*:first-child{-webkit-animation:spin 1s infinite linear;animation:spin 1s infinite linear}.center{display:flex;align-items:center;justify-content:center}.left{float:left}.right{float:right}\n","",{version:3,sources:["button-panel.css"],names:[],mappings:"AAAA,wBAAgB,KAAK,+BAA+B,CAAC,GAAG,iCAAiC,CAAC,CAA1F,gBAAgB,KAAK,+BAA+B,CAAC,GAAG,iCAAiC,CAAC,CAAC,0BAA0B,yCAAgC,CAAhC,iCAAiC,CAAC,QAAQ,YAAY,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,MAAM,UAAU,CAAC,OAAO,WAAW",file:"button-panel.css",sourcesContent:["@keyframes spin{from{transform:scale(1) rotate(0deg)}to{transform:scale(1) rotate(360deg)}}.spinning>*>*:first-child{animation:spin 1s infinite linear}.center{display:flex;align-items:center;justify-content:center}.left{float:left}.right{float:right}\n"]}]),e.exports=t},function(e,t,n){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var o=(i=r,u=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(u),"/*# ".concat(c," */")),a=r.sources.map((function(e){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(e," */")}));return[n].concat(a).concat([o]).join("\n")}var i,u,c;return[n].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")},t.i=function(e,n,r){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(r)for(var a=0;a0)&&!(r=a.next()).done;)i.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i}var c=n(0),l=n.n(c),s=n(6),f=function(e){function t(t){var n=e.call(this,t)||this;return n.init(),n}return i(t,e),t.prototype.init=function(){this.state={api_call:"READY",response:""}},t.prototype.resetState=function(){this.setState({api_call:"READY",response:""})},t.prototype.apiStateIcon=function(){switch(this.state.api_call){case"IN_PROGRESS":return"fa fa-spinner";case"SUCCESS":return"check";case"ERROR":return"exclamation-triangle";case"READY":default:return this.props.options.icon}},t.prototype.apiStateClassName=function(){switch(this.state.api_call){case"IN_PROGRESS":return"spinning";default:return""}},t.prototype.getOrientation=function(){if(!this.props.options.orientation)return"center";switch(this.props.options.orientation){case"left":return"left";case"right":return"right";case"center":default:return"center"}},t.prototype.customStyle=function(){return"custom"===this.props.options.variant?{background:"none",border:"none",backgroundColor:this.props.options.backgroundColor,color:this.props.options.foregroundColor}:{}},t.prototype.variant=function(){return"custom"===this.props.options.variant?void 0:this.props.options.variant},t.prototype.buttonText=function(){return this.interpolateVariables(this.props.options.text)},t.prototype.interpolateVariables=function(e){var t;return Object(s.getTemplateSrv)().replace(e,null===(t=this.props.data.request)||void 0===t?void 0:t.scopedVars)},t.prototype.prepareFetchOpts=function(e){var t=this,n=this.props.options,r=new Headers;r.set("Accept","application/json");var o={method:n.method,mode:"cors",cache:"no-cache",headers:r,redirect:"follow"};return"POST"===n.method&&(r.set("Content-Type",n.contentType),n.payload&&(o.body=this.interpolateVariables(n.payload))),n.isAuth&&(o.credentials="include",r.set("Authorization","Basic "+btoa(n.username+":"+n.password))),n.params&&("header"===n.type?n.params.forEach((function(e){r.set(t.interpolateVariables(e[0]),t.interpolateVariables(e[1]))})):"query"===n.type?n.params.forEach((function(n){e.searchParams.append(t.interpolateVariables(n[0]),t.interpolateVariables(n[1]))})):console.error("Unknown params type",n.type)),o},t.prototype.render=function(){var e=this,t=this.props.options;return l.a.createElement("div",{className:this.getOrientation()},l.a.createElement(o.Button,{variant:this.variant(),title:this.state.response,size:"lg",className:this.apiStateClassName(),icon:this.apiStateIcon(),onClick:function(){e.setState({api_call:"IN_PROGRESS"});var n=new URL(e.interpolateVariables(t.url));console.log(t.method," to ",n," with params as ",t.type);var r=e.prepareFetchOpts(n);fetch(n.toString(),r).then((function(t){if("opaque"===t.type)e.setState({api_call:"READY",response:"CORS prevents access to the response"});else{if(!t.ok)throw console.log("Requeste failed: ",t),new Error(t.status+t.statusText);e.setState({api_call:"SUCCESS",response:t.statusText}),console.log("Requeste successful: ",t)}})).catch((function(t){e.setState({api_call:"ERROR",response:t.message}),console.error("Request error: ",t)})).finally((function(){setTimeout(e.resetState.bind(e),2500)}))},style:this.customStyle()},this.buttonText()))},t}(c.PureComponent),d=function(e){e.item;var t=e.value,n=e.onChange,r=(e.context,u(Object(c.useState)(""),2)),a=r[0],i=r[1],s=u(Object(c.useState)(""),2),f=s[0],d=s[1];return l.a.createElement("div",{className:"panel-container",style:{width:"auto"}},l.a.createElement(o.HorizontalGroup,null,l.a.createElement(o.Input,{css:"",placeholder:"Name",onChange:function(e){var t=e.target;i(t.value)},value:a}),l.a.createElement(o.Input,{css:"",placeholder:"Value",onChange:function(e){var t=e.target;d(t.value)},value:f}),l.a.createElement(o.IconButton,{onClick:function(e){return function(e){e.target;var r,o=a;(r=t?t.filter((function(e){return e[0]!==o})):[]).push([o,f]),r.sort((function(e,t){return e[0].localeCompare(t[0])})),console.log("Updated params: ",r),i(""),d(""),n(r)}(e)},name:"plus"})),l.a.createElement(o.VerticalGroup,null,Array.from(t||[]).map((function(e){return l.a.createElement(o.HorizontalGroup,null,l.a.createElement(o.Input,{css:"",disabled:!0,value:e[0]}),l.a.createElement(o.Input,{css:"",disabled:!0,value:e[1]}),l.a.createElement(o.IconButton,{onClick:(r=e[0],function(e){e.target,console.log("Removing "+r);var o=t.filter((function(e){return e[0]!==r}));console.log("Removed "+r+": ",o),n(o)}),name:"minus"}));var r}))))},p=n(7),v=n.n(p);p.monaco.config({paths:{vs:"/public/plugins/cloudspout-button-panel/lib/vs"}});var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.onSourceChange=function(){t.getEditorValue&&t.props.onChange(t.getEditorValue())},t.onEditorDidMount=function(e,n){t.getEditorValue=e,t.editorInstance=n},t.updateDimensions=function(){var e;null===(e=t.editorInstance)||void 0===e||e.layout()},t.render=function(){return t.editorInstance&&t.editorInstance.layout(),l.a.createElement("div",{onBlur:t.onSourceChange},l.a.createElement(v.a,{height:"10vh",language:t.props.language,theme:s.config.theme.isDark?"vs-dark":"vs-light",value:t.props.value,editorDidMount:t.onEditorDidMount,options:{fontSize:12}}))},t}return i(t,e),t}(c.PureComponent),g=function(e){var t,n,r=e.value,o=e.item,a=e.onChange,i=e.context;return l.a.createElement(h,{language:null===(t=o.settings)||void 0===t?void 0:t.language(null===(n=i.options)||void 0===n?void 0:n.contentType),value:r,onChange:function(e){return a(e)}})};n(45);n.d(t,"plugin",(function(){return m}));var m=new r.PanelPlugin(f).setPanelOptions((function(e){return e.addRadio({path:"method",name:"Method",category:["REST Integration"],description:"HTTP method used to communicate with the remote site",settings:{options:[{value:"GET",label:"GET"},{value:"POST",label:"POST"}]},defaultValue:"GET"}).addTextInput({path:"url",name:"URL",category:["REST Integration"],description:"The URL to call",defaultValue:"http://api.example.com/"}).addRadio({path:"type",name:"Type",category:["REST Integration"],description:"Defines how the parameters are sent to the server",settings:{options:[{value:"header",label:"Header",description:"Send the parameters as request HTTP headers"},{value:"query",label:"Query",description:"Send the parameters as `key=value` query parameter"}]},defaultValue:"header"}).addCustomEditor({id:"buttonParams",path:"params",name:"Parameters",category:["REST Integration"],description:"The parameters sent with the request",editor:d}).addSelect({path:"contentType",name:"Content-Type",category:["REST Integration"],description:"Content-Type of the payload",defaultValue:"application/json",settings:{allowCustomValue:!0,options:[{label:"application/json",value:"application/json"},{label:"text/html",value:"text/html"},{label:"text/plain",value:"text/plain"}]},showIf:function(e){return"POST"===e.method}}).addCustomEditor({id:"payload",path:"payload",name:"Payload",category:["REST Integration"],description:"Optional payload to send with the request",settings:{language:function(e){switch(e){case"application/json":return"json";case"text/html":return"html";case"text/plain":default:return"text"}}},showIf:function(e){return"POST"===e.method},editor:g}).addSelect({path:"variant",name:"Variant",description:"Button variant used to render",settings:{options:[{value:"primary",label:"Primary"},{value:"secondary",label:"Secondary"},{value:"destructive",label:"Destructive"},{value:"link",label:"Link"},{value:"custom",label:"Custom"}]},defaultValue:"primary"}).addColorPicker({path:"foregroundColor",name:"Fackground Color",description:"Foreground color of the button",settings:{disableNamedColors:!0},showIf:function(e){return"custom"===e.variant}}).addColorPicker({path:"backgroundColor",name:"Background Color",description:"Background color of the button",settings:{disableNamedColors:!0},showIf:function(e){return"custom"===e.variant}}).addRadio({path:"orientation",name:"Orientation",description:"Button orientation used to render",settings:{options:[{value:"left",label:"Left"},{value:"center",label:"Center"},{value:"right",label:"Right"}]},defaultValue:"center"}).addSelect({path:"icon",name:"Icon",description:"",settings:{options:Object(o.getAvailableIcons)().map((function(e){return{value:e,label:e}}))},defaultValue:"cog"}).addTextInput({path:"text",name:"Text",description:"The description of the button",defaultValue:"The default button label"}).addBooleanSwitch({path:"isAuth",name:"Authentication",category:["Authentication"],description:"Should basic authentication be used?",defaultValue:!1}).addTextInput({path:"username",name:"Username",category:["Authentication"],description:"ℹ️ The server MUST provide proper CORS Access-Control-Allow-* headers!",showIf:function(e){return e.isAuth}}).addTextInput({path:"password",name:"Password",category:["Authentication"],description:"⚠️ The password is NOT stored encrypted in Grafana!",showIf:function(e){return e.isAuth}})}))}])})); +define(["@grafana/data","@grafana/runtime","@grafana/ui","react"], function(__WEBPACK_EXTERNAL_MODULE__grafana_data__, __WEBPACK_EXTERNAL_MODULE__grafana_runtime__, __WEBPACK_EXTERNAL_MODULE__grafana_ui__, __WEBPACK_EXTERNAL_MODULE_react__) { return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = "/"; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./module.ts"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "../node_modules/@monaco-editor/loader/lib/es/_virtual/_rollupPluginBabelHelpers.js": +/*!******************************************************************************************!*\ + !*** ../node_modules/@monaco-editor/loader/lib/es/_virtual/_rollupPluginBabelHelpers.js ***! + \******************************************************************************************/ +/*! exports provided: arrayLikeToArray, arrayWithHoles, defineProperty, iterableToArrayLimit, nonIterableRest, objectSpread2, slicedToArray, unsupportedIterableToArray */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "arrayLikeToArray", function() { return _arrayLikeToArray; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "arrayWithHoles", function() { return _arrayWithHoles; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defineProperty", function() { return _defineProperty; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iterableToArrayLimit", function() { return _iterableToArrayLimit; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "nonIterableRest", function() { return _nonIterableRest; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "objectSpread2", function() { return _objectSpread2; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "slicedToArray", function() { return _slicedToArray; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unsupportedIterableToArray", function() { return _unsupportedIterableToArray; }); +function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; +} + +function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + if (enumerableOnly) symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + }); + keys.push.apply(keys, symbols); + } + + return keys; +} + +function _objectSpread2(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + + if (i % 2) { + ownKeys(Object(source), true).forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } else if (Object.getOwnPropertyDescriptors) { + Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); + } else { + ownKeys(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + } + + return target; +} + +function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); +} + +function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; +} + +function _iterableToArrayLimit(arr, i) { + if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; +} + +function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); +} + +function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; +} + +function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} + + + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/loader/lib/es/config/index.js": +/*!********************************************************************!*\ + !*** ../node_modules/@monaco-editor/loader/lib/es/config/index.js ***! + \********************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +var config = { + paths: { + vs: 'https://cdn.jsdelivr.net/npm/monaco-editor@0.21.2/min/vs' + } +}; + +/* harmony default export */ __webpack_exports__["default"] = (config); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/loader/lib/es/index.js": +/*!*************************************************************!*\ + !*** ../node_modules/@monaco-editor/loader/lib/es/index.js ***! + \*************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _monaco_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./monaco/index.js */ "../node_modules/@monaco-editor/loader/lib/es/monaco/index.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _monaco_index_js__WEBPACK_IMPORTED_MODULE_0__["default"]; }); + + + + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/loader/lib/es/monaco/index.js": +/*!********************************************************************!*\ + !*** ../node_modules/@monaco-editor/loader/lib/es/monaco/index.js ***! + \********************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_virtual/_rollupPluginBabelHelpers.js */ "../node_modules/@monaco-editor/loader/lib/es/_virtual/_rollupPluginBabelHelpers.js"); +/* harmony import */ var state_local__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! state-local */ "../node_modules/state-local/lib/es/state-local.js"); +/* harmony import */ var _config_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config/index.js */ "../node_modules/@monaco-editor/loader/lib/es/config/index.js"); +/* harmony import */ var _validators_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../validators/index.js */ "../node_modules/@monaco-editor/loader/lib/es/validators/index.js"); +/* harmony import */ var _utils_compose_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/compose.js */ "../node_modules/@monaco-editor/loader/lib/es/utils/compose.js"); +/* harmony import */ var _utils_deepMerge_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/deepMerge.js */ "../node_modules/@monaco-editor/loader/lib/es/utils/deepMerge.js"); +/* harmony import */ var _utils_makeCancelable_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/makeCancelable.js */ "../node_modules/@monaco-editor/loader/lib/es/utils/makeCancelable.js"); + + + + + + + + +/** the local state of the module */ + +var _state$create = state_local__WEBPACK_IMPORTED_MODULE_1__["default"].create({ + config: _config_index_js__WEBPACK_IMPORTED_MODULE_2__["default"], + isInitialized: false, + resolve: null, + reject: null +}), + _state$create2 = Object(_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__["slicedToArray"])(_state$create, 2), + getState = _state$create2[0], + setState = _state$create2[1]; +/** + * set the loader configuration + * @param {Object} config - the configuration object + */ + + +function config(config) { + setState(function (state) { + return { + config: Object(_utils_deepMerge_js__WEBPACK_IMPORTED_MODULE_5__["default"])(state.config, _validators_index_js__WEBPACK_IMPORTED_MODULE_3__["default"].config(config)) + }; + }); +} +/** + * handles the initialization of the monaco-editor + * @return {Promise} - returns an instance of monaco (with a cancelable promise) + */ + + +function init() { + var state = getState(function (_ref) { + var isInitialized = _ref.isInitialized; + return { + isInitialized: isInitialized + }; + }); + + if (!state.isInitialized) { + if (window.monaco && window.monaco.editor) { + return Object(_utils_makeCancelable_js__WEBPACK_IMPORTED_MODULE_6__["default"])(Promise.resolve(window.monaco)); + } + + Object(_utils_compose_js__WEBPACK_IMPORTED_MODULE_4__["default"])(injectScripts, getMonacoLoaderScript)(configureLoader); + setState({ + isInitialized: true + }); + } + + return Object(_utils_makeCancelable_js__WEBPACK_IMPORTED_MODULE_6__["default"])(wrapperPromise); +} +/** + * injects provided scripts into the document.body + * @param {Object} script - an HTML script element + * @return {Object} - the injected HTML script element + */ + + +function injectScripts(script) { + return document.body.appendChild(script); +} +/** + * creates an HTML script element with/without provided src + * @param {string} [src] - the source path of the script + * @return {Object} - the created HTML script element + */ + + +function createScript(src) { + var script = document.createElement('script'); + return src && (script.src = src), script; +} +/** + * creates an HTML script element with the monaco loader src + * @return {Object} - the created HTML script element + */ + + +function getMonacoLoaderScript(configureLoader) { + var state = getState(function (_ref2) { + var config = _ref2.config, + reject = _ref2.reject; + return { + config: config, + reject: reject + }; + }); + var loaderScript = createScript("".concat(state.config.paths.vs, "/loader.js")); + + loaderScript.onload = function () { + return configureLoader(); + }; + + loaderScript.onerror = state.reject; + return loaderScript; +} +/** + * configures the monaco loader + */ + + +function configureLoader() { + var state = getState(function (_ref3) { + var config = _ref3.config, + resolve = _ref3.resolve, + reject = _ref3.reject; + return { + config: config, + resolve: resolve, + reject: reject + }; + }); + var require = window.require; + + require.config(state.config); + + require(['vs/editor/editor.main'], function (monaco) { + state.resolve(monaco); + }, function (error) { + state.reject(error); + }); +} + +var wrapperPromise = new Promise(function (resolve, reject) { + return setState({ + resolve: resolve, + reject: reject + }); +}); +var monaco = { + config: config, + init: init +}; + +/* harmony default export */ __webpack_exports__["default"] = (monaco); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/loader/lib/es/utils/compose.js": +/*!*********************************************************************!*\ + !*** ../node_modules/@monaco-editor/loader/lib/es/utils/compose.js ***! + \*********************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +var compose = function compose() { + for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) { + fns[_key] = arguments[_key]; + } + + return function (x) { + return fns.reduceRight(function (y, f) { + return f(y); + }, x); + }; +}; + +/* harmony default export */ __webpack_exports__["default"] = (compose); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/loader/lib/es/utils/curry.js": +/*!*******************************************************************!*\ + !*** ../node_modules/@monaco-editor/loader/lib/es/utils/curry.js ***! + \*******************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +function curry(fn) { + return function curried() { + var _this = this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return args.length >= fn.length ? fn.apply(this, args) : function () { + for (var _len2 = arguments.length, nextArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + nextArgs[_key2] = arguments[_key2]; + } + + return curried.apply(_this, [].concat(args, nextArgs)); + }; + }; +} + +/* harmony default export */ __webpack_exports__["default"] = (curry); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/loader/lib/es/utils/deepMerge.js": +/*!***********************************************************************!*\ + !*** ../node_modules/@monaco-editor/loader/lib/es/utils/deepMerge.js ***! + \***********************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_virtual/_rollupPluginBabelHelpers.js */ "../node_modules/@monaco-editor/loader/lib/es/_virtual/_rollupPluginBabelHelpers.js"); + + +function merge(target, source) { + Object.keys(source).forEach(function (key) { + if (source[key] instanceof Object) { + if (target[key]) { + Object.assign(source[key], merge(target[key], source[key])); + } + } + }); + return Object(_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__["objectSpread2"])(Object(_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__["objectSpread2"])({}, target), source); +} + +/* harmony default export */ __webpack_exports__["default"] = (merge); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/loader/lib/es/utils/isObject.js": +/*!**********************************************************************!*\ + !*** ../node_modules/@monaco-editor/loader/lib/es/utils/isObject.js ***! + \**********************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +function isObject(value) { + return {}.toString.call(value).includes('Object'); +} + +/* harmony default export */ __webpack_exports__["default"] = (isObject); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/loader/lib/es/utils/makeCancelable.js": +/*!****************************************************************************!*\ + !*** ../node_modules/@monaco-editor/loader/lib/es/utils/makeCancelable.js ***! + \****************************************************************************/ +/*! exports provided: default, CANCELATION_MESSAGE */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CANCELATION_MESSAGE", function() { return CANCELATION_MESSAGE; }); +// The source (has been changed) is https://github.com/facebook/react/issues/5465#issuecomment-157888325 +var CANCELATION_MESSAGE = { + type: 'cancelation', + msg: 'operation is manually canceled' +}; + +function makeCancelable(promise) { + var hasCanceled_ = false; + var wrappedPromise = new Promise(function (resolve, reject) { + promise.then(function (val) { + return hasCanceled_ ? reject(CANCELATION_MESSAGE) : resolve(val); + }); + promise["catch"](reject); + }); + return wrappedPromise.cancel = function () { + return hasCanceled_ = true; + }, wrappedPromise; +} + +/* harmony default export */ __webpack_exports__["default"] = (makeCancelable); + + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/loader/lib/es/validators/index.js": +/*!************************************************************************!*\ + !*** ../node_modules/@monaco-editor/loader/lib/es/validators/index.js ***! + \************************************************************************/ +/*! exports provided: default, errorHandler, errorMessages */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "errorHandler", function() { return errorHandler; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "errorMessages", function() { return errorMessages; }); +/* harmony import */ var _utils_curry_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/curry.js */ "../node_modules/@monaco-editor/loader/lib/es/utils/curry.js"); +/* harmony import */ var _utils_isObject_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/isObject.js */ "../node_modules/@monaco-editor/loader/lib/es/utils/isObject.js"); + + + +/** + * validates the configuration object and informs about deprecation + * @param {Object} config - the configuration object + * @return {Object} config - the validated configuration object + */ + +function validateConfig(config) { + if (!config) errorHandler('configIsRequired'); + if (!Object(_utils_isObject_js__WEBPACK_IMPORTED_MODULE_1__["default"])(config)) errorHandler('configType'); + + if (config.urls) { + informAboutDeprecation(); + return { + paths: { + vs: config.urls.monacoBase + } + }; + } + + return config; +} +/** + * logs deprecation message + */ + + +function informAboutDeprecation() { + console.warn(errorMessages.deprecation); +} + +function throwError(errorMessages, type) { + throw new Error(errorMessages[type] || errorMessages["default"]); +} + +var errorMessages = { + configIsRequired: 'the configuration object is required', + configType: 'the configuration object should be an object', + "default": 'an unknown error accured in `@monaco-editor/loader` package', + deprecation: "Deprecation warning!\n You are using deprecated way of configuration.\n\n Instead of using\n monaco.config({ urls: { monacoBase: '...' } })\n use\n monaco.config({ paths: { vs: '...' } })\n\n For more please check the link https://github.com/suren-atoyan/monaco-loader#config\n " +}; +var errorHandler = Object(_utils_curry_js__WEBPACK_IMPORTED_MODULE_0__["default"])(throwError)(errorMessages); +var validators = { + config: validateConfig +}; + +/* harmony default export */ __webpack_exports__["default"] = (validators); + + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/react/lib/es/ControlledEditor/ControlledEditor.js": +/*!****************************************************************************************!*\ + !*** ../node_modules/@monaco-editor/react/lib/es/ControlledEditor/ControlledEditor.js ***! + \****************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); +/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _utils_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/index.js */ "../node_modules/@monaco-editor/react/lib/es/utils/index.js"); +/* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../_virtual/_rollupPluginBabelHelpers.js */ "../node_modules/@monaco-editor/react/lib/es/_virtual/_rollupPluginBabelHelpers.js"); +/* harmony import */ var _Editor_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Editor/index.js */ "../node_modules/@monaco-editor/react/lib/es/Editor/index.js"); + + + + + + +function ControlledEditor({ + value: providedValue, + onChange, + editorDidMount, + ...props +}) { + const editor = Object(react__WEBPACK_IMPORTED_MODULE_0__["useRef"])(null); + const listener = Object(react__WEBPACK_IMPORTED_MODULE_0__["useRef"])(null); + const value = Object(react__WEBPACK_IMPORTED_MODULE_0__["useRef"])(providedValue); // to avoid unnecessary updates in `handleEditorModelChange` + // (that depends on the `current value` and will trigger to update `attachChangeEventListener`, + // thus, the listener will be disposed and attached again for every value change) + // the current value is stored in ref (useRef) instead of being a dependency of `handleEditorModelChange` + + value.current = providedValue; + const handleEditorModelChange = Object(react__WEBPACK_IMPORTED_MODULE_0__["useCallback"])(event => { + const editorValue = editor.current.getValue(); + + if (value.current !== editorValue) { + const directChange = onChange(event, editorValue); + + if (typeof directChange === 'string' && editorValue !== directChange) { + editor.current.setValue(directChange); + } + } + }, [onChange]); + const attachChangeEventListener = Object(react__WEBPACK_IMPORTED_MODULE_0__["useCallback"])(() => { + var _editor$current; + + listener.current = (_editor$current = editor.current) === null || _editor$current === void 0 ? void 0 : _editor$current.onDidChangeModelContent(handleEditorModelChange); + }, [handleEditorModelChange]); + Object(react__WEBPACK_IMPORTED_MODULE_0__["useEffect"])(() => { + attachChangeEventListener(); + return () => { + var _listener$current; + + return (_listener$current = listener.current) === null || _listener$current === void 0 ? void 0 : _listener$current.dispose(); + }; + }, [attachChangeEventListener]); + const handleEditorDidMount = Object(react__WEBPACK_IMPORTED_MODULE_0__["useCallback"])((getValue, _editor) => { + editor.current = _editor; + attachChangeEventListener(); + editorDidMount(getValue, _editor); + }, [attachChangeEventListener, editorDidMount]); + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Editor_index_js__WEBPACK_IMPORTED_MODULE_4__["default"], Object(_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_3__["extends"])({ + value: providedValue, + editorDidMount: handleEditorDidMount, + _isControlledMode: true + }, props)); +} + +ControlledEditor.propTypes = { + value: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string, + editorDidMount: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func, + onChange: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func +}; +ControlledEditor.defaultProps = { + editorDidMount: _utils_index_js__WEBPACK_IMPORTED_MODULE_2__["noop"], + onChange: _utils_index_js__WEBPACK_IMPORTED_MODULE_2__["noop"] +}; + +/* harmony default export */ __webpack_exports__["default"] = (ControlledEditor); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/react/lib/es/ControlledEditor/index.js": +/*!*****************************************************************************!*\ + !*** ../node_modules/@monaco-editor/react/lib/es/ControlledEditor/index.js ***! + \*****************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _ControlledEditor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ControlledEditor.js */ "../node_modules/@monaco-editor/react/lib/es/ControlledEditor/ControlledEditor.js"); + + + +var index = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_0__["memo"])(_ControlledEditor_js__WEBPACK_IMPORTED_MODULE_1__["default"]); + +/* harmony default export */ __webpack_exports__["default"] = (index); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/react/lib/es/DiffEditor/DiffEditor.js": +/*!****************************************************************************!*\ + !*** ../node_modules/@monaco-editor/react/lib/es/DiffEditor/DiffEditor.js ***! + \****************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _monaco_editor_loader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @monaco-editor/loader */ "../node_modules/@monaco-editor/loader/lib/es/index.js"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); +/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _MonacoContainer_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../MonacoContainer/index.js */ "../node_modules/@monaco-editor/react/lib/es/MonacoContainer/index.js"); +/* harmony import */ var _hooks_useMount_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks/useMount/index.js */ "../node_modules/@monaco-editor/react/lib/es/hooks/useMount/index.js"); +/* harmony import */ var _hooks_useUpdate_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../hooks/useUpdate/index.js */ "../node_modules/@monaco-editor/react/lib/es/hooks/useUpdate/index.js"); +/* harmony import */ var _utils_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/index.js */ "../node_modules/@monaco-editor/react/lib/es/utils/index.js"); + + + + + + + + +function DiffEditor({ + original, + modified, + language, + originalLanguage, + modifiedLanguage, + editorDidMount, + theme, + width, + height, + loading, + options, + className, + wrapperClassName +}) { + const [isEditorReady, setIsEditorReady] = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(false); + const [isMonacoMounting, setIsMonacoMounting] = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(true); + const editorRef = Object(react__WEBPACK_IMPORTED_MODULE_1__["useRef"])(null); + const monacoRef = Object(react__WEBPACK_IMPORTED_MODULE_1__["useRef"])(null); + const containerRef = Object(react__WEBPACK_IMPORTED_MODULE_1__["useRef"])(null); + const editorDidMountRef = Object(react__WEBPACK_IMPORTED_MODULE_1__["useRef"])(editorDidMount); + Object(_hooks_useMount_index_js__WEBPACK_IMPORTED_MODULE_4__["default"])(() => { + const cancelable = _monaco_editor_loader__WEBPACK_IMPORTED_MODULE_0__["default"].init(); + cancelable.then(monaco => (monacoRef.current = monaco) && setIsMonacoMounting(false)).catch(error => (error === null || error === void 0 ? void 0 : error.type) !== 'cancelation' && console.error('Monaco initialization: error:', error)); + return () => editorRef.current ? disposeEditor() : cancelable.cancel(); + }); + Object(_hooks_useUpdate_index_js__WEBPACK_IMPORTED_MODULE_5__["default"])(() => { + editorRef.current.getModel().modified.setValue(modified); + }, [modified], isEditorReady); + Object(_hooks_useUpdate_index_js__WEBPACK_IMPORTED_MODULE_5__["default"])(() => { + editorRef.current.getModel().original.setValue(original); + }, [original], isEditorReady); + Object(_hooks_useUpdate_index_js__WEBPACK_IMPORTED_MODULE_5__["default"])(() => { + const { + original, + modified + } = editorRef.current.getModel(); + monacoRef.current.editor.setModelLanguage(original, originalLanguage || language); + monacoRef.current.editor.setModelLanguage(modified, modifiedLanguage || language); + }, [language, originalLanguage, modifiedLanguage], isEditorReady); + Object(_hooks_useUpdate_index_js__WEBPACK_IMPORTED_MODULE_5__["default"])(() => { + monacoRef.current.editor.setTheme(theme); + }, [theme], isEditorReady); + Object(_hooks_useUpdate_index_js__WEBPACK_IMPORTED_MODULE_5__["default"])(() => { + editorRef.current.updateOptions(options); + }, [options], isEditorReady); + const setModels = Object(react__WEBPACK_IMPORTED_MODULE_1__["useCallback"])(() => { + const originalModel = monacoRef.current.editor.createModel(original, originalLanguage || language); + const modifiedModel = monacoRef.current.editor.createModel(modified, modifiedLanguage || language); + editorRef.current.setModel({ + original: originalModel, + modified: modifiedModel + }); + }, [language, modified, modifiedLanguage, original, originalLanguage]); + const createEditor = Object(react__WEBPACK_IMPORTED_MODULE_1__["useCallback"])(() => { + editorRef.current = monacoRef.current.editor.createDiffEditor(containerRef.current, { + automaticLayout: true, + ...options + }); + setModels(); + monacoRef.current.editor.setTheme(theme); + setIsEditorReady(true); + }, [options, theme, setModels]); + Object(react__WEBPACK_IMPORTED_MODULE_1__["useEffect"])(() => { + if (isEditorReady) { + const { + original, + modified + } = editorRef.current.getModel(); + editorDidMountRef.current(modified.getValue.bind(modified), original.getValue.bind(original), editorRef.current); + } + }, [isEditorReady]); + Object(react__WEBPACK_IMPORTED_MODULE_1__["useEffect"])(() => { + !isMonacoMounting && !isEditorReady && createEditor(); + }, [isMonacoMounting, isEditorReady, createEditor]); + + const disposeEditor = () => editorRef.current.dispose(); + + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_MonacoContainer_index_js__WEBPACK_IMPORTED_MODULE_3__["default"], { + width: width, + height: height, + isEditorReady: isEditorReady, + loading: loading, + _ref: containerRef, + className: className, + wrapperClassName: wrapperClassName + }); +} + +DiffEditor.propTypes = { + original: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string, + modified: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string, + language: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string, + originalLanguage: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string, + modifiedLanguage: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string, + editorDidMount: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func, + theme: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string, + width: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number, prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string]), + height: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number, prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string]), + loading: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.element, prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string]), + options: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object, + className: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string, + wrapperClassName: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string +}; +DiffEditor.defaultProps = { + editorDidMount: _utils_index_js__WEBPACK_IMPORTED_MODULE_6__["noop"], + theme: 'light', + width: '100%', + height: '100%', + loading: 'Loading...', + options: {} +}; + +/* harmony default export */ __webpack_exports__["default"] = (DiffEditor); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/react/lib/es/DiffEditor/index.js": +/*!***********************************************************************!*\ + !*** ../node_modules/@monaco-editor/react/lib/es/DiffEditor/index.js ***! + \***********************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _DiffEditor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DiffEditor.js */ "../node_modules/@monaco-editor/react/lib/es/DiffEditor/DiffEditor.js"); + + + +var index = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_0__["memo"])(_DiffEditor_js__WEBPACK_IMPORTED_MODULE_1__["default"]); + +/* harmony default export */ __webpack_exports__["default"] = (index); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/react/lib/es/Editor/Editor.js": +/*!********************************************************************!*\ + !*** ../node_modules/@monaco-editor/react/lib/es/Editor/Editor.js ***! + \********************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _monaco_editor_loader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @monaco-editor/loader */ "../node_modules/@monaco-editor/loader/lib/es/index.js"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); +/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _MonacoContainer_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../MonacoContainer/index.js */ "../node_modules/@monaco-editor/react/lib/es/MonacoContainer/index.js"); +/* harmony import */ var _hooks_useMount_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks/useMount/index.js */ "../node_modules/@monaco-editor/react/lib/es/hooks/useMount/index.js"); +/* harmony import */ var _hooks_useUpdate_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../hooks/useUpdate/index.js */ "../node_modules/@monaco-editor/react/lib/es/hooks/useUpdate/index.js"); +/* harmony import */ var _utils_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/index.js */ "../node_modules/@monaco-editor/react/lib/es/utils/index.js"); + + + + + + + + +function Editor({ + value, + language, + editorDidMount, + theme, + line, + width, + height, + loading, + options, + overrideServices, + _isControlledMode, + className, + wrapperClassName +}) { + const [isEditorReady, setIsEditorReady] = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(false); + const [isMonacoMounting, setIsMonacoMounting] = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(true); + const editorRef = Object(react__WEBPACK_IMPORTED_MODULE_1__["useRef"])(null); + const monacoRef = Object(react__WEBPACK_IMPORTED_MODULE_1__["useRef"])(null); + const containerRef = Object(react__WEBPACK_IMPORTED_MODULE_1__["useRef"])(null); + const editorDidMountRef = Object(react__WEBPACK_IMPORTED_MODULE_1__["useRef"])(editorDidMount); + Object(_hooks_useMount_index_js__WEBPACK_IMPORTED_MODULE_4__["default"])(() => { + const cancelable = _monaco_editor_loader__WEBPACK_IMPORTED_MODULE_0__["default"].init(); + cancelable.then(monaco => (monacoRef.current = monaco) && setIsMonacoMounting(false)).catch(error => (error === null || error === void 0 ? void 0 : error.type) !== 'cancelation' && console.error('Monaco initialization: error:', error)); + return () => editorRef.current ? disposeEditor() : cancelable.cancel(); + }); + Object(_hooks_useUpdate_index_js__WEBPACK_IMPORTED_MODULE_5__["default"])(() => { + editorRef.current.updateOptions(options); + }, [options], isEditorReady); + Object(_hooks_useUpdate_index_js__WEBPACK_IMPORTED_MODULE_5__["default"])(() => { + if (editorRef.current.getOption(monacoRef.current.editor.EditorOption.readOnly)) { + editorRef.current.setValue(value); + } else { + if (value !== editorRef.current.getValue()) { + editorRef.current.executeEdits('', [{ + range: editorRef.current.getModel().getFullModelRange(), + text: value, + forceMoveMarkers: true + }]); + + if (_isControlledMode) { + const model = editorRef.current.getModel(); + model.forceTokenization(model.getLineCount()); + } + + editorRef.current.pushUndoStop(); + } + } + }, [value], isEditorReady); + Object(_hooks_useUpdate_index_js__WEBPACK_IMPORTED_MODULE_5__["default"])(() => { + monacoRef.current.editor.setModelLanguage(editorRef.current.getModel(), language); + }, [language], isEditorReady); + Object(_hooks_useUpdate_index_js__WEBPACK_IMPORTED_MODULE_5__["default"])(() => { + editorRef.current.setScrollPosition({ + scrollTop: line + }); + }, [line], isEditorReady); + Object(_hooks_useUpdate_index_js__WEBPACK_IMPORTED_MODULE_5__["default"])(() => { + monacoRef.current.editor.setTheme(theme); + }, [theme], isEditorReady); + const createEditor = Object(react__WEBPACK_IMPORTED_MODULE_1__["useCallback"])(() => { + editorRef.current = monacoRef.current.editor.create(containerRef.current, { + value, + language, + automaticLayout: true, + ...options + }, overrideServices); + monacoRef.current.editor.setTheme(theme); + setIsEditorReady(true); + }, [language, options, overrideServices, theme, value]); + Object(react__WEBPACK_IMPORTED_MODULE_1__["useEffect"])(() => { + if (isEditorReady) { + editorDidMountRef.current(editorRef.current.getValue.bind(editorRef.current), editorRef.current); + } + }, [isEditorReady]); + Object(react__WEBPACK_IMPORTED_MODULE_1__["useEffect"])(() => { + !isMonacoMounting && !isEditorReady && createEditor(); + }, [isMonacoMounting, isEditorReady, createEditor]); + + const disposeEditor = () => editorRef.current.dispose(); + + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_MonacoContainer_index_js__WEBPACK_IMPORTED_MODULE_3__["default"], { + width: width, + height: height, + isEditorReady: isEditorReady, + loading: loading, + _ref: containerRef, + className: className, + wrapperClassName: wrapperClassName + }); +} + +Editor.propTypes = { + value: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string, + language: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string, + editorDidMount: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func, + theme: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string, + line: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number, + width: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number, prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string]), + height: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number, prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string]), + loading: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.element, prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string]), + options: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object, + className: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string, + wrapperClassName: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string, + overrideServices: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object, + _isControlledMode: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool +}; +Editor.defaultProps = { + editorDidMount: _utils_index_js__WEBPACK_IMPORTED_MODULE_6__["noop"], + theme: 'light', + width: '100%', + height: '100%', + loading: 'Loading...', + options: {}, + overrideServices: {}, + _isControlledMode: false +}; + +/* harmony default export */ __webpack_exports__["default"] = (Editor); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/react/lib/es/Editor/index.js": +/*!*******************************************************************!*\ + !*** ../node_modules/@monaco-editor/react/lib/es/Editor/index.js ***! + \*******************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _Editor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Editor.js */ "../node_modules/@monaco-editor/react/lib/es/Editor/Editor.js"); + + + +var Editor = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_0__["memo"])(_Editor_js__WEBPACK_IMPORTED_MODULE_1__["default"]); + +/* harmony default export */ __webpack_exports__["default"] = (Editor); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/react/lib/es/Loading/Loading.js": +/*!**********************************************************************!*\ + !*** ../node_modules/@monaco-editor/react/lib/es/Loading/Loading.js ***! + \**********************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); + + +const loadingStyles = { + display: 'flex', + height: '100%', + width: '100%', + justifyContent: 'center', + alignItems: 'center' +}; + +function Loading({ + content +}) { + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { + style: loadingStyles + }, content); +} + +/* harmony default export */ __webpack_exports__["default"] = (Loading); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/react/lib/es/MonacoContainer/MonacoContainer.js": +/*!**************************************************************************************!*\ + !*** ../node_modules/@monaco-editor/react/lib/es/MonacoContainer/MonacoContainer.js ***! + \**************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); +/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _Loading_Loading_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Loading/Loading.js */ "../node_modules/@monaco-editor/react/lib/es/Loading/Loading.js"); +/* harmony import */ var _styles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./styles.js */ "../node_modules/@monaco-editor/react/lib/es/MonacoContainer/styles.js"); + + + + + +// one of the reasons why we use a separate prop for passing ref instead of using forwardref + +function MonacoContainer({ + width, + height, + isEditorReady, + loading, + _ref, + className, + wrapperClassName +}) { + return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("section", { + style: { ..._styles_js__WEBPACK_IMPORTED_MODULE_3__["default"].wrapper, + width, + height + }, + className: wrapperClassName + }, !isEditorReady && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Loading_Loading_js__WEBPACK_IMPORTED_MODULE_2__["default"], { + content: loading + }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { + ref: _ref, + style: { ..._styles_js__WEBPACK_IMPORTED_MODULE_3__["default"].fullWidth, + ...(!isEditorReady && _styles_js__WEBPACK_IMPORTED_MODULE_3__["default"].hide) + }, + className: className + })); +} + +MonacoContainer.propTypes = { + width: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number, prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string]).isRequired, + height: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number, prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string]).isRequired, + loading: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.element, prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string]).isRequired, + isEditorReady: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool.isRequired, + className: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string, + wrapperClassName: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string +}; + +/* harmony default export */ __webpack_exports__["default"] = (MonacoContainer); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/react/lib/es/MonacoContainer/index.js": +/*!****************************************************************************!*\ + !*** ../node_modules/@monaco-editor/react/lib/es/MonacoContainer/index.js ***! + \****************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _MonacoContainer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./MonacoContainer.js */ "../node_modules/@monaco-editor/react/lib/es/MonacoContainer/MonacoContainer.js"); + + + +var MonacoContainer = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_0__["memo"])(_MonacoContainer_js__WEBPACK_IMPORTED_MODULE_1__["default"]); + +/* harmony default export */ __webpack_exports__["default"] = (MonacoContainer); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/react/lib/es/MonacoContainer/styles.js": +/*!*****************************************************************************!*\ + !*** ../node_modules/@monaco-editor/react/lib/es/MonacoContainer/styles.js ***! + \*****************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +const styles = { + wrapper: { + display: 'flex', + position: 'relative', + textAlign: 'initial' + }, + fullWidth: { + width: '100%' + }, + hide: { + display: 'none' + } +}; + +/* harmony default export */ __webpack_exports__["default"] = (styles); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/react/lib/es/_virtual/_rollupPluginBabelHelpers.js": +/*!*****************************************************************************************!*\ + !*** ../node_modules/@monaco-editor/react/lib/es/_virtual/_rollupPluginBabelHelpers.js ***! + \*****************************************************************************************/ +/*! exports provided: extends */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "extends", function() { return _extends; }); +function _extends() { + _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + return _extends.apply(this, arguments); +} + + + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/react/lib/es/hooks/useMount/index.js": +/*!***************************************************************************!*\ + !*** ../node_modules/@monaco-editor/react/lib/es/hooks/useMount/index.js ***! + \***************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); + + +function useMount(effect) { + Object(react__WEBPACK_IMPORTED_MODULE_0__["useEffect"])(effect, []); +} + +/* harmony default export */ __webpack_exports__["default"] = (useMount); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/react/lib/es/hooks/useUpdate/index.js": +/*!****************************************************************************!*\ + !*** ../node_modules/@monaco-editor/react/lib/es/hooks/useUpdate/index.js ***! + \****************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); + + +function useUpdate(effect, deps, applyChanges = true) { + const isInitialMount = Object(react__WEBPACK_IMPORTED_MODULE_0__["useRef"])(true); + Object(react__WEBPACK_IMPORTED_MODULE_0__["useEffect"])(isInitialMount.current || !applyChanges ? () => { + isInitialMount.current = false; + } : effect, deps); +} + +/* harmony default export */ __webpack_exports__["default"] = (useUpdate); + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/react/lib/es/index.js": +/*!************************************************************!*\ + !*** ../node_modules/@monaco-editor/react/lib/es/index.js ***! + \************************************************************/ +/*! exports provided: monaco, DiffEditor, default, ControlledEditor */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _monaco_editor_loader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @monaco-editor/loader */ "../node_modules/@monaco-editor/loader/lib/es/index.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "monaco", function() { return _monaco_editor_loader__WEBPACK_IMPORTED_MODULE_0__["default"]; }); + +/* harmony import */ var _DiffEditor_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DiffEditor/index.js */ "../node_modules/@monaco-editor/react/lib/es/DiffEditor/index.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DiffEditor", function() { return _DiffEditor_index_js__WEBPACK_IMPORTED_MODULE_1__["default"]; }); + +/* harmony import */ var _Editor_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Editor/index.js */ "../node_modules/@monaco-editor/react/lib/es/Editor/index.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _Editor_index_js__WEBPACK_IMPORTED_MODULE_2__["default"]; }); + +/* harmony import */ var _ControlledEditor_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ControlledEditor/index.js */ "../node_modules/@monaco-editor/react/lib/es/ControlledEditor/index.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ControlledEditor", function() { return _ControlledEditor_index_js__WEBPACK_IMPORTED_MODULE_3__["default"]; }); + + + + + + + +/***/ }), + +/***/ "../node_modules/@monaco-editor/react/lib/es/utils/index.js": +/*!******************************************************************!*\ + !*** ../node_modules/@monaco-editor/react/lib/es/utils/index.js ***! + \******************************************************************/ +/*! exports provided: noop */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return noop; }); +function noop() {} + + + + +/***/ }), + +/***/ "../node_modules/css-loader/dist/cjs.js?!../node_modules/postcss-loader/src/index.js?!../node_modules/sass-loader/dist/cjs.js!./static/button-panel.css": +/*!***********************************************************************************************************************************************************************!*\ + !*** ../node_modules/css-loader/dist/cjs.js??ref--8-1!../node_modules/postcss-loader/src??ref--8-2!../node_modules/sass-loader/dist/cjs.js!./static/button-panel.css ***! + \***********************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +// Imports +var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ "../node_modules/css-loader/dist/runtime/api.js"); +exports = ___CSS_LOADER_API_IMPORT___(true); +// Module +exports.push([module.i, "@-webkit-keyframes spin {\n from {\n transform: scale(1) rotate(0deg);\n }\n to {\n transform: scale(1) rotate(360deg);\n }\n}\n@keyframes spin {\n from {\n transform: scale(1) rotate(0deg);\n }\n to {\n transform: scale(1) rotate(360deg);\n }\n}\n.spinning > * > *:first-child {\n -webkit-animation: spin 1s infinite linear;\n animation: spin 1s infinite linear;\n}\n\n.center {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.left {\n float: left;\n}\n\n.right {\n float: right;\n}\n\n.returnText {\n width: 250px;\n word-wrap: break-word;\n align-items: center;\n display: flex;\n background-color: black;\n border-radius: 5%;\n color: honeydew;\n}", "",{"version":3,"sources":["button-panel.css"],"names":[],"mappings":"AAAA;EACE;IACE,gCAAgC;EAClC;EACA;IACE,kCAAkC;EACpC;AACF;AACA;EACE;IACE,gCAAgC;EAClC;EACA;IACE,kCAAkC;EACpC;AACF;AACA;EACE,0CAA0C;UAClC,kCAAkC;AAC5C;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,uBAAuB;AACzB;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,YAAY;EACZ,qBAAqB;EACrB,mBAAmB;EACnB,aAAa;EACb,uBAAuB;EACvB,iBAAiB;EACjB,eAAe;AACjB","file":"button-panel.css","sourcesContent":["@-webkit-keyframes spin {\n from {\n transform: scale(1) rotate(0deg);\n }\n to {\n transform: scale(1) rotate(360deg);\n }\n}\n@keyframes spin {\n from {\n transform: scale(1) rotate(0deg);\n }\n to {\n transform: scale(1) rotate(360deg);\n }\n}\n.spinning > * > *:first-child {\n -webkit-animation: spin 1s infinite linear;\n animation: spin 1s infinite linear;\n}\n\n.center {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.left {\n float: left;\n}\n\n.right {\n float: right;\n}\n\n.returnText {\n width: 250px;\n word-wrap: break-word;\n align-items: center;\n display: flex;\n background-color: black;\n border-radius: 5%;\n color: honeydew;\n}"]}]); +// Exports +module.exports = exports; + + +/***/ }), + +/***/ "../node_modules/css-loader/dist/runtime/api.js": +/*!******************************************************!*\ + !*** ../node_modules/css-loader/dist/runtime/api.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +// css base code, injected by the css-loader +// eslint-disable-next-line func-names +module.exports = function (useSourceMap) { + var list = []; // return the list of modules as css string + + list.toString = function toString() { + return this.map(function (item) { + var content = cssWithMappingToString(item, useSourceMap); + + if (item[2]) { + return "@media ".concat(item[2], " {").concat(content, "}"); + } + + return content; + }).join(''); + }; // import a list of modules into the list + // eslint-disable-next-line func-names + + + list.i = function (modules, mediaQuery, dedupe) { + if (typeof modules === 'string') { + // eslint-disable-next-line no-param-reassign + modules = [[null, modules, '']]; + } + + var alreadyImportedModules = {}; + + if (dedupe) { + for (var i = 0; i < this.length; i++) { + // eslint-disable-next-line prefer-destructuring + var id = this[i][0]; + + if (id != null) { + alreadyImportedModules[id] = true; + } + } + } + + for (var _i = 0; _i < modules.length; _i++) { + var item = [].concat(modules[_i]); + + if (dedupe && alreadyImportedModules[item[0]]) { + // eslint-disable-next-line no-continue + continue; + } + + if (mediaQuery) { + if (!item[2]) { + item[2] = mediaQuery; + } else { + item[2] = "".concat(mediaQuery, " and ").concat(item[2]); + } + } + + list.push(item); + } + }; + + return list; +}; + +function cssWithMappingToString(item, useSourceMap) { + var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring + + var cssMapping = item[3]; + + if (!cssMapping) { + return content; + } + + if (useSourceMap && typeof btoa === 'function') { + var sourceMapping = toComment(cssMapping); + var sourceURLs = cssMapping.sources.map(function (source) { + return "/*# sourceURL=".concat(cssMapping.sourceRoot || '').concat(source, " */"); + }); + return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); + } + + return [content].join('\n'); +} // Adapted from convert-source-map (MIT) + + +function toComment(sourceMap) { + // eslint-disable-next-line no-undef + var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); + var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64); + return "/*# ".concat(data, " */"); +} + +/***/ }), + +/***/ "../node_modules/object-assign/index.js": +/*!**********************************************!*\ + !*** ../node_modules/object-assign/index.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + + +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; + + +/***/ }), + +/***/ "../node_modules/prop-types/checkPropTypes.js": +/*!****************************************************!*\ + !*** ../node_modules/prop-types/checkPropTypes.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var printWarning = function() {}; + +if (true) { + var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js"); + var loggedTypeFailures = {}; + var has = Function.call.bind(Object.prototype.hasOwnProperty); + + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; +} + +/** + * Assert that the values match with the type specs. + * Error messages are memorized and will only be shown once. + * + * @param {object} typeSpecs Map of name to a ReactPropType + * @param {object} values Runtime values that need to be type-checked + * @param {string} location e.g. "prop", "context", "child context" + * @param {string} componentName Name of the component for error messages. + * @param {?Function} getStack Returns the component stack. + * @private + */ +function checkPropTypes(typeSpecs, values, location, componentName, getStack) { + if (true) { + for (var typeSpecName in typeSpecs) { + if (has(typeSpecs, typeSpecName)) { + var error; + // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + if (typeof typeSpecs[typeSpecName] !== 'function') { + var err = Error( + (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + ); + err.name = 'Invariant Violation'; + throw err; + } + error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); + } catch (ex) { + error = ex; + } + if (error && !(error instanceof Error)) { + printWarning( + (componentName || 'React class') + ': type specification of ' + + location + ' `' + typeSpecName + '` is invalid; the type checker ' + + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + + 'You may have forgotten to pass an argument to the type checker ' + + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + + 'shape all require an argument).' + ); + } + if (error instanceof Error && !(error.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error.message] = true; + + var stack = getStack ? getStack() : ''; + + printWarning( + 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') + ); + } + } + } + } +} + +/** + * Resets warning cache when testing. + * + * @private + */ +checkPropTypes.resetWarningCache = function() { + if (true) { + loggedTypeFailures = {}; + } +} + +module.exports = checkPropTypes; + + +/***/ }), + +/***/ "../node_modules/prop-types/factoryWithTypeCheckers.js": +/*!*************************************************************!*\ + !*** ../node_modules/prop-types/factoryWithTypeCheckers.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/react-is/index.js"); +var assign = __webpack_require__(/*! object-assign */ "../node_modules/object-assign/index.js"); + +var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js"); +var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "../node_modules/prop-types/checkPropTypes.js"); + +var has = Function.call.bind(Object.prototype.hasOwnProperty); +var printWarning = function() {}; + +if (true) { + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; +} + +function emptyFunctionThatReturnsNull() { + return null; +} + +module.exports = function(isValidElement, throwOnDirectAccess) { + /* global Symbol */ + var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. + + /** + * Returns the iterator method function contained on the iterable object. + * + * Be sure to invoke the function with the iterable as context: + * + * var iteratorFn = getIteratorFn(myIterable); + * if (iteratorFn) { + * var iterator = iteratorFn.call(myIterable); + * ... + * } + * + * @param {?object} maybeIterable + * @return {?function} + */ + function getIteratorFn(maybeIterable) { + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); + if (typeof iteratorFn === 'function') { + return iteratorFn; + } + } + + /** + * Collection of methods that allow declaration and validation of props that are + * supplied to React components. Example usage: + * + * var Props = require('ReactPropTypes'); + * var MyArticle = React.createClass({ + * propTypes: { + * // An optional string prop named "description". + * description: Props.string, + * + * // A required enum prop named "category". + * category: Props.oneOf(['News','Photos']).isRequired, + * + * // A prop named "dialog" that requires an instance of Dialog. + * dialog: Props.instanceOf(Dialog).isRequired + * }, + * render: function() { ... } + * }); + * + * A more formal specification of how these methods are used: + * + * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) + * decl := ReactPropTypes.{type}(.isRequired)? + * + * Each and every declaration produces a function with the same signature. This + * allows the creation of custom validation functions. For example: + * + * var MyLink = React.createClass({ + * propTypes: { + * // An optional string or URI prop named "href". + * href: function(props, propName, componentName) { + * var propValue = props[propName]; + * if (propValue != null && typeof propValue !== 'string' && + * !(propValue instanceof URI)) { + * return new Error( + * 'Expected a string or an URI for ' + propName + ' in ' + + * componentName + * ); + * } + * } + * }, + * render: function() {...} + * }); + * + * @internal + */ + + var ANONYMOUS = '<>'; + + // Important! + // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. + var ReactPropTypes = { + array: createPrimitiveTypeChecker('array'), + bool: createPrimitiveTypeChecker('boolean'), + func: createPrimitiveTypeChecker('function'), + number: createPrimitiveTypeChecker('number'), + object: createPrimitiveTypeChecker('object'), + string: createPrimitiveTypeChecker('string'), + symbol: createPrimitiveTypeChecker('symbol'), + + any: createAnyTypeChecker(), + arrayOf: createArrayOfTypeChecker, + element: createElementTypeChecker(), + elementType: createElementTypeTypeChecker(), + instanceOf: createInstanceTypeChecker, + node: createNodeChecker(), + objectOf: createObjectOfTypeChecker, + oneOf: createEnumTypeChecker, + oneOfType: createUnionTypeChecker, + shape: createShapeTypeChecker, + exact: createStrictShapeTypeChecker, + }; + + /** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ + /*eslint-disable no-self-compare*/ + function is(x, y) { + // SameValue algorithm + if (x === y) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return x !== 0 || 1 / x === 1 / y; + } else { + // Step 6.a: NaN == NaN + return x !== x && y !== y; + } + } + /*eslint-enable no-self-compare*/ + + /** + * We use an Error-like object for backward compatibility as people may call + * PropTypes directly and inspect their output. However, we don't use real + * Errors anymore. We don't inspect their stack anyway, and creating them + * is prohibitively expensive if they are created too often, such as what + * happens in oneOfType() for any type before the one that matched. + */ + function PropTypeError(message) { + this.message = message; + this.stack = ''; + } + // Make `instanceof Error` still work for returned errors. + PropTypeError.prototype = Error.prototype; + + function createChainableTypeChecker(validate) { + if (true) { + var manualPropTypeCallCache = {}; + var manualPropTypeWarningCount = 0; + } + function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { + componentName = componentName || ANONYMOUS; + propFullName = propFullName || propName; + + if (secret !== ReactPropTypesSecret) { + if (throwOnDirectAccess) { + // New behavior only for users of `prop-types` package + var err = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use `PropTypes.checkPropTypes()` to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + err.name = 'Invariant Violation'; + throw err; + } else if ( true && typeof console !== 'undefined') { + // Old behavior for people using React.PropTypes + var cacheKey = componentName + ':' + propName; + if ( + !manualPropTypeCallCache[cacheKey] && + // Avoid spamming the console because they are often not actionable except for lib authors + manualPropTypeWarningCount < 3 + ) { + printWarning( + 'You are manually calling a React.PropTypes validation ' + + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + + 'and will throw in the standalone `prop-types` package. ' + + 'You may be seeing this warning due to a third-party PropTypes ' + + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' + ); + manualPropTypeCallCache[cacheKey] = true; + manualPropTypeWarningCount++; + } + } + } + if (props[propName] == null) { + if (isRequired) { + if (props[propName] === null) { + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); + } + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); + } + return null; + } else { + return validate(props, propName, componentName, location, propFullName); + } + } + + var chainedCheckType = checkType.bind(null, false); + chainedCheckType.isRequired = checkType.bind(null, true); + + return chainedCheckType; + } + + function createPrimitiveTypeChecker(expectedType) { + function validate(props, propName, componentName, location, propFullName, secret) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== expectedType) { + // `propValue` being instance of, say, date/regexp, pass the 'object' + // check, but we can offer a more precise error message here rather than + // 'of type `object`'. + var preciseType = getPreciseType(propValue); + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createAnyTypeChecker() { + return createChainableTypeChecker(emptyFunctionThatReturnsNull); + } + + function createArrayOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); + } + var propValue = props[propName]; + if (!Array.isArray(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); + } + for (var i = 0; i < propValue.length; i++) { + var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!isValidElement(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!ReactIs.isValidElementType(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createInstanceTypeChecker(expectedClass) { + function validate(props, propName, componentName, location, propFullName) { + if (!(props[propName] instanceof expectedClass)) { + var expectedClassName = expectedClass.name || ANONYMOUS; + var actualClassName = getClassName(props[propName]); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createEnumTypeChecker(expectedValues) { + if (!Array.isArray(expectedValues)) { + if (true) { + if (arguments.length > 1) { + printWarning( + 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' + ); + } else { + printWarning('Invalid argument supplied to oneOf, expected an array.'); + } + } + return emptyFunctionThatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + for (var i = 0; i < expectedValues.length; i++) { + if (is(propValue, expectedValues[i])) { + return null; + } + } + + var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { + var type = getPreciseType(value); + if (type === 'symbol') { + return String(value); + } + return value; + }); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); + } + return createChainableTypeChecker(validate); + } + + function createObjectOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); + } + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); + } + for (var key in propValue) { + if (has(propValue, key)) { + var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createUnionTypeChecker(arrayOfTypeCheckers) { + if (!Array.isArray(arrayOfTypeCheckers)) { + true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : undefined; + return emptyFunctionThatReturnsNull; + } + + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (typeof checker !== 'function') { + printWarning( + 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' + ); + return emptyFunctionThatReturnsNull; + } + } + + function validate(props, propName, componentName, location, propFullName) { + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) { + return null; + } + } + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); + } + return createChainableTypeChecker(validate); + } + + function createNodeChecker() { + function validate(props, propName, componentName, location, propFullName) { + if (!isNode(props[propName])) { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + for (var key in shapeTypes) { + var checker = shapeTypes[key]; + if (!checker) { + continue; + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createStrictShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + // We need to check all keys in case some are required but missing from + // props. + var allKeys = assign({}, props[propName], shapeTypes); + for (var key in allKeys) { + var checker = shapeTypes[key]; + if (!checker) { + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') + ); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + + return createChainableTypeChecker(validate); + } + + function isNode(propValue) { + switch (typeof propValue) { + case 'number': + case 'string': + case 'undefined': + return true; + case 'boolean': + return !propValue; + case 'object': + if (Array.isArray(propValue)) { + return propValue.every(isNode); + } + if (propValue === null || isValidElement(propValue)) { + return true; + } + + var iteratorFn = getIteratorFn(propValue); + if (iteratorFn) { + var iterator = iteratorFn.call(propValue); + var step; + if (iteratorFn !== propValue.entries) { + while (!(step = iterator.next()).done) { + if (!isNode(step.value)) { + return false; + } + } + } else { + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + if (!isNode(entry[1])) { + return false; + } + } + } + } + } else { + return false; + } + + return true; + default: + return false; + } + } + + function isSymbol(propType, propValue) { + // Native Symbol. + if (propType === 'symbol') { + return true; + } + + // falsy value can't be a Symbol + if (!propValue) { + return false; + } + + // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' + if (propValue['@@toStringTag'] === 'Symbol') { + return true; + } + + // Fallback for non-spec compliant Symbols which are polyfilled. + if (typeof Symbol === 'function' && propValue instanceof Symbol) { + return true; + } + + return false; + } + + // Equivalent of `typeof` but with special handling for array and regexp. + function getPropType(propValue) { + var propType = typeof propValue; + if (Array.isArray(propValue)) { + return 'array'; + } + if (propValue instanceof RegExp) { + // Old webkits (at least until Android 4.0) return 'function' rather than + // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ + // passes PropTypes.object. + return 'object'; + } + if (isSymbol(propType, propValue)) { + return 'symbol'; + } + return propType; + } + + // This handles more types than `getPropType`. Only used for error messages. + // See `createPrimitiveTypeChecker`. + function getPreciseType(propValue) { + if (typeof propValue === 'undefined' || propValue === null) { + return '' + propValue; + } + var propType = getPropType(propValue); + if (propType === 'object') { + if (propValue instanceof Date) { + return 'date'; + } else if (propValue instanceof RegExp) { + return 'regexp'; + } + } + return propType; + } + + // Returns a string that is postfixed to a warning about an invalid type. + // For example, "undefined" or "of type array" + function getPostfixForTypeWarning(value) { + var type = getPreciseType(value); + switch (type) { + case 'array': + case 'object': + return 'an ' + type; + case 'boolean': + case 'date': + case 'regexp': + return 'a ' + type; + default: + return type; + } + } + + // Returns class name of the object, if any. + function getClassName(propValue) { + if (!propValue.constructor || !propValue.constructor.name) { + return ANONYMOUS; + } + return propValue.constructor.name; + } + + ReactPropTypes.checkPropTypes = checkPropTypes; + ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; + + +/***/ }), + +/***/ "../node_modules/prop-types/index.js": +/*!*******************************************!*\ + !*** ../node_modules/prop-types/index.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +if (true) { + var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/react-is/index.js"); + + // By explicitly using `prop-types` you are opting into new development behavior. + // http://fb.me/prop-types-in-prod + var throwOnDirectAccess = true; + module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "../node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess); +} else {} + + +/***/ }), + +/***/ "../node_modules/prop-types/lib/ReactPropTypesSecret.js": +/*!**************************************************************!*\ + !*** ../node_modules/prop-types/lib/ReactPropTypesSecret.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +module.exports = ReactPropTypesSecret; + + +/***/ }), + +/***/ "../node_modules/react-is/cjs/react-is.development.js": +/*!************************************************************!*\ + !*** ../node_modules/react-is/cjs/react-is.development.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** @license React v16.13.1 + * react-is.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + + + +if (true) { + (function() { +'use strict'; + +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. +var hasSymbol = typeof Symbol === 'function' && Symbol.for; +var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; +var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; +var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; +var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; +var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; +var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; +var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary +// (unstable) APIs that have been removed. Can we remove the symbols? + +var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; +var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; +var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; +var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; +var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; +var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; +var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; +var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; +var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; +var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; +var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; + +function isValidElementType(type) { + return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. + type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); +} + +function typeOf(object) { + if (typeof object === 'object' && object !== null) { + var $$typeof = object.$$typeof; + + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + + switch (type) { + case REACT_ASYNC_MODE_TYPE: + case REACT_CONCURRENT_MODE_TYPE: + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + return type; + + default: + var $$typeofType = type && type.$$typeof; + + switch ($$typeofType) { + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + + default: + return $$typeof; + } + + } + + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + + return undefined; +} // AsyncMode is deprecated along with isAsyncMode + +var AsyncMode = REACT_ASYNC_MODE_TYPE; +var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; +var ContextConsumer = REACT_CONTEXT_TYPE; +var ContextProvider = REACT_PROVIDER_TYPE; +var Element = REACT_ELEMENT_TYPE; +var ForwardRef = REACT_FORWARD_REF_TYPE; +var Fragment = REACT_FRAGMENT_TYPE; +var Lazy = REACT_LAZY_TYPE; +var Memo = REACT_MEMO_TYPE; +var Portal = REACT_PORTAL_TYPE; +var Profiler = REACT_PROFILER_TYPE; +var StrictMode = REACT_STRICT_MODE_TYPE; +var Suspense = REACT_SUSPENSE_TYPE; +var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated + +function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint + + console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); + } + } + + return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; +} +function isConcurrentMode(object) { + return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; +} +function isContextConsumer(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; +} +function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; +} +function isElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; +} +function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; +} +function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; +} +function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; +} +function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; +} +function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; +} +function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; +} +function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; +} +function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; +} + +exports.AsyncMode = AsyncMode; +exports.ConcurrentMode = ConcurrentMode; +exports.ContextConsumer = ContextConsumer; +exports.ContextProvider = ContextProvider; +exports.Element = Element; +exports.ForwardRef = ForwardRef; +exports.Fragment = Fragment; +exports.Lazy = Lazy; +exports.Memo = Memo; +exports.Portal = Portal; +exports.Profiler = Profiler; +exports.StrictMode = StrictMode; +exports.Suspense = Suspense; +exports.isAsyncMode = isAsyncMode; +exports.isConcurrentMode = isConcurrentMode; +exports.isContextConsumer = isContextConsumer; +exports.isContextProvider = isContextProvider; +exports.isElement = isElement; +exports.isForwardRef = isForwardRef; +exports.isFragment = isFragment; +exports.isLazy = isLazy; +exports.isMemo = isMemo; +exports.isPortal = isPortal; +exports.isProfiler = isProfiler; +exports.isStrictMode = isStrictMode; +exports.isSuspense = isSuspense; +exports.isValidElementType = isValidElementType; +exports.typeOf = typeOf; + })(); +} + + +/***/ }), + +/***/ "../node_modules/react-is/index.js": +/*!*****************************************!*\ + !*** ../node_modules/react-is/index.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +if (false) {} else { + module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "../node_modules/react-is/cjs/react-is.development.js"); +} + + +/***/ }), + +/***/ "../node_modules/state-local/lib/es/state-local.js": +/*!*********************************************************!*\ + !*** ../node_modules/state-local/lib/es/state-local.js ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; +} + +function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + if (enumerableOnly) symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + }); + keys.push.apply(keys, symbols); + } + + return keys; +} + +function _objectSpread2(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + + if (i % 2) { + ownKeys(Object(source), true).forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } else if (Object.getOwnPropertyDescriptors) { + Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); + } else { + ownKeys(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + } + + return target; +} + +function compose() { + for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) { + fns[_key] = arguments[_key]; + } + + return function (x) { + return fns.reduceRight(function (y, f) { + return f(y); + }, x); + }; +} + +function curry(fn) { + return function curried() { + var _this = this; + + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + return args.length >= fn.length ? fn.apply(this, args) : function () { + for (var _len3 = arguments.length, nextArgs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + nextArgs[_key3] = arguments[_key3]; + } + + return curried.apply(_this, [].concat(args, nextArgs)); + }; + }; +} + +function isObject(value) { + return {}.toString.call(value).includes('Object'); +} + +function isEmpty(obj) { + return !Object.keys(obj).length; +} + +function isFunction(value) { + return typeof value === 'function'; +} + +function hasOwnProperty(object, property) { + return Object.prototype.hasOwnProperty.call(object, property); +} + +function validateChanges(initial, changes) { + if (!isObject(changes)) errorHandler('changeType'); + if (Object.keys(changes).some(function (field) { + return !hasOwnProperty(initial, field); + })) errorHandler('changeField'); + return changes; +} + +function validateSelector(selector) { + if (!isFunction(selector)) errorHandler('selectorType'); +} + +function validateHandler(handler) { + if (!(isFunction(handler) || isObject(handler))) errorHandler('handlerType'); + if (isObject(handler) && Object.values(handler).some(function (_handler) { + return !isFunction(_handler); + })) errorHandler('handlersType'); +} + +function validateInitial(initial) { + if (!initial) errorHandler('initialIsRequired'); + if (!isObject(initial)) errorHandler('initialType'); + if (isEmpty(initial)) errorHandler('initialContent'); +} + +function throwError(errorMessages, type) { + throw new Error(errorMessages[type] || errorMessages["default"]); +} + +var errorMessages = { + initialIsRequired: 'initial state is required', + initialType: 'initial state should be an object', + initialContent: 'initial state shouldn\'t be an empty object', + handlerType: 'handler should be an object or a function', + handlersType: 'all handlers should be a functions', + selectorType: 'selector should be a function', + changeType: 'provided value of changes should be an object', + changeField: 'it seams you want to change a field in the state which is not specified in the "initial" state', + "default": 'an unknown error accured in `state-local` package' +}; +var errorHandler = curry(throwError)(errorMessages); +var validators = { + changes: validateChanges, + selector: validateSelector, + handler: validateHandler, + initial: validateInitial +}; + +function create(initial) { + var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + validators.initial(initial); + validators.handler(handler); + var state = { + current: initial + }; + var didUpdate = curry(didStateUpdate)(state, handler); + var update = curry(updateState)(state); + var validate = curry(validators.changes)(initial); + var getChanges = curry(extractChanges)(state); + + function getState() { + var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (state) { + return state; + }; + validators.selector(selector); + return selector(state.current); + } + + function setState(causedChanges) { + compose(didUpdate, update, validate, getChanges)(causedChanges); + } + + return [getState, setState]; +} + +function extractChanges(state, causedChanges) { + return isFunction(causedChanges) ? causedChanges(state.current) : causedChanges; +} + +function updateState(state, changes) { + state.current = _objectSpread2(_objectSpread2({}, state.current), changes); + return changes; +} + +function didStateUpdate(state, handler, changes) { + isFunction(handler) ? handler(state.current) : Object.keys(changes).forEach(function (field) { + var _handler$field; + + return (_handler$field = handler[field]) === null || _handler$field === void 0 ? void 0 : _handler$field.call(handler, state.current[field]); + }); + return changes; +} + +var index = { + create: create +}; + +/* harmony default export */ __webpack_exports__["default"] = (index); + + +/***/ }), + +/***/ "../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": +/*!*****************************************************************************!*\ + !*** ../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***! + \*****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var isOldIE = function isOldIE() { + var memo; + return function memorize() { + if (typeof memo === 'undefined') { + // Test for IE <= 9 as proposed by Browserhacks + // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 + // Tests for existence of standard globals is to allow style-loader + // to operate correctly into non-standard environments + // @see https://github.com/webpack-contrib/style-loader/issues/177 + memo = Boolean(window && document && document.all && !window.atob); + } + + return memo; + }; +}(); + +var getTarget = function getTarget() { + var memo = {}; + return function memorize(target) { + if (typeof memo[target] === 'undefined') { + var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself + + if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { + try { + // This will throw an exception if access to iframe is blocked + // due to cross-origin restrictions + styleTarget = styleTarget.contentDocument.head; + } catch (e) { + // istanbul ignore next + styleTarget = null; + } + } + + memo[target] = styleTarget; + } + + return memo[target]; + }; +}(); + +var stylesInDom = []; + +function getIndexByIdentifier(identifier) { + var result = -1; + + for (var i = 0; i < stylesInDom.length; i++) { + if (stylesInDom[i].identifier === identifier) { + result = i; + break; + } + } + + return result; +} + +function modulesToDom(list, options) { + var idCountMap = {}; + var identifiers = []; + + for (var i = 0; i < list.length; i++) { + var item = list[i]; + var id = options.base ? item[0] + options.base : item[0]; + var count = idCountMap[id] || 0; + var identifier = "".concat(id, " ").concat(count); + idCountMap[id] = count + 1; + var index = getIndexByIdentifier(identifier); + var obj = { + css: item[1], + media: item[2], + sourceMap: item[3] + }; + + if (index !== -1) { + stylesInDom[index].references++; + stylesInDom[index].updater(obj); + } else { + stylesInDom.push({ + identifier: identifier, + updater: addStyle(obj, options), + references: 1 + }); + } + + identifiers.push(identifier); + } + + return identifiers; +} + +function insertStyleElement(options) { + var style = document.createElement('style'); + var attributes = options.attributes || {}; + + if (typeof attributes.nonce === 'undefined') { + var nonce = true ? __webpack_require__.nc : undefined; + + if (nonce) { + attributes.nonce = nonce; + } + } + + Object.keys(attributes).forEach(function (key) { + style.setAttribute(key, attributes[key]); + }); + + if (typeof options.insert === 'function') { + options.insert(style); + } else { + var target = getTarget(options.insert || 'head'); + + if (!target) { + throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); + } + + target.appendChild(style); + } + + return style; +} + +function removeStyleElement(style) { + // istanbul ignore if + if (style.parentNode === null) { + return false; + } + + style.parentNode.removeChild(style); +} +/* istanbul ignore next */ + + +var replaceText = function replaceText() { + var textStore = []; + return function replace(index, replacement) { + textStore[index] = replacement; + return textStore.filter(Boolean).join('\n'); + }; +}(); + +function applyToSingletonTag(style, index, remove, obj) { + var css = remove ? '' : obj.media ? "@media ".concat(obj.media, " {").concat(obj.css, "}") : obj.css; // For old IE + + /* istanbul ignore if */ + + if (style.styleSheet) { + style.styleSheet.cssText = replaceText(index, css); + } else { + var cssNode = document.createTextNode(css); + var childNodes = style.childNodes; + + if (childNodes[index]) { + style.removeChild(childNodes[index]); + } + + if (childNodes.length) { + style.insertBefore(cssNode, childNodes[index]); + } else { + style.appendChild(cssNode); + } + } +} + +function applyToTag(style, options, obj) { + var css = obj.css; + var media = obj.media; + var sourceMap = obj.sourceMap; + + if (media) { + style.setAttribute('media', media); + } else { + style.removeAttribute('media'); + } + + if (sourceMap && btoa) { + css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); + } // For old IE + + /* istanbul ignore if */ + + + if (style.styleSheet) { + style.styleSheet.cssText = css; + } else { + while (style.firstChild) { + style.removeChild(style.firstChild); + } + + style.appendChild(document.createTextNode(css)); + } +} + +var singleton = null; +var singletonCounter = 0; + +function addStyle(obj, options) { + var style; + var update; + var remove; + + if (options.singleton) { + var styleIndex = singletonCounter++; + style = singleton || (singleton = insertStyleElement(options)); + update = applyToSingletonTag.bind(null, style, styleIndex, false); + remove = applyToSingletonTag.bind(null, style, styleIndex, true); + } else { + style = insertStyleElement(options); + update = applyToTag.bind(null, style, options); + + remove = function remove() { + removeStyleElement(style); + }; + } + + update(obj); + return function updateStyle(newObj) { + if (newObj) { + if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) { + return; + } + + update(obj = newObj); + } else { + remove(); + } + }; +} + +module.exports = function (list, options) { + options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of