gwchq-textjam 0.5.10 → 0.5.12
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 +47 -14
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -62996,7 +62996,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
62996
62996
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
62997
62997
|
/* harmony export */ });
|
|
62998
62998
|
// extracted by mini-css-extract-plugin
|
|
62999
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({"grey-rpi-grey-15":"#d5d7dc","grey-rpi-grey-40":"#9497a4","grey-rpi-grey-5":"#f1f2f3","grey-rpi-grey-70":"#4a4d59","grey-rpf-white":"#fff","row":"styles-module__row--XtAJr","treeItem":"styles-module__treeItem--kbyYk","itemContent":"styles-module__itemContent--663gn","itemTitle":"styles-module__itemTitle--a6Liw","itemButton":"styles-module__itemButton--oB91C","itemSelected":"styles-module__itemSelected--JLLW5","
|
|
62999
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({"grey-rpi-grey-15":"#d5d7dc","grey-rpi-grey-40":"#9497a4","grey-rpi-grey-5":"#f1f2f3","grey-rpi-grey-70":"#4a4d59","grey-rpf-white":"#fff","row":"styles-module__row--XtAJr","treeItem":"styles-module__treeItem--kbyYk","itemContent":"styles-module__itemContent--663gn","itemTitle":"styles-module__itemTitle--a6Liw","itemButton":"styles-module__itemButton--oB91C","itemSelected":"styles-module__itemSelected--JLLW5","itemButtonVisible":"styles-module__itemButtonVisible--KAm3+","level-0":"styles-module__level-0--5PVOR","level-1":"styles-module__level-1--vTMYv","level-2":"styles-module__level-2--Xx8Ie","level-3":"styles-module__level-3--ySuP4","level-4":"styles-module__level-4--7uciy","level-5":"styles-module__level-5--AEspR","level-6":"styles-module__level-6--c28W9","level-7":"styles-module__level-7--gU++Q","level-8":"styles-module__level-8--dmg5P","level-9":"styles-module__level-9--X73V0","level-10":"styles-module__level-10--VAKPI","level-11":"styles-module__level-11--5rqim","level-12":"styles-module__level-12--8cLBy","level-13":"styles-module__level-13--qlzYN","level-14":"styles-module__level-14--Q7bCT","level-15":"styles-module__level-15---1KaW","level-16":"styles-module__level-16--BCkZb","level-17":"styles-module__level-17--tM3Ht","level-18":"styles-module__level-18--GkyjF","level-19":"styles-module__level-19--kxLhM","level-20":"styles-module__level-20--sIjDn","itemContentEdit":"styles-module__itemContentEdit--cNmeE","inputError":"styles-module__inputError--zb21a","errorMessage":"styles-module__errorMessage--IT3hQ","itemTooltip":"styles-module__itemTooltip--c5oiY"});
|
|
63000
63000
|
|
|
63001
63001
|
/***/ }),
|
|
63002
63002
|
|
|
@@ -82757,7 +82757,7 @@ const Dropdown = (props) => {
|
|
|
82757
82757
|
const [isOpen, setOpen] = (0, react_1.useState)(false);
|
|
82758
82758
|
const buttonRef = (0, react_1.useRef)(null);
|
|
82759
82759
|
const { hovered, hoverProps } = (0, useHover_1.useHover)();
|
|
82760
|
-
return ((0, jsx_runtime_1.jsxs)("div", { ...hoverProps, children: [(0, jsx_runtime_1.jsxs)("button", { type: "button", "aria-label": ariaLabel, className: (0, classnames_1.default)(buttonClassname, isOpen && styles_module_scss_1.default.buttonActive), onClick: () => setOpen((prev) => !prev), ref: buttonRef, children: [ButtonIcon && ((0, jsx_runtime_1.jsx)(SvgIcon_1.SvgIcon, { SvgElement: ButtonIcon, size: 16, "aria-hidden": "true", focusable: "false" })), (0, jsx_runtime_1.jsx)(SvgIcon_1.SvgIcon, { className: (0, classnames_1.default)(styles_module_scss_1.default.arrowIcon, isOpen && styles_module_scss_1.default.arrowIconOpen), style: { rotate: `${isOpen ? "-" : ""}90deg` }, SvgElement: arrow_right_svg_1.default, size: 8, "aria-hidden": "true", focusable: "false" })] }), (0, jsx_runtime_1.jsx)(Tooltip_1.default, { message: "Upload files", visible: hovered && !isOpen, position: "bottom", strategy: "fixed", size: "fit" }), (0, jsx_runtime_1.jsx)(ContextMenu_1.default, { anchorRef: buttonRef, menuOptions: menuOptions, opened: isOpen, onClose: () => setOpen(false), align: align, direction: direction, gap: 4 })] }));
|
|
82760
|
+
return ((0, jsx_runtime_1.jsxs)("div", { ...hoverProps, children: [(0, jsx_runtime_1.jsxs)("button", { type: "button", "aria-label": ariaLabel, "aria-haspopup": "menu", "aria-expanded": isOpen, className: (0, classnames_1.default)(buttonClassname, isOpen && styles_module_scss_1.default.buttonActive), onClick: () => setOpen((prev) => !prev), ref: buttonRef, children: [ButtonIcon && ((0, jsx_runtime_1.jsx)(SvgIcon_1.SvgIcon, { SvgElement: ButtonIcon, size: 16, "aria-hidden": "true", focusable: "false" })), (0, jsx_runtime_1.jsx)(SvgIcon_1.SvgIcon, { className: (0, classnames_1.default)(styles_module_scss_1.default.arrowIcon, isOpen && styles_module_scss_1.default.arrowIconOpen), style: { rotate: `${isOpen ? "-" : ""}90deg` }, SvgElement: arrow_right_svg_1.default, size: 8, "aria-hidden": "true", focusable: "false" })] }), (0, jsx_runtime_1.jsx)(Tooltip_1.default, { message: "Upload files", visible: hovered && !isOpen, position: "bottom", strategy: "fixed", size: "fit" }), (0, jsx_runtime_1.jsx)(ContextMenu_1.default, { anchorRef: buttonRef, menuOptions: menuOptions, opened: isOpen, onClose: () => setOpen(false), align: align, direction: direction, gap: 4 })] }));
|
|
82761
82761
|
};
|
|
82762
82762
|
exports["default"] = Dropdown;
|
|
82763
82763
|
|
|
@@ -82882,6 +82882,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
82882
82882
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
82883
82883
|
exports.BasicItemContent = void 0;
|
|
82884
82884
|
const jsx_runtime_1 = __webpack_require__(71178);
|
|
82885
|
+
const classnames_1 = __importDefault(__webpack_require__(46942));
|
|
82885
82886
|
const button_dots_svg_1 = __importDefault(__webpack_require__(61995));
|
|
82886
82887
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
82887
82888
|
const Text_1 = __webpack_require__(82803);
|
|
@@ -82891,7 +82892,7 @@ const useHover_1 = __webpack_require__(78556);
|
|
|
82891
82892
|
const ItemEdit_1 = __webpack_require__(61576);
|
|
82892
82893
|
const ItemIcon_1 = __webpack_require__(3427);
|
|
82893
82894
|
const styles_module_scss_1 = __importDefault(__webpack_require__(10614));
|
|
82894
|
-
const BasicItemContent = ({ item, onOpenMenu, isMenuOpen, triggerRef, }) => {
|
|
82895
|
+
const BasicItemContent = ({ item, onOpenMenu, isMenuOpen, triggerRef, isTriggerVisible, isTriggerTabbable, }) => {
|
|
82895
82896
|
const itemData = item.getItemData();
|
|
82896
82897
|
const isSharedProject = (0, stores_1.useAppSelector)((state) => state.editor.isSharedProject);
|
|
82897
82898
|
const { hovered, hoverProps } = (0, useHover_1.useHover)(useHover_1.TOOLTIP_SHOW_DELAY_MS);
|
|
@@ -82901,7 +82902,9 @@ const BasicItemContent = ({ item, onOpenMenu, isMenuOpen, triggerRef, }) => {
|
|
|
82901
82902
|
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.itemContent, onContextMenu: (e) => {
|
|
82902
82903
|
e.preventDefault();
|
|
82903
82904
|
onOpenMenu({ x: e.clientX, y: e.clientY });
|
|
82904
|
-
}, children: [(0, jsx_runtime_1.jsx)(ItemIcon_1.ItemIcon, { itemData: itemData }), (0, jsx_runtime_1.jsx)(Text_1.Text, { className: styles_module_scss_1.default.itemTitle, size: 12, draggable: true, ...hoverProps, children: item.getItemName() }), !isSharedProject && ((0, jsx_runtime_1.jsx)("button", { ref: triggerRef, type: "button", tabIndex: -1, className: styles_module_scss_1.default.itemButton,
|
|
82905
|
+
}, children: [(0, jsx_runtime_1.jsx)(ItemIcon_1.ItemIcon, { itemData: itemData }), (0, jsx_runtime_1.jsx)(Text_1.Text, { className: styles_module_scss_1.default.itemTitle, size: 12, draggable: true, ...hoverProps, children: item.getItemName() }), !isSharedProject && ((0, jsx_runtime_1.jsx)("button", { ref: triggerRef, type: "button", tabIndex: isTriggerTabbable ? 0 : -1, className: (0, classnames_1.default)(styles_module_scss_1.default.itemButton, {
|
|
82906
|
+
[styles_module_scss_1.default.itemButtonVisible]: isTriggerVisible,
|
|
82907
|
+
}), "aria-label": `More actions for ${item.getItemName()}`, "aria-haspopup": "menu", "aria-expanded": isMenuOpen, onClick: (e) => {
|
|
82905
82908
|
e.stopPropagation();
|
|
82906
82909
|
// Anchor to the button's box, not the click point: a keyboard
|
|
82907
82910
|
// activation reports clientX/Y of 0.
|
|
@@ -82923,8 +82926,8 @@ exports.FileItem = void 0;
|
|
|
82923
82926
|
const jsx_runtime_1 = __webpack_require__(71178);
|
|
82924
82927
|
const BasicItemContent_1 = __webpack_require__(34071);
|
|
82925
82928
|
const ItemContextMenu_1 = __webpack_require__(54035);
|
|
82926
|
-
const FileItem = ({ item, onOpenMenu, isContextMenuOpen, contextMenuPosition, onCloseContextMenu, triggerRef, }) => {
|
|
82927
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(BasicItemContent_1.BasicItemContent, { item: item, onOpenMenu: onOpenMenu, isMenuOpen: isContextMenuOpen, triggerRef: triggerRef }), (0, jsx_runtime_1.jsx)(ItemContextMenu_1.ItemContextMenu, { item: item, menuPosition: contextMenuPosition, isOpened: isContextMenuOpen, onClose: onCloseContextMenu })] }));
|
|
82929
|
+
const FileItem = ({ item, onOpenMenu, isContextMenuOpen, contextMenuPosition, onCloseContextMenu, triggerRef, isTriggerVisible, isTriggerTabbable, }) => {
|
|
82930
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(BasicItemContent_1.BasicItemContent, { item: item, onOpenMenu: onOpenMenu, isMenuOpen: isContextMenuOpen, triggerRef: triggerRef, isTriggerVisible: isTriggerVisible, isTriggerTabbable: isTriggerTabbable }), (0, jsx_runtime_1.jsx)(ItemContextMenu_1.ItemContextMenu, { item: item, menuPosition: contextMenuPosition, isOpened: isContextMenuOpen, onClose: onCloseContextMenu })] }));
|
|
82928
82931
|
};
|
|
82929
82932
|
exports.FileItem = FileItem;
|
|
82930
82933
|
|
|
@@ -82946,12 +82949,12 @@ const arrow_right_svg_1 = __importDefault(__webpack_require__(75668));
|
|
|
82946
82949
|
const ItemContextMenu_1 = __webpack_require__(54035);
|
|
82947
82950
|
const BasicItemContent_1 = __webpack_require__(34071);
|
|
82948
82951
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
82949
|
-
const FolderItem = ({ item, onOpenMenu, onCloseContextMenu, isContextMenuOpen, onImport, contextMenuPosition, triggerRef, }) => {
|
|
82952
|
+
const FolderItem = ({ item, onOpenMenu, onCloseContextMenu, isContextMenuOpen, onImport, contextMenuPosition, triggerRef, isTriggerVisible, isTriggerTabbable, }) => {
|
|
82950
82953
|
const arrowIcon = ((0, jsx_runtime_1.jsx)(SvgIcon_1.SvgIcon, { style: item.isExpanded() ? { rotate: "90deg" } : undefined, SvgElement: arrow_right_svg_1.default, size: 16, "aria-hidden": "true", focusable: "false" }));
|
|
82951
82954
|
const handleFileImport = (files) => {
|
|
82952
82955
|
onImport(files, item);
|
|
82953
82956
|
};
|
|
82954
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [arrowIcon, (0, jsx_runtime_1.jsx)(BasicItemContent_1.BasicItemContent, { item: item, onOpenMenu: onOpenMenu, isMenuOpen: isContextMenuOpen, triggerRef: triggerRef }), (0, jsx_runtime_1.jsx)(FileImport_1.FileImport, { onFilesUpload: handleFileImport, allowMultiple: true, children: (openImportFileDialog) => ((0, jsx_runtime_1.jsx)(ItemContextMenu_1.ItemContextMenu, { item: item, menuPosition: contextMenuPosition, isOpened: isContextMenuOpen, onClose: onCloseContextMenu, openImportFileDialog: openImportFileDialog })) })] }));
|
|
82957
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [arrowIcon, (0, jsx_runtime_1.jsx)(BasicItemContent_1.BasicItemContent, { item: item, onOpenMenu: onOpenMenu, isMenuOpen: isContextMenuOpen, triggerRef: triggerRef, isTriggerVisible: isTriggerVisible, isTriggerTabbable: isTriggerTabbable }), (0, jsx_runtime_1.jsx)(FileImport_1.FileImport, { onFilesUpload: handleFileImport, allowMultiple: true, children: (openImportFileDialog) => ((0, jsx_runtime_1.jsx)(ItemContextMenu_1.ItemContextMenu, { item: item, menuPosition: contextMenuPosition, isOpened: isContextMenuOpen, onClose: onCloseContextMenu, openImportFileDialog: openImportFileDialog })) })] }));
|
|
82955
82958
|
};
|
|
82956
82959
|
exports.FolderItem = FolderItem;
|
|
82957
82960
|
|
|
@@ -83226,6 +83229,8 @@ const FileTreeItem = ({ item, guides, activeLevel, isContextMenuAvailable, }) =>
|
|
|
83226
83229
|
const { layers, positions, sizes } = (0, treeGuides_1.getItemGuidesStyles)(guides, activeLevel);
|
|
83227
83230
|
const [isContextMenuOpen, setIsContextMenuOpen] = (0, react_1.useState)(false);
|
|
83228
83231
|
const [contextMenuPosition, setContextMenuPosition] = (0, react_1.useState)({ x: 0, y: 0 });
|
|
83232
|
+
const [hasKeyboardFocus, setHasKeyboardFocus] = (0, react_1.useState)(false);
|
|
83233
|
+
const pointerFocusRef = (0, react_1.useRef)(false);
|
|
83229
83234
|
const triggerRef = (0, react_1.useRef)(null);
|
|
83230
83235
|
const handleOpenContextMenu = (position) => {
|
|
83231
83236
|
if (!isContextMenuAvailable)
|
|
@@ -83236,8 +83241,7 @@ const FileTreeItem = ({ item, guides, activeLevel, isContextMenuAvailable, }) =>
|
|
|
83236
83241
|
const handleCloseContextMenu = () => {
|
|
83237
83242
|
setIsContextMenuOpen(false);
|
|
83238
83243
|
setContextMenuPosition({ x: 0, y: 0 });
|
|
83239
|
-
// Back to the row, not the ⋯ button,
|
|
83240
|
-
// only if focus was lost (Escape), not moved on purpose (rename, modal).
|
|
83244
|
+
// Back to the row, not the hidden ⋯ button, and only if focus was lost.
|
|
83241
83245
|
requestAnimationFrame(() => {
|
|
83242
83246
|
const active = document.activeElement;
|
|
83243
83247
|
if (!active || active === document.body) {
|
|
@@ -83246,7 +83250,24 @@ const FileTreeItem = ({ item, guides, activeLevel, isContextMenuAvailable, }) =>
|
|
|
83246
83250
|
}
|
|
83247
83251
|
});
|
|
83248
83252
|
};
|
|
83249
|
-
//
|
|
83253
|
+
// Only keyboard focus counts: the pointer already has hover.
|
|
83254
|
+
const isTriggerVisible = hasKeyboardFocus || isContextMenuOpen;
|
|
83255
|
+
const isTriggerTabbable = isContextMenuAvailable && isTriggerVisible;
|
|
83256
|
+
const handleRowPointerDown = (e) => {
|
|
83257
|
+
if (e.button !== 0)
|
|
83258
|
+
return; // a right-click ends with Escape, back on the row
|
|
83259
|
+
pointerFocusRef.current = true;
|
|
83260
|
+
};
|
|
83261
|
+
// Cleared on blur, not here: focus can be reported twice for one row.
|
|
83262
|
+
const handleRowFocus = () => setHasKeyboardFocus(!pointerFocusRef.current);
|
|
83263
|
+
const handleRowBlur = (e) => {
|
|
83264
|
+
const movedTo = e.relatedTarget;
|
|
83265
|
+
if (movedTo && e.currentTarget.contains(movedTo))
|
|
83266
|
+
return; // still in the row
|
|
83267
|
+
pointerFocusRef.current = false;
|
|
83268
|
+
setHasKeyboardFocus(false);
|
|
83269
|
+
};
|
|
83270
|
+
// Keyboard route to the ⋯ menu, for anyone who does not Tab to it.
|
|
83250
83271
|
const handleKeyDown = (e) => {
|
|
83251
83272
|
const isMenuKey = e.key === "ContextMenu" ||
|
|
83252
83273
|
(e.shiftKey && e.key === "F10") ||
|
|
@@ -83264,16 +83285,15 @@ const FileTreeItem = ({ item, guides, activeLevel, isContextMenuAvailable, }) =>
|
|
|
83264
83285
|
const rect = trigger.getBoundingClientRect();
|
|
83265
83286
|
handleOpenContextMenu({ x: rect.left, y: rect.bottom });
|
|
83266
83287
|
};
|
|
83267
|
-
return ((0, jsx_runtime_1.jsx)("div", { ...item.getProps(), onKeyDown: handleKeyDown, className: (0, classnames_1.default)(styles_module_scss_1.default.row, styles_module_scss_1.default[`level-${level}`]), style: {
|
|
83288
|
+
return ((0, jsx_runtime_1.jsx)("div", { ...item.getProps(), onKeyDown: handleKeyDown, onMouseDown: handleRowPointerDown, onFocus: handleRowFocus, onBlur: handleRowBlur, className: (0, classnames_1.default)(styles_module_scss_1.default.row, styles_module_scss_1.default[`level-${level}`]), style: {
|
|
83268
83289
|
["--guides-bg"]: layers.join(","),
|
|
83269
83290
|
["--guides-pos"]: positions.join(","),
|
|
83270
83291
|
["--guides-size"]: sizes.join(","),
|
|
83271
83292
|
}, children: (0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.treeItem, {
|
|
83272
|
-
[styles_module_scss_1.default.itemFocused]: item.isFocused(),
|
|
83273
83293
|
[styles_module_scss_1.default.itemExpanded]: item.isExpanded(),
|
|
83274
83294
|
[styles_module_scss_1.default.itemSelected]: item.isSelected(),
|
|
83275
83295
|
[styles_module_scss_1.default.itemFolder]: item.isFolder(),
|
|
83276
|
-
}), children: item.isFolder() ? ((0, jsx_runtime_1.jsx)(FolderItem_1.FolderItem, { item: item, onOpenMenu: handleOpenContextMenu, onCloseContextMenu: handleCloseContextMenu, isContextMenuOpen: isContextMenuOpen, onImport: importFiles, contextMenuPosition: contextMenuPosition, triggerRef: triggerRef })) : ((0, jsx_runtime_1.jsx)(FileItem_1.FileItem, { item: item, onOpenMenu: handleOpenContextMenu, isContextMenuOpen: isContextMenuOpen, contextMenuPosition: contextMenuPosition, onCloseContextMenu: handleCloseContextMenu, triggerRef: triggerRef })) }) }));
|
|
83296
|
+
}), children: item.isFolder() ? ((0, jsx_runtime_1.jsx)(FolderItem_1.FolderItem, { item: item, onOpenMenu: handleOpenContextMenu, onCloseContextMenu: handleCloseContextMenu, isContextMenuOpen: isContextMenuOpen, onImport: importFiles, contextMenuPosition: contextMenuPosition, triggerRef: triggerRef, isTriggerVisible: isTriggerVisible, isTriggerTabbable: isTriggerTabbable })) : ((0, jsx_runtime_1.jsx)(FileItem_1.FileItem, { item: item, onOpenMenu: handleOpenContextMenu, isContextMenuOpen: isContextMenuOpen, contextMenuPosition: contextMenuPosition, onCloseContextMenu: handleCloseContextMenu, triggerRef: triggerRef, isTriggerVisible: isTriggerVisible, isTriggerTabbable: isTriggerTabbable })) }) }));
|
|
83277
83297
|
};
|
|
83278
83298
|
exports.FileTreeItem = FileTreeItem;
|
|
83279
83299
|
|
|
@@ -86515,10 +86535,13 @@ const react_redux_1 = __webpack_require__(14062);
|
|
|
86515
86535
|
const EditorSlice_1 = __webpack_require__(68512);
|
|
86516
86536
|
const stores_1 = __webpack_require__(32132);
|
|
86517
86537
|
const createProjectArchive_1 = __webpack_require__(24133);
|
|
86538
|
+
const types_1 = __webpack_require__(92932);
|
|
86518
86539
|
const useProjectRemix = ({ projectData, saveProject, }) => {
|
|
86519
86540
|
const project = (0, stores_1.useAppSelector)((state) => state.editor.project);
|
|
86541
|
+
const saving = (0, stores_1.useAppSelector)((state) => state.editor.saving);
|
|
86520
86542
|
const remixTriggered = (0, stores_1.useAppSelector)((state) => state.editor.remixTriggered);
|
|
86521
86543
|
const codeRunTriggered = (0, stores_1.useAppSelector)((state) => state.editor.codeRunTriggered);
|
|
86544
|
+
const prevSavingRef = (0, react_1.useRef)(saving);
|
|
86522
86545
|
const dispatch = (0, react_redux_1.useDispatch)();
|
|
86523
86546
|
const remixStartedRef = (0, react_1.useRef)(false);
|
|
86524
86547
|
(0, react_1.useEffect)(() => {
|
|
@@ -86573,6 +86596,16 @@ const useProjectRemix = ({ projectData, saveProject, }) => {
|
|
|
86573
86596
|
dispatch((0, EditorSlice_1.setRemixTriggered)(false));
|
|
86574
86597
|
remixStartedRef.current = false;
|
|
86575
86598
|
}, [dispatch, remixTriggered, project?.identifier, projectData?.identifier]);
|
|
86599
|
+
(0, react_1.useEffect)(() => {
|
|
86600
|
+
const prevSaving = prevSavingRef.current;
|
|
86601
|
+
prevSavingRef.current = saving;
|
|
86602
|
+
if (remixTriggered &&
|
|
86603
|
+
prevSaving !== types_1.SavingState.FAILED &&
|
|
86604
|
+
saving === types_1.SavingState.FAILED) {
|
|
86605
|
+
dispatch((0, EditorSlice_1.setRemixTriggered)(false));
|
|
86606
|
+
remixStartedRef.current = false;
|
|
86607
|
+
}
|
|
86608
|
+
}, [remixTriggered, saving, dispatch]);
|
|
86576
86609
|
};
|
|
86577
86610
|
exports.useProjectRemix = useProjectRemix;
|
|
86578
86611
|
|
package/dist/style.css
CHANGED
|
@@ -690,7 +690,7 @@
|
|
|
690
690
|
:root{--rpf-white: #ffffff}.styles-module__wrapper--NmEQI{display:flex;align-items:center;gap:calc(.5rem*var(--scale-factor, 1))}.styles-module__tooltipAnchor--nyFj4{position:relative}.styles-module__header--UkMi-{display:flex;align-items:center;justify-content:space-between;font-size:12px;block-size:62px;padding:calc(.625rem*var(--scale-factor, 1)) calc(1rem*var(--scale-factor, 1)) calc(.5rem*var(--scale-factor, 1)) calc(1.25rem*var(--scale-factor, 1));flex-shrink:0;z-index:699}.styles-module__headerBtn--kUJII{font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1));font-weight:500;block-size:44px;padding:calc(.625rem*var(--scale-factor, 1)) calc(1.25rem*var(--scale-factor, 1));gap:7px}.styles-module__gwcLogo--svs9k{inline-size:calc(2.75rem*var(--scale-factor, 1))}.styles-module__textJamLogo--dZcnz{inline-size:150px;block-size:36px;margin-inline-start:calc(.75rem*var(--scale-factor, 1))}.styles-module__btnSvg--Ri2uZ{inline-size:44px;block-size:44px}.styles-module__projectName--6o3NT{flex-grow:1;min-inline-size:0;padding-inline-start:calc(1rem*var(--scale-factor, 1))}.styles-module__linkButton--bj6aP{color:#003046}.styles-module__sharedProject--baj0W{gap:calc(2rem*var(--scale-factor, 1))}.styles-module__remixBtnContent--sJf5m{display:flex;gap:calc(.5rem*var(--scale-factor, 1))}
|
|
691
691
|
.resizable-with-handle__handle>div{position:relative;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,0) !important}.resizable-with-handle__bar{display:block;background:var(--editor-color-text-secondary);border-radius:999px;pointer-events:auto}.resizable-with-handle__bar:focus{outline:none}.resizable-with-handle__bar:focus-visible{outline:2px auto Highlight;outline:2px auto -webkit-focus-ring-color;outline-offset:-1px}.resizable-with-handle__handle--right>div{inset-inline-end:3px !important}.resizable-with-handle__bar--right,.resizable-with-handle__bar--left{inline-size:4px;block-size:128px}.resizable-with-handle__handle--bottom>div{inset-block-end:3px !important}.resizable-with-handle__bar--bottom,.resizable-with-handle__bar--top{inline-size:128px;block-size:4px}
|
|
692
692
|
:root{--rpf-white: #ffffff}.styles-module__sidebar--Fu5Qi{display:flex;position:relative;scrollbar-width:none}.styles-module__bar--fOlLf{display:flex;flex-direction:column;justify-content:space-between;margin:calc(1.5rem*var(--scale-factor, 1)) calc(1.25rem*var(--scale-factor, 1)) calc(.625rem*var(--scale-factor, 1)) calc(1.25rem*var(--scale-factor, 1))}.styles-module__optionsTop--2jNbs,.styles-module__optionsBottom--PtwF4{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(2rem*var(--scale-factor, 1))}.styles-module__option--MOGCu{display:flex;align-items:center;justify-content:center;box-sizing:border-box;inline-size:calc(2.75rem*var(--scale-factor, 1));block-size:calc(2.75rem*var(--scale-factor, 1));margin:0}.styles-module__option--MOGCu.styles-module__userOption--qGt5j{inline-size:calc(2.5rem*var(--scale-factor, 1));block-size:calc(2.5rem*var(--scale-factor, 1));border-radius:50%;color:#003046;font-weight:500;background-color:#fff;cursor:pointer}.styles-module__option--MOGCu.styles-module__userOption--qGt5j:hover{background-color:#fff}.styles-module__option--MOGCu svg{margin:0;color:#003046}.styles-module__option--MOGCu:hover{background-color:#cbcbcb}.styles-module__option--MOGCu.styles-module__selected--avjSK{background-color:#fff}.styles-module__option--MOGCu.styles-module__selected--avjSK:hover{background-color:#fff}.styles-module__optionTooltipWrapper--7BqNv{position:relative}.styles-module__optionTooltip--wNPIN{inset-block-start:50%;inset-inline-start:100%;margin-inline-start:calc(.5rem*var(--scale-factor, 1));transform:translateY(-50%)}.styles-module__panel--bHhSv{display:flex;flex-direction:column;border-radius:calc(.5rem*var(--scale-factor, 1));box-shadow:0px 4px 20px 0px rgba(0,0,0,.15);margin-inline-end:calc(.625rem*var(--scale-factor, 1));inline-size:inherit;background:var(--sidebar-panel-background)}.styles-module__panelsColumn--3qf\+3{display:flex;flex-direction:column;margin-inline-end:calc(.625rem*var(--scale-factor, 1))}.styles-module__panelsColumn--3qf\+3 .styles-module__panel--bHhSv{margin-inline-end:0;inline-size:100%;block-size:100%;min-block-size:0}.styles-module__panelsColumnTop--OKT\+V{min-block-size:0;margin-block-end:calc(.625rem*var(--scale-factor, 1))}.styles-module__panelsColumnTop--OKT\+V .resizable-with-handle__handle--bottom>div{inset-block-end:calc(-1*calc(0.625rem * var(--scale-factor, 1))) !important}.styles-module__panelsColumnFill--v\+VWp{display:flex;flex-direction:column;flex:1;min-block-size:0}.styles-module__panelWithFooter--5ItsY{padding-block-end:calc(2rem*var(--scale-factor, 1))}.styles-module__panelHeading--GRNt0{margin:0;font-size:calc(1.5rem*var(--scale-factor, 1));line-height:calc(2rem*var(--scale-factor, 1))}.styles-module__panelHeader--bAHfN{display:flex;flex-direction:column;gap:calc(1rem*var(--scale-factor, 1));padding-block-end:calc(1rem*var(--scale-factor, 1));margin-inline:calc(1rem*var(--scale-factor, 1));border-block-end:1px solid var(--sidebar-border)}.styles-module__panelContent--X7kot{flex:1;padding:calc(.75rem*var(--scale-factor, 1)) calc(1rem*var(--scale-factor, 1));overflow-y:auto;scrollbar-width:thin}.styles-module__panelButtons---y4S-{display:flex;flex-direction:column;gap:calc(1rem*var(--scale-factor, 1))}.styles-module__panelFooter--T1y-s{border-block-start:1px solid #d5d7dc;inset-block-end:0px;inline-size:100%;inline-size:-moz-available;inline-size:-webkit-stretch;inline-size:stretch;padding-inline:calc(1rem*var(--scale-factor, 1));background-color:#fff;border-end-end-radius:8px}
|
|
693
|
-
:root{--rpf-white: #ffffff}.styles-module__row--XtAJr{position:relative;margin-block-end:calc(.25rem*var(--scale-factor, 1));--strong-guide-color: #33625e;--normal-guide-color: #e5e5e5;padding:1px}.styles-module__row--XtAJr::before{content:"";position:absolute;inset:calc(-1*.125rem*var(--scale-factor, 1));pointer-events:none;background-image:var(--guides-bg);background-position:var(--guides-pos);background-size:var(--guides-size);background-repeat:no-repeat}.styles-module__treeItem--kbyYk{display:flex;align-items:center;gap:calc(.5rem*var(--scale-factor, 1));text-align:start;position:relative;cursor:pointer}.styles-module__itemContent--663gn{inline-size:100%;border-radius:4px;display:flex;align-items:center;gap:calc(.5rem*var(--scale-factor, 1));text-align:start;padding:calc(.25rem*var(--scale-factor, 1)) calc(.5rem*var(--scale-factor, 1))}.styles-module__itemContent--663gn:hover{background:#e5f6f1}.styles-module__itemTitle--a6Liw{inline-size:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.styles-module__itemButton--oB91C{display:none;padding:0;border:none;background:none;color:inherit;cursor:pointer}.styles-
|
|
693
|
+
:root{--rpf-white: #ffffff}.styles-module__row--XtAJr{position:relative;margin-block-end:calc(.25rem*var(--scale-factor, 1));--strong-guide-color: #33625e;--normal-guide-color: #e5e5e5;padding:1px}.styles-module__row--XtAJr::before{content:"";position:absolute;inset:calc(-1*.125rem*var(--scale-factor, 1));pointer-events:none;background-image:var(--guides-bg);background-position:var(--guides-pos);background-size:var(--guides-size);background-repeat:no-repeat}.styles-module__treeItem--kbyYk{display:flex;align-items:center;gap:calc(.5rem*var(--scale-factor, 1));text-align:start;position:relative;cursor:pointer}.styles-module__itemContent--663gn{inline-size:100%;border-radius:4px;display:flex;align-items:center;gap:calc(.5rem*var(--scale-factor, 1));text-align:start;padding:calc(.25rem*var(--scale-factor, 1)) calc(.5rem*var(--scale-factor, 1))}.styles-module__itemContent--663gn:hover{background:#e5f6f1}.styles-module__itemTitle--a6Liw{inline-size:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.styles-module__itemButton--oB91C{display:none;padding:0;border:none;background:none;color:inherit;cursor:pointer}.styles-module__itemSelected--JLLW5 .styles-module__itemContent--663gn{background-color:#c5ffe8}.styles-module__itemContent--663gn:hover .styles-module__itemButton--oB91C,.styles-module__itemButtonVisible--KAm3\+{display:flex}.styles-module__level-0--5PVOR{padding-inline-start:0px}.styles-module__level-1--vTMYv{padding-inline-start:20px}.styles-module__level-2--Xx8Ie{padding-inline-start:40px}.styles-module__level-3--ySuP4{padding-inline-start:60px}.styles-module__level-4--7uciy{padding-inline-start:80px}.styles-module__level-5--AEspR{padding-inline-start:100px}.styles-module__level-6--c28W9{padding-inline-start:120px}.styles-module__level-7--gU\+\+Q{padding-inline-start:140px}.styles-module__level-8--dmg5P{padding-inline-start:160px}.styles-module__level-9--X73V0{padding-inline-start:180px}.styles-module__level-10--VAKPI{padding-inline-start:200px}.styles-module__level-11--5rqim{padding-inline-start:220px}.styles-module__level-12--8cLBy{padding-inline-start:240px}.styles-module__level-13--qlzYN{padding-inline-start:260px}.styles-module__level-14--Q7bCT{padding-inline-start:280px}.styles-module__level-15---1KaW{padding-inline-start:300px}.styles-module__level-16--BCkZb{padding-inline-start:320px}.styles-module__level-17--tM3Ht{padding-inline-start:340px}.styles-module__level-18--GkyjF{padding-inline-start:360px}.styles-module__level-19--kxLhM{padding-inline-start:380px}.styles-module__level-20--sIjDn{padding-inline-start:400px}.styles-module__itemContentEdit--cNmeE{--border-width: 1px;inline-size:100%;display:flex;align-items:center;gap:calc(.5rem*var(--scale-factor, 1));text-align:start;padding:calc(.25rem*var(--scale-factor, 1) - var(--border-width)) calc(.5rem*var(--scale-factor, 1) - var(--border-width));border-radius:4px;border:var(--border-width) solid #43d6b9}.styles-module__itemContentEdit--cNmeE input{border:none;font-size:calc(.75rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1))}.styles-module__itemContentEdit--cNmeE input:focus,.styles-module__itemContentEdit--cNmeE input:focus-visible{outline:none}.styles-module__inputError--zb21a{border-color:#e0201c}.styles-module__errorMessage--IT3hQ{position:absolute;inset-block-start:100%;inset-inline-start:0;inline-size:100%;padding:calc(.5rem*var(--scale-factor, 1));margin-block-start:calc(.25rem*var(--scale-factor, 1));border:1px solid #e0201c;border-radius:8px;background-color:#ffd5ce;color:#242424;z-index:650;display:flex;align-items:flex-start;gap:calc(.5rem*var(--scale-factor, 1))}.styles-module__errorMessage--IT3hQ svg{color:#e0201c}.styles-module__itemTooltip--c5oiY{min-inline-size:auto}
|
|
694
694
|
:root{--rpf-white: #ffffff}.styles-module__textDelete--9Qu4T{color:#e0201c}
|
|
695
695
|
:root{--rpf-white: #ffffff}.styles-module__toastContainer--SzERA{display:flex;align-items:flex-start;gap:calc(.875rem*var(--scale-factor, 1));color:#003046;font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1));font-weight:500;overflow-wrap:anywhere}.styles-module__toastMessage--5Ze6a{flex-grow:1;white-space:pre-line}.styles-module__errorIcon--v90W6{color:#e0201c}.styles-module__successIcon--gCtAd{color:#527d7a}.styles-module__closeIcon--iZ9ey{color:#003046;cursor:pointer;flex-shrink:0}.styles-module__toastList--7K4rT{display:flex;flex-direction:column-reverse;block-size:calc(100vh - 62px - 1em);max-block-size:calc(100vh - 62px - 1em);overflow-y:auto;overscroll-behavior:contain;padding-inline-end:calc(.25rem*var(--scale-factor, 1));scrollbar-color:rgba(0,48,70,.2) rgba(0,0,0,0);scrollbar-width:thin}.styles-module__toastList--7K4rT::-webkit-scrollbar{inline-size:calc(.5rem*var(--scale-factor, 1))}.styles-module__toastList--7K4rT::-webkit-scrollbar-track{background:rgba(0,0,0,0)}.styles-module__toastList--7K4rT::-webkit-scrollbar-thumb{background-color:rgba(0,48,70,.2);border-radius:calc(.25rem*var(--scale-factor, 1))}.styles-module__toastList--7K4rT:hover .Toastify__progress-bar{animation-play-state:paused !important}.styles-module__toast--LJOJf{flex-shrink:0;max-block-size:none;overflow:visible;padding:calc(1.125rem*var(--scale-factor, 1)) !important}.styles-module__toastBody--0iN2Q{align-items:flex-start;margin:0}.styles-module__infoIcon--tva-x{color:#0d47a1}
|
|
696
696
|
:root{--rpf-white: #ffffff}.styles-module__tree--KziAJ{max-inline-size:100%;min-block-size:100px;color:#33625e}.styles-module__fileTreeActions--k\+Wsd{display:flex;gap:calc(.5rem*var(--scale-factor, 1));align-items:center;margin-block-end:calc(1rem*var(--scale-factor, 1))}.styles-module__tooltipWrapper--wltXE{position:relative;z-index:650}.styles-module__fileTreeActionsLabel--dPZp4{flex-grow:1;color:#69746d}.styles-module__importButton--rcLUm{inline-size:calc(2.5rem*var(--scale-factor, 1))}.styles-module__importArrowIcon--3eOLN{margin-inline-start:calc(.25rem*var(--scale-factor, 1))}.styles-module__label--WY51f{margin:0;flex-grow:1}.styles-module__iconButton--6UIVe{border:none;display:flex;justify-content:center;align-items:center;cursor:pointer}.styles-module__iconButtonFilled--w2vJC{background-color:#e5f6f1;border-radius:calc(.5rem*var(--scale-factor, 1));min-inline-size:calc(2rem*var(--scale-factor, 1));block-size:calc(2rem*var(--scale-factor, 1));transition:background-color .2s ease-in-out}.styles-module__iconButtonFilled--w2vJC:hover{background-color:#d7e7e3}.styles-module__iconButtonFilled--w2vJC:active{background-color:rgba(0,0,0,0)}.styles-module__dragline--RXmTT{block-size:2px;margin-block-start:-1px;background-color:#003046}.styles-module__dragline--RXmTT ::before{content:"";position:absolute;inset-inline-start:0;inset-block-start:-3px;block-size:4px;inline-size:4px;background:#fff;border:2px solid #003046;border-radius:99px}.styles-module__emptyStateContainer--AnTAm{padding:calc(.75rem*var(--scale-factor, 1));display:flex;flex-direction:column;align-items:center;text-align:center;font-size:calc(.75rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1));font-weight:400;color:#69746d;gap:calc(.25rem*var(--scale-factor, 1))}.styles-module__emptyStateIcon--sDlxK{inline-size:calc(1.5rem*var(--scale-factor, 1));block-size:calc(1.5rem*var(--scale-factor, 1))}.styles-module__emptyStateMessage--OkPax{font-weight:700}
|
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.5.
|
|
4
|
+
"version": "0.5.12",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/GirlsFirst/gwchq-textjam",
|
|
7
7
|
"author": "Girls Who Code HQ",
|