gwchq-textjam 0.1.113 → 0.1.115

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.
Files changed (2) hide show
  1. package/dist/index.js +40 -25
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -68347,8 +68347,8 @@ __webpack_require__.r(__webpack_exports__);
68347
68347
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
68348
68348
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
68349
68349
  /* harmony export */ });
68350
- /* harmony import */ var D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(89379);
68351
- /* harmony import */ var D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(53986);
68350
+ /* harmony import */ var D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(89379);
68351
+ /* harmony import */ var D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(53986);
68352
68352
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51649);
68353
68353
  /* harmony import */ var _hello_pangea_dnd__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(98850);
68354
68354
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14062);
@@ -68372,7 +68372,7 @@ var DraggableTab = _ref => {
68372
68372
  panelIndex,
68373
68373
  fileIndex
68374
68374
  } = _ref,
68375
- otherProps = (0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)(_ref, _excluded);
68375
+ otherProps = (0,D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)(_ref, _excluded);
68376
68376
  var openFiles = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useSelector)(state => state.editor.openedFiles);
68377
68377
  var openFilesCount = openFiles[panelIndex].length;
68378
68378
  var dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useDispatch)();
@@ -68389,7 +68389,7 @@ var DraggableTab = _ref => {
68389
68389
  switchToFileTab(panelIndex, (fileIndex + openFilesCount - 1) % openFilesCount);
68390
68390
  }
68391
68391
  };
