gwchq-textjam 0.2.28 → 0.2.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js
CHANGED
|
@@ -68191,7 +68191,7 @@ module.exports = {
|
|
|
68191
68191
|
|
|
68192
68192
|
/***/ }),
|
|
68193
68193
|
|
|
68194
|
-
/***/
|
|
68194
|
+
/***/ 33037:
|
|
68195
68195
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
68196
68196
|
|
|
68197
68197
|
// ESM COMPAT FLAG
|
|
@@ -68202,6 +68202,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
68202
68202
|
enigmaWhlUrl: () => (/* reexport */ py_enigma_0_1_py3_none_anyurl_namespaceObject),
|
|
68203
68203
|
p5WhlUrl: () => (/* reexport */ p5_0_0_1_py3_none_anyurl_namespaceObject),
|
|
68204
68204
|
pygalUrl: () => (/* reexport */ pygalurl_namespaceObject),
|
|
68205
|
+
pyodideStdinSwUrl: () => (/* reexport */ pyodide_stdin_swurl_namespaceObject),
|
|
68205
68206
|
turtleWhlUrl: () => (/* reexport */ turtle_0_0_1_py3_none_anyurl_namespaceObject)
|
|
68206
68207
|
});
|
|
68207
68208
|
|
|
@@ -68213,6 +68214,8 @@ const turtle_0_0_1_py3_none_anyurl_namespaceObject = __webpack_require__.p + "as
|
|
|
68213
68214
|
const p5_0_0_1_py3_none_anyurl_namespaceObject = __webpack_require__.p + "assets/p5-0.0.1-py3-none-any94083ec22b4dfbbd6318.whl";
|
|
68214
68215
|
;// ./src/assets/editor/pyodide/packages/py_enigma-0.1-py3-none-any.whl?url
|
|
68215
68216
|
const py_enigma_0_1_py3_none_anyurl_namespaceObject = __webpack_require__.p + "assets/py_enigma-0.1-py3-none-any77b539746537424950f6.whl";
|
|
68217
|
+
;// ./src/assets/editor/pyodide/pyodide-stdin-sw.js?url
|
|
68218
|
+
const pyodide_stdin_swurl_namespaceObject = __webpack_require__.p + "assets/pyodide-stdin-sw.js";
|
|
68216
68219
|
;// ./src/assets/editor/index.js
|
|
68217
68220
|
// These ?url imports MUST be treated as asset/resource by webpack
|
|
68218
68221
|
|
|
@@ -68221,9 +68224,10 @@ const py_enigma_0_1_py3_none_anyurl_namespaceObject = __webpack_require__.p + "a
|
|
|
68221
68224
|
|
|
68222
68225
|
|
|
68223
68226
|
|
|
68227
|
+
|
|
68224
68228
|
/***/ }),
|
|
68225
68229
|
|
|
68226
|
-
/***/
|
|
68230
|
+
/***/ 79428:
|
|
68227
68231
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
68228
68232
|
|
|
68229
68233
|
// ESM COMPAT FLAG
|
|
@@ -68337,7 +68341,7 @@ var Button = props => {
|
|
|
68337
68341
|
|
|
68338
68342
|
/***/ }),
|
|
68339
68343
|
|
|
68340
|
-
/***/
|
|
68344
|
+
/***/ 74215:
|
|
68341
68345
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
68342
68346
|
|
|
68343
68347
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -68351,7 +68355,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
68351
68355
|
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14062);
|
|
68352
68356
|
/* harmony import */ var react_tabs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(39243);
|
|
68353
68357
|
/* harmony import */ var _redux_EditorSlice__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(68512);
|
|
68354
|
-
/* harmony import */ var _assets_stylesheets_DraggableTabs_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(
|
|
68358
|
+
/* harmony import */ var _assets_stylesheets_DraggableTabs_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44221);
|
|
68355
68359
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(74848);
|
|
68356
68360
|
|
|
68357
68361
|
|
|
@@ -68419,7 +68423,7 @@ DraggableTab.tabsRole = "Tab";
|
|
|
68419
68423
|
|
|
68420
68424
|
/***/ }),
|
|
68421
68425
|
|
|
68422
|
-
/***/
|
|
68426
|
+
/***/ 48339:
|
|
68423
68427
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
68424
68428
|
|
|
68425
68429
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -68431,7 +68435,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
68431
68435
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51649);
|
|
68432
68436
|
/* harmony import */ var _hello_pangea_dnd__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(98850);
|
|
68433
68437
|
/* harmony import */ var react_tabs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39243);
|
|
68434
|
-
/* harmony import */ var _assets_stylesheets_DraggableTabs_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(
|
|
68438
|
+
/* harmony import */ var _assets_stylesheets_DraggableTabs_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44221);
|
|
68435
68439
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(74848);
|
|
68436
68440
|
|
|
68437
68441
|
|
|
@@ -68472,7 +68476,7 @@ DroppableTabList.tabsRole = "TabList";
|
|
|
68472
68476
|
|
|
68473
68477
|
/***/ }),
|
|
68474
68478
|
|
|
68475
|
-
/***/
|
|
68479
|
+
/***/ 82467:
|
|
68476
68480
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
68477
68481
|
|
|
68478
68482
|
// ESM COMPAT FLAG
|
|
@@ -101798,7 +101802,7 @@ var editorLightTheme = EditorView.theme({
|
|
|
101798
101802
|
dark: false
|
|
101799
101803
|
});
|
|
101800
101804
|
// EXTERNAL MODULE: ./src/utils/settings.js
|
|
101801
|
-
var utils_settings = __webpack_require__(
|
|
101805
|
+
var utils_settings = __webpack_require__(62161);
|
|
101802
101806
|
// EXTERNAL MODULE: ./src/redux/stores/index.ts
|
|
101803
101807
|
var stores = __webpack_require__(32132);
|
|
101804
101808
|
// EXTERNAL MODULE: ./src/components/AssetPreview/index.tsx
|
|
@@ -101960,7 +101964,7 @@ var EditorPanel = _ref => {
|
|
|
101960
101964
|
|
|
101961
101965
|
/***/ }),
|
|
101962
101966
|
|
|
101963
|
-
/***/
|
|
101967
|
+
/***/ 26665:
|
|
101964
101968
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
101965
101969
|
|
|
101966
101970
|
// ESM COMPAT FLAG
|
|
@@ -101993,7 +101997,7 @@ var Sidebar_default = /*#__PURE__*/__webpack_require__.n(Sidebar);
|
|
|
101993
101997
|
var EditorInput = __webpack_require__(99692);
|
|
101994
101998
|
var EditorInput_default = /*#__PURE__*/__webpack_require__.n(EditorInput);
|
|
101995
101999
|
// EXTERNAL MODULE: ./src/utils/ResizableWithHandle.js + 3 modules
|
|
101996
|
-
var ResizableWithHandle = __webpack_require__(
|
|
102000
|
+
var ResizableWithHandle = __webpack_require__(51535);
|
|
101997
102001
|
;// ./src/utils/containerQueries.js
|
|
101998
102002
|
var projContainer = {
|
|
101999
102003
|
"width-larger-than-720": {
|
|
@@ -102085,7 +102089,7 @@ var Project = props => {
|
|
|
102085
102089
|
|
|
102086
102090
|
/***/ }),
|
|
102087
102091
|
|
|
102088
|
-
/***/
|
|
102092
|
+
/***/ 46590:
|
|
102089
102093
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
102090
102094
|
|
|
102091
102095
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -102125,7 +102129,7 @@ var ExternalFiles = () => {
|
|
|
102125
102129
|
|
|
102126
102130
|
/***/ }),
|
|
102127
102131
|
|
|
102128
|
-
/***/
|
|
102132
|
+
/***/ 83617:
|
|
102129
102133
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
102130
102134
|
|
|
102131
102135
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -102133,13 +102137,13 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
102133
102137
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
102134
102138
|
/* harmony export */ });
|
|
102135
102139
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51649);
|
|
102136
|
-
/* harmony import */ var _utils_ResizableWithHandle__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(
|
|
102140
|
+
/* harmony import */ var _utils_ResizableWithHandle__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(51535);
|
|
102137
102141
|
/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(46942);
|
|
102138
102142
|
/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
|
|
102139
|
-
/* harmony import */ var _utils_mediaQueryBreakpoints__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(
|
|
102143
|
+
/* harmony import */ var _utils_mediaQueryBreakpoints__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(22554);
|
|
102140
102144
|
/* harmony import */ var react_responsive__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17988);
|
|
102141
102145
|
/* harmony import */ var react_responsive__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_responsive__WEBPACK_IMPORTED_MODULE_4__);
|
|
102142
|
-
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(
|
|
102146
|
+
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21852);
|
|
102143
102147
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(74848);
|
|
102144
102148
|
|
|
102145
102149
|
|
|
@@ -102197,7 +102201,7 @@ var SidebarPanel = props => {
|
|
|
102197
102201
|
|
|
102198
102202
|
/***/ }),
|
|
102199
102203
|
|
|
102200
|
-
/***/
|
|
102204
|
+
/***/ 97933:
|
|
102201
102205
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
102202
102206
|
|
|
102203
102207
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -102207,9 +102211,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
102207
102211
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51649);
|
|
102208
102212
|
/* harmony import */ var react_modal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20312);
|
|
102209
102213
|
/* harmony import */ var react_modal__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_modal__WEBPACK_IMPORTED_MODULE_1__);
|
|
102210
|
-
/* harmony import */ var _Button_Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(
|
|
102211
|
-
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(
|
|
102212
|
-
/* harmony import */ var _utils_CloseIcon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(
|
|
102214
|
+
/* harmony import */ var _Button_Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(79428);
|
|
102215
|
+
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27924);
|
|
102216
|
+
/* harmony import */ var _utils_CloseIcon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(61193);
|
|
102213
102217
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(74848);
|
|
102214
102218
|
|
|
102215
102219
|
|
|
@@ -102285,7 +102289,7 @@ var BaseModal = _ref => {
|
|
|
102285
102289
|
|
|
102286
102290
|
/***/ }),
|
|
102287
102291
|
|
|
102288
|
-
/***/
|
|
102292
|
+
/***/ 56724:
|
|
102289
102293
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
102290
102294
|
|
|
102291
102295
|
// ESM COMPAT FLAG
|
|
@@ -102299,9 +102303,9 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
102299
102303
|
// EXTERNAL MODULE: external "react-redux"
|
|
102300
102304
|
var external_react_redux_ = __webpack_require__(14062);
|
|
102301
102305
|
// EXTERNAL MODULE: ./src/components/Modals/BaseModal/BaseModal.jsx
|
|
102302
|
-
var BaseModal = __webpack_require__(
|
|
102306
|
+
var BaseModal = __webpack_require__(97933);
|
|
102303
102307
|
// EXTERNAL MODULE: ./src/components/Button/Button.jsx + 1 modules
|
|
102304
|
-
var Button = __webpack_require__(
|
|
102308
|
+
var Button = __webpack_require__(79428);
|
|
102305
102309
|
// EXTERNAL MODULE: ./src/components/shared/SvgIcon/index.tsx
|
|
102306
102310
|
var SvgIcon = __webpack_require__(82917);
|
|
102307
102311
|
// EXTERNAL MODULE: ./src/assets/icons/alertTriangle.svg
|
|
@@ -102316,7 +102320,7 @@ var stores = __webpack_require__(32132);
|
|
|
102316
102320
|
// extracted by mini-css-extract-plugin
|
|
102317
102321
|
/* harmony default export */ const styles_module = ({"grey-rpi-grey-15":"#d5d7dc","grey-rpi-grey-40":"#9497a4","grey-rpi-grey-5":"#f1f2f3","grey-rpi-grey-70":"#4a4d59","grey-rpf-white":"#fff","content":"styles-module__content--Xo0FC","body":"styles-module__body--t9rtp","buttonsContainer":"styles-module__buttonsContainer--JGhSm","headerText":"styles-module__headerText--pmvJm","headerIcon":"styles-module__headerIcon--3TJZO","description":"styles-module__description--uzzI+"});
|
|
102318
102322
|
// EXTERNAL MODULE: ./src/components/Modals/BaseModal/styles.module.scss
|
|
102319
|
-
var BaseModal_styles_module = __webpack_require__(
|
|
102323
|
+
var BaseModal_styles_module = __webpack_require__(27924);
|
|
102320
102324
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
102321
102325
|
var jsx_runtime = __webpack_require__(74848);
|
|
102322
102326
|
;// ./src/components/Modals/DraftUnsavedChangesModal/DraftUnsavedChangesModal.js
|
|
@@ -102381,7 +102385,7 @@ var DraftUnsavedChangesModal = () => {
|
|
|
102381
102385
|
|
|
102382
102386
|
/***/ }),
|
|
102383
102387
|
|
|
102384
|
-
/***/
|
|
102388
|
+
/***/ 15382:
|
|
102385
102389
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
102386
102390
|
|
|
102387
102391
|
// ESM COMPAT FLAG
|
|
@@ -102402,7 +102406,7 @@ var external_react_redux_ = __webpack_require__(14062);
|
|
|
102402
102406
|
// EXTERNAL MODULE: ./node_modules/react-i18next/dist/es/index.js + 17 modules
|
|
102403
102407
|
var es = __webpack_require__(56576);
|
|
102404
102408
|
// EXTERNAL MODULE: ./src/components/Button/Button.jsx + 1 modules
|
|
102405
|
-
var Button = __webpack_require__(
|
|
102409
|
+
var Button = __webpack_require__(79428);
|
|
102406
102410
|
// EXTERNAL MODULE: ./src/redux/EditorSlice.ts
|
|
102407
102411
|
var EditorSlice = __webpack_require__(68512);
|
|
102408
102412
|
;// ./src/assets/stylesheets/Modal.scss
|
|
@@ -102476,7 +102480,7 @@ var ErrorModal = _ref => {
|
|
|
102476
102480
|
|
|
102477
102481
|
/***/ }),
|
|
102478
102482
|
|
|
102479
|
-
/***/
|
|
102483
|
+
/***/ 14472:
|
|
102480
102484
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
102481
102485
|
|
|
102482
102486
|
// ESM COMPAT FLAG
|
|
@@ -102491,7 +102495,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
102491
102495
|
// extracted by mini-css-extract-plugin
|
|
102492
102496
|
/* harmony default export */ const styles_module = ({"grey-rpi-grey-15":"#d5d7dc","grey-rpi-grey-40":"#9497a4","grey-rpi-grey-5":"#f1f2f3","grey-rpi-grey-70":"#4a4d59","grey-rpf-white":"#fff","content":"styles-module__content--5mqMd","body":"styles-module__body--FT2ak","buttonsContainer":"styles-module__buttonsContainer--LsIFl","headerText":"styles-module__headerText--7Ob34","headerIcon":"styles-module__headerIcon--u9yrl","description":"styles-module__description--IvKuo"});
|
|
102493
102497
|
// EXTERNAL MODULE: ./src/components/Modals/BaseModal/styles.module.scss
|
|
102494
|
-
var BaseModal_styles_module = __webpack_require__(
|
|
102498
|
+
var BaseModal_styles_module = __webpack_require__(27924);
|
|
102495
102499
|
// EXTERNAL MODULE: ./src/redux/EditorSlice.ts
|
|
102496
102500
|
var EditorSlice = __webpack_require__(68512);
|
|
102497
102501
|
// EXTERNAL MODULE: ./src/redux/types.ts
|
|
@@ -102499,9 +102503,9 @@ var types = __webpack_require__(92932);
|
|
|
102499
102503
|
// EXTERNAL MODULE: external "react-redux"
|
|
102500
102504
|
var external_react_redux_ = __webpack_require__(14062);
|
|
102501
102505
|
// EXTERNAL MODULE: ./src/components/Modals/BaseModal/BaseModal.jsx
|
|
102502
|
-
var BaseModal = __webpack_require__(
|
|
102506
|
+
var BaseModal = __webpack_require__(97933);
|
|
102503
102507
|
// EXTERNAL MODULE: ./src/components/Button/Button.jsx + 1 modules
|
|
102504
|
-
var Button = __webpack_require__(
|
|
102508
|
+
var Button = __webpack_require__(79428);
|
|
102505
102509
|
// EXTERNAL MODULE: ./src/components/shared/SvgIcon/index.tsx
|
|
102506
102510
|
var SvgIcon = __webpack_require__(82917);
|
|
102507
102511
|
// EXTERNAL MODULE: ./src/assets/icons/remix.svg
|
|
@@ -102567,7 +102571,7 @@ var RemixProjectModal = () => {
|
|
|
102567
102571
|
|
|
102568
102572
|
/***/ }),
|
|
102569
102573
|
|
|
102570
|
-
/***/
|
|
102574
|
+
/***/ 15406:
|
|
102571
102575
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
102572
102576
|
|
|
102573
102577
|
// ESM COMPAT FLAG
|
|
@@ -102584,7 +102588,7 @@ var external_react_ = __webpack_require__(51649);
|
|
|
102584
102588
|
// extracted by mini-css-extract-plugin
|
|
102585
102589
|
/* harmony default export */ const styles_module = ({"grey-rpi-grey-15":"#d5d7dc","grey-rpi-grey-40":"#9497a4","grey-rpi-grey-5":"#f1f2f3","grey-rpi-grey-70":"#4a4d59","grey-rpf-white":"#fff","content":"styles-module__content--uVl64","headerContainer":"styles-module__headerContainer--FPLYl","headerIcon":"styles-module__headerIcon--VUrhy","headerText":"styles-module__headerText--F+NA0","containerBox":"styles-module__containerBox--Dezow","buttonsContainer":"styles-module__buttonsContainer--pnT1Q"});
|
|
102586
102590
|
// EXTERNAL MODULE: ./src/components/Modals/BaseModal/styles.module.scss
|
|
102587
|
-
var BaseModal_styles_module = __webpack_require__(
|
|
102591
|
+
var BaseModal_styles_module = __webpack_require__(27924);
|
|
102588
102592
|
// EXTERNAL MODULE: ./src/redux/EditorSlice.ts
|
|
102589
102593
|
var EditorSlice = __webpack_require__(68512);
|
|
102590
102594
|
// EXTERNAL MODULE: ./src/redux/types.ts
|
|
@@ -102592,7 +102596,7 @@ var types = __webpack_require__(92932);
|
|
|
102592
102596
|
// EXTERNAL MODULE: external "react-redux"
|
|
102593
102597
|
var external_react_redux_ = __webpack_require__(14062);
|
|
102594
102598
|
// EXTERNAL MODULE: ./src/components/Modals/BaseModal/BaseModal.jsx
|
|
102595
|
-
var BaseModal = __webpack_require__(
|
|
102599
|
+
var BaseModal = __webpack_require__(97933);
|
|
102596
102600
|
;// ./src/assets/icons/remove.svg
|
|
102597
102601
|
var _path;
|
|
102598
102602
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
@@ -102610,7 +102614,7 @@ function SvgRemove(props) {
|
|
|
102610
102614
|
}
|
|
102611
102615
|
/* harmony default export */ const remove = (SvgRemove);
|
|
102612
102616
|
// EXTERNAL MODULE: ./src/components/Button/Button.jsx + 1 modules
|
|
102613
|
-
var Button = __webpack_require__(
|
|
102617
|
+
var Button = __webpack_require__(79428);
|
|
102614
102618
|
// EXTERNAL MODULE: ./src/components/shared/SvgIcon/index.tsx
|
|
102615
102619
|
var SvgIcon = __webpack_require__(82917);
|
|
102616
102620
|
// EXTERNAL MODULE: ./src/redux/stores/index.ts
|
|
@@ -102681,7 +102685,7 @@ var RemoveItemModal = () => {
|
|
|
102681
102685
|
|
|
102682
102686
|
/***/ }),
|
|
102683
102687
|
|
|
102684
|
-
/***/
|
|
102688
|
+
/***/ 23765:
|
|
102685
102689
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
102686
102690
|
|
|
102687
102691
|
// ESM COMPAT FLAG
|
|
@@ -102698,7 +102702,7 @@ var external_react_ = __webpack_require__(51649);
|
|
|
102698
102702
|
// extracted by mini-css-extract-plugin
|
|
102699
102703
|
/* harmony default export */ const styles_module = ({"grey-rpi-grey-15":"#d5d7dc","grey-rpi-grey-40":"#9497a4","grey-rpi-grey-5":"#f1f2f3","grey-rpi-grey-70":"#4a4d59","grey-rpf-white":"#fff","content":"styles-module__content--UhJMG","modalContentHeader":"styles-module__modalContentHeader--YPWsb","headerText":"styles-module__headerText--89Clx","containerBox":"styles-module__containerBox--WUoyb","messageContainer":"styles-module__messageContainer--WzXV7","messageIcon":"styles-module__messageIcon--a6yn-","messageContent":"styles-module__messageContent--CYn9o","buttonsContainer":"styles-module__buttonsContainer--1toXb"});
|
|
102700
102704
|
// EXTERNAL MODULE: ./src/components/Modals/BaseModal/styles.module.scss
|
|
102701
|
-
var BaseModal_styles_module = __webpack_require__(
|
|
102705
|
+
var BaseModal_styles_module = __webpack_require__(27924);
|
|
102702
102706
|
// EXTERNAL MODULE: ./src/redux/EditorSlice.ts
|
|
102703
102707
|
var EditorSlice = __webpack_require__(68512);
|
|
102704
102708
|
// EXTERNAL MODULE: ./src/redux/types.ts
|
|
@@ -102706,13 +102710,13 @@ var types = __webpack_require__(92932);
|
|
|
102706
102710
|
// EXTERNAL MODULE: external "react-redux"
|
|
102707
102711
|
var external_react_redux_ = __webpack_require__(14062);
|
|
102708
102712
|
// EXTERNAL MODULE: ./src/components/Modals/BaseModal/BaseModal.jsx
|
|
102709
|
-
var BaseModal = __webpack_require__(
|
|
102713
|
+
var BaseModal = __webpack_require__(97933);
|
|
102710
102714
|
// EXTERNAL MODULE: ./src/assets/icons/alert.svg
|
|
102711
102715
|
var icons_alert = __webpack_require__(11367);
|
|
102712
102716
|
// EXTERNAL MODULE: ./src/assets/icons/flag.svg
|
|
102713
102717
|
var flag = __webpack_require__(91953);
|
|
102714
102718
|
// EXTERNAL MODULE: ./src/components/Button/Button.jsx + 1 modules
|
|
102715
|
-
var Button = __webpack_require__(
|
|
102719
|
+
var Button = __webpack_require__(79428);
|
|
102716
102720
|
// EXTERNAL MODULE: ./src/assets/icons/close.svg
|
|
102717
102721
|
var icons_close = __webpack_require__(80181);
|
|
102718
102722
|
// EXTERNAL MODULE: ./src/components/shared/SvgIcon/index.tsx
|
|
@@ -102785,7 +102789,7 @@ var SaveProjectReminderModal = () => {
|
|
|
102785
102789
|
|
|
102786
102790
|
/***/ }),
|
|
102787
102791
|
|
|
102788
|
-
/***/
|
|
102792
|
+
/***/ 38876:
|
|
102789
102793
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
102790
102794
|
|
|
102791
102795
|
// ESM COMPAT FLAG
|
|
@@ -102802,7 +102806,7 @@ var external_react_ = __webpack_require__(51649);
|
|
|
102802
102806
|
// extracted by mini-css-extract-plugin
|
|
102803
102807
|
/* harmony default export */ const styles_module = ({"grey-rpi-grey-15":"#d5d7dc","grey-rpi-grey-40":"#9497a4","grey-rpi-grey-5":"#f1f2f3","grey-rpi-grey-70":"#4a4d59","grey-rpf-white":"#fff","content":"styles-module__content--khecF","headerIcon":"styles-module__headerIcon--fnE18","headerText":"styles-module__headerText--ua6h6","copyButton":"styles-module__copyButton--jEsq1","tabContainer":"styles-module__tabContainer--Xb4IP","tabButton":"styles-module__tabButton--4BrBv","tabButtonActive":"styles-module__tabButtonActive--CdxX8","containerBox":"styles-module__containerBox--rwoTV","linkContainer":"styles-module__linkContainer--XPt-Q","linkText":"styles-module__linkText--3vzcO"});
|
|
102804
102808
|
// EXTERNAL MODULE: ./src/components/Modals/BaseModal/styles.module.scss
|
|
102805
|
-
var BaseModal_styles_module = __webpack_require__(
|
|
102809
|
+
var BaseModal_styles_module = __webpack_require__(27924);
|
|
102806
102810
|
// EXTERNAL MODULE: ./src/redux/EditorSlice.ts
|
|
102807
102811
|
var EditorSlice = __webpack_require__(68512);
|
|
102808
102812
|
// EXTERNAL MODULE: ./src/redux/types.ts
|
|
@@ -102810,13 +102814,13 @@ var types = __webpack_require__(92932);
|
|
|
102810
102814
|
// EXTERNAL MODULE: external "react-redux"
|
|
102811
102815
|
var external_react_redux_ = __webpack_require__(14062);
|
|
102812
102816
|
// EXTERNAL MODULE: ./src/components/Modals/BaseModal/BaseModal.jsx
|
|
102813
|
-
var BaseModal = __webpack_require__(
|
|
102817
|
+
var BaseModal = __webpack_require__(97933);
|
|
102814
102818
|
// EXTERNAL MODULE: ./src/assets/icons/link.svg
|
|
102815
102819
|
var icons_link = __webpack_require__(19351);
|
|
102816
102820
|
// EXTERNAL MODULE: ./src/assets/icons/close.svg
|
|
102817
102821
|
var icons_close = __webpack_require__(80181);
|
|
102818
102822
|
// EXTERNAL MODULE: ./src/components/Button/Button.jsx + 1 modules
|
|
102819
|
-
var Button = __webpack_require__(
|
|
102823
|
+
var Button = __webpack_require__(79428);
|
|
102820
102824
|
// EXTERNAL MODULE: ./src/components/shared/SvgIcon/index.tsx
|
|
102821
102825
|
var SvgIcon = __webpack_require__(82917);
|
|
102822
102826
|
// EXTERNAL MODULE: ./src/assets/icons/flag.svg
|
|
@@ -102923,7 +102927,7 @@ var ShareProjectModal = () => {
|
|
|
102923
102927
|
|
|
102924
102928
|
/***/ }),
|
|
102925
102929
|
|
|
102926
|
-
/***/
|
|
102930
|
+
/***/ 66156:
|
|
102927
102931
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
102928
102932
|
|
|
102929
102933
|
// ESM COMPAT FLAG
|
|
@@ -102940,7 +102944,7 @@ var external_react_ = __webpack_require__(51649);
|
|
|
102940
102944
|
// extracted by mini-css-extract-plugin
|
|
102941
102945
|
/* harmony default export */ const styles_module = ({"grey-rpi-grey-15":"#d5d7dc","grey-rpi-grey-40":"#9497a4","grey-rpi-grey-5":"#f1f2f3","grey-rpi-grey-70":"#4a4d59","grey-rpf-white":"#fff","content":"styles-module__content--pEmxZ","headerIcon":"styles-module__headerIcon--mzjrS","headerText":"styles-module__headerText--pt2r0","containerBox":"styles-module__containerBox--r5zsA","buttonsContainer":"styles-module__buttonsContainer--I3Coy"});
|
|
102942
102946
|
// EXTERNAL MODULE: ./src/components/Modals/BaseModal/styles.module.scss
|
|
102943
|
-
var BaseModal_styles_module = __webpack_require__(
|
|
102947
|
+
var BaseModal_styles_module = __webpack_require__(27924);
|
|
102944
102948
|
// EXTERNAL MODULE: ./src/redux/EditorSlice.ts
|
|
102945
102949
|
var EditorSlice = __webpack_require__(68512);
|
|
102946
102950
|
// EXTERNAL MODULE: ./src/redux/types.ts
|
|
@@ -102948,11 +102952,11 @@ var types = __webpack_require__(92932);
|
|
|
102948
102952
|
// EXTERNAL MODULE: external "react-redux"
|
|
102949
102953
|
var external_react_redux_ = __webpack_require__(14062);
|
|
102950
102954
|
// EXTERNAL MODULE: ./src/components/Modals/BaseModal/BaseModal.jsx
|
|
102951
|
-
var BaseModal = __webpack_require__(
|
|
102955
|
+
var BaseModal = __webpack_require__(97933);
|
|
102952
102956
|
// EXTERNAL MODULE: ./src/assets/icons/alertTriangle.svg
|
|
102953
102957
|
var alertTriangle = __webpack_require__(30103);
|
|
102954
102958
|
// EXTERNAL MODULE: ./src/components/Button/Button.jsx + 1 modules
|
|
102955
|
-
var Button = __webpack_require__(
|
|
102959
|
+
var Button = __webpack_require__(79428);
|
|
102956
102960
|
// EXTERNAL MODULE: ./src/components/shared/SvgIcon/index.tsx
|
|
102957
102961
|
var SvgIcon = __webpack_require__(82917);
|
|
102958
102962
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
@@ -103004,7 +103008,7 @@ var UploadSizeLimitModal = () => {
|
|
|
103004
103008
|
|
|
103005
103009
|
/***/ }),
|
|
103006
103010
|
|
|
103007
|
-
/***/
|
|
103011
|
+
/***/ 73658:
|
|
103008
103012
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
103009
103013
|
|
|
103010
103014
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -103017,7 +103021,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
103017
103021
|
/* harmony import */ var _redux_EditorSlice__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(68512);
|
|
103018
103022
|
/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(46942);
|
|
103019
103023
|
/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);
|
|
103020
|
-
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(
|
|
103024
|
+
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(29881);
|
|
103021
103025
|
/* harmony import */ var _hooks_useHover__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(78556);
|
|
103022
103026
|
/* harmony import */ var components_Tooltip_Tooltip__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(26982);
|
|
103023
103027
|
/* harmony import */ var components_Tooltip_Tooltip__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(components_Tooltip_Tooltip__WEBPACK_IMPORTED_MODULE_8__);
|
|
@@ -103156,7 +103160,7 @@ var ProjectName = _ref => {
|
|
|
103156
103160
|
|
|
103157
103161
|
/***/ }),
|
|
103158
103162
|
|
|
103159
|
-
/***/
|
|
103163
|
+
/***/ 57715:
|
|
103160
103164
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
103161
103165
|
|
|
103162
103166
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -103164,8 +103168,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
103164
103168
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
103165
103169
|
/* harmony export */ });
|
|
103166
103170
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51649);
|
|
103167
|
-
/* harmony import */ var _RunnerControls__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(
|
|
103168
|
-
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
|
|
103171
|
+
/* harmony import */ var _RunnerControls__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(80263);
|
|
103172
|
+
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67534);
|
|
103169
103173
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(74848);
|
|
103170
103174
|
|
|
103171
103175
|
|
|
@@ -103186,7 +103190,7 @@ var RunBar = _ref => {
|
|
|
103186
103190
|
|
|
103187
103191
|
/***/ }),
|
|
103188
103192
|
|
|
103189
|
-
/***/
|
|
103193
|
+
/***/ 80263:
|
|
103190
103194
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
103191
103195
|
|
|
103192
103196
|
// ESM COMPAT FLAG
|
|
@@ -103204,7 +103208,7 @@ var objectSpread2 = __webpack_require__(89379);
|
|
|
103204
103208
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js + 1 modules
|
|
103205
103209
|
var objectWithoutProperties = __webpack_require__(53986);
|
|
103206
103210
|
// EXTERNAL MODULE: ./src/components/Button/Button.jsx + 1 modules
|
|
103207
|
-
var Button = __webpack_require__(
|
|
103211
|
+
var Button = __webpack_require__(79428);
|
|
103208
103212
|
// EXTERNAL MODULE: external "react-redux"
|
|
103209
103213
|
var external_react_redux_ = __webpack_require__(14062);
|
|
103210
103214
|
// EXTERNAL MODULE: ./src/redux/EditorSlice.ts
|
|
@@ -103244,7 +103248,7 @@ var RunButton = _ref => {
|
|
|
103244
103248
|
var classnames = __webpack_require__(46942);
|
|
103245
103249
|
var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
|
|
103246
103250
|
// EXTERNAL MODULE: ./src/components/RunButton/styles.module.scss
|
|
103247
|
-
var styles_module = __webpack_require__(
|
|
103251
|
+
var styles_module = __webpack_require__(67534);
|
|
103248
103252
|
// EXTERNAL MODULE: ./src/components/SpinnerDotted/SpinnerDotted.tsx
|
|
103249
103253
|
var SpinnerDotted = __webpack_require__(79458);
|
|
103250
103254
|
;// ./src/components/RunButton/StopButton.jsx
|
|
@@ -103371,7 +103375,7 @@ var RunnerControls = () => {
|
|
|
103371
103375
|
|
|
103372
103376
|
/***/ }),
|
|
103373
103377
|
|
|
103374
|
-
/***/
|
|
103378
|
+
/***/ 88814:
|
|
103375
103379
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
103376
103380
|
|
|
103377
103381
|
// ESM COMPAT FLAG
|
|
@@ -103418,7 +103422,7 @@ var external_react_redux_ = __webpack_require__(14062);
|
|
|
103418
103422
|
// EXTERNAL MODULE: ./src/assets/icons/save.svg
|
|
103419
103423
|
var save = __webpack_require__(48060);
|
|
103420
103424
|
// EXTERNAL MODULE: ./src/components/Button/Button.jsx + 1 modules
|
|
103421
|
-
var Button = __webpack_require__(
|
|
103425
|
+
var Button = __webpack_require__(79428);
|
|
103422
103426
|
// EXTERNAL MODULE: ./src/redux/EditorSlice.ts
|
|
103423
103427
|
var EditorSlice = __webpack_require__(68512);
|
|
103424
103428
|
// EXTERNAL MODULE: ./src/redux/types.ts
|
|
@@ -103502,7 +103506,7 @@ var SaveButton = props => {
|
|
|
103502
103506
|
|
|
103503
103507
|
/***/ }),
|
|
103504
103508
|
|
|
103505
|
-
/***/
|
|
103509
|
+
/***/ 53841:
|
|
103506
103510
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
103507
103511
|
|
|
103508
103512
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -103539,7 +103543,7 @@ var themeUpdatedEvent = detail => webComponentCustomEvent("editor-themeUpdated",
|
|
|
103539
103543
|
|
|
103540
103544
|
/***/ }),
|
|
103541
103545
|
|
|
103542
|
-
/***/
|
|
103546
|
+
/***/ 41527:
|
|
103543
103547
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
103544
103548
|
|
|
103545
103549
|
// ESM COMPAT FLAG
|
|
@@ -106200,7 +106204,7 @@ instance.use(es.initReactI18next)
|
|
|
106200
106204
|
|
|
106201
106205
|
/***/ }),
|
|
106202
106206
|
|
|
106203
|
-
/***/
|
|
106207
|
+
/***/ 61193:
|
|
106204
106208
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
106205
106209
|
|
|
106206
106210
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -106235,7 +106239,7 @@ var CloseIcon = props => {
|
|
|
106235
106239
|
|
|
106236
106240
|
/***/ }),
|
|
106237
106241
|
|
|
106238
|
-
/***/
|
|
106242
|
+
/***/ 29441:
|
|
106239
106243
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
106240
106244
|
|
|
106241
106245
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -106254,7 +106258,7 @@ var defaultMZCriteria = {
|
|
|
106254
106258
|
|
|
106255
106259
|
/***/ }),
|
|
106256
106260
|
|
|
106257
|
-
/***/
|
|
106261
|
+
/***/ 51535:
|
|
106258
106262
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
106259
106263
|
|
|
106260
106264
|
// ESM COMPAT FLAG
|
|
@@ -107224,7 +107228,7 @@ var ResizableWithHandle = props => {
|
|
|
107224
107228
|
|
|
107225
107229
|
/***/ }),
|
|
107226
107230
|
|
|
107227
|
-
/***/
|
|
107231
|
+
/***/ 22554:
|
|
107228
107232
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
107229
107233
|
|
|
107230
107234
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -107237,7 +107241,7 @@ var MOBILE_MEDIA_QUERY = "(max-width: ".concat(MOBILE_BREAKPOINT, ")");
|
|
|
107237
107241
|
|
|
107238
107242
|
/***/ }),
|
|
107239
107243
|
|
|
107240
|
-
/***/
|
|
107244
|
+
/***/ 62161:
|
|
107241
107245
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
107242
107246
|
|
|
107243
107247
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -142800,7 +142804,7 @@ function populateMaps (extensions, types) {
|
|
|
142800
142804
|
|
|
142801
142805
|
/***/ }),
|
|
142802
142806
|
|
|
142803
|
-
/***/
|
|
142807
|
+
/***/ 31323:
|
|
142804
142808
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
142805
142809
|
|
|
142806
142810
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -142809,7 +142813,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
142809
142813
|
|
|
142810
142814
|
/***/ }),
|
|
142811
142815
|
|
|
142812
|
-
/***/
|
|
142816
|
+
/***/ 63724:
|
|
142813
142817
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
142814
142818
|
|
|
142815
142819
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -142821,7 +142825,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
142821
142825
|
|
|
142822
142826
|
/***/ }),
|
|
142823
142827
|
|
|
142824
|
-
/***/
|
|
142828
|
+
/***/ 44502:
|
|
142825
142829
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
142826
142830
|
|
|
142827
142831
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -142833,7 +142837,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
142833
142837
|
|
|
142834
142838
|
/***/ }),
|
|
142835
142839
|
|
|
142836
|
-
/***/
|
|
142840
|
+
/***/ 71244:
|
|
142837
142841
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
142838
142842
|
|
|
142839
142843
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -142845,7 +142849,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
142845
142849
|
|
|
142846
142850
|
/***/ }),
|
|
142847
142851
|
|
|
142848
|
-
/***/
|
|
142852
|
+
/***/ 39412:
|
|
142849
142853
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
142850
142854
|
|
|
142851
142855
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -142857,7 +142861,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
142857
142861
|
|
|
142858
142862
|
/***/ }),
|
|
142859
142863
|
|
|
142860
|
-
/***/
|
|
142864
|
+
/***/ 12914:
|
|
142861
142865
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
142862
142866
|
|
|
142863
142867
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -142869,7 +142873,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
142869
142873
|
|
|
142870
142874
|
/***/ }),
|
|
142871
142875
|
|
|
142872
|
-
/***/
|
|
142876
|
+
/***/ 87295:
|
|
142873
142877
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
142874
142878
|
|
|
142875
142879
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -142881,7 +142885,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
142881
142885
|
|
|
142882
142886
|
/***/ }),
|
|
142883
142887
|
|
|
142884
|
-
/***/
|
|
142888
|
+
/***/ 28076:
|
|
142885
142889
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
142886
142890
|
|
|
142887
142891
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -142893,7 +142897,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
142893
142897
|
|
|
142894
142898
|
/***/ }),
|
|
142895
142899
|
|
|
142896
|
-
/***/
|
|
142900
|
+
/***/ 51191:
|
|
142897
142901
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
142898
142902
|
|
|
142899
142903
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -142905,7 +142909,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
142905
142909
|
|
|
142906
142910
|
/***/ }),
|
|
142907
142911
|
|
|
142908
|
-
/***/
|
|
142912
|
+
/***/ 52160:
|
|
142909
142913
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
142910
142914
|
|
|
142911
142915
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -142917,7 +142921,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
142917
142921
|
|
|
142918
142922
|
/***/ }),
|
|
142919
142923
|
|
|
142920
|
-
/***/
|
|
142924
|
+
/***/ 10614:
|
|
142921
142925
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
142922
142926
|
|
|
142923
142927
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -142929,7 +142933,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
142929
142933
|
|
|
142930
142934
|
/***/ }),
|
|
142931
142935
|
|
|
142932
|
-
/***/
|
|
142936
|
+
/***/ 10556:
|
|
142933
142937
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
142934
142938
|
|
|
142935
142939
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -142941,7 +142945,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
142941
142945
|
|
|
142942
142946
|
/***/ }),
|
|
142943
142947
|
|
|
142944
|
-
/***/
|
|
142948
|
+
/***/ 21852:
|
|
142945
142949
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
142946
142950
|
|
|
142947
142951
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -142953,7 +142957,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
142953
142957
|
|
|
142954
142958
|
/***/ }),
|
|
142955
142959
|
|
|
142956
|
-
/***/
|
|
142960
|
+
/***/ 62857:
|
|
142957
142961
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
142958
142962
|
|
|
142959
142963
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -142965,7 +142969,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
142965
142969
|
|
|
142966
142970
|
/***/ }),
|
|
142967
142971
|
|
|
142968
|
-
/***/
|
|
142972
|
+
/***/ 27924:
|
|
142969
142973
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
142970
142974
|
|
|
142971
142975
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -142977,7 +142981,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
142977
142981
|
|
|
142978
142982
|
/***/ }),
|
|
142979
142983
|
|
|
142980
|
-
/***/
|
|
142984
|
+
/***/ 29642:
|
|
142981
142985
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
142982
142986
|
|
|
142983
142987
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -142989,7 +142993,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
142989
142993
|
|
|
142990
142994
|
/***/ }),
|
|
142991
142995
|
|
|
142992
|
-
/***/
|
|
142996
|
+
/***/ 6631:
|
|
142993
142997
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
142994
142998
|
|
|
142995
142999
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -143001,7 +143005,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
143001
143005
|
|
|
143002
143006
|
/***/ }),
|
|
143003
143007
|
|
|
143004
|
-
/***/
|
|
143008
|
+
/***/ 38653:
|
|
143005
143009
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
143006
143010
|
|
|
143007
143011
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -143013,7 +143017,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
143013
143017
|
|
|
143014
143018
|
/***/ }),
|
|
143015
143019
|
|
|
143016
|
-
/***/
|
|
143020
|
+
/***/ 88525:
|
|
143017
143021
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
143018
143022
|
|
|
143019
143023
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -143025,7 +143029,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
143025
143029
|
|
|
143026
143030
|
/***/ }),
|
|
143027
143031
|
|
|
143028
|
-
/***/
|
|
143032
|
+
/***/ 29881:
|
|
143029
143033
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
143030
143034
|
|
|
143031
143035
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -143037,7 +143041,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
143037
143041
|
|
|
143038
143042
|
/***/ }),
|
|
143039
143043
|
|
|
143040
|
-
/***/
|
|
143044
|
+
/***/ 67534:
|
|
143041
143045
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
143042
143046
|
|
|
143043
143047
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
@@ -143048,7 +143052,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
143048
143052
|
|
|
143049
143053
|
/***/ }),
|
|
143050
143054
|
|
|
143051
|
-
/***/
|
|
143055
|
+
/***/ 68776:
|
|
143052
143056
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
143053
143057
|
|
|
143054
143058
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -143060,7 +143064,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
143060
143064
|
|
|
143061
143065
|
/***/ }),
|
|
143062
143066
|
|
|
143063
|
-
/***/
|
|
143067
|
+
/***/ 73386:
|
|
143064
143068
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
143065
143069
|
|
|
143066
143070
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -143072,7 +143076,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
143072
143076
|
|
|
143073
143077
|
/***/ }),
|
|
143074
143078
|
|
|
143075
|
-
/***/
|
|
143079
|
+
/***/ 91156:
|
|
143076
143080
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
143077
143081
|
|
|
143078
143082
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -143084,7 +143088,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
143084
143088
|
|
|
143085
143089
|
/***/ }),
|
|
143086
143090
|
|
|
143087
|
-
/***/
|
|
143091
|
+
/***/ 27112:
|
|
143088
143092
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
143089
143093
|
|
|
143090
143094
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -143096,7 +143100,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
143096
143100
|
|
|
143097
143101
|
/***/ }),
|
|
143098
143102
|
|
|
143099
|
-
/***/
|
|
143103
|
+
/***/ 28188:
|
|
143100
143104
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
143101
143105
|
|
|
143102
143106
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -143108,7 +143112,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
143108
143112
|
|
|
143109
143113
|
/***/ }),
|
|
143110
143114
|
|
|
143111
|
-
/***/
|
|
143115
|
+
/***/ 93105:
|
|
143112
143116
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
143113
143117
|
|
|
143114
143118
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -143120,7 +143124,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
143120
143124
|
|
|
143121
143125
|
/***/ }),
|
|
143122
143126
|
|
|
143123
|
-
/***/
|
|
143127
|
+
/***/ 36974:
|
|
143124
143128
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
143125
143129
|
|
|
143126
143130
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -143132,7 +143136,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
143132
143136
|
|
|
143133
143137
|
/***/ }),
|
|
143134
143138
|
|
|
143135
|
-
/***/
|
|
143139
|
+
/***/ 44221:
|
|
143136
143140
|
/***/ (() => {
|
|
143137
143141
|
|
|
143138
143142
|
// extracted by mini-css-extract-plugin
|
|
@@ -143140,7 +143144,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
143140
143144
|
|
|
143141
143145
|
/***/ }),
|
|
143142
143146
|
|
|
143143
|
-
/***/
|
|
143147
|
+
/***/ 7703:
|
|
143144
143148
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
143145
143149
|
|
|
143146
143150
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -143149,7 +143153,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
143149
143153
|
|
|
143150
143154
|
/***/ }),
|
|
143151
143155
|
|
|
143152
|
-
/***/
|
|
143156
|
+
/***/ 75765:
|
|
143153
143157
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
143154
143158
|
|
|
143155
143159
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -143158,7 +143162,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
143158
143162
|
|
|
143159
143163
|
/***/ }),
|
|
143160
143164
|
|
|
143161
|
-
/***/
|
|
143165
|
+
/***/ 41882:
|
|
143162
143166
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
143163
143167
|
|
|
143164
143168
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -228020,7 +228024,7 @@ function registerTraceModule(_module) {
|
|
|
228020
228024
|
|
|
228021
228025
|
// add maplibre-gl CSS here to avoid console warning on instantiation
|
|
228022
228026
|
if(bpmName === 'map') {
|
|
228023
|
-
__webpack_require__(
|
|
228027
|
+
__webpack_require__(31323);
|
|
228024
228028
|
}
|
|
228025
228029
|
|
|
228026
228030
|
// if `plotly-geo-assets.js` is not included,
|
|
@@ -368723,7 +368727,7 @@ const stores_1 = __webpack_require__(32132);
|
|
|
368723
368727
|
const react_redux_1 = __webpack_require__(14062);
|
|
368724
368728
|
const react_router_dom_1 = __webpack_require__(92648);
|
|
368725
368729
|
const AuthContext_1 = __webpack_require__(55471);
|
|
368726
|
-
__webpack_require__(
|
|
368730
|
+
__webpack_require__(41527);
|
|
368727
368731
|
const editorListener_1 = __webpack_require__(41824);
|
|
368728
368732
|
const Loading_1 = __importDefault(__webpack_require__(34466));
|
|
368729
368733
|
const LeaveGuardController_1 = __webpack_require__(65240);
|
|
@@ -368872,9 +368876,9 @@ const jsx_runtime_1 = __webpack_require__(74848);
|
|
|
368872
368876
|
const react_1 = __webpack_require__(51649);
|
|
368873
368877
|
const classnames_1 = __importDefault(__webpack_require__(46942));
|
|
368874
368878
|
const history_svg_1 = __importDefault(__webpack_require__(93113));
|
|
368875
|
-
const Button_1 = __importDefault(__webpack_require__(
|
|
368879
|
+
const Button_1 = __importDefault(__webpack_require__(79428));
|
|
368876
368880
|
const stores_1 = __webpack_require__(32132);
|
|
368877
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
368881
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(63724));
|
|
368878
368882
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
368879
368883
|
const CommitHistoryMenu_1 = __webpack_require__(46175);
|
|
368880
368884
|
const Tooltip_1 = __importDefault(__webpack_require__(26982));
|
|
@@ -368910,7 +368914,7 @@ const jsx_runtime_1 = __webpack_require__(74848);
|
|
|
368910
368914
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
368911
368915
|
const Text_1 = __webpack_require__(82803);
|
|
368912
368916
|
const history_svg_1 = __importDefault(__webpack_require__(93113));
|
|
368913
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
368917
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(63724));
|
|
368914
368918
|
const CommitHoverElement = () => {
|
|
368915
368919
|
return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.commitHoverElement, children: [(0, jsx_runtime_1.jsx)(SvgIcon_1.SvgIcon, { SvgElement: history_svg_1.default, size: 18 }), (0, jsx_runtime_1.jsx)(Text_1.Text, { size: 10, weight: "medium", children: "Restore" })] }));
|
|
368916
368920
|
};
|
|
@@ -368933,7 +368937,7 @@ const js_convert_case_1 = __webpack_require__(61647);
|
|
|
368933
368937
|
const download_svg_1 = __importDefault(__webpack_require__(63279));
|
|
368934
368938
|
const stores_1 = __webpack_require__(32132);
|
|
368935
368939
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
368936
|
-
const Button_1 = __importDefault(__webpack_require__(
|
|
368940
|
+
const Button_1 = __importDefault(__webpack_require__(79428));
|
|
368937
368941
|
const createProjectArchive_1 = __webpack_require__(46514);
|
|
368938
368942
|
const DownloadButton = (props) => {
|
|
368939
368943
|
const project = (0, stores_1.useAppSelector)((state) => state.editor.project);
|
|
@@ -368996,16 +369000,16 @@ const react_redux_1 = __webpack_require__(14062);
|
|
|
368996
369000
|
const react_tabs_1 = __webpack_require__(39243);
|
|
368997
369001
|
const react_responsive_1 = __webpack_require__(17988);
|
|
368998
369002
|
const EditorSlice_1 = __webpack_require__(68512);
|
|
368999
|
-
const Button_1 = __importDefault(__webpack_require__(
|
|
369000
|
-
const EditorPanel_1 = __importDefault(__webpack_require__(
|
|
369001
|
-
const DraggableTab_1 = __importDefault(__webpack_require__(
|
|
369002
|
-
const DroppableTabList_1 = __importDefault(__webpack_require__(
|
|
369003
|
-
const RunnerControls_1 = __importDefault(__webpack_require__(
|
|
369004
|
-
const mediaQueryBreakpoints_1 = __webpack_require__(
|
|
369005
|
-
const CloseIcon_1 = __importDefault(__webpack_require__(
|
|
369003
|
+
const Button_1 = __importDefault(__webpack_require__(79428));
|
|
369004
|
+
const EditorPanel_1 = __importDefault(__webpack_require__(82467));
|
|
369005
|
+
const DraggableTab_1 = __importDefault(__webpack_require__(74215));
|
|
369006
|
+
const DroppableTabList_1 = __importDefault(__webpack_require__(48339));
|
|
369007
|
+
const RunnerControls_1 = __importDefault(__webpack_require__(80263));
|
|
369008
|
+
const mediaQueryBreakpoints_1 = __webpack_require__(22554);
|
|
369009
|
+
const CloseIcon_1 = __importDefault(__webpack_require__(61193));
|
|
369006
369010
|
const FileIcon_1 = __importDefault(__webpack_require__(94028));
|
|
369007
369011
|
const readonly_svg_1 = __importDefault(__webpack_require__(19297));
|
|
369008
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
369012
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(44502));
|
|
369009
369013
|
const stores_1 = __webpack_require__(32132);
|
|
369010
369014
|
const ProjectTypes_1 = __webpack_require__(27130);
|
|
369011
369015
|
const projectHelpers_1 = __webpack_require__(2610);
|
|
@@ -369146,7 +369150,7 @@ exports.ErrorDetails = void 0;
|
|
|
369146
369150
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
369147
369151
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
369148
369152
|
const alert_svg_1 = __importDefault(__webpack_require__(11367));
|
|
369149
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
369153
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(71244));
|
|
369150
369154
|
const Text_1 = __webpack_require__(82803);
|
|
369151
369155
|
const stores_1 = __webpack_require__(32132);
|
|
369152
369156
|
const Errors_1 = __webpack_require__(20339);
|
|
@@ -369173,7 +369177,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
369173
369177
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
369174
369178
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
369175
369179
|
const stores_1 = __webpack_require__(32132);
|
|
369176
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
369180
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(71244));
|
|
369177
369181
|
const react_1 = __webpack_require__(51649);
|
|
369178
369182
|
const ErrorDetails_1 = __webpack_require__(80335);
|
|
369179
369183
|
const ErrorMessage = () => {
|
|
@@ -369205,7 +369209,7 @@ exports.NotFoundPage = void 0;
|
|
|
369205
369209
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
369206
369210
|
const not_found_code_svg_1 = __importDefault(__webpack_require__(15552));
|
|
369207
369211
|
const not_found_svg_1 = __importDefault(__webpack_require__(95436));
|
|
369208
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
369212
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(71244));
|
|
369209
369213
|
const ErrorDetails_1 = __webpack_require__(80335);
|
|
369210
369214
|
const NotFoundPage = () => {
|
|
369211
369215
|
return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.notFoundContainer, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.notFoundText, children: [(0, jsx_runtime_1.jsx)(not_found_code_svg_1.default, {}), (0, jsx_runtime_1.jsx)(not_found_svg_1.default, {})] }), (0, jsx_runtime_1.jsx)(ErrorDetails_1.ErrorDetails, {})] }));
|
|
@@ -369224,9 +369228,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
369224
369228
|
};
|
|
369225
369229
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
369226
369230
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
369227
|
-
const ExternalFiles_1 = __importDefault(__webpack_require__(
|
|
369231
|
+
const ExternalFiles_1 = __importDefault(__webpack_require__(46590));
|
|
369228
369232
|
const RunnerFactory_1 = __importDefault(__webpack_require__(78329));
|
|
369229
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
369233
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(39412));
|
|
369230
369234
|
const stores_1 = __webpack_require__(32132);
|
|
369231
369235
|
const Output = ({ packageApiUrl }) => {
|
|
369232
369236
|
const project = (0, stores_1.useAppSelector)((state) => state.editor.project);
|
|
@@ -369247,7 +369251,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
369247
369251
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
369248
369252
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
369249
369253
|
const classnames_1 = __importDefault(__webpack_require__(46942));
|
|
369250
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
369254
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(12914));
|
|
369251
369255
|
const LogRenderer_1 = __importDefault(__webpack_require__(67278));
|
|
369252
369256
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
369253
369257
|
const alert_svg_1 = __importDefault(__webpack_require__(11367));
|
|
@@ -369289,14 +369293,14 @@ const SvgIcon_1 = __webpack_require__(82917);
|
|
|
369289
369293
|
const console_svg_1 = __importDefault(__webpack_require__(20602));
|
|
369290
369294
|
const preview_svg_1 = __importDefault(__webpack_require__(80417));
|
|
369291
369295
|
const OutputTabPanel_1 = __webpack_require__(25931);
|
|
369292
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
369296
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(12914));
|
|
369293
369297
|
const helpers_1 = __webpack_require__(1108);
|
|
369294
369298
|
const fileParsers_1 = __webpack_require__(26683);
|
|
369295
369299
|
const scripts_1 = __webpack_require__(57621);
|
|
369296
369300
|
const Errors_1 = __webpack_require__(20339);
|
|
369297
369301
|
const NotFoundPage_1 = __webpack_require__(87931);
|
|
369298
369302
|
const HtmlConsole_1 = __importDefault(__webpack_require__(55339));
|
|
369299
|
-
const ResizableWithHandle_1 = __importDefault(__webpack_require__(
|
|
369303
|
+
const ResizableWithHandle_1 = __importDefault(__webpack_require__(51535));
|
|
369300
369304
|
const BROADCAST_CHANNEL = "html_runner_channel";
|
|
369301
369305
|
var BroadcastMessageType;
|
|
369302
369306
|
(function (BroadcastMessageType) {
|
|
@@ -369524,7 +369528,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
369524
369528
|
};
|
|
369525
369529
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
369526
369530
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
369527
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
369531
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(12914));
|
|
369528
369532
|
var SerializedNodeType;
|
|
369529
369533
|
(function (SerializedNodeType) {
|
|
369530
369534
|
SerializedNodeType["String"] = "string";
|
|
@@ -370142,7 +370146,7 @@ const classnames_1 = __importDefault(__webpack_require__(46942));
|
|
|
370142
370146
|
const react_tabs_1 = __webpack_require__(39243);
|
|
370143
370147
|
const Text_1 = __webpack_require__(82803);
|
|
370144
370148
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
370145
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
370149
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(12914));
|
|
370146
370150
|
const stores_1 = __webpack_require__(32132);
|
|
370147
370151
|
const OutputTabPanel = ({ title, icon: Icon, readOnly, children, outputWrapperClassName, extraTabContent, tabPanelClassName, }) => {
|
|
370148
370152
|
const outputOnly = (0, stores_1.useAppSelector)((state) => state.editor.isOutputOnly);
|
|
@@ -370160,6 +370164,152 @@ exports.OutputTabPanel = OutputTabPanel;
|
|
|
370160
370164
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
370161
370165
|
|
|
370162
370166
|
|
|
370167
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
370168
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
370169
|
+
};
|
|
370170
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
370171
|
+
const jsx_runtime_1 = __webpack_require__(74848);
|
|
370172
|
+
const classnames_1 = __importDefault(__webpack_require__(46942));
|
|
370173
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(12914));
|
|
370174
|
+
const ErrorMessage_1 = __importDefault(__webpack_require__(74364));
|
|
370175
|
+
const VisualOutputPane_1 = __importDefault(__webpack_require__(39626));
|
|
370176
|
+
const stores_1 = __webpack_require__(32132);
|
|
370177
|
+
const OutputTabPanel_1 = __webpack_require__(25931);
|
|
370178
|
+
const console_svg_1 = __importDefault(__webpack_require__(20602));
|
|
370179
|
+
const preview_svg_1 = __importDefault(__webpack_require__(80417));
|
|
370180
|
+
const ResizableWithHandle_1 = __importDefault(__webpack_require__(51535));
|
|
370181
|
+
const usePyodideRunner_1 = __webpack_require__(65587);
|
|
370182
|
+
const consoleInput_1 = __webpack_require__(35660);
|
|
370183
|
+
/**
|
|
370184
|
+
* Pyodide-powered Python runner.
|
|
370185
|
+
*
|
|
370186
|
+
* All worker plumbing — Pyodide Web Worker lifecycle, stdin Service Worker
|
|
370187
|
+
* registration, message dispatching, run/stop orchestration — lives in
|
|
370188
|
+
* `usePyodideRunner` and its sub-hooks. This component is purely a thin
|
|
370189
|
+
* shell that wires the returned state into the layout.
|
|
370190
|
+
*/
|
|
370191
|
+
const PyodideRunner = ({ active, packageApiUrl, }) => {
|
|
370192
|
+
const readOnly = (0, stores_1.useAppSelector)((state) => state.editor.readOnly);
|
|
370193
|
+
const { output, visuals, setVisuals, workerInitialized } = (0, usePyodideRunner_1.usePyodideRunner)({
|
|
370194
|
+
active,
|
|
370195
|
+
packageApiUrl,
|
|
370196
|
+
});
|
|
370197
|
+
if (!workerInitialized && active) {
|
|
370198
|
+
console.warn("PyodideWorker is not initialized");
|
|
370199
|
+
return null;
|
|
370200
|
+
}
|
|
370201
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.pythonrunnerContainer, styles_module_scss_1.default.pyodiderunner, active && styles_module_scss_1.default.active), children: [(0, jsx_runtime_1.jsxs)(OutputTabPanel_1.OutputTabPanel, { title: "Terminal", icon: console_svg_1.default, readOnly: readOnly, children: [(0, jsx_runtime_1.jsx)(ErrorMessage_1.default, {}), (0, jsx_runtime_1.jsx)("pre", { className: styles_module_scss_1.default.console, onClick: consoleInput_1.shiftFocusToInput, ref: output })] }), (0, jsx_runtime_1.jsx)(ResizableWithHandle_1.default, { "data-testid": "proj-console-container", handleDirection: "top", defaultHeight: "50%", className: styles_module_scss_1.default.resizeContainer, handleClassName: styles_module_scss_1.default.resizeHandleContainer, children: (0, jsx_runtime_1.jsx)(OutputTabPanel_1.OutputTabPanel, { title: "Visual output", icon: preview_svg_1.default, readOnly: readOnly, children: (0, jsx_runtime_1.jsx)(VisualOutputPane_1.default, { visuals: visuals, setVisuals: setVisuals }) }) })] }));
|
|
370202
|
+
};
|
|
370203
|
+
exports["default"] = PyodideRunner;
|
|
370204
|
+
|
|
370205
|
+
|
|
370206
|
+
/***/ }),
|
|
370207
|
+
|
|
370208
|
+
/***/ 39626:
|
|
370209
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
370210
|
+
|
|
370211
|
+
|
|
370212
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
370213
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
370214
|
+
};
|
|
370215
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
370216
|
+
const jsx_runtime_1 = __webpack_require__(74848);
|
|
370217
|
+
const react_1 = __webpack_require__(51649);
|
|
370218
|
+
const highcharts_1 = __importDefault(__webpack_require__(14783));
|
|
370219
|
+
const plotly_js_1 = __importDefault(__webpack_require__(28850));
|
|
370220
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(12914));
|
|
370221
|
+
const VisualOutputPane = ({ visuals, setVisuals }) => {
|
|
370222
|
+
const output = (0, react_1.useRef)(null);
|
|
370223
|
+
const showVisual = (0, react_1.useCallback)((visual, output) => {
|
|
370224
|
+
switch (visual.origin) {
|
|
370225
|
+
case "pygal":
|
|
370226
|
+
const chartContent = {
|
|
370227
|
+
...visual.content,
|
|
370228
|
+
chart: {
|
|
370229
|
+
...visual.content.chart,
|
|
370230
|
+
events: {
|
|
370231
|
+
...visual.content.chart.events,
|
|
370232
|
+
load: function () {
|
|
370233
|
+
this.renderTo.style.overflow = "visible";
|
|
370234
|
+
},
|
|
370235
|
+
},
|
|
370236
|
+
},
|
|
370237
|
+
tooltip: {
|
|
370238
|
+
...visual.content.tooltip,
|
|
370239
|
+
formatter: visual.content.chart.type === "pie"
|
|
370240
|
+
? function () {
|
|
370241
|
+
return this.key + ": " + this.y;
|
|
370242
|
+
}
|
|
370243
|
+
: null,
|
|
370244
|
+
},
|
|
370245
|
+
};
|
|
370246
|
+
highcharts_1.default.chart(output.current, chartContent);
|
|
370247
|
+
break;
|
|
370248
|
+
case "turtle":
|
|
370249
|
+
output.current.innerHTML = elementFromProps(visual.content).outerHTML;
|
|
370250
|
+
break;
|
|
370251
|
+
case "matplotlib":
|
|
370252
|
+
// convert visual.content from Uint8Array to jpg
|
|
370253
|
+
const img = document.createElement("img");
|
|
370254
|
+
img.style = "max-width: 100%; max-height: 100%;";
|
|
370255
|
+
img.src = `data:image/jpg;base64,${window.btoa(String.fromCharCode(...new Uint8Array(visual.content)))}`;
|
|
370256
|
+
output.current.innerHTML = img.outerHTML;
|
|
370257
|
+
break;
|
|
370258
|
+
case "plotly":
|
|
370259
|
+
const plotlyJson = visual.content;
|
|
370260
|
+
// Parse the JSON
|
|
370261
|
+
const figure = JSON.parse(plotlyJson);
|
|
370262
|
+
// Render using Plotly.js
|
|
370263
|
+
plotly_js_1.default.newPlot(output.current, figure.data, figure.layout);
|
|
370264
|
+
break;
|
|
370265
|
+
default:
|
|
370266
|
+
throw new Error(`Unsupported origin: ${visual.origin}`);
|
|
370267
|
+
}
|
|
370268
|
+
visual.showing = true;
|
|
370269
|
+
return visual;
|
|
370270
|
+
}, []);
|
|
370271
|
+
const showVisuals = (0, react_1.useCallback)((visuals, output) => visuals.map((v) => (v.showing ? v : showVisual(v, output))), [showVisual]);
|
|
370272
|
+
(0, react_1.useEffect)(() => {
|
|
370273
|
+
if (visuals.length === 0 && output.current) {
|
|
370274
|
+
if (output.current) {
|
|
370275
|
+
output.current.innerHTML = "";
|
|
370276
|
+
}
|
|
370277
|
+
}
|
|
370278
|
+
else if (visuals.some((v) => !v.showing)) {
|
|
370279
|
+
setVisuals((visuals) => showVisuals(visuals, output));
|
|
370280
|
+
}
|
|
370281
|
+
}, [visuals, setVisuals, showVisuals]);
|
|
370282
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.visualOutput, children: (0, jsx_runtime_1.jsx)("div", { ref: output, className: styles_module_scss_1.default.pythonGraphic }) }));
|
|
370283
|
+
};
|
|
370284
|
+
const elementFromProps = (map) => {
|
|
370285
|
+
const tag = map.get("tag");
|
|
370286
|
+
if (!tag) {
|
|
370287
|
+
return document.createTextNode(map.get("text"));
|
|
370288
|
+
}
|
|
370289
|
+
const node = document.createElement(tag);
|
|
370290
|
+
for (const [key, value] of map.get("props")) {
|
|
370291
|
+
node.setAttribute(key, value);
|
|
370292
|
+
}
|
|
370293
|
+
for (const childProps of map.get("children")) {
|
|
370294
|
+
node.appendChild(elementFromProps(childProps));
|
|
370295
|
+
}
|
|
370296
|
+
return node;
|
|
370297
|
+
};
|
|
370298
|
+
exports["default"] = VisualOutputPane;
|
|
370299
|
+
|
|
370300
|
+
|
|
370301
|
+
/***/ }),
|
|
370302
|
+
|
|
370303
|
+
/***/ 85799:
|
|
370304
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
370305
|
+
|
|
370306
|
+
|
|
370307
|
+
/**
|
|
370308
|
+
* Webpack-resolved URLs for the Pyodide worker and the stdin Service Worker.
|
|
370309
|
+
*
|
|
370310
|
+
* Isolated from `./constants.ts` so the pure-constants module can be loaded
|
|
370311
|
+
* by tests without needing webpack to handle the `?url` query suffix.
|
|
370312
|
+
*/
|
|
370163
370313
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
370164
370314
|
if (k2 === undefined) k2 = k;
|
|
370165
370315
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -370197,147 +370347,170 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
370197
370347
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
370198
370348
|
};
|
|
370199
370349
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
370200
|
-
|
|
370201
|
-
|
|
370202
|
-
|
|
370203
|
-
const react_redux_1 = __webpack_require__(14062);
|
|
370204
|
-
const classnames_1 = __importDefault(__webpack_require__(46942));
|
|
370205
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(46259));
|
|
370206
|
-
const EditorSlice_1 = __webpack_require__(68512);
|
|
370207
|
-
const ErrorMessage_1 = __importDefault(__webpack_require__(74364));
|
|
370208
|
-
const VisualOutputPane_1 = __importDefault(__webpack_require__(39626));
|
|
370209
|
-
const pyodideAssets = __importStar(__webpack_require__(39644));
|
|
370350
|
+
exports.pyodideAssets = exports.PYODIDE_STDIN_SW_URL = exports.PYODIDE_WORKER_URL = void 0;
|
|
370351
|
+
const pyodideAssets = __importStar(__webpack_require__(33037));
|
|
370352
|
+
exports.pyodideAssets = pyodideAssets;
|
|
370210
370353
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
370211
370354
|
// @ts-ignore
|
|
370212
370355
|
const PyodideWorker_url_1 = __importDefault(__webpack_require__(24427));
|
|
370356
|
+
exports.PYODIDE_WORKER_URL = new URL(PyodideWorker_url_1.default, window.origin).href;
|
|
370357
|
+
exports.PYODIDE_STDIN_SW_URL = new URL(pyodideAssets.pyodideStdinSwUrl, window.origin).href;
|
|
370358
|
+
|
|
370359
|
+
|
|
370360
|
+
/***/ }),
|
|
370361
|
+
|
|
370362
|
+
/***/ 90804:
|
|
370363
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
370364
|
+
|
|
370365
|
+
|
|
370366
|
+
/**
|
|
370367
|
+
* Pure constants for the Pyodide runner. Kept free of webpack-specific
|
|
370368
|
+
* `?url` imports so the file can be required from a plain Jest environment.
|
|
370369
|
+
*
|
|
370370
|
+
* Resolved asset/worker URLs live in `./assetUrls.ts`.
|
|
370371
|
+
*/
|
|
370372
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
370373
|
+
exports.SERVICE_WORKER_PROBE_TIMEOUT_MS = exports.SERVICE_WORKER_CONTROL_WAIT_MS = exports.PYODIDE_TAB_ID_STORAGE_KEY = exports.PYODIDE_STDIN_ENDPOINT = exports.PYTHON_ENTRY_FILE_PATH = void 0;
|
|
370374
|
+
exports.PYTHON_ENTRY_FILE_PATH = "/main.py";
|
|
370375
|
+
exports.PYODIDE_STDIN_ENDPOINT = "/pyodide-stdin";
|
|
370376
|
+
exports.PYODIDE_TAB_ID_STORAGE_KEY = "pyodide-stdin-tab-id";
|
|
370377
|
+
exports.SERVICE_WORKER_CONTROL_WAIT_MS = 2500;
|
|
370378
|
+
exports.SERVICE_WORKER_PROBE_TIMEOUT_MS = 1500;
|
|
370379
|
+
|
|
370380
|
+
|
|
370381
|
+
/***/ }),
|
|
370382
|
+
|
|
370383
|
+
/***/ 65587:
|
|
370384
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
370385
|
+
|
|
370386
|
+
|
|
370387
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
370388
|
+
exports.usePyodideRunner = void 0;
|
|
370389
|
+
/* eslint-disable react-hooks/exhaustive-deps */
|
|
370390
|
+
const react_1 = __webpack_require__(51649);
|
|
370391
|
+
const react_redux_1 = __webpack_require__(14062);
|
|
370213
370392
|
const stores_1 = __webpack_require__(32132);
|
|
370214
|
-
const
|
|
370215
|
-
const OutputTabPanel_1 = __webpack_require__(25931);
|
|
370216
|
-
const console_svg_1 = __importDefault(__webpack_require__(20602));
|
|
370217
|
-
const preview_svg_1 = __importDefault(__webpack_require__(80417));
|
|
370218
|
-
const ProjectTypes_1 = __webpack_require__(27130);
|
|
370219
|
-
const projectHelpers_1 = __webpack_require__(2610);
|
|
370393
|
+
const EditorSlice_1 = __webpack_require__(68512);
|
|
370220
370394
|
const Errors_1 = __webpack_require__(20339);
|
|
370395
|
+
const ProjectTypes_1 = __webpack_require__(27130);
|
|
370396
|
+
const EditorTypes_1 = __webpack_require__(42108);
|
|
370397
|
+
const constants_1 = __webpack_require__(90804);
|
|
370398
|
+
const assetUrls_1 = __webpack_require__(85799);
|
|
370221
370399
|
const helpers_1 = __webpack_require__(55717);
|
|
370222
|
-
const
|
|
370223
|
-
const
|
|
370224
|
-
const
|
|
370225
|
-
const
|
|
370226
|
-
|
|
370227
|
-
|
|
370228
|
-
|
|
370229
|
-
|
|
370230
|
-
|
|
370400
|
+
const consoleInput_1 = __webpack_require__(35660);
|
|
370401
|
+
const consoleOutput_1 = __webpack_require__(98131);
|
|
370402
|
+
const fileWrite_1 = __webpack_require__(45230);
|
|
370403
|
+
const serviceWorker_1 = __webpack_require__(58158);
|
|
370404
|
+
const stdinFallbackMessages_1 = __webpack_require__(94879);
|
|
370405
|
+
const tabId_1 = __webpack_require__(95369);
|
|
370406
|
+
const usePyodideWorker_1 = __webpack_require__(93895);
|
|
370407
|
+
const useStdinServiceWorker_1 = __webpack_require__(86357);
|
|
370408
|
+
/**
|
|
370409
|
+
* Top-level coordinator for the Pyodide runner.
|
|
370410
|
+
*
|
|
370411
|
+
* It composes the two lifecycle hooks (Pyodide worker + stdin Service Worker)
|
|
370412
|
+
* and owns the cross-cutting state — buffers shared with the worker, the
|
|
370413
|
+
* current run id, the active input request, and the per-tab id used by the
|
|
370414
|
+
* stdin fallback. It also defines the message handlers the worker fires
|
|
370415
|
+
* back, and the run/stop callbacks driven by Redux.
|
|
370416
|
+
*
|
|
370417
|
+
* The React component itself stays free of any worker plumbing — it just
|
|
370418
|
+
* consumes the values returned here to drive its JSX.
|
|
370419
|
+
*/
|
|
370420
|
+
const usePyodideRunner = ({ active, packageApiUrl, }) => {
|
|
370421
|
+
const dispatch = (0, react_redux_1.useDispatch)();
|
|
370422
|
+
// -------------------------------------------------------------------------
|
|
370423
|
+
// Redux selectors
|
|
370424
|
+
// -------------------------------------------------------------------------
|
|
370231
370425
|
const loadedRunner = (0, stores_1.useAppSelector)((state) => state.editor.loadedRunner);
|
|
370232
370426
|
const project = (0, stores_1.useAppSelector)((s) => s.editor.project);
|
|
370427
|
+
const codeRunTriggered = (0, stores_1.useAppSelector)((s) => s.editor.codeRunTriggered);
|
|
370428
|
+
const codeRunStopped = (0, stores_1.useAppSelector)((s) => s.editor.codeRunStopped);
|
|
370233
370429
|
const projectComponents = project.components || [];
|
|
370234
370430
|
const projectCode = (0, react_1.useMemo)(() => projectComponents.filter((component) => component.type === ProjectTypes_1.ProjectComponentType.FILE), [projectComponents]);
|
|
370235
370431
|
const userModuleNames = (0, react_1.useMemo)(() => (0, helpers_1.getPythonUserModuleNames)(projectCode), [projectCode]);
|
|
370236
|
-
|
|
370237
|
-
|
|
370238
|
-
|
|
370432
|
+
// -------------------------------------------------------------------------
|
|
370433
|
+
// Long-lived refs shared across handlers
|
|
370434
|
+
// -------------------------------------------------------------------------
|
|
370435
|
+
/** Pointer into the SharedArrayBuffer used for stdin (sab strategy). */
|
|
370436
|
+
const stdinBuffer = (0, react_1.useRef)(null);
|
|
370437
|
+
/** Pointer into the SharedArrayBuffer used for SIGINT. */
|
|
370438
|
+
const interruptBuffer = (0, react_1.useRef)(null);
|
|
370439
|
+
/** True once the worker reports it's ready to run code. */
|
|
370440
|
+
const workerReady = (0, react_1.useRef)(false);
|
|
370441
|
+
/** Latched when the user signals EOF; persists for the rest of the run. */
|
|
370442
|
+
const stdinClosed = (0, react_1.useRef)(false);
|
|
370443
|
+
/** Which stdin strategy the worker negotiated: "sab" | "jspi" | "sync-xhr" | "unavailable". */
|
|
370444
|
+
const stdinStrategy = (0, react_1.useRef)("sab");
|
|
370445
|
+
/** Identifier of the currently-running Python execution. */
|
|
370446
|
+
const runId = (0, react_1.useRef)(null);
|
|
370447
|
+
/** Stable id used by the stdin SW to route input requests to this tab. */
|
|
370448
|
+
const tabIdRef = (0, react_1.useRef)((0, tabId_1.getOrCreateTabId)());
|
|
370449
|
+
/** The SW-fallback input request that's currently waiting on the user. */
|
|
370450
|
+
const activeInputRequest = (0, react_1.useRef)(null);
|
|
370451
|
+
// -------------------------------------------------------------------------
|
|
370452
|
+
// Component-managed state
|
|
370453
|
+
// -------------------------------------------------------------------------
|
|
370239
370454
|
const output = (0, react_1.useRef)(null);
|
|
370240
|
-
const dispatch = (0, react_redux_1.useDispatch)();
|
|
370241
370455
|
const [visuals, setVisuals] = (0, react_1.useState)([]);
|
|
370242
|
-
|
|
370243
|
-
|
|
370244
|
-
|
|
370245
|
-
|
|
370246
|
-
|
|
370247
|
-
|
|
370248
|
-
break;
|
|
370249
|
-
case "handleLoaded":
|
|
370250
|
-
handleLoaded(data.stdinBuffer, data.interruptBuffer);
|
|
370251
|
-
break;
|
|
370252
|
-
case "handleInput":
|
|
370253
|
-
handleInput(worker);
|
|
370254
|
-
break;
|
|
370255
|
-
case "handleOutput":
|
|
370256
|
-
handleOutput(data.stream, data.content);
|
|
370257
|
-
break;
|
|
370258
|
-
case "handleError":
|
|
370259
|
-
handleError(data.file, data.line, data.mistake, data.type, data.info);
|
|
370260
|
-
break;
|
|
370261
|
-
case "handleFileWrite":
|
|
370262
|
-
handleFileWrite(data.filename, data.content, data.mode);
|
|
370263
|
-
break;
|
|
370264
|
-
case "handleVisual":
|
|
370265
|
-
handleVisual(data.origin, data.content);
|
|
370266
|
-
break;
|
|
370267
|
-
default:
|
|
370268
|
-
throw new Error(`Unsupported method: ${data.method}`);
|
|
370269
|
-
}
|
|
370270
|
-
};
|
|
370271
|
-
worker.onerror = (error) => {
|
|
370272
|
-
console.error("Error in PyodideWorker:", error);
|
|
370273
|
-
};
|
|
370274
|
-
return worker;
|
|
370456
|
+
// -------------------------------------------------------------------------
|
|
370457
|
+
// Local helpers
|
|
370458
|
+
// -------------------------------------------------------------------------
|
|
370459
|
+
const disableInput = (0, react_1.useCallback)(() => {
|
|
370460
|
+
(0, consoleInput_1.disableInputElement)();
|
|
370461
|
+
activeInputRequest.current = null;
|
|
370275
370462
|
}, []);
|
|
370276
|
-
|
|
370277
|
-
|
|
370278
|
-
|
|
370279
|
-
|
|
370280
|
-
|
|
370281
|
-
|
|
370282
|
-
|
|
370283
|
-
stdinBuffer.current = null;
|
|
370284
|
-
stdinClosed.current = false;
|
|
370285
|
-
disableInput();
|
|
370286
|
-
const newWorker = createWorker();
|
|
370287
|
-
setPyodideWorker(newWorker);
|
|
370288
|
-
}, [pyodideWorker, url]);
|
|
370289
|
-
(0, react_1.useEffect)(() => {
|
|
370290
|
-
if (pyodideWorker)
|
|
370291
|
-
return;
|
|
370292
|
-
if (!active)
|
|
370293
|
-
return;
|
|
370294
|
-
const worker = createWorker();
|
|
370295
|
-
setPyodideWorker(worker);
|
|
370296
|
-
}, [active, pyodideWorker]);
|
|
370297
|
-
(0, react_1.useEffect)(() => {
|
|
370298
|
-
destroyAndRecreateWorker();
|
|
370299
|
-
}, [project.identifier]);
|
|
370300
|
-
(0, react_1.useEffect)(() => {
|
|
370301
|
-
if (!pyodideWorker)
|
|
370302
|
-
return;
|
|
370303
|
-
pyodideWorker.postMessage({
|
|
370304
|
-
method: "init",
|
|
370305
|
-
assets: pyodideAssets,
|
|
370306
|
-
packageApiUrl,
|
|
370307
|
-
});
|
|
370308
|
-
return () => {
|
|
370309
|
-
pyodideWorker.terminate();
|
|
370310
|
-
};
|
|
370311
|
-
}, [pyodideWorker]);
|
|
370312
|
-
(0, react_1.useEffect)(() => {
|
|
370313
|
-
if (codeRunTriggered && active && output.current) {
|
|
370314
|
-
handleRun();
|
|
370315
|
-
}
|
|
370316
|
-
}, [codeRunTriggered, output.current]);
|
|
370317
|
-
(0, react_1.useEffect)(() => {
|
|
370318
|
-
if (codeRunStopped && active) {
|
|
370319
|
-
handleStop();
|
|
370320
|
-
}
|
|
370321
|
-
}, [codeRunStopped]);
|
|
370322
|
-
const handleLoading = () => {
|
|
370323
|
-
return;
|
|
370324
|
-
};
|
|
370325
|
-
const handleLoaded = (stdin, interrupt) => {
|
|
370463
|
+
// -------------------------------------------------------------------------
|
|
370464
|
+
// Worker-message handlers (forwarded to usePyodideWorker via handleMessage)
|
|
370465
|
+
// -------------------------------------------------------------------------
|
|
370466
|
+
const handleLoading = (0, react_1.useCallback)(() => {
|
|
370467
|
+
// No-op; kept for symmetry with the worker protocol.
|
|
370468
|
+
}, []);
|
|
370469
|
+
const handleLoaded = (0, react_1.useCallback)((stdin, interrupt, strategy = "sab") => {
|
|
370326
370470
|
stdinBuffer.current = stdin;
|
|
370327
370471
|
interruptBuffer.current = interrupt;
|
|
370328
370472
|
workerReady.current = true;
|
|
370473
|
+
runId.current = null;
|
|
370474
|
+
activeInputRequest.current = null;
|
|
370475
|
+
stdinStrategy.current = strategy;
|
|
370329
370476
|
if (loadedRunner !== EditorTypes_1.RunnerType.PYODIDE) {
|
|
370330
370477
|
dispatch((0, EditorSlice_1.setLoadedRunner)(EditorTypes_1.RunnerType.PYODIDE));
|
|
370331
370478
|
}
|
|
370332
370479
|
dispatch((0, EditorSlice_1.codeRunHandled)());
|
|
370333
370480
|
disableInput();
|
|
370334
|
-
|
|
370335
|
-
|
|
370336
|
-
|
|
370481
|
+
if (strategy === "unavailable") {
|
|
370482
|
+
dispatch((0, EditorSlice_1.setError)({
|
|
370483
|
+
type: Errors_1.ErrorType.RUNTIME_ERROR,
|
|
370484
|
+
message: "Python input() is unavailable in this browser context. Activate the stdin Service Worker and reload the page.",
|
|
370485
|
+
}));
|
|
370486
|
+
}
|
|
370487
|
+
}, [dispatch, disableInput, loadedRunner]);
|
|
370488
|
+
const handleInput = (0, react_1.useCallback)(async (workerOverride, swRunId, swRequestId) => {
|
|
370489
|
+
const targetWorker = workerOverride ?? null;
|
|
370490
|
+
const isServiceWorkerRequest = Boolean(swRunId && swRequestId);
|
|
370491
|
+
const postStdinFallbackResponse = (value) => (0, serviceWorker_1.postMessageToStdinServiceWorker)((0, stdinFallbackMessages_1.buildStdinFallbackResponse)({
|
|
370492
|
+
clientId: tabIdRef.current,
|
|
370493
|
+
// swRunId / swRequestId are non-empty when isServiceWorkerRequest.
|
|
370494
|
+
runId: swRunId,
|
|
370495
|
+
requestId: swRequestId,
|
|
370496
|
+
value,
|
|
370497
|
+
}));
|
|
370498
|
+
const postStdinFallbackEof = () => (0, serviceWorker_1.postMessageToStdinServiceWorker)((0, stdinFallbackMessages_1.buildStdinFallbackEof)({
|
|
370499
|
+
clientId: tabIdRef.current,
|
|
370500
|
+
runId: swRunId,
|
|
370501
|
+
requestId: swRequestId,
|
|
370502
|
+
}));
|
|
370503
|
+
// If the user already pressed Ctrl+D earlier in this run, immediately
|
|
370504
|
+
// return EOF without prompting again. Under sync-XHR this must be an
|
|
370505
|
+
// explicit EOF (HTTP 204) — sending a CANCEL would surface in user code
|
|
370506
|
+
// as KeyboardInterrupt instead of EOFError.
|
|
370337
370507
|
if (stdinClosed.current) {
|
|
370338
370508
|
if (stdinBuffer.current) {
|
|
370339
370509
|
stdinBuffer.current[0] = -1;
|
|
370340
370510
|
}
|
|
370511
|
+
else if (isServiceWorkerRequest) {
|
|
370512
|
+
postStdinFallbackEof();
|
|
370513
|
+
}
|
|
370341
370514
|
else {
|
|
370342
370515
|
targetWorker?.postMessage({
|
|
370343
370516
|
method: "stdinResponse",
|
|
@@ -370347,17 +370520,31 @@ const PyodideRunner = ({ active, packageApiUrl, }) => {
|
|
|
370347
370520
|
return;
|
|
370348
370521
|
}
|
|
370349
370522
|
const outputPane = output.current;
|
|
370350
|
-
outputPane?.appendChild(inputSpan());
|
|
370351
|
-
const element = getInputElement();
|
|
370352
|
-
|
|
370523
|
+
outputPane?.appendChild((0, consoleInput_1.inputSpan)());
|
|
370524
|
+
const element = (0, consoleInput_1.getInputElement)();
|
|
370525
|
+
if (!element) {
|
|
370526
|
+
return;
|
|
370527
|
+
}
|
|
370528
|
+
const { content, ctrlD } = await (0, consoleInput_1.getInputContent)(element);
|
|
370353
370529
|
if (stdinBuffer.current) {
|
|
370354
370530
|
const encoder = new TextEncoder();
|
|
370355
|
-
const bytes = encoder.encode(content + "\n");
|
|
370531
|
+
const bytes = encoder.encode((content ?? "") + "\n");
|
|
370356
370532
|
const previousLength = stdinBuffer.current[0] ?? 0;
|
|
370357
370533
|
stdinBuffer.current.set(bytes, previousLength);
|
|
370358
370534
|
const currentLength = previousLength + bytes.length;
|
|
370359
370535
|
stdinBuffer.current[0] = currentLength;
|
|
370360
370536
|
}
|
|
370537
|
+
else if (isServiceWorkerRequest) {
|
|
370538
|
+
if (ctrlD) {
|
|
370539
|
+
// First-time Ctrl+D: signal EOF (HTTP 204), not cancel (HTTP 499).
|
|
370540
|
+
// Cancel would terminate the whole run with KeyboardInterrupt;
|
|
370541
|
+
// EOF lets user code catch EOFError and keep going.
|
|
370542
|
+
postStdinFallbackEof();
|
|
370543
|
+
}
|
|
370544
|
+
else {
|
|
370545
|
+
postStdinFallbackResponse(content !== undefined ? content : "");
|
|
370546
|
+
}
|
|
370547
|
+
}
|
|
370361
370548
|
else {
|
|
370362
370549
|
targetWorker?.postMessage({
|
|
370363
370550
|
method: "stdinResponse",
|
|
@@ -370365,21 +370552,18 @@ const PyodideRunner = ({ active, packageApiUrl, }) => {
|
|
|
370365
370552
|
ctrlD,
|
|
370366
370553
|
});
|
|
370367
370554
|
}
|
|
370368
|
-
if (
|
|
370369
|
-
|
|
370555
|
+
if (isServiceWorkerRequest) {
|
|
370556
|
+
activeInputRequest.current = null;
|
|
370370
370557
|
}
|
|
370371
|
-
|
|
370372
|
-
|
|
370373
|
-
|
|
370374
|
-
const div = document.createElement("span");
|
|
370375
|
-
div.className = (0, classnames_1.default)(styles_module_scss_1.default.pythonConsoleLine, stream === "stderr" && styles_module_scss_1.default["stderr"], stream === "stdout" && styles_module_scss_1.default["stdout"]);
|
|
370376
|
-
div.innerHTML = new Option(content || " ").innerHTML + "\n";
|
|
370377
|
-
if (node) {
|
|
370378
|
-
node.appendChild(div);
|
|
370379
|
-
node.scrollTop = node.scrollHeight;
|
|
370558
|
+
if (ctrlD) {
|
|
370559
|
+
// Don't accept any more stdin this run.
|
|
370560
|
+
stdinClosed.current = true;
|
|
370380
370561
|
}
|
|
370381
|
-
};
|
|
370382
|
-
const
|
|
370562
|
+
}, []);
|
|
370563
|
+
const handleOutput = (0, react_1.useCallback)((stream, content) => {
|
|
370564
|
+
(0, consoleOutput_1.appendConsoleLine)(output.current, stream, content);
|
|
370565
|
+
}, []);
|
|
370566
|
+
const handleError = (0, react_1.useCallback)((file, line, mistake, type, info) => {
|
|
370383
370567
|
let errorMessage;
|
|
370384
370568
|
if (type === "KeyboardInterrupt") {
|
|
370385
370569
|
errorMessage = "Execution interrupted";
|
|
@@ -370397,62 +370581,139 @@ const PyodideRunner = ({ active, packageApiUrl, }) => {
|
|
|
370397
370581
|
message: errorMessage,
|
|
370398
370582
|
}));
|
|
370399
370583
|
disableInput();
|
|
370400
|
-
};
|
|
370401
|
-
const handleFileWrite = (filePath, content, mode) => {
|
|
370402
|
-
|
|
370403
|
-
|
|
370404
|
-
|
|
370405
|
-
|
|
370584
|
+
}, [dispatch, disableInput]);
|
|
370585
|
+
const handleFileWrite = (0, react_1.useCallback)((filePath, content, mode) => {
|
|
370586
|
+
(0, fileWrite_1.applyPyodideFileWrite)({
|
|
370587
|
+
dispatch,
|
|
370588
|
+
projectComponents,
|
|
370589
|
+
projectCode,
|
|
370590
|
+
filePath,
|
|
370591
|
+
content,
|
|
370592
|
+
mode,
|
|
370593
|
+
});
|
|
370594
|
+
}, [dispatch, projectComponents, projectCode]);
|
|
370595
|
+
const handleVisual = (0, react_1.useCallback)((origin, content) => {
|
|
370596
|
+
setVisuals((array) => [...array, { origin, content }]);
|
|
370597
|
+
}, []);
|
|
370598
|
+
// -------------------------------------------------------------------------
|
|
370599
|
+
// Worker lifecycle
|
|
370600
|
+
// -------------------------------------------------------------------------
|
|
370601
|
+
const handleBeforeRecreate = (0, react_1.useCallback)(() => {
|
|
370602
|
+
workerReady.current = false;
|
|
370603
|
+
interruptBuffer.current = null;
|
|
370604
|
+
stdinBuffer.current = null;
|
|
370605
|
+
stdinClosed.current = false;
|
|
370606
|
+
disableInput();
|
|
370607
|
+
}, [disableInput]);
|
|
370608
|
+
const handleMessage = (0, react_1.useCallback)((data, w) => {
|
|
370609
|
+
switch (data.method) {
|
|
370610
|
+
case "handleLoading":
|
|
370611
|
+
handleLoading();
|
|
370612
|
+
break;
|
|
370613
|
+
case "handleLoaded":
|
|
370614
|
+
handleLoaded(data.stdinBuffer, data.interruptBuffer, data.stdinStrategy);
|
|
370615
|
+
break;
|
|
370616
|
+
case "handleInput":
|
|
370617
|
+
handleInput(w);
|
|
370618
|
+
break;
|
|
370619
|
+
case "handleOutput":
|
|
370620
|
+
handleOutput(data.stream, data.content);
|
|
370621
|
+
break;
|
|
370622
|
+
case "handleError":
|
|
370623
|
+
handleError(data.file, data.line, data.mistake, data.type, data.info);
|
|
370624
|
+
break;
|
|
370625
|
+
case "handleFileWrite":
|
|
370626
|
+
handleFileWrite(data.filename, data.content, data.mode);
|
|
370627
|
+
break;
|
|
370628
|
+
case "handleVisual":
|
|
370629
|
+
handleVisual(data.origin, data.content);
|
|
370630
|
+
break;
|
|
370631
|
+
default:
|
|
370632
|
+
throw new Error(`Unsupported method: ${data.method}`);
|
|
370406
370633
|
}
|
|
370407
|
-
|
|
370408
|
-
|
|
370409
|
-
|
|
370634
|
+
}, [
|
|
370635
|
+
handleLoading,
|
|
370636
|
+
handleLoaded,
|
|
370637
|
+
handleInput,
|
|
370638
|
+
handleOutput,
|
|
370639
|
+
handleError,
|
|
370640
|
+
handleFileWrite,
|
|
370641
|
+
handleVisual,
|
|
370642
|
+
]);
|
|
370643
|
+
const { worker: pyodideWorker, recreateWorker } = (0, usePyodideWorker_1.usePyodideWorker)({
|
|
370644
|
+
active,
|
|
370645
|
+
projectIdentifier: project.identifier,
|
|
370646
|
+
onMessage: handleMessage,
|
|
370647
|
+
onBeforeRecreate: handleBeforeRecreate,
|
|
370648
|
+
});
|
|
370649
|
+
// -------------------------------------------------------------------------
|
|
370650
|
+
// Stdin Service Worker
|
|
370651
|
+
// -------------------------------------------------------------------------
|
|
370652
|
+
const handleStdinRequest = (0, react_1.useCallback)((request) => {
|
|
370653
|
+
if (request.runId !== runId.current) {
|
|
370654
|
+
return;
|
|
370655
|
+
}
|
|
370656
|
+
activeInputRequest.current = {
|
|
370657
|
+
runId: request.runId,
|
|
370658
|
+
requestId: request.requestId,
|
|
370659
|
+
};
|
|
370660
|
+
handleInput(undefined, request.runId, request.requestId);
|
|
370661
|
+
}, [handleInput]);
|
|
370662
|
+
const handleControllerChange = (0, react_1.useCallback)(() => {
|
|
370663
|
+
// If we already had a working stdin strategy (sab / sync-xhr), there's
|
|
370664
|
+
// no need to reset the runtime — the SW just rotated. We only force a
|
|
370665
|
+
// recreate when we previously couldn't get any stdin path at all.
|
|
370666
|
+
if (stdinStrategy.current !== "unavailable") {
|
|
370667
|
+
return;
|
|
370668
|
+
}
|
|
370669
|
+
recreateWorker();
|
|
370670
|
+
}, [recreateWorker]);
|
|
370671
|
+
const { ensureInputServiceWorker, registerStdinClient } = (0, useStdinServiceWorker_1.useStdinServiceWorker)({
|
|
370672
|
+
active,
|
|
370673
|
+
tabIdRef,
|
|
370674
|
+
onStdinRequest: handleStdinRequest,
|
|
370675
|
+
onControllerChange: handleControllerChange,
|
|
370676
|
+
});
|
|
370677
|
+
// -------------------------------------------------------------------------
|
|
370678
|
+
// Run / stop orchestration
|
|
370679
|
+
// -------------------------------------------------------------------------
|
|
370680
|
+
const writeFile = (0, react_1.useCallback)((filename, content) => {
|
|
370681
|
+
pyodideWorker?.postMessage({ method: "writeFile", filename, content });
|
|
370682
|
+
}, [pyodideWorker]);
|
|
370683
|
+
const handleRun = (0, react_1.useCallback)(async () => {
|
|
370684
|
+
if (!workerReady.current || !pyodideWorker) {
|
|
370685
|
+
return;
|
|
370410
370686
|
}
|
|
370411
|
-
if (
|
|
370412
|
-
dispatch((0, EditorSlice_1.
|
|
370413
|
-
|
|
370414
|
-
|
|
370687
|
+
if (stdinStrategy.current === "unavailable") {
|
|
370688
|
+
dispatch((0, EditorSlice_1.setError)({
|
|
370689
|
+
type: Errors_1.ErrorType.RUNTIME_ERROR,
|
|
370690
|
+
message: "Python input() fallback is unavailable because the Service Worker is not controlling this page. Reload after Service Worker activation.",
|
|
370415
370691
|
}));
|
|
370692
|
+
dispatch((0, EditorSlice_1.codeRunHandled)());
|
|
370693
|
+
return;
|
|
370416
370694
|
}
|
|
370417
|
-
|
|
370418
|
-
const
|
|
370419
|
-
|
|
370420
|
-
|
|
370421
|
-
|
|
370422
|
-
|
|
370423
|
-
content: updatedContent,
|
|
370424
|
-
type: ProjectTypes_1.ProjectComponentType.FILE,
|
|
370425
|
-
path: filePath,
|
|
370426
|
-
};
|
|
370427
|
-
dispatch((0, EditorSlice_1.addProjectComponent)(newFile));
|
|
370428
|
-
const dirParent = projectComponents.find((component) => component.type === ProjectTypes_1.ProjectComponentType.DIR &&
|
|
370429
|
-
component.path === dirPath);
|
|
370430
|
-
if (dirParent) {
|
|
370431
|
-
dispatch((0, EditorSlice_1.updateProjectComponent)({
|
|
370432
|
-
...dirParent,
|
|
370433
|
-
children: [...(dirParent.children ?? []), newFile.id],
|
|
370695
|
+
if (stdinStrategy.current === "sync-xhr") {
|
|
370696
|
+
const swStatus = await ensureInputServiceWorker();
|
|
370697
|
+
if (!swStatus.controlled) {
|
|
370698
|
+
dispatch((0, EditorSlice_1.setError)({
|
|
370699
|
+
type: Errors_1.ErrorType.RUNTIME_ERROR,
|
|
370700
|
+
message: "Python input() fallback requires an active Service Worker controller. Reload the page and try again.",
|
|
370434
370701
|
}));
|
|
370702
|
+
dispatch((0, EditorSlice_1.codeRunHandled)());
|
|
370703
|
+
return;
|
|
370435
370704
|
}
|
|
370436
|
-
|
|
370437
|
-
};
|
|
370438
|
-
const handleVisual = (origin, content) => {
|
|
370439
|
-
setVisuals((array) => [...array, { origin, content }]);
|
|
370440
|
-
};
|
|
370441
|
-
const handleRun = async () => {
|
|
370442
|
-
if (!workerReady.current || !pyodideWorker) {
|
|
370443
|
-
return;
|
|
370705
|
+
registerStdinClient();
|
|
370444
370706
|
}
|
|
370445
370707
|
if (output.current) {
|
|
370446
370708
|
output.current.innerHTML = "";
|
|
370447
370709
|
}
|
|
370448
|
-
|
|
370449
|
-
const entryFile = projectCode.find((component) => component.path === PYTHON_ENTRY_FILE_PATH);
|
|
370710
|
+
const entryFile = projectCode.find((component) => component.path === constants_1.PYTHON_ENTRY_FILE_PATH);
|
|
370450
370711
|
if (!entryFile) {
|
|
370451
370712
|
dispatch((0, EditorSlice_1.setError)({
|
|
370452
370713
|
type: Errors_1.ErrorType.ENTRY_FILE_NOT_FOUND,
|
|
370453
|
-
message: `can't open file '${PYTHON_ENTRY_FILE_PATH}': No such file or directory`,
|
|
370714
|
+
message: `can't open file '${constants_1.PYTHON_ENTRY_FILE_PATH}': No such file or directory`,
|
|
370454
370715
|
details: {
|
|
370455
|
-
fileName: PYTHON_ENTRY_FILE_PATH.split("/").pop(),
|
|
370716
|
+
fileName: constants_1.PYTHON_ENTRY_FILE_PATH.split("/").pop(),
|
|
370456
370717
|
},
|
|
370457
370718
|
}));
|
|
370458
370719
|
dispatch((0, EditorSlice_1.codeRunHandled)());
|
|
@@ -370461,6 +370722,8 @@ const PyodideRunner = ({ active, packageApiUrl, }) => {
|
|
|
370461
370722
|
dispatch((0, EditorSlice_1.setError)(null));
|
|
370462
370723
|
setVisuals([]);
|
|
370463
370724
|
stdinClosed.current = false;
|
|
370725
|
+
// Mirror the project directory tree into the Pyodide filesystem so that
|
|
370726
|
+
// relative imports between user files resolve correctly.
|
|
370464
370727
|
const dirSet = new Set();
|
|
370465
370728
|
for (const { path } of projectCode) {
|
|
370466
370729
|
if (path) {
|
|
@@ -370470,115 +370733,357 @@ const PyodideRunner = ({ active, packageApiUrl, }) => {
|
|
|
370470
370733
|
}
|
|
370471
370734
|
}
|
|
370472
370735
|
}
|
|
370473
|
-
// Create directories in Pyodide FS
|
|
370474
370736
|
const dirs = Array.from(dirSet);
|
|
370475
|
-
|
|
370476
|
-
pyodideWorker.postMessage({
|
|
370477
|
-
method: "createDirectories",
|
|
370478
|
-
dirs,
|
|
370479
|
-
});
|
|
370480
|
-
}
|
|
370481
|
-
// Write files to Pyodide FS
|
|
370737
|
+
pyodideWorker.postMessage({ method: "createDirectories", dirs });
|
|
370482
370738
|
for (const { path, content } of projectCode) {
|
|
370483
370739
|
if (path) {
|
|
370484
370740
|
writeFile(path, content);
|
|
370485
370741
|
}
|
|
370486
370742
|
}
|
|
370487
370743
|
if (interruptBuffer.current) {
|
|
370488
|
-
interruptBuffer.current[0] = 0; // Clear previous
|
|
370744
|
+
interruptBuffer.current[0] = 0; // Clear previous SIGINT.
|
|
370489
370745
|
}
|
|
370490
|
-
|
|
370746
|
+
runId.current = crypto.randomUUID();
|
|
370747
|
+
activeInputRequest.current = null;
|
|
370748
|
+
pyodideWorker.postMessage({
|
|
370491
370749
|
method: "runPython",
|
|
370492
370750
|
python: entryFile.content,
|
|
370493
370751
|
userModuleNames,
|
|
370752
|
+
runId: runId.current,
|
|
370494
370753
|
});
|
|
370495
|
-
}
|
|
370496
|
-
|
|
370754
|
+
}, [
|
|
370755
|
+
pyodideWorker,
|
|
370756
|
+
dispatch,
|
|
370757
|
+
projectCode,
|
|
370758
|
+
userModuleNames,
|
|
370759
|
+
writeFile,
|
|
370760
|
+
ensureInputServiceWorker,
|
|
370761
|
+
registerStdinClient,
|
|
370762
|
+
]);
|
|
370763
|
+
const handleStop = (0, react_1.useCallback)(() => {
|
|
370764
|
+
if (runId.current && stdinStrategy.current === "sync-xhr") {
|
|
370765
|
+
// Stop is a true cancellation (user-driven interrupt), so use CANCEL
|
|
370766
|
+
// and let the worker surface KeyboardInterrupt to user code.
|
|
370767
|
+
(0, serviceWorker_1.postMessageToStdinServiceWorker)((0, stdinFallbackMessages_1.buildStdinFallbackCancel)({
|
|
370768
|
+
clientId: tabIdRef.current,
|
|
370769
|
+
runId: runId.current,
|
|
370770
|
+
}));
|
|
370771
|
+
}
|
|
370497
370772
|
pyodideWorker?.postMessage({ method: "stopPython" });
|
|
370498
370773
|
if (interruptBuffer.current) {
|
|
370499
|
-
interruptBuffer.current[0] = 2; //
|
|
370774
|
+
interruptBuffer.current[0] = 2; // SIGINT to the running Python.
|
|
370500
370775
|
disableInput();
|
|
370501
370776
|
return;
|
|
370502
370777
|
}
|
|
370778
|
+
// No SIGINT channel available. If Python is currently blocked on input()
|
|
370779
|
+
// under the sync-XHR strategy, the CANCEL we just posted to the SW is
|
|
370780
|
+
// enough on its own: the worker's pending XHR will return 499, throw
|
|
370781
|
+
// PYODIDE_STDIN_CANCELLED, and runPython will post handleError
|
|
370782
|
+
// (KeyboardInterrupt) followed by handleLoaded — the orchestrator will
|
|
370783
|
+
// reset its refs naturally and no recreate is needed.
|
|
370784
|
+
//
|
|
370785
|
+
// Avoiding the recreate is important on Safari: WebKit does not reliably
|
|
370786
|
+
// attach the page's Service Worker controller to a freshly-created
|
|
370787
|
+
// dedicated Web Worker, so the next run's stdin XHR escapes to the
|
|
370788
|
+
// network (HTTP 404 → OSError [Errno 29] in Python). By keeping the same
|
|
370789
|
+
// worker alive we keep the SW route working across Stop → Run cycles.
|
|
370790
|
+
if (stdinStrategy.current === "sync-xhr" &&
|
|
370791
|
+
activeInputRequest.current !== null) {
|
|
370792
|
+
disableInput();
|
|
370793
|
+
return;
|
|
370794
|
+
}
|
|
370795
|
+
// Otherwise (CPU-bound user code without SIGINT) we have no choice but
|
|
370796
|
+
// to terminate and recreate the worker.
|
|
370503
370797
|
disableInput();
|
|
370504
|
-
|
|
370798
|
+
recreateWorker();
|
|
370505
370799
|
dispatch((0, EditorSlice_1.setError)({
|
|
370506
370800
|
type: Errors_1.ErrorType.RUNTIME_ERROR,
|
|
370507
370801
|
message: "Execution interrupted",
|
|
370508
370802
|
}));
|
|
370803
|
+
}, [pyodideWorker, dispatch, disableInput, recreateWorker]);
|
|
370804
|
+
// -------------------------------------------------------------------------
|
|
370805
|
+
// Effects
|
|
370806
|
+
// -------------------------------------------------------------------------
|
|
370807
|
+
// Send the `init` message every time a fresh worker becomes available, so
|
|
370808
|
+
// it knows where to find pyodide assets and how to talk to the stdin SW.
|
|
370809
|
+
(0, react_1.useEffect)(() => {
|
|
370810
|
+
if (!pyodideWorker)
|
|
370811
|
+
return;
|
|
370812
|
+
let cancelled = false;
|
|
370813
|
+
const initWorker = async () => {
|
|
370814
|
+
const swStatus = await ensureInputServiceWorker();
|
|
370815
|
+
if (cancelled) {
|
|
370816
|
+
return;
|
|
370817
|
+
}
|
|
370818
|
+
pyodideWorker.postMessage({
|
|
370819
|
+
method: "init",
|
|
370820
|
+
assets: assetUrls_1.pyodideAssets,
|
|
370821
|
+
packageApiUrl,
|
|
370822
|
+
stdinFallback: {
|
|
370823
|
+
enabled: swStatus.supported && swStatus.controlled,
|
|
370824
|
+
endpointPath: constants_1.PYODIDE_STDIN_ENDPOINT,
|
|
370825
|
+
clientId: tabIdRef.current,
|
|
370826
|
+
},
|
|
370827
|
+
});
|
|
370828
|
+
};
|
|
370829
|
+
initWorker();
|
|
370830
|
+
return () => {
|
|
370831
|
+
cancelled = true;
|
|
370832
|
+
};
|
|
370833
|
+
}, [pyodideWorker, ensureInputServiceWorker, packageApiUrl]);
|
|
370834
|
+
// Kick off a run when the Redux flag flips on.
|
|
370835
|
+
(0, react_1.useEffect)(() => {
|
|
370836
|
+
if (codeRunTriggered && active && output.current) {
|
|
370837
|
+
handleRun();
|
|
370838
|
+
}
|
|
370839
|
+
}, [codeRunTriggered, output.current]);
|
|
370840
|
+
// Stop a run when the Redux flag flips on.
|
|
370841
|
+
(0, react_1.useEffect)(() => {
|
|
370842
|
+
if (codeRunStopped && active) {
|
|
370843
|
+
handleStop();
|
|
370844
|
+
}
|
|
370845
|
+
}, [codeRunStopped]);
|
|
370846
|
+
return {
|
|
370847
|
+
output,
|
|
370848
|
+
visuals,
|
|
370849
|
+
setVisuals,
|
|
370850
|
+
workerInitialized: Boolean(pyodideWorker),
|
|
370509
370851
|
};
|
|
370510
|
-
|
|
370511
|
-
|
|
370512
|
-
|
|
370513
|
-
|
|
370514
|
-
|
|
370515
|
-
|
|
370516
|
-
|
|
370517
|
-
|
|
370518
|
-
|
|
370519
|
-
|
|
370520
|
-
|
|
370521
|
-
|
|
370522
|
-
|
|
370523
|
-
|
|
370524
|
-
|
|
370525
|
-
|
|
370526
|
-
|
|
370527
|
-
|
|
370528
|
-
|
|
370529
|
-
|
|
370530
|
-
|
|
370531
|
-
|
|
370532
|
-
|
|
370533
|
-
|
|
370534
|
-
|
|
370535
|
-
|
|
370536
|
-
|
|
370537
|
-
|
|
370538
|
-
|
|
370852
|
+
};
|
|
370853
|
+
exports.usePyodideRunner = usePyodideRunner;
|
|
370854
|
+
|
|
370855
|
+
|
|
370856
|
+
/***/ }),
|
|
370857
|
+
|
|
370858
|
+
/***/ 93895:
|
|
370859
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
370860
|
+
|
|
370861
|
+
|
|
370862
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
370863
|
+
exports.usePyodideWorker = void 0;
|
|
370864
|
+
const react_1 = __webpack_require__(51649);
|
|
370865
|
+
const assetUrls_1 = __webpack_require__(85799);
|
|
370866
|
+
/**
|
|
370867
|
+
* Owns the lifecycle of the Pyodide Web Worker.
|
|
370868
|
+
*
|
|
370869
|
+
* Responsibilities:
|
|
370870
|
+
* - Create the worker once the runner becomes active.
|
|
370871
|
+
* - Re-create the worker whenever the project identifier changes (each
|
|
370872
|
+
* project starts from a clean Python environment).
|
|
370873
|
+
* - Expose an imperative `recreateWorker` for callers that need to force a
|
|
370874
|
+
* reset (e.g. after the stdin SW activates and we need to retry init).
|
|
370875
|
+
* - Terminate the worker on unmount.
|
|
370876
|
+
*
|
|
370877
|
+
* Posting messages and decoding incoming messages is the orchestrator's job —
|
|
370878
|
+
* this hook just hands the worker over and forwards messages.
|
|
370879
|
+
*/
|
|
370880
|
+
const usePyodideWorker = ({ active, projectIdentifier, onMessage, onBeforeRecreate, }) => {
|
|
370881
|
+
const [worker, setWorker] = (0, react_1.useState)(null);
|
|
370882
|
+
// The onMessage callback closes over orchestrator state, so we route through
|
|
370883
|
+
// a ref to avoid rebuilding the worker every render.
|
|
370884
|
+
const onMessageRef = (0, react_1.useRef)(onMessage);
|
|
370885
|
+
onMessageRef.current = onMessage;
|
|
370886
|
+
const onBeforeRecreateRef = (0, react_1.useRef)(onBeforeRecreate);
|
|
370887
|
+
onBeforeRecreateRef.current = onBeforeRecreate;
|
|
370888
|
+
const createWorker = (0, react_1.useCallback)(() => {
|
|
370889
|
+
const w = new Worker(assetUrls_1.PYODIDE_WORKER_URL);
|
|
370890
|
+
w.onmessage = ({ data }) => {
|
|
370891
|
+
onMessageRef.current(data, w);
|
|
370892
|
+
};
|
|
370893
|
+
w.onerror = (error) => {
|
|
370894
|
+
console.error("Error in PyodideWorker:", error);
|
|
370895
|
+
};
|
|
370896
|
+
return w;
|
|
370897
|
+
}, []);
|
|
370898
|
+
const recreateWorker = (0, react_1.useCallback)(() => {
|
|
370899
|
+
onBeforeRecreateRef.current?.();
|
|
370900
|
+
setWorker((current) => {
|
|
370901
|
+
if (current) {
|
|
370902
|
+
console.log("Destroying and recreating Pyodide worker");
|
|
370903
|
+
current.terminate();
|
|
370904
|
+
}
|
|
370905
|
+
return createWorker();
|
|
370906
|
+
});
|
|
370907
|
+
}, [createWorker]);
|
|
370908
|
+
// First-mount creation: only when active and no worker exists yet.
|
|
370909
|
+
(0, react_1.useEffect)(() => {
|
|
370910
|
+
if (worker)
|
|
370911
|
+
return;
|
|
370912
|
+
if (!active)
|
|
370913
|
+
return;
|
|
370914
|
+
setWorker(createWorker());
|
|
370915
|
+
}, [active, worker, createWorker]);
|
|
370916
|
+
// Project changes always reset the worker
|
|
370917
|
+
(0, react_1.useEffect)(() => {
|
|
370918
|
+
recreateWorker();
|
|
370919
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
370920
|
+
}, [projectIdentifier]);
|
|
370921
|
+
// Terminate on unmount or when the worker reference is replaced.
|
|
370922
|
+
(0, react_1.useEffect)(() => {
|
|
370923
|
+
return () => {
|
|
370924
|
+
worker?.terminate();
|
|
370925
|
+
};
|
|
370926
|
+
}, [worker]);
|
|
370927
|
+
return { worker, recreateWorker };
|
|
370928
|
+
};
|
|
370929
|
+
exports.usePyodideWorker = usePyodideWorker;
|
|
370930
|
+
|
|
370931
|
+
|
|
370932
|
+
/***/ }),
|
|
370933
|
+
|
|
370934
|
+
/***/ 86357:
|
|
370935
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
370936
|
+
|
|
370937
|
+
|
|
370938
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
370939
|
+
exports.useStdinServiceWorker = void 0;
|
|
370940
|
+
const react_1 = __webpack_require__(51649);
|
|
370941
|
+
const assetUrls_1 = __webpack_require__(85799);
|
|
370942
|
+
const serviceWorker_1 = __webpack_require__(58158);
|
|
370943
|
+
/**
|
|
370944
|
+
* Manages the lifecycle of the stdin Service Worker:
|
|
370945
|
+
*
|
|
370946
|
+
* - registers the SW (with a non-root-scope fallback for restricted hosts)
|
|
370947
|
+
* - waits for the page to actually be controlled before declaring success
|
|
370948
|
+
* - probes the SW fetch route to confirm interception is wired up
|
|
370949
|
+
* - retries the registration once if either check fails
|
|
370950
|
+
* - listens for SW messages and forwards stdin requests to the orchestrator
|
|
370951
|
+
* - listens for `controllerchange` so the orchestrator can re-register and
|
|
370952
|
+
* decide whether to recreate the Pyodide worker
|
|
370953
|
+
*
|
|
370954
|
+
* Returns helpers (`ensureInputServiceWorker`, `registerStdinClient`) the
|
|
370955
|
+
* orchestrator calls from `run` and from `init`.
|
|
370956
|
+
*/
|
|
370957
|
+
const useStdinServiceWorker = ({ active, tabIdRef, onStdinRequest, onControllerChange, }) => {
|
|
370958
|
+
// Keep latest callbacks in refs so the event listener effects don't need to
|
|
370959
|
+
// re-subscribe whenever the parent re-renders with a new closure.
|
|
370960
|
+
const onStdinRequestRef = (0, react_1.useRef)(onStdinRequest);
|
|
370961
|
+
onStdinRequestRef.current = onStdinRequest;
|
|
370962
|
+
const onControllerChangeRef = (0, react_1.useRef)(onControllerChange);
|
|
370963
|
+
onControllerChangeRef.current = onControllerChange;
|
|
370964
|
+
const registerStdinClient = (0, react_1.useCallback)(() => {
|
|
370965
|
+
(0, serviceWorker_1.postMessageToStdinServiceWorker)({
|
|
370966
|
+
type: "PYODIDE_STDIN_REGISTER",
|
|
370967
|
+
clientId: tabIdRef.current,
|
|
370968
|
+
});
|
|
370969
|
+
}, [tabIdRef]);
|
|
370970
|
+
const ensureInputServiceWorker = (0, react_1.useCallback)(async () => {
|
|
370971
|
+
if (typeof window === "undefined") {
|
|
370972
|
+
return { supported: false, controlled: false };
|
|
370973
|
+
}
|
|
370974
|
+
if (!("serviceWorker" in navigator)) {
|
|
370975
|
+
return { supported: false, controlled: false };
|
|
370976
|
+
}
|
|
370977
|
+
try {
|
|
370978
|
+
const registerStdinWorker = async () => {
|
|
370979
|
+
try {
|
|
370980
|
+
return await navigator.serviceWorker.register(assetUrls_1.PYODIDE_STDIN_SW_URL, {
|
|
370981
|
+
scope: "/",
|
|
370539
370982
|
});
|
|
370540
370983
|
}
|
|
370541
|
-
|
|
370542
|
-
|
|
370543
|
-
|
|
370544
|
-
|
|
370545
|
-
|
|
370546
|
-
|
|
370984
|
+
catch (rootScopeError) {
|
|
370985
|
+
// Fallback for hosts that do not allow broad SW scope from the asset path.
|
|
370986
|
+
const fallbackRegistration = await navigator.serviceWorker.register(assetUrls_1.PYODIDE_STDIN_SW_URL);
|
|
370987
|
+
console.warn("Registered stdin Service Worker without root scope", rootScopeError);
|
|
370988
|
+
return fallbackRegistration;
|
|
370989
|
+
}
|
|
370990
|
+
};
|
|
370991
|
+
const evaluateRegistration = async (registration) => {
|
|
370992
|
+
await Promise.race([
|
|
370993
|
+
navigator.serviceWorker.ready,
|
|
370994
|
+
new Promise((resolve) => setTimeout(resolve, 2000)),
|
|
370995
|
+
]);
|
|
370996
|
+
const controlled = Boolean(navigator.serviceWorker.controller) ||
|
|
370997
|
+
(await (0, serviceWorker_1.waitForServiceWorkerControl)());
|
|
370998
|
+
if (controlled || registration?.active) {
|
|
370999
|
+
const messageTarget = navigator.serviceWorker.controller ||
|
|
371000
|
+
registration?.active ||
|
|
371001
|
+
registration?.waiting ||
|
|
371002
|
+
registration?.installing;
|
|
371003
|
+
messageTarget?.postMessage({
|
|
371004
|
+
type: "PYODIDE_STDIN_REGISTER",
|
|
371005
|
+
clientId: tabIdRef.current,
|
|
371006
|
+
});
|
|
371007
|
+
}
|
|
371008
|
+
const routeReady = await (0, serviceWorker_1.verifyStdinServiceWorkerRoute)();
|
|
371009
|
+
return controlled && routeReady;
|
|
371010
|
+
};
|
|
371011
|
+
let registration = await registerStdinWorker();
|
|
371012
|
+
let healthy = await evaluateRegistration(registration);
|
|
371013
|
+
if (!healthy) {
|
|
371014
|
+
try {
|
|
371015
|
+
await registration?.unregister();
|
|
371016
|
+
}
|
|
371017
|
+
catch (error) {
|
|
371018
|
+
console.debug("stdin SW unregister retry skipped", error);
|
|
371019
|
+
}
|
|
371020
|
+
registration = await registerStdinWorker();
|
|
371021
|
+
healthy = await evaluateRegistration(registration);
|
|
371022
|
+
}
|
|
371023
|
+
return { supported: true, controlled: healthy };
|
|
371024
|
+
}
|
|
371025
|
+
catch (error) {
|
|
371026
|
+
console.warn("Failed to register stdin Service Worker", error);
|
|
371027
|
+
return { supported: true, controlled: false };
|
|
371028
|
+
}
|
|
371029
|
+
}, [tabIdRef]);
|
|
371030
|
+
// Listen for messages from the SW. The SW forwards a PYODIDE_STDIN_REQUEST
|
|
371031
|
+
// whenever the worker thread blocks on input() via the sync-XHR fallback.
|
|
371032
|
+
(0, react_1.useEffect)(() => {
|
|
371033
|
+
if (!("serviceWorker" in navigator)) {
|
|
370547
371034
|
return;
|
|
370548
371035
|
}
|
|
370549
|
-
const
|
|
370550
|
-
|
|
370551
|
-
|
|
370552
|
-
|
|
370553
|
-
selection?.removeAllRanges();
|
|
370554
|
-
if (input?.innerText && input.innerText.length > 0) {
|
|
370555
|
-
const range = document.createRange();
|
|
370556
|
-
range.setStart(input, 1);
|
|
370557
|
-
range.collapse(true);
|
|
370558
|
-
selection?.addRange(range);
|
|
371036
|
+
const handleMessage = (event) => {
|
|
371037
|
+
const data = event.data;
|
|
371038
|
+
if (!data || typeof data !== "object") {
|
|
371039
|
+
return;
|
|
370559
371040
|
}
|
|
370560
|
-
|
|
371041
|
+
if (data.type !== "PYODIDE_STDIN_REQUEST") {
|
|
371042
|
+
return;
|
|
371043
|
+
}
|
|
371044
|
+
if (data.clientId !== tabIdRef.current) {
|
|
371045
|
+
return;
|
|
371046
|
+
}
|
|
371047
|
+
onStdinRequestRef.current({
|
|
371048
|
+
runId: data.runId,
|
|
371049
|
+
requestId: data.requestId,
|
|
371050
|
+
clientId: data.clientId,
|
|
371051
|
+
});
|
|
371052
|
+
};
|
|
371053
|
+
navigator.serviceWorker.addEventListener("message", handleMessage);
|
|
371054
|
+
return () => {
|
|
371055
|
+
navigator.serviceWorker.removeEventListener("message", handleMessage);
|
|
371056
|
+
};
|
|
371057
|
+
}, [tabIdRef]);
|
|
371058
|
+
// Re-register stdin client and notify the orchestrator whenever the page
|
|
371059
|
+
// gains a new SW controller (e.g. after first registration or a SW update).
|
|
371060
|
+
(0, react_1.useEffect)(() => {
|
|
371061
|
+
if (!active) {
|
|
371062
|
+
return;
|
|
370561
371063
|
}
|
|
370562
|
-
|
|
370563
|
-
|
|
370564
|
-
const element = getInputElement();
|
|
370565
|
-
if (element) {
|
|
370566
|
-
element.removeAttribute("id");
|
|
370567
|
-
element.removeAttribute("contentEditable");
|
|
371064
|
+
if (!("serviceWorker" in navigator)) {
|
|
371065
|
+
return;
|
|
370568
371066
|
}
|
|
370569
|
-
|
|
370570
|
-
|
|
370571
|
-
|
|
370572
|
-
|
|
370573
|
-
|
|
370574
|
-
|
|
371067
|
+
const handleControllerChange = () => {
|
|
371068
|
+
if (!navigator.serviceWorker.controller) {
|
|
371069
|
+
return;
|
|
371070
|
+
}
|
|
371071
|
+
registerStdinClient();
|
|
371072
|
+
onControllerChangeRef.current();
|
|
371073
|
+
};
|
|
371074
|
+
navigator.serviceWorker.addEventListener("controllerchange", handleControllerChange);
|
|
371075
|
+
return () => {
|
|
371076
|
+
navigator.serviceWorker.removeEventListener("controllerchange", handleControllerChange);
|
|
371077
|
+
};
|
|
371078
|
+
}, [active, registerStdinClient]);
|
|
371079
|
+
return { ensureInputServiceWorker, registerStdinClient };
|
|
370575
371080
|
};
|
|
370576
|
-
exports
|
|
371081
|
+
exports.useStdinServiceWorker = useStdinServiceWorker;
|
|
370577
371082
|
|
|
370578
371083
|
|
|
370579
371084
|
/***/ }),
|
|
370580
371085
|
|
|
370581
|
-
/***/
|
|
371086
|
+
/***/ 35660:
|
|
370582
371087
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
370583
371088
|
|
|
370584
371089
|
|
|
@@ -370586,89 +371091,395 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
370586
371091
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
370587
371092
|
};
|
|
370588
371093
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
370589
|
-
|
|
370590
|
-
const
|
|
370591
|
-
|
|
370592
|
-
|
|
370593
|
-
|
|
370594
|
-
|
|
370595
|
-
|
|
370596
|
-
|
|
370597
|
-
|
|
370598
|
-
|
|
370599
|
-
|
|
370600
|
-
|
|
370601
|
-
|
|
370602
|
-
|
|
370603
|
-
|
|
370604
|
-
|
|
370605
|
-
|
|
370606
|
-
|
|
370607
|
-
|
|
370608
|
-
|
|
370609
|
-
|
|
370610
|
-
|
|
370611
|
-
|
|
370612
|
-
|
|
370613
|
-
|
|
370614
|
-
|
|
370615
|
-
|
|
370616
|
-
|
|
370617
|
-
|
|
370618
|
-
|
|
370619
|
-
|
|
370620
|
-
|
|
370621
|
-
|
|
370622
|
-
|
|
370623
|
-
|
|
370624
|
-
|
|
370625
|
-
|
|
370626
|
-
const
|
|
370627
|
-
|
|
370628
|
-
|
|
370629
|
-
|
|
370630
|
-
|
|
370631
|
-
|
|
370632
|
-
|
|
370633
|
-
|
|
370634
|
-
|
|
370635
|
-
|
|
370636
|
-
plotly_js_1.default.newPlot(output.current, figure.data, figure.layout);
|
|
370637
|
-
break;
|
|
370638
|
-
default:
|
|
370639
|
-
throw new Error(`Unsupported origin: ${visual.origin}`);
|
|
370640
|
-
}
|
|
370641
|
-
visual.showing = true;
|
|
370642
|
-
return visual;
|
|
370643
|
-
}, []);
|
|
370644
|
-
const showVisuals = (0, react_1.useCallback)((visuals, output) => visuals.map((v) => (v.showing ? v : showVisual(v, output))), [showVisual]);
|
|
370645
|
-
(0, react_1.useEffect)(() => {
|
|
370646
|
-
if (visuals.length === 0 && output.current) {
|
|
370647
|
-
if (output.current) {
|
|
370648
|
-
output.current.innerHTML = "";
|
|
371094
|
+
exports.shiftFocusToInput = exports.disableInputElement = exports.getInputContent = exports.getInputElement = exports.inputSpan = void 0;
|
|
371095
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(12914));
|
|
371096
|
+
/**
|
|
371097
|
+
* DOM helpers for the contentEditable span that captures the user's stdin.
|
|
371098
|
+
*
|
|
371099
|
+
* These helpers intentionally side-step React: the input element is appended
|
|
371100
|
+
* to a `pre` element managed via a ref, and lifecycle is driven by the
|
|
371101
|
+
* worker's stdin requests, not by React render cycles.
|
|
371102
|
+
*/
|
|
371103
|
+
/** Build the contentEditable `<span>` that captures a single line of stdin. */
|
|
371104
|
+
const inputSpan = () => {
|
|
371105
|
+
const span = document.createElement("span");
|
|
371106
|
+
span.setAttribute("id", "input");
|
|
371107
|
+
span.setAttribute("spellCheck", "false");
|
|
371108
|
+
span.setAttribute("class", styles_module_scss_1.default.pythonrunnerInput || "");
|
|
371109
|
+
span.setAttribute("contentEditable", "true");
|
|
371110
|
+
return span;
|
|
371111
|
+
};
|
|
371112
|
+
exports.inputSpan = inputSpan;
|
|
371113
|
+
/** Lookup the currently-active input span (id="input"), if any. */
|
|
371114
|
+
const getInputElement = () => document.getElementById("input");
|
|
371115
|
+
exports.getInputElement = getInputElement;
|
|
371116
|
+
/**
|
|
371117
|
+
* Wait for the user to press Enter (submit) or Ctrl+D (EOF) inside the input
|
|
371118
|
+
* element. Resolves with the typed text and whether EOF was signalled.
|
|
371119
|
+
*
|
|
371120
|
+
* The element is taken out of editable mode after the line is submitted so it
|
|
371121
|
+
* appears as part of the transcript above.
|
|
371122
|
+
*/
|
|
371123
|
+
const getInputContent = (element) => {
|
|
371124
|
+
element.focus();
|
|
371125
|
+
return new Promise((resolve) => {
|
|
371126
|
+
element.addEventListener("keydown", function removeInput(e) {
|
|
371127
|
+
const ctrlD = (e.ctrlKey && e.key.toLowerCase() === "d");
|
|
371128
|
+
const lineEnded = e.key === "Enter" || ctrlD;
|
|
371129
|
+
if (lineEnded) {
|
|
371130
|
+
element.removeEventListener(e.type, removeInput);
|
|
371131
|
+
const content = element.innerText;
|
|
371132
|
+
element.removeAttribute("id");
|
|
371133
|
+
element.removeAttribute("contentEditable");
|
|
371134
|
+
element.innerText = content + "\n";
|
|
371135
|
+
document.addEventListener("keyup", function storeInput(ev) {
|
|
371136
|
+
if (lineEnded) {
|
|
371137
|
+
document.removeEventListener(ev.type, storeInput);
|
|
371138
|
+
resolve({ content, ctrlD });
|
|
371139
|
+
}
|
|
371140
|
+
});
|
|
370649
371141
|
}
|
|
371142
|
+
});
|
|
371143
|
+
});
|
|
371144
|
+
};
|
|
371145
|
+
exports.getInputContent = getInputContent;
|
|
371146
|
+
/**
|
|
371147
|
+
* Remove the editable attributes from the active input span so it's frozen as
|
|
371148
|
+
* transcript text. Safe to call even when no input is active.
|
|
371149
|
+
*/
|
|
371150
|
+
const disableInputElement = () => {
|
|
371151
|
+
const element = (0, exports.getInputElement)();
|
|
371152
|
+
if (element) {
|
|
371153
|
+
element.removeAttribute("id");
|
|
371154
|
+
element.removeAttribute("contentEditable");
|
|
371155
|
+
}
|
|
371156
|
+
};
|
|
371157
|
+
exports.disableInputElement = disableInputElement;
|
|
371158
|
+
/**
|
|
371159
|
+
* Click handler for the console pane that re-focuses the active input span
|
|
371160
|
+
* when the user clicks anywhere in the console (without losing a selection).
|
|
371161
|
+
*/
|
|
371162
|
+
const shiftFocusToInput = (event) => {
|
|
371163
|
+
const documentSelection = window.getSelection();
|
|
371164
|
+
if (documentSelection && documentSelection.toString().length > 0) {
|
|
371165
|
+
return;
|
|
371166
|
+
}
|
|
371167
|
+
const inputBox = (0, exports.getInputElement)();
|
|
371168
|
+
if (inputBox && event.target !== inputBox) {
|
|
371169
|
+
const input = (0, exports.getInputElement)();
|
|
371170
|
+
const selection = window.getSelection();
|
|
371171
|
+
selection?.removeAllRanges();
|
|
371172
|
+
if (input?.innerText && input.innerText.length > 0) {
|
|
371173
|
+
const range = document.createRange();
|
|
371174
|
+
range.setStart(input, 1);
|
|
371175
|
+
range.collapse(true);
|
|
371176
|
+
selection?.addRange(range);
|
|
370650
371177
|
}
|
|
370651
|
-
|
|
370652
|
-
|
|
370653
|
-
}
|
|
370654
|
-
}, [visuals, setVisuals, showVisuals]);
|
|
370655
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.visualOutput, children: (0, jsx_runtime_1.jsx)("div", { ref: output, className: styles_module_scss_1.default.pythonGraphic }) }));
|
|
371178
|
+
input?.focus();
|
|
371179
|
+
}
|
|
370656
371180
|
};
|
|
370657
|
-
|
|
370658
|
-
|
|
370659
|
-
|
|
370660
|
-
|
|
371181
|
+
exports.shiftFocusToInput = shiftFocusToInput;
|
|
371182
|
+
|
|
371183
|
+
|
|
371184
|
+
/***/ }),
|
|
371185
|
+
|
|
371186
|
+
/***/ 98131:
|
|
371187
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
371188
|
+
|
|
371189
|
+
|
|
371190
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
371191
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
371192
|
+
};
|
|
371193
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
371194
|
+
exports.appendConsoleLine = void 0;
|
|
371195
|
+
const classnames_1 = __importDefault(__webpack_require__(46942));
|
|
371196
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(12914));
|
|
371197
|
+
/**
|
|
371198
|
+
* Append a line of Python stdout/stderr to the console `pre` element.
|
|
371199
|
+
*
|
|
371200
|
+
* The element's innerHTML is set via `new Option(...).innerHTML` to escape
|
|
371201
|
+
* any HTML control characters in the worker's output.
|
|
371202
|
+
*/
|
|
371203
|
+
const appendConsoleLine = (outputElement, stream, content) => {
|
|
371204
|
+
if (!outputElement) {
|
|
371205
|
+
return;
|
|
370661
371206
|
}
|
|
370662
|
-
const
|
|
370663
|
-
|
|
370664
|
-
|
|
371207
|
+
const span = document.createElement("span");
|
|
371208
|
+
span.className = (0, classnames_1.default)(styles_module_scss_1.default.pythonConsoleLine, stream === "stderr" && styles_module_scss_1.default["stderr"], stream === "stdout" && styles_module_scss_1.default["stdout"]);
|
|
371209
|
+
span.innerHTML = new Option(content || " ").innerHTML + "\n";
|
|
371210
|
+
outputElement.appendChild(span);
|
|
371211
|
+
outputElement.scrollTop = outputElement.scrollHeight;
|
|
371212
|
+
};
|
|
371213
|
+
exports.appendConsoleLine = appendConsoleLine;
|
|
371214
|
+
|
|
371215
|
+
|
|
371216
|
+
/***/ }),
|
|
371217
|
+
|
|
371218
|
+
/***/ 45230:
|
|
371219
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
371220
|
+
|
|
371221
|
+
|
|
371222
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
371223
|
+
exports.applyPyodideFileWrite = void 0;
|
|
371224
|
+
const EditorSlice_1 = __webpack_require__(68512);
|
|
371225
|
+
const ProjectTypes_1 = __webpack_require__(27130);
|
|
371226
|
+
const projectHelpers_1 = __webpack_require__(2610);
|
|
371227
|
+
/**
|
|
371228
|
+
* Apply a file-write event from the Pyodide worker to the project tree.
|
|
371229
|
+
*
|
|
371230
|
+
* Modes:
|
|
371231
|
+
* - "w" / "x" → overwrite (or create)
|
|
371232
|
+
* - "a" → append to existing content
|
|
371233
|
+
*
|
|
371234
|
+
* When the target file doesn't exist yet, a new ProjectFile is created and
|
|
371235
|
+
* attached to its parent directory's children list (if the parent exists).
|
|
371236
|
+
*/
|
|
371237
|
+
const applyPyodideFileWrite = ({ dispatch, projectComponents, projectCode, filePath, content, mode, }) => {
|
|
371238
|
+
const componentToUpdate = projectCode.find((item) => item.path === filePath);
|
|
371239
|
+
let updatedContent;
|
|
371240
|
+
if (mode === "w" || mode === "x") {
|
|
371241
|
+
updatedContent = content;
|
|
370665
371242
|
}
|
|
370666
|
-
|
|
370667
|
-
|
|
371243
|
+
else if (mode === "a") {
|
|
371244
|
+
updatedContent =
|
|
371245
|
+
(componentToUpdate ? componentToUpdate.content : "") + content;
|
|
371246
|
+
}
|
|
371247
|
+
if (updatedContent === undefined) {
|
|
371248
|
+
return;
|
|
371249
|
+
}
|
|
371250
|
+
if (componentToUpdate) {
|
|
371251
|
+
dispatch((0, EditorSlice_1.updateProjectComponent)({
|
|
371252
|
+
...componentToUpdate,
|
|
371253
|
+
content: updatedContent,
|
|
371254
|
+
}));
|
|
371255
|
+
return;
|
|
371256
|
+
}
|
|
371257
|
+
const { dirPath, name, extension } = (0, projectHelpers_1.parseComponentPath)(filePath);
|
|
371258
|
+
const newFile = {
|
|
371259
|
+
id: crypto.randomUUID(),
|
|
371260
|
+
name,
|
|
371261
|
+
extension,
|
|
371262
|
+
content: updatedContent,
|
|
371263
|
+
type: ProjectTypes_1.ProjectComponentType.FILE,
|
|
371264
|
+
path: filePath,
|
|
371265
|
+
};
|
|
371266
|
+
dispatch((0, EditorSlice_1.addProjectComponent)(newFile));
|
|
371267
|
+
const dirParent = projectComponents.find((component) => component.type === ProjectTypes_1.ProjectComponentType.DIR && component.path === dirPath);
|
|
371268
|
+
if (dirParent) {
|
|
371269
|
+
dispatch((0, EditorSlice_1.updateProjectComponent)({
|
|
371270
|
+
...dirParent,
|
|
371271
|
+
children: [...(dirParent.children ?? []), newFile.id],
|
|
371272
|
+
}));
|
|
370668
371273
|
}
|
|
370669
|
-
return node;
|
|
370670
371274
|
};
|
|
370671
|
-
exports
|
|
371275
|
+
exports.applyPyodideFileWrite = applyPyodideFileWrite;
|
|
371276
|
+
|
|
371277
|
+
|
|
371278
|
+
/***/ }),
|
|
371279
|
+
|
|
371280
|
+
/***/ 58158:
|
|
371281
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
371282
|
+
|
|
371283
|
+
|
|
371284
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
371285
|
+
exports.postMessageToStdinServiceWorker = exports.verifyStdinServiceWorkerRoute = exports.waitForServiceWorkerControl = void 0;
|
|
371286
|
+
const constants_1 = __webpack_require__(90804);
|
|
371287
|
+
/**
|
|
371288
|
+
* Resolve once the current page is controlled by a Service Worker, or once
|
|
371289
|
+
* the timeout elapses. The page may briefly be uncontrolled after a fresh
|
|
371290
|
+
* registration even though the SW is active, so we listen for
|
|
371291
|
+
* `controllerchange` rather than polling.
|
|
371292
|
+
*/
|
|
371293
|
+
const waitForServiceWorkerControl = (timeoutMs = constants_1.SERVICE_WORKER_CONTROL_WAIT_MS) => new Promise((resolve) => {
|
|
371294
|
+
if (!("serviceWorker" in navigator)) {
|
|
371295
|
+
resolve(false);
|
|
371296
|
+
return;
|
|
371297
|
+
}
|
|
371298
|
+
if (navigator.serviceWorker.controller) {
|
|
371299
|
+
resolve(true);
|
|
371300
|
+
return;
|
|
371301
|
+
}
|
|
371302
|
+
let settled = false;
|
|
371303
|
+
const onControllerChange = () => {
|
|
371304
|
+
if (settled)
|
|
371305
|
+
return;
|
|
371306
|
+
if (!navigator.serviceWorker.controller)
|
|
371307
|
+
return;
|
|
371308
|
+
settled = true;
|
|
371309
|
+
window.clearTimeout(timeout);
|
|
371310
|
+
navigator.serviceWorker.removeEventListener("controllerchange", onControllerChange);
|
|
371311
|
+
resolve(true);
|
|
371312
|
+
};
|
|
371313
|
+
const timeout = window.setTimeout(() => {
|
|
371314
|
+
if (settled)
|
|
371315
|
+
return;
|
|
371316
|
+
settled = true;
|
|
371317
|
+
navigator.serviceWorker.removeEventListener("controllerchange", onControllerChange);
|
|
371318
|
+
resolve(Boolean(navigator.serviceWorker.controller));
|
|
371319
|
+
}, timeoutMs);
|
|
371320
|
+
navigator.serviceWorker.addEventListener("controllerchange", onControllerChange);
|
|
371321
|
+
});
|
|
371322
|
+
exports.waitForServiceWorkerControl = waitForServiceWorkerControl;
|
|
371323
|
+
/**
|
|
371324
|
+
* Probe the stdin Service Worker fetch route to confirm it's actually
|
|
371325
|
+
* intercepting requests. The SW is configured to return HTTP 400 for probes
|
|
371326
|
+
* that omit runId/requestId/clientId, so anything else means the route isn't
|
|
371327
|
+
* wired up yet.
|
|
371328
|
+
*/
|
|
371329
|
+
const verifyStdinServiceWorkerRoute = async () => {
|
|
371330
|
+
if (typeof window === "undefined") {
|
|
371331
|
+
return false;
|
|
371332
|
+
}
|
|
371333
|
+
if (!("serviceWorker" in navigator)) {
|
|
371334
|
+
return false;
|
|
371335
|
+
}
|
|
371336
|
+
if (!navigator.serviceWorker.controller) {
|
|
371337
|
+
return false;
|
|
371338
|
+
}
|
|
371339
|
+
const probeController = new AbortController();
|
|
371340
|
+
const timeoutId = window.setTimeout(() => probeController.abort(), constants_1.SERVICE_WORKER_PROBE_TIMEOUT_MS);
|
|
371341
|
+
try {
|
|
371342
|
+
const probeUrl = new URL(constants_1.PYODIDE_STDIN_ENDPOINT, window.location.origin);
|
|
371343
|
+
probeUrl.searchParams.set("probe", "1");
|
|
371344
|
+
const response = await fetch(probeUrl.toString(), {
|
|
371345
|
+
method: "GET",
|
|
371346
|
+
cache: "no-store",
|
|
371347
|
+
signal: probeController.signal,
|
|
371348
|
+
});
|
|
371349
|
+
// SW returns 400 for probe requests without runId/requestId/clientId.
|
|
371350
|
+
return response.status === 400;
|
|
371351
|
+
}
|
|
371352
|
+
catch (_) {
|
|
371353
|
+
return false;
|
|
371354
|
+
}
|
|
371355
|
+
finally {
|
|
371356
|
+
window.clearTimeout(timeoutId);
|
|
371357
|
+
}
|
|
371358
|
+
};
|
|
371359
|
+
exports.verifyStdinServiceWorkerRoute = verifyStdinServiceWorkerRoute;
|
|
371360
|
+
/**
|
|
371361
|
+
* Send a message to the stdin Service Worker. Prefers `navigator.serviceWorker.controller`,
|
|
371362
|
+
* but falls back to the registration's active worker when the controller is
|
|
371363
|
+
* temporarily unavailable (best effort — used to keep stdin mapping fresh).
|
|
371364
|
+
*
|
|
371365
|
+
* Returns true if the message was posted to the active controller.
|
|
371366
|
+
*
|
|
371367
|
+
* The `message` is intentionally typed as a structured-cloneable object — the
|
|
371368
|
+
* concrete shapes live in `./stdinFallbackMessages.ts` and are the source of
|
|
371369
|
+
* truth for the wire protocol.
|
|
371370
|
+
*/
|
|
371371
|
+
const postMessageToStdinServiceWorker = (message) => {
|
|
371372
|
+
if (!("serviceWorker" in navigator)) {
|
|
371373
|
+
return false;
|
|
371374
|
+
}
|
|
371375
|
+
const controller = navigator.serviceWorker.controller;
|
|
371376
|
+
if (controller) {
|
|
371377
|
+
controller.postMessage(message);
|
|
371378
|
+
return true;
|
|
371379
|
+
}
|
|
371380
|
+
navigator.serviceWorker.ready
|
|
371381
|
+
.then((registration) => {
|
|
371382
|
+
registration.active?.postMessage(message);
|
|
371383
|
+
})
|
|
371384
|
+
.catch((error) => {
|
|
371385
|
+
console.debug("stdin SW post fallback skipped", error);
|
|
371386
|
+
});
|
|
371387
|
+
return false;
|
|
371388
|
+
};
|
|
371389
|
+
exports.postMessageToStdinServiceWorker = postMessageToStdinServiceWorker;
|
|
371390
|
+
|
|
371391
|
+
|
|
371392
|
+
/***/ }),
|
|
371393
|
+
|
|
371394
|
+
/***/ 94879:
|
|
371395
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
371396
|
+
|
|
371397
|
+
|
|
371398
|
+
/**
|
|
371399
|
+
* Pure builders for the messages the main thread posts to the stdin Service
|
|
371400
|
+
* Worker. Keeping them as data-only helpers (no `postMessage` side effects)
|
|
371401
|
+
* makes the protocol surface easy to unit test.
|
|
371402
|
+
*
|
|
371403
|
+
* The three shapes correspond one-to-one with the three terminal outcomes the
|
|
371404
|
+
* Service Worker can produce for a pending `/pyodide-stdin` fetch:
|
|
371405
|
+
*
|
|
371406
|
+
* - RESPONSE → HTTP 200 with the typed line (data path)
|
|
371407
|
+
* - EOF → HTTP 204 (clean EOF: input() raises EOFError in user code)
|
|
371408
|
+
* - CANCEL → HTTP 499 (user pressed Stop: worker raises KeyboardInterrupt)
|
|
371409
|
+
*
|
|
371410
|
+
* EOF and CANCEL look superficially similar but mean very different things to
|
|
371411
|
+
* Python — see `docs/PyodideRunner.md` §9 for the full flow.
|
|
371412
|
+
*/
|
|
371413
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
371414
|
+
exports.buildStdinFallbackCancel = exports.buildStdinFallbackEof = exports.buildStdinFallbackResponse = void 0;
|
|
371415
|
+
/** Build a successful stdin response targeting a specific (runId, requestId). */
|
|
371416
|
+
const buildStdinFallbackResponse = (args) => ({
|
|
371417
|
+
type: "PYODIDE_STDIN_RESPONSE",
|
|
371418
|
+
clientId: args.clientId,
|
|
371419
|
+
runId: args.runId,
|
|
371420
|
+
requestId: args.requestId,
|
|
371421
|
+
value: args.value,
|
|
371422
|
+
});
|
|
371423
|
+
exports.buildStdinFallbackResponse = buildStdinFallbackResponse;
|
|
371424
|
+
/**
|
|
371425
|
+
* Build an EOF signal for a specific pending input request. Use this when the
|
|
371426
|
+
* user pressed Ctrl+D or when stdin was already closed earlier in the run —
|
|
371427
|
+
* NOT when the user pressed Stop (use the cancel builder for that).
|
|
371428
|
+
*/
|
|
371429
|
+
const buildStdinFallbackEof = (args) => ({
|
|
371430
|
+
type: "PYODIDE_STDIN_EOF",
|
|
371431
|
+
clientId: args.clientId,
|
|
371432
|
+
runId: args.runId,
|
|
371433
|
+
requestId: args.requestId,
|
|
371434
|
+
});
|
|
371435
|
+
exports.buildStdinFallbackEof = buildStdinFallbackEof;
|
|
371436
|
+
/**
|
|
371437
|
+
* Build a cancellation message. Targets either a specific request or every
|
|
371438
|
+
* pending request for the given runId (when `requestId` is omitted).
|
|
371439
|
+
*/
|
|
371440
|
+
const buildStdinFallbackCancel = (args) => {
|
|
371441
|
+
const message = {
|
|
371442
|
+
type: "PYODIDE_STDIN_CANCEL",
|
|
371443
|
+
clientId: args.clientId,
|
|
371444
|
+
runId: args.runId,
|
|
371445
|
+
};
|
|
371446
|
+
if (args.requestId !== undefined) {
|
|
371447
|
+
message.requestId = args.requestId;
|
|
371448
|
+
}
|
|
371449
|
+
return message;
|
|
371450
|
+
};
|
|
371451
|
+
exports.buildStdinFallbackCancel = buildStdinFallbackCancel;
|
|
371452
|
+
|
|
371453
|
+
|
|
371454
|
+
/***/ }),
|
|
371455
|
+
|
|
371456
|
+
/***/ 95369:
|
|
371457
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
371458
|
+
|
|
371459
|
+
|
|
371460
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
371461
|
+
exports.getOrCreateTabId = void 0;
|
|
371462
|
+
const constants_1 = __webpack_require__(90804);
|
|
371463
|
+
/**
|
|
371464
|
+
* Return a stable id for this browser tab so the stdin Service Worker can
|
|
371465
|
+
* route input requests back to the right client. Falls back to a fresh UUID
|
|
371466
|
+
* if sessionStorage is unavailable (e.g. private mode).
|
|
371467
|
+
*/
|
|
371468
|
+
const getOrCreateTabId = () => {
|
|
371469
|
+
try {
|
|
371470
|
+
const existing = window.sessionStorage.getItem(constants_1.PYODIDE_TAB_ID_STORAGE_KEY);
|
|
371471
|
+
if (existing) {
|
|
371472
|
+
return existing;
|
|
371473
|
+
}
|
|
371474
|
+
const next = crypto.randomUUID();
|
|
371475
|
+
window.sessionStorage.setItem(constants_1.PYODIDE_TAB_ID_STORAGE_KEY, next);
|
|
371476
|
+
return next;
|
|
371477
|
+
}
|
|
371478
|
+
catch (_) {
|
|
371479
|
+
return crypto.randomUUID();
|
|
371480
|
+
}
|
|
371481
|
+
};
|
|
371482
|
+
exports.getOrCreateTabId = getOrCreateTabId;
|
|
370672
371483
|
|
|
370673
371484
|
|
|
370674
371485
|
/***/ }),
|
|
@@ -370829,7 +371640,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
370829
371640
|
};
|
|
370830
371641
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
370831
371642
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
370832
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
371643
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(87295));
|
|
370833
371644
|
const loading_animation_gif_1 = __importDefault(__webpack_require__(73875));
|
|
370834
371645
|
const Loading = ({}) => {
|
|
370835
371646
|
return ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.loadingPage, children: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.loadingContainer, children: [(0, jsx_runtime_1.jsx)("img", { src: loading_animation_gif_1.default, className: styles_module_scss_1.default.loadingContainerAnimation }), (0, jsx_runtime_1.jsxs)("div", { children: ["Project loading", (0, jsx_runtime_1.jsxs)("span", { className: styles_module_scss_1.default.dots, "aria-hidden": "true", children: [(0, jsx_runtime_1.jsx)("span", { className: `${styles_module_scss_1.default.dot} ${styles_module_scss_1.default.dot1}`, children: "." }), (0, jsx_runtime_1.jsx)("span", { className: `${styles_module_scss_1.default.dot} ${styles_module_scss_1.default.dot2}`, children: "." }), (0, jsx_runtime_1.jsx)("span", { className: `${styles_module_scss_1.default.dot} ${styles_module_scss_1.default.dot3}`, children: "." })] })] }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.loadingContainerSubtext, children: "Building your world!" })] }) }));
|
|
@@ -370850,7 +371661,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
370850
371661
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
370851
371662
|
const react_menu_1 = __webpack_require__(71231);
|
|
370852
371663
|
const classnames_1 = __importDefault(__webpack_require__(46942));
|
|
370853
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
371664
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(28076));
|
|
370854
371665
|
const ContextMenu = (props) => {
|
|
370855
371666
|
const { align, direction, menuOptions, menuWidth, menuHeight, opened, anchorRef, onClose, anchorPoint, gap, hoverElement, title, activeItemId, showDivider = true, } = props;
|
|
370856
371667
|
const portalTarget = document.getElementById("textjam-root") || document.body;
|
|
@@ -370887,7 +371698,7 @@ const react_1 = __webpack_require__(51649);
|
|
|
370887
371698
|
const classnames_1 = __importDefault(__webpack_require__(46942));
|
|
370888
371699
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
370889
371700
|
const arrow_right_svg_1 = __importDefault(__webpack_require__(17297));
|
|
370890
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
371701
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(51191));
|
|
370891
371702
|
const ContextMenu_1 = __importDefault(__webpack_require__(39179));
|
|
370892
371703
|
const Dropdown = (props) => {
|
|
370893
371704
|
const { ButtonIcon, buttonClassname, menuOptions, menuPosition, ariaLabel } = props;
|
|
@@ -370910,7 +371721,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
370910
371721
|
};
|
|
370911
371722
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
370912
371723
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
370913
|
-
const SidebarPanel_1 = __importDefault(__webpack_require__(
|
|
371724
|
+
const SidebarPanel_1 = __importDefault(__webpack_require__(83617));
|
|
370914
371725
|
const FileTree_1 = __webpack_require__(88675);
|
|
370915
371726
|
const stores_1 = __webpack_require__(32132);
|
|
370916
371727
|
const FilePanel = () => {
|
|
@@ -370938,7 +371749,7 @@ exports.EmptyStateMessage = void 0;
|
|
|
370938
371749
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
370939
371750
|
const open_folder_svg_1 = __importDefault(__webpack_require__(2316));
|
|
370940
371751
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
370941
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
371752
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(10556));
|
|
370942
371753
|
const EmptyStateMessage = () => {
|
|
370943
371754
|
return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.emptyStateContainer, children: [(0, jsx_runtime_1.jsx)(SvgIcon_1.SvgIcon, { size: 24, SvgElement: open_folder_svg_1.default, className: styles_module_scss_1.default.emptyStateIcon }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.emptyStateMessage, children: "There are no items to display yet." }), (0, jsx_runtime_1.jsx)("div", { children: " As items are added, they will be displayed here." })] }));
|
|
370944
371755
|
};
|
|
@@ -370963,7 +371774,7 @@ const add_folder_svg_1 = __importDefault(__webpack_require__(3503));
|
|
|
370963
371774
|
const add_file_svg_1 = __importDefault(__webpack_require__(41625));
|
|
370964
371775
|
const ImportButton_1 = __webpack_require__(67532);
|
|
370965
371776
|
const classnames_1 = __importDefault(__webpack_require__(46942));
|
|
370966
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
371777
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(10556));
|
|
370967
371778
|
const react_1 = __webpack_require__(51649);
|
|
370968
371779
|
const FileTreeContext_1 = __webpack_require__(5323);
|
|
370969
371780
|
const ProjectTypes_1 = __webpack_require__(27130);
|
|
@@ -370992,7 +371803,7 @@ const jsx_runtime_1 = __webpack_require__(74848);
|
|
|
370992
371803
|
const Text_1 = __webpack_require__(82803);
|
|
370993
371804
|
const ItemEdit_1 = __webpack_require__(61576);
|
|
370994
371805
|
const ItemIcon_1 = __webpack_require__(3427);
|
|
370995
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
371806
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(10614));
|
|
370996
371807
|
const Tooltip_1 = __importDefault(__webpack_require__(26982));
|
|
370997
371808
|
const useHover_1 = __webpack_require__(78556);
|
|
370998
371809
|
const button_dots_svg_1 = __importDefault(__webpack_require__(80054));
|
|
@@ -371069,7 +371880,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
371069
371880
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
371070
371881
|
exports.DeleteOption = void 0;
|
|
371071
371882
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
371072
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
371883
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(52160));
|
|
371073
371884
|
const DeleteOption = () => {
|
|
371074
371885
|
return (0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.textDelete, children: "Delete" });
|
|
371075
371886
|
};
|
|
@@ -371197,7 +372008,7 @@ exports.ItemEdit = void 0;
|
|
|
371197
372008
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
371198
372009
|
const react_1 = __webpack_require__(51649);
|
|
371199
372010
|
const classnames_1 = __importDefault(__webpack_require__(46942));
|
|
371200
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
372011
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(10614));
|
|
371201
372012
|
const FileTreeContext_1 = __webpack_require__(5323);
|
|
371202
372013
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
371203
372014
|
const alert_svg_1 = __importDefault(__webpack_require__(11367));
|
|
@@ -371282,7 +372093,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
371282
372093
|
exports.FileTreeItem = void 0;
|
|
371283
372094
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
371284
372095
|
const classnames_1 = __importDefault(__webpack_require__(46942));
|
|
371285
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
372096
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(10614));
|
|
371286
372097
|
const treeGuides_1 = __webpack_require__(35258);
|
|
371287
372098
|
const react_1 = __webpack_require__(51649);
|
|
371288
372099
|
const FileTreeContext_1 = __webpack_require__(5323);
|
|
@@ -371336,7 +372147,7 @@ const upload_svg_1 = __importDefault(__webpack_require__(13616));
|
|
|
371336
372147
|
const upload_file_svg_1 = __importDefault(__webpack_require__(98201));
|
|
371337
372148
|
const upload_folder_svg_1 = __importDefault(__webpack_require__(66351));
|
|
371338
372149
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
371339
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
372150
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(10556));
|
|
371340
372151
|
const FileImport_1 = __webpack_require__(23079);
|
|
371341
372152
|
const Dropdown_1 = __importDefault(__webpack_require__(44651));
|
|
371342
372153
|
const ProjectTypes_1 = __webpack_require__(27130);
|
|
@@ -371731,7 +372542,7 @@ const jsx_runtime_1 = __webpack_require__(74848);
|
|
|
371731
372542
|
const FileTreeItem_1 = __webpack_require__(8153);
|
|
371732
372543
|
const react_1 = __webpack_require__(51649);
|
|
371733
372544
|
const FileTreeActions_1 = __webpack_require__(42884);
|
|
371734
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
372545
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(10556));
|
|
371735
372546
|
const useFileTreeActions_1 = __webpack_require__(98028);
|
|
371736
372547
|
const stores_1 = __webpack_require__(32132);
|
|
371737
372548
|
const FileTreeContext_1 = __webpack_require__(5323);
|
|
@@ -371803,7 +372614,7 @@ const AuthContext_1 = __webpack_require__(55471);
|
|
|
371803
372614
|
// import FontIcon from "../../../assets/icons/font.svg";
|
|
371804
372615
|
// import PlaygroundIcon from "../../../assets/icons/playground.svg";
|
|
371805
372616
|
// import ThemeIcon from "../../../assets/icons/theme.svg";
|
|
371806
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
372617
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(21852));
|
|
371807
372618
|
const getSidebarOptions = (initials, homeAction, isCodeVisible) => [
|
|
371808
372619
|
{
|
|
371809
372620
|
name: "home",
|
|
@@ -371868,7 +372679,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
371868
372679
|
};
|
|
371869
372680
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
371870
372681
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
371871
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
372682
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(21852));
|
|
371872
372683
|
const SidebarBarOption_1 = __importDefault(__webpack_require__(19371));
|
|
371873
372684
|
const SidebarBar = (props) => {
|
|
371874
372685
|
const { menuOptions, option, toggleOption } = props;
|
|
@@ -371892,9 +372703,9 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
371892
372703
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
371893
372704
|
const react_1 = __webpack_require__(51649);
|
|
371894
372705
|
const stores_1 = __webpack_require__(32132);
|
|
371895
|
-
const Button_1 = __importDefault(__webpack_require__(
|
|
372706
|
+
const Button_1 = __importDefault(__webpack_require__(79428));
|
|
371896
372707
|
const classnames_1 = __importDefault(__webpack_require__(46942));
|
|
371897
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
372708
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(21852));
|
|
371898
372709
|
const UserMenu_1 = __importDefault(__webpack_require__(2957));
|
|
371899
372710
|
const backgroundColors = [
|
|
371900
372711
|
'D7F9F4', '43D6B9',
|
|
@@ -371983,9 +372794,9 @@ const react_modal_1 = __importDefault(__webpack_require__(20312));
|
|
|
371983
372794
|
const info_svg_1 = __importDefault(__webpack_require__(13579));
|
|
371984
372795
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
371985
372796
|
const Text_1 = __webpack_require__(82803);
|
|
371986
|
-
const Button_1 = __importDefault(__webpack_require__(
|
|
371987
|
-
const CloseIcon_1 = __importDefault(__webpack_require__(
|
|
371988
|
-
const base_module_scss_1 = __importDefault(__webpack_require__(
|
|
372797
|
+
const Button_1 = __importDefault(__webpack_require__(79428));
|
|
372798
|
+
const CloseIcon_1 = __importDefault(__webpack_require__(61193));
|
|
372799
|
+
const base_module_scss_1 = __importDefault(__webpack_require__(62857));
|
|
371989
372800
|
const BaseModal = ({ isOpen, closeModal, header, hasCloseButton = true, body, infoText, buttons, headerIcon, width, modalLabel, }) => {
|
|
371990
372801
|
return ((0, jsx_runtime_1.jsxs)(react_modal_1.default, { isOpen: isOpen, onRequestClose: closeModal, className: base_module_scss_1.default.modalContent, overlayClassName: base_module_scss_1.default.modalOverlay, shouldCloseOnOverlayClick: true, contentLabel: modalLabel, style: width ? { content: { width: `${width}px` } } : undefined, parentSelector: () => document.querySelector("#textjam-editor") || document.body, appElement: document.querySelector("#textjam-root"), children: [(0, jsx_runtime_1.jsxs)("div", { className: base_module_scss_1.default.header, children: [(0, jsx_runtime_1.jsx)("div", { className: base_module_scss_1.default.headerButtonContainer, children: hasCloseButton && ((0, jsx_runtime_1.jsx)(Button_1.default, { className: base_module_scss_1.default.buttonClose, onClickHandler: closeModal, ButtonIcon: CloseIcon_1.default, label: "Close", title: "Close", variant: "icon" })) }), (0, jsx_runtime_1.jsxs)("div", { className: base_module_scss_1.default.headerContent, children: [headerIcon, header] })] }), body && (0, jsx_runtime_1.jsx)("div", { className: base_module_scss_1.default.body, children: body }), infoText && ((0, jsx_runtime_1.jsxs)("div", { className: base_module_scss_1.default.infoBox, children: [(0, jsx_runtime_1.jsx)(SvgIcon_1.SvgIcon, { size: 18, SvgElement: info_svg_1.default }), (0, jsx_runtime_1.jsx)(Text_1.Text, { size: 12, children: infoText })] })), buttons && (0, jsx_runtime_1.jsx)("div", { className: base_module_scss_1.default.footer, children: buttons })] }));
|
|
371991
372802
|
};
|
|
@@ -372003,13 +372814,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
372003
372814
|
};
|
|
372004
372815
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
372005
372816
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
372006
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
372817
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(29642));
|
|
372007
372818
|
const EditorSlice_1 = __webpack_require__(68512);
|
|
372008
372819
|
const types_1 = __webpack_require__(92932);
|
|
372009
372820
|
const react_redux_1 = __webpack_require__(14062);
|
|
372010
372821
|
const BaseModal_1 = __webpack_require__(30659);
|
|
372011
372822
|
const restore_svg_1 = __importDefault(__webpack_require__(503));
|
|
372012
|
-
const Button_1 = __importDefault(__webpack_require__(
|
|
372823
|
+
const Button_1 = __importDefault(__webpack_require__(79428));
|
|
372013
372824
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
372014
372825
|
const stores_1 = __webpack_require__(32132);
|
|
372015
372826
|
const selectors_1 = __webpack_require__(43551);
|
|
@@ -372080,13 +372891,13 @@ const EditorSlice_1 = __webpack_require__(68512);
|
|
|
372080
372891
|
const stores_1 = __webpack_require__(32132);
|
|
372081
372892
|
const types_1 = __webpack_require__(92932);
|
|
372082
372893
|
const BaseModal_1 = __webpack_require__(30659);
|
|
372083
|
-
const Button_1 = __importDefault(__webpack_require__(
|
|
372894
|
+
const Button_1 = __importDefault(__webpack_require__(79428));
|
|
372084
372895
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
372085
372896
|
const save_svg_1 = __importDefault(__webpack_require__(48060));
|
|
372086
372897
|
const Text_1 = __webpack_require__(82803);
|
|
372087
372898
|
const LeaveFlowSlice_1 = __webpack_require__(52990);
|
|
372088
372899
|
const SpinnerDotted_1 = __webpack_require__(79458);
|
|
372089
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
372900
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(6631));
|
|
372090
372901
|
const useProjectCache_1 = __webpack_require__(69557);
|
|
372091
372902
|
const projectTabSync_1 = __webpack_require__(48235);
|
|
372092
372903
|
const SaveBeforeLeaveModal = () => {
|
|
@@ -372137,19 +372948,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
372137
372948
|
};
|
|
372138
372949
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
372139
372950
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
372140
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
372951
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(27924));
|
|
372141
372952
|
const EditorSlice_1 = __webpack_require__(68512);
|
|
372142
372953
|
const types_1 = __webpack_require__(92932);
|
|
372143
372954
|
const react_redux_1 = __webpack_require__(14062);
|
|
372144
|
-
const BaseModal_1 = __importDefault(__webpack_require__(
|
|
372955
|
+
const BaseModal_1 = __importDefault(__webpack_require__(97933));
|
|
372145
372956
|
const upload_file_svg_1 = __importDefault(__webpack_require__(98201));
|
|
372146
372957
|
const upload_folder_svg_1 = __importDefault(__webpack_require__(66351));
|
|
372147
372958
|
const info_svg_1 = __importDefault(__webpack_require__(13579));
|
|
372148
|
-
const Button_1 = __importDefault(__webpack_require__(
|
|
372959
|
+
const Button_1 = __importDefault(__webpack_require__(79428));
|
|
372149
372960
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
372150
372961
|
const stores_1 = __webpack_require__(32132);
|
|
372151
372962
|
const ProjectTypes_1 = __webpack_require__(27130);
|
|
372152
|
-
const styles_module_scss_2 = __importDefault(__webpack_require__(
|
|
372963
|
+
const styles_module_scss_2 = __importDefault(__webpack_require__(38653));
|
|
372153
372964
|
const Text_1 = __webpack_require__(82803);
|
|
372154
372965
|
const constants_1 = __webpack_require__(16287);
|
|
372155
372966
|
const UploadFilesModal = () => {
|
|
@@ -372195,14 +373006,14 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
372195
373006
|
exports.ModalTypeToComponentMap = void 0;
|
|
372196
373007
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
372197
373008
|
const types_1 = __webpack_require__(92932);
|
|
372198
|
-
const ShareProjectModal_1 = __importDefault(__webpack_require__(
|
|
373009
|
+
const ShareProjectModal_1 = __importDefault(__webpack_require__(38876));
|
|
372199
373010
|
const ProjectHistoryModal_1 = __importDefault(__webpack_require__(39345));
|
|
372200
|
-
const RemoveItemModal_1 = __importDefault(__webpack_require__(
|
|
372201
|
-
const SaveProjectReminderModal_1 = __importDefault(__webpack_require__(
|
|
372202
|
-
const UploadSizeLimitModal_1 = __importDefault(__webpack_require__(
|
|
373011
|
+
const RemoveItemModal_1 = __importDefault(__webpack_require__(15406));
|
|
373012
|
+
const SaveProjectReminderModal_1 = __importDefault(__webpack_require__(23765));
|
|
373013
|
+
const UploadSizeLimitModal_1 = __importDefault(__webpack_require__(66156));
|
|
372203
373014
|
const UploadFilesModal_1 = __importDefault(__webpack_require__(9825));
|
|
372204
|
-
const RemixProjectModal_1 = __importDefault(__webpack_require__(
|
|
372205
|
-
const DraftUnsavedChangesModal_1 = __importDefault(__webpack_require__(
|
|
373015
|
+
const RemixProjectModal_1 = __importDefault(__webpack_require__(14472));
|
|
373016
|
+
const DraftUnsavedChangesModal_1 = __importDefault(__webpack_require__(56724));
|
|
372206
373017
|
exports.ModalTypeToComponentMap = {
|
|
372207
373018
|
[types_1.ModalType.SHARE_PROJECT]: (0, jsx_runtime_1.jsx)(ShareProjectModal_1.default, {}),
|
|
372208
373019
|
[types_1.ModalType.REMOVE_ITEM]: (0, jsx_runtime_1.jsx)(RemoveItemModal_1.default, {}),
|
|
@@ -372228,13 +373039,13 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
372228
373039
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
372229
373040
|
const gwc_logo_svg_1 = __importDefault(__webpack_require__(72865));
|
|
372230
373041
|
const text_jam_logo_svg_1 = __importDefault(__webpack_require__(97552));
|
|
372231
|
-
const ProjectName_1 = __importDefault(__webpack_require__(
|
|
373042
|
+
const ProjectName_1 = __importDefault(__webpack_require__(73658));
|
|
372232
373043
|
const DownloadButton_1 = __importDefault(__webpack_require__(2492));
|
|
372233
|
-
const SaveButton_1 = __importDefault(__webpack_require__(
|
|
373044
|
+
const SaveButton_1 = __importDefault(__webpack_require__(88814));
|
|
372234
373045
|
const ShareButton_1 = __importDefault(__webpack_require__(21422));
|
|
372235
373046
|
const HistoryButton_1 = __importDefault(__webpack_require__(21091));
|
|
372236
|
-
const RunBar_1 = __importDefault(__webpack_require__(
|
|
372237
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
373047
|
+
const RunBar_1 = __importDefault(__webpack_require__(57715));
|
|
373048
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(88525));
|
|
372238
373049
|
const stores_1 = __webpack_require__(32132);
|
|
372239
373050
|
const types_1 = __webpack_require__(92932);
|
|
372240
373051
|
const ProjectBar = ({ nameEditable = true, }) => {
|
|
@@ -372260,14 +373071,14 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
372260
373071
|
exports.SharedProjectBar = void 0;
|
|
372261
373072
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
372262
373073
|
const classnames_1 = __importDefault(__webpack_require__(46942));
|
|
372263
|
-
const Button_1 = __importDefault(__webpack_require__(
|
|
373074
|
+
const Button_1 = __importDefault(__webpack_require__(79428));
|
|
372264
373075
|
const SharedProjectName_1 = __importDefault(__webpack_require__(15591));
|
|
372265
|
-
const RunBar_1 = __importDefault(__webpack_require__(
|
|
373076
|
+
const RunBar_1 = __importDefault(__webpack_require__(57715));
|
|
372266
373077
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
372267
373078
|
const link_svg_1 = __importDefault(__webpack_require__(19351));
|
|
372268
373079
|
const gwc_logo_svg_1 = __importDefault(__webpack_require__(72865));
|
|
372269
373080
|
const text_jam_logo_svg_1 = __importDefault(__webpack_require__(97552));
|
|
372270
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
373081
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(88525));
|
|
372271
373082
|
const react_redux_1 = __webpack_require__(14062);
|
|
372272
373083
|
const EditorSlice_1 = __webpack_require__(68512);
|
|
372273
373084
|
const types_1 = __webpack_require__(92932);
|
|
@@ -372326,7 +373137,7 @@ const projectHelpers_1 = __webpack_require__(2610);
|
|
|
372326
373137
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
372327
373138
|
const file_svg_1 = __importDefault(__webpack_require__(70429));
|
|
372328
373139
|
const Text_1 = __webpack_require__(82803);
|
|
372329
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
373140
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(29881));
|
|
372330
373141
|
const SharedProjectName = () => {
|
|
372331
373142
|
const project = (0, stores_1.useAppSelector)((state) => state.editor.project);
|
|
372332
373143
|
const authorName = (0, projectHelpers_1.getAuthorName)(project.author);
|
|
@@ -372348,14 +373159,14 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
372348
373159
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
372349
373160
|
const react_1 = __webpack_require__(51649);
|
|
372350
373161
|
const share_svg_1 = __importDefault(__webpack_require__(48268));
|
|
372351
|
-
const Button_1 = __importDefault(__webpack_require__(
|
|
373162
|
+
const Button_1 = __importDefault(__webpack_require__(79428));
|
|
372352
373163
|
const Tooltip_1 = __importDefault(__webpack_require__(26982));
|
|
372353
373164
|
const react_redux_1 = __webpack_require__(14062);
|
|
372354
373165
|
const EditorSlice_1 = __webpack_require__(68512);
|
|
372355
373166
|
const types_1 = __webpack_require__(92932);
|
|
372356
373167
|
const stores_1 = __webpack_require__(32132);
|
|
372357
373168
|
const useHover_1 = __webpack_require__(78556);
|
|
372358
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
373169
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(68776));
|
|
372359
373170
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
372360
373171
|
const ShareButton = (props) => {
|
|
372361
373172
|
const dispatch = (0, react_redux_1.useDispatch)();
|
|
@@ -372390,7 +373201,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
372390
373201
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
372391
373202
|
exports.SpinnerDotted = void 0;
|
|
372392
373203
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
372393
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
373204
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(73386));
|
|
372394
373205
|
const DEFAUL_POINT_COUNT = 8;
|
|
372395
373206
|
const SpinnerDotted = ({ pointCount = DEFAUL_POINT_COUNT }) => {
|
|
372396
373207
|
return ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.spinnerDotted, children: [...new Array(pointCount)].map((_, i) => ((0, jsx_runtime_1.jsx)("span", { style: { "--itemIndex": i } }, i))) }));
|
|
@@ -372411,7 +373222,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
372411
373222
|
exports.Text = void 0;
|
|
372412
373223
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
372413
373224
|
const classnames_1 = __importDefault(__webpack_require__(46942));
|
|
372414
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
373225
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(91156));
|
|
372415
373226
|
const Text = (props) => {
|
|
372416
373227
|
const { children, size = 12, weight = "regular", variant = "text", tooltip, className, ...rest } = props;
|
|
372417
373228
|
return ((0, jsx_runtime_1.jsx)("span", { className: (0, classnames_1.default)(styles_module_scss_1.default[variant], styles_module_scss_1.default[`size-${size}`], styles_module_scss_1.default[`weight-${weight}`], className), title: tooltip, ...rest, children: children }));
|
|
@@ -372436,7 +373247,7 @@ const alert_svg_1 = __importDefault(__webpack_require__(11367));
|
|
|
372436
373247
|
const circle_check_svg_1 = __importDefault(__webpack_require__(16882));
|
|
372437
373248
|
const info_svg_1 = __importDefault(__webpack_require__(13579));
|
|
372438
373249
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
372439
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
373250
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(27112));
|
|
372440
373251
|
const ToastItem = ({ data, closeToast, toastProps, }) => {
|
|
372441
373252
|
const type = toastProps.type;
|
|
372442
373253
|
const isError = type === "error";
|
|
@@ -372515,7 +373326,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
372515
373326
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
372516
373327
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
372517
373328
|
const classnames_1 = __importDefault(__webpack_require__(46942));
|
|
372518
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
373329
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(28188));
|
|
372519
373330
|
const Tooltip = ({ message, visible = false, position = "bottom", className, style, }) => {
|
|
372520
373331
|
if (!visible)
|
|
372521
373332
|
return null;
|
|
@@ -372537,11 +373348,11 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
372537
373348
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
372538
373349
|
const react_1 = __webpack_require__(51649);
|
|
372539
373350
|
const marked_1 = __webpack_require__(6709);
|
|
372540
|
-
const Project_1 = __importDefault(__webpack_require__(
|
|
373351
|
+
const Project_1 = __importDefault(__webpack_require__(26665));
|
|
372541
373352
|
const Output_1 = __importDefault(__webpack_require__(95148));
|
|
372542
|
-
const DefaultMZCriteria_1 = __webpack_require__(
|
|
372543
|
-
const WebComponentCustomEvents_1 = __webpack_require__(
|
|
372544
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
373353
|
+
const DefaultMZCriteria_1 = __webpack_require__(29441);
|
|
373354
|
+
const WebComponentCustomEvents_1 = __webpack_require__(53841);
|
|
373355
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(93105));
|
|
372545
373356
|
const stores_1 = __webpack_require__(32132);
|
|
372546
373357
|
const WebComponentProject = ({ nameEditable = false, sidebarOptions = [], packageApiUrl, }) => {
|
|
372547
373358
|
const loading = (0, stores_1.useAppSelector)((state) => state.editor.loading);
|
|
@@ -372646,7 +373457,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
372646
373457
|
exports.SvgIcon = void 0;
|
|
372647
373458
|
const jsx_runtime_1 = __webpack_require__(74848);
|
|
372648
373459
|
const classnames_1 = __importDefault(__webpack_require__(46942));
|
|
372649
|
-
const styles_module_scss_1 = __importDefault(__webpack_require__(
|
|
373460
|
+
const styles_module_scss_1 = __importDefault(__webpack_require__(36974));
|
|
372650
373461
|
const SvgIcon = ({ size, SvgElement, className, ...rest }) => {
|
|
372651
373462
|
return ((0, jsx_runtime_1.jsx)(SvgElement, { className: (0, classnames_1.default)(styles_module_scss_1.default[`svgIcon-${size}`], className), ...rest }));
|
|
372652
373463
|
};
|
|
@@ -372677,12 +373488,12 @@ const useProject_1 = __webpack_require__(54095);
|
|
|
372677
373488
|
const useProjectPersistence_1 = __webpack_require__(72300);
|
|
372678
373489
|
const useProjectRemix_1 = __webpack_require__(35602);
|
|
372679
373490
|
const useProjectTabSync_1 = __webpack_require__(17299);
|
|
372680
|
-
const settings_1 = __webpack_require__(
|
|
372681
|
-
const ErrorModal_1 = __importDefault(__webpack_require__(
|
|
372682
|
-
__webpack_require__(
|
|
372683
|
-
__webpack_require__(
|
|
372684
|
-
__webpack_require__(
|
|
372685
|
-
const WebComponentCustomEvents_1 = __webpack_require__(
|
|
373491
|
+
const settings_1 = __webpack_require__(62161);
|
|
373492
|
+
const ErrorModal_1 = __importDefault(__webpack_require__(15382));
|
|
373493
|
+
__webpack_require__(7703);
|
|
373494
|
+
__webpack_require__(75765);
|
|
373495
|
+
__webpack_require__(41882);
|
|
373496
|
+
const WebComponentCustomEvents_1 = __webpack_require__(53841);
|
|
372686
373497
|
const ToastMessages_1 = __webpack_require__(6459);
|
|
372687
373498
|
const Modals_1 = __webpack_require__(18284);
|
|
372688
373499
|
const Loading_1 = __importDefault(__webpack_require__(34466));
|
|
@@ -383846,7 +384657,7 @@ module.exports = webpackAsyncContext;
|
|
|
383846
384657
|
/***/ 24427:
|
|
383847
384658
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
383848
384659
|
|
|
383849
|
-
module.exports = __webpack_require__.p + "assets/
|
|
384660
|
+
module.exports = __webpack_require__.p + "assets/PyodideWorkerb1409749c37aedc47dc8.js";
|
|
383850
384661
|
|
|
383851
384662
|
/***/ }),
|
|
383852
384663
|
|