68392
- var InnerTab = () => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(react_tabs__WEBPACK_IMPORTED_MODULE_2__.Tab, (0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
68392
+ var InnerTab = () => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(react_tabs__WEBPACK_IMPORTED_MODULE_2__.Tab, (0,D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
68393
68393
  onClick: e => {
68394
68394
  e.stopPropagation();
68395
68395
  switchToFileTab(panelIndex, fileIndex);
@@ -68407,7 +68407,7 @@ var DraggableTab = _ref => {
68407
68407
  draggableProps,
68408
68408
  dragHandleProps
68409
68409
  } = _ref2;
68410
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("div", (0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
68410
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("div", (0,D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
68411
68411
  className: "draggable-tab",
68412
68412
  ref: innerRef
68413
68413
  }, draggableProps), dragHandleProps), {}, {
@@ -68429,8 +68429,8 @@ __webpack_require__.r(__webpack_exports__);
68429
68429
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
68430
68430
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
68431
68431
  /* harmony export */ });
68432
- /* harmony import */ var D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(89379);
68433
- /* harmony import */ var D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(53986);
68432
+ /* harmony import */ var D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(89379);
68433
+ /* harmony import */ var D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(53986);
68434
68434
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51649);
68435
68435
  /* harmony import */ var _hello_pangea_dnd__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(98850);
68436
68436
  /* harmony import */ var react_tabs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39243);
@@ -68449,8 +68449,8 @@ var DroppableTabList = _ref => {
68449
68449
  children: _children,
68450
68450
  index
68451
68451
  } = _ref,
68452
- otherProps = (0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(_ref, _excluded);
68453
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(react_tabs__WEBPACK_IMPORTED_MODULE_1__.TabList, (0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)({}, otherProps), {}, {
68452
+ otherProps = (0,D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(_ref, _excluded);
68453
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(react_tabs__WEBPACK_IMPORTED_MODULE_1__.TabList, (0,D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)((0,D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)({}, otherProps), {}, {
68454
68454
  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_hello_pangea_dnd__WEBPACK_IMPORTED_MODULE_6__.Droppable, {
68455
68455
  direction: "horizontal",
68456
68456
  droppableId: index.toString(),
@@ -68460,7 +68460,7 @@ var DroppableTabList = _ref => {
68460
68460
  droppableProps,
68461
68461
  placeholder
68462
68462
  } = _ref2;
68463
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", (0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)({
68463
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", (0,D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)((0,D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)({
68464
68464
  className: "droppable-tab-list"
68465
68465
  }, droppableProps), {}, {
68466
68466
  ref: innerRef,
@@ -102918,7 +102918,7 @@ __webpack_require__.r(__webpack_exports__);
102918
102918
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
102919
102919
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
102920
102920
  /* harmony export */ });
102921
- /* harmony import */ var D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(89379);
102921
+ /* harmony import */ var D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(89379);
102922
102922
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51649);
102923
102923
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14062);
102924
102924
  /* harmony import */ var _redux_EditorSlice__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(68512);
@@ -102998,7 +102998,7 @@ var ProjectName = _ref => {
102998
102998
  id: "project_name_label",
102999
102999
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__["default"].projectLabel,
103000
103000
  children: "Project Name"
103001
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", (0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
103001
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", (0,D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,D_gwc_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
103002
103002
  className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_styles_module_scss__WEBPACK_IMPORTED_MODULE_3__["default"].projectName, className)
103003
103003
  }, hoverProps), {}, {
103004
103004
  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)((components_Tooltip_Tooltip__WEBPACK_IMPORTED_MODULE_8___default()), {
@@ -370068,7 +370068,7 @@ const PyodideRunner = ({ active, packageApiUrl, }) => {
370068
370068
  handleLoaded(data.stdinBuffer, data.interruptBuffer);
370069
370069
  break;
370070
370070
  case "handleInput":
370071
- handleInput();
370071
+ handleInput(worker);
370072
370072
  break;
370073
370073
  case "handleOutput":
370074
370074
  handleOutput(data.stream, data.content);
@@ -370147,13 +370147,14 @@ const PyodideRunner = ({ active, packageApiUrl, }) => {
370147
370147
  dispatch((0, EditorSlice_1.codeRunHandled)());
370148
370148
  disableInput();
370149
370149
  };
370150
- const handleInput = async () => {
370150
+ const handleInput = async (workerOverride) => {
370151
+ const targetWorker = workerOverride ?? pyodideWorker;
370151
370152
  if (stdinClosed.current) {
370152
370153
  if (stdinBuffer.current) {
370153
370154
  stdinBuffer.current[0] = -1;
370154
370155
  }
370155
370156
  else {
370156
- pyodideWorker?.postMessage({
370157
+ targetWorker?.postMessage({
370157
370158
  method: "stdinResponse",
370158
370159
  ctrlD: true,
370159
370160
  });
@@ -370173,7 +370174,7 @@ const PyodideRunner = ({ active, packageApiUrl, }) => {
370173
370174
  stdinBuffer.current[0] = currentLength;
370174
370175
  }
370175
370176
  else {
370176
- pyodideWorker?.postMessage({
370177
+ targetWorker?.postMessage({
370177
370178
  method: "stdinResponse",
370178
370179
  content: content !== undefined ? content + "\n" : "",
370179
370180
  ctrlD,
@@ -370315,7 +370316,7 @@ const PyodideRunner = ({ active, packageApiUrl, }) => {
370315
370316
  destroyAndRecreateWorker();
370316
370317
  dispatch((0, EditorSlice_1.setError)({
370317
370318
  type: Errors_1.ErrorType.RUNTIME_ERROR,
370318
- message: "Execution was force-stopped.",
370319
+ message: "Execution interrupted",
370319
370320
  }));
370320
370321
  dispatch((0, EditorSlice_1.codeRunHandled)());
370321
370322
  };
@@ -372343,7 +372344,7 @@ const WebComponentProject = ({ nameEditable = false, sidebarOptions = [], packag
372343
372344
  return () => clearTimeout(timeout);
372344
372345
  }, [project]);
372345
372346
  renderer.link = function (data) {
372346
- return `<a href="${data.href}" target="_blank" rel="noreferrer"
372347
+ return `<a href="${data.href}" target="_blank" rel="noreferrer"
372347
372348
  }">${data.text}</a>`;
372348
372349
  };
372349
372350
  marked_1.marked.setOptions({
@@ -373641,6 +373642,7 @@ const useProjectPersistence = ({ user, projectData, hasShownSavePrompt, saveProj
373641
373642
  const saving = (0, stores_1.useAppSelector)((state) => state.editor.saving);
373642
373643
  const justLoaded = (0, stores_1.useAppSelector)((state) => state.editor.justLoaded);
373643
373644
  const leaveFlow = (0, stores_1.useAppSelector)((state) => state.leaveFlow);
373645
+ const codeRunTriggered = (0, stores_1.useAppSelector)((state) => state.editor.codeRunTriggered);
373644
373646
  const dispatch = (0, react_redux_1.useDispatch)();
373645
373647
  const { deleteValueFromCache, upsertCacheValue } = (0, useProjectCache_1.useProjectCache)();
373646
373648
  const handleSave = (0, react_1.useCallback)(async () => {
@@ -373730,10 +373732,14 @@ const useProjectPersistence = ({ user, projectData, hasShownSavePrompt, saveProj
373730
373732
  leaveFlow.status,
373731
373733
  ]);
373732
373734
  (0, react_1.useEffect)(() => {
373733
- if (saveTriggered && saving === types_1.SavingState.IDLE) {
373734
- handleSave();
373735
+ if (!saveTriggered || saving !== types_1.SavingState.IDLE)
373736
+ return;
373737
+ if (codeRunTriggered) {
373738
+ dispatch((0, EditorSlice_1.stopCodeRun)());
373739
+ return;
373735
373740
  }
373736
- }, [saveTriggered, handleSave, saving]);
373741
+ handleSave();
373742
+ }, [saveTriggered, codeRunTriggered, handleSave, saving, dispatch]);
373737
373743
  // Autosave
373738
373744
  (0, react_1.useEffect)(() => {
373739
373745
  const debouncer = setTimeout(() => {
@@ -373780,6 +373786,7 @@ const createProjectArchive_1 = __webpack_require__(46514);
373780
373786
  const useProjectRemix = ({ projectData, saveProject, }) => {
373781
373787
  const project = (0, stores_1.useAppSelector)((state) => state.editor.project);
373782
373788
  const remixTriggered = (0, stores_1.useAppSelector)((state) => state.editor.remixTriggered);
373789
+ const codeRunTriggered = (0, stores_1.useAppSelector)((state) => state.editor.codeRunTriggered);
373783
373790
  const dispatch = (0, react_redux_1.useDispatch)();
373784
373791
  const remixStartedRef = (0, react_1.useRef)(false);
373785
373792
  (0, react_1.useEffect)(() => {
@@ -373787,11 +373794,16 @@ const useProjectRemix = ({ projectData, saveProject, }) => {
373787
373794
  remixStartedRef.current = false;
373788
373795
  return;
373789
373796
  }
373790
- if (remixStartedRef.current)
373791
- return;
373792
373797
  if (!project || Object.keys(project).length === 0)
373793
373798
  return;
373794
- if (!project?.components?.length)
373799
+ if (!project.components?.length)
373800
+ return;
373801
+ if (codeRunTriggered) {
373802
+ dispatch((0, EditorSlice_1.stopCodeRun)());
373803
+ dispatch((0, EditorSlice_1.stopDraw)());
373804
+ return;
373805
+ }
373806
+ if (remixStartedRef.current)
373795
373807
  return;
373796
373808
  remixStartedRef.current = true;
373797
373809
  const run = async () => {
@@ -373805,10 +373817,12 @@ const useProjectRemix = ({ projectData, saveProject, }) => {
373805
373817
  }
373806
373818
  catch (e) {
373807
373819
  console.error(e);
373820
+ remixStartedRef.current = false;
373821
+ dispatch((0, EditorSlice_1.setRemixTriggered)(false));
373808
373822
  }
373809
373823
  };
373810
373824
  run().catch(console.error);
373811
- }, [remixTriggered, project, saveProject]);
373825
+ }, [remixTriggered, codeRunTriggered, project, saveProject, dispatch]);
373812
373826
  (0, react_1.useEffect)(() => {
373813
373827
  if (!remixTriggered)
373814
373828
  return;
@@ -373820,6 +373834,7 @@ const useProjectRemix = ({ projectData, saveProject, }) => {
373820
373834
  dispatch((0, EditorSlice_1.stopDraw)());
373821
373835
  dispatch((0, EditorSlice_1.resetState)());
373822
373836
  dispatch((0, EditorSlice_1.setRemixTriggered)(false));
373837
+ remixStartedRef.current = false;
373823
373838
  }, [dispatch, remixTriggered, project?.identifier, projectData?.identifier]);
373824
373839
  };
373825
373840
  exports.useProjectRemix = useProjectRemix;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "gwchq-textjam",
3
3
  "description": "Embeddable React editor used in Raspberry Pi text-based projects.",
4
- "version": "0.1.113",
4
+ "version": "0.1.115",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/GirlsFirst/gwchq-textjam",
7
7
  "author": "Girls Who Code HQ",