gwchq-textjam 0.5.8 → 0.5.10
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 +262 -28
- package/dist/style.css +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -13337,11 +13337,11 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
13337
13337
|
"default": () => (/* binding */ Button_Button)
|
|
13338
13338
|
});
|
|
13339
13339
|
|
|
13340
|
-
// EXTERNAL MODULE: ./node_modules/react-router-dom/dist/index.js + 2 modules
|
|
13341
|
-
var dist = __webpack_require__(92648);
|
|
13342
13340
|
// EXTERNAL MODULE: ./node_modules/classnames/index.js
|
|
13343
13341
|
var classnames = __webpack_require__(46942);
|
|
13344
13342
|
var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
|
|
13343
|
+
// EXTERNAL MODULE: ./node_modules/react-router-dom/dist/index.js + 2 modules
|
|
13344
|
+
var dist = __webpack_require__(92648);
|
|
13345
13345
|
;// ./src/components/Button/styles.module.scss
|
|
13346
13346
|
// extracted by mini-css-extract-plugin
|
|
13347
13347
|
/* 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","btn":"styles-module__btn--0Px6W","btn--primary":"styles-module__btn--primary--k7oQ0","btn-outer":"styles-module__btn-outer--4KgkG","btn--secondary":"styles-module__btn--secondary--tK09f","btn--tertiary":"styles-module__btn--tertiary--jf5po","btn--tertiaryGray":"styles-module__btn--tertiaryGray--gFHKt","btn--danger":"styles-module__btn--danger--SmsoX","btn--small":"styles-module__btn--small--cJ2bM","btnOuter":"styles-module__btnOuter--ip64U","svgOnly":"styles-module__svgOnly--eXeyf","primary":"styles-module__primary--AeI1M","secondary":"styles-module__secondary--tAMJR","tertiary":"styles-module__tertiary--Kr5w9","tertiaryGray":"styles-module__tertiaryGray--gVUq6","iconed":"styles-module__iconed--AMs-c","icon":"styles-module__icon--C2jj1"});
|
|
@@ -13352,7 +13352,6 @@ var jsx_runtime_ = __webpack_require__(71178);
|
|
|
13352
13352
|
|
|
13353
13353
|
|
|
13354
13354
|
|
|
13355
|
-
|
|
13356
13355
|
var Button = props => {
|
|
13357
13356
|
var {
|
|
13358
13357
|
className,
|
|
@@ -13371,7 +13370,8 @@ var Button = props => {
|
|
|
13371
13370
|
label,
|
|
13372
13371
|
buttonIconPosition = "left",
|
|
13373
13372
|
variant,
|
|
13374
|
-
style
|
|
13373
|
+
style,
|
|
13374
|
+
ariaLive
|
|
13375
13375
|
} = props;
|
|
13376
13376
|
var VARIANT_CLASSES = {
|
|
13377
13377
|
icon: styles_module.icon,
|
|
@@ -13415,6 +13415,7 @@ var Button = props => {
|
|
|
13415
13415
|
text: text,
|
|
13416
13416
|
onClick: buttonOuter ? null : onButtonClick,
|
|
13417
13417
|
onKeyDown: onKeyDown,
|
|
13418
|
+
"aria-live": ariaLive,
|
|
13418
13419
|
children: [buttonImage && /*#__PURE__*/(0,jsx_runtime_.jsx)("img", {
|
|
13419
13420
|
src: buttonImage,
|
|
13420
13421
|
alt: buttonImageAltText,
|
|
@@ -48045,7 +48046,8 @@ var ShareProjectModal = () => {
|
|
|
48045
48046
|
variant: "primary",
|
|
48046
48047
|
onClickHandler: handleCopy,
|
|
48047
48048
|
buttonText: isCopied ? "Copied!" : "Copy",
|
|
48048
|
-
className: "".concat(ShareProjectModal_styles_module.copyButton, " ").concat(isCopied ? ShareProjectModal_styles_module.copyButtonSelected : "")
|
|
48049
|
+
className: "".concat(ShareProjectModal_styles_module.copyButton, " ").concat(isCopied ? ShareProjectModal_styles_module.copyButtonSelected : ""),
|
|
48050
|
+
ariaLive: "polite"
|
|
48049
48051
|
})]
|
|
48050
48052
|
})]
|
|
48051
48053
|
})
|
|
@@ -62994,7 +62996,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
62994
62996
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
62995
62997
|
/* harmony export */ });
|
|
62996
62998
|
// extracted by mini-css-extract-plugin
|
|
62997
|
-
/* 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","itemFocused":"styles-module__itemFocused--SmUbE","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"});
|
|
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","itemFocused":"styles-module__itemFocused--SmUbE","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"});
|
|
62998
63000
|
|
|
62999
63001
|
/***/ }),
|
|
63000
63002
|
|
|
@@ -82854,13 +82856,16 @@ const Text_1 = __webpack_require__(82803);
|
|
|
82854
82856
|
const stores_1 = __webpack_require__(32132);
|
|
82855
82857
|
const Tooltip_1 = __importDefault(__webpack_require__(26982));
|
|
82856
82858
|
const useHover_1 = __webpack_require__(78556);
|
|
82857
|
-
const FileTreeActions = ({ hasExpandedNodes, }) => {
|
|
82859
|
+
const FileTreeActions = ({ hasExpandedNodes, treeId, }) => {
|
|
82858
82860
|
const { expandAll, collapseAll, createComponent, importFiles, importFolder } = (0, react_1.useContext)(FileTreeContext_1.TreeContext);
|
|
82859
82861
|
const isReadOnly = (0, stores_1.useAppSelector)((state) => state.editor.readOnly);
|
|
82860
82862
|
const { hovered: toggleHovered, hoverProps: toggleHoverProps } = (0, useHover_1.useHover)();
|
|
82861
82863
|
const { hovered: addFolderHovered, hoverProps: addFolderHoverProps } = (0, useHover_1.useHover)();
|
|
82862
82864
|
const { hovered: addFileHovered, hoverProps: addFileHoverProps } = (0, useHover_1.useHover)();
|
|
82863
|
-
|
|
82865
|
+
const toggleLabel = hasExpandedNodes
|
|
82866
|
+
? "Collapse all folders"
|
|
82867
|
+
: "Expand all folders";
|
|
82868
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.fileTreeActions, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.tooltipWrapper, ...toggleHoverProps, children: [(0, jsx_runtime_1.jsx)("button", { type: "button", "aria-label": toggleLabel, "aria-expanded": hasExpandedNodes, "aria-controls": treeId, onClick: hasExpandedNodes ? collapseAll : expandAll, className: styles_module_scss_1.default.iconButton, children: hasExpandedNodes ? ((0, jsx_runtime_1.jsx)(minus_circle_svg_1.default, { "aria-hidden": "true", focusable: "false" })) : ((0, jsx_runtime_1.jsx)(plus_circle_svg_1.default, { "aria-hidden": "true", focusable: "false" })) }), (0, jsx_runtime_1.jsx)(Tooltip_1.default, { message: toggleLabel, visible: toggleHovered, position: "bottom", strategy: "fixed", size: "fit" })] }), (0, jsx_runtime_1.jsx)(Text_1.Text, { size: 12, weight: "medium", className: styles_module_scss_1.default.fileTreeActionsLabel, children: "Project files" }), !isReadOnly && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.tooltipWrapper, ...addFolderHoverProps, children: [(0, jsx_runtime_1.jsx)("button", { type: "button", "aria-label": "Add folder", onClick: () => createComponent(ProjectTypes_1.ProjectComponentType.DIR), className: (0, classnames_1.default)([styles_module_scss_1.default.iconButtonFilled, styles_module_scss_1.default.iconButton]), children: (0, jsx_runtime_1.jsx)(add_folder_svg_1.default, { "aria-hidden": "true", focusable: "false" }) }), (0, jsx_runtime_1.jsx)(Tooltip_1.default, { message: "Add folder", visible: addFolderHovered, position: "bottom", strategy: "fixed", size: "fit" })] }), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.tooltipWrapper, ...addFileHoverProps, children: [(0, jsx_runtime_1.jsx)("button", { type: "button", "aria-label": "Add file", onClick: () => createComponent(ProjectTypes_1.ProjectComponentType.FILE), className: (0, classnames_1.default)([styles_module_scss_1.default.iconButtonFilled, styles_module_scss_1.default.iconButton]), children: (0, jsx_runtime_1.jsx)(add_file_svg_1.default, { "aria-hidden": "true", focusable: "false" }) }), (0, jsx_runtime_1.jsx)(Tooltip_1.default, { message: "Add file", visible: addFileHovered, position: "bottom", strategy: "fixed", size: "fit" })] }), (0, jsx_runtime_1.jsx)(ImportButton_1.ImportButton, { importFiles: importFiles, importFolder: importFolder })] }))] }));
|
|
82864
82869
|
};
|
|
82865
82870
|
exports.FileTreeActions = FileTreeActions;
|
|
82866
82871
|
|
|
@@ -82896,7 +82901,7 @@ const BasicItemContent = ({ item, onOpenMenu, isMenuOpen, triggerRef, }) => {
|
|
|
82896
82901
|
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) => {
|
|
82897
82902
|
e.preventDefault();
|
|
82898
82903
|
onOpenMenu({ x: e.clientX, y: e.clientY });
|
|
82899
|
-
}, 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", className: styles_module_scss_1.default.itemButton, "aria-label": `More actions for ${item.getItemName()}`, "aria-haspopup": "menu", "aria-expanded": isMenuOpen, onClick: (e) => {
|
|
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, "aria-label": `More actions for ${item.getItemName()}`, "aria-haspopup": "menu", "aria-expanded": isMenuOpen, onClick: (e) => {
|
|
82900
82905
|
e.stopPropagation();
|
|
82901
82906
|
// Anchor to the button's box, not the click point: a keyboard
|
|
82902
82907
|
// activation reports clientX/Y of 0.
|
|
@@ -83231,16 +83236,35 @@ const FileTreeItem = ({ item, guides, activeLevel, isContextMenuAvailable, }) =>
|
|
|
83231
83236
|
const handleCloseContextMenu = () => {
|
|
83232
83237
|
setIsContextMenuOpen(false);
|
|
83233
83238
|
setContextMenuPosition({ x: 0, y: 0 });
|
|
83234
|
-
//
|
|
83235
|
-
// lost (
|
|
83239
|
+
// Back to the row, not the ⋯ button, which is outside the tab order — but
|
|
83240
|
+
// only if focus was lost (Escape), not moved on purpose (rename, modal).
|
|
83236
83241
|
requestAnimationFrame(() => {
|
|
83237
83242
|
const active = document.activeElement;
|
|
83238
83243
|
if (!active || active === document.body) {
|
|
83239
|
-
|
|
83244
|
+
item.setFocused();
|
|
83245
|
+
item.getElement()?.focus();
|
|
83240
83246
|
}
|
|
83241
83247
|
});
|
|
83242
83248
|
};
|
|
83243
|
-
|
|
83249
|
+
// Keyboard route to the ⋯ menu, which is out of the tab order.
|
|
83250
|
+
const handleKeyDown = (e) => {
|
|
83251
|
+
const isMenuKey = e.key === "ContextMenu" ||
|
|
83252
|
+
(e.shiftKey && e.key === "F10") ||
|
|
83253
|
+
(e.altKey && e.key === "ArrowDown");
|
|
83254
|
+
if (!isMenuKey)
|
|
83255
|
+
return;
|
|
83256
|
+
if (e.target !== e.currentTarget)
|
|
83257
|
+
return; // the row itself, not a child
|
|
83258
|
+
// no ⋯ button rendered, no keyboard menu either
|
|
83259
|
+
const trigger = triggerRef.current;
|
|
83260
|
+
if (!trigger)
|
|
83261
|
+
return;
|
|
83262
|
+
e.preventDefault();
|
|
83263
|
+
item.setFocused();
|
|
83264
|
+
const rect = trigger.getBoundingClientRect();
|
|
83265
|
+
handleOpenContextMenu({ x: rect.left, y: rect.bottom });
|
|
83266
|
+
};
|
|
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: {
|
|
83244
83268
|
["--guides-bg"]: layers.join(","),
|
|
83245
83269
|
["--guides-pos"]: positions.join(","),
|
|
83246
83270
|
["--guides-size"]: sizes.join(","),
|
|
@@ -83411,12 +83435,9 @@ const useFileTree = ({ projectFiles, onRename, onDrop, onOpenFile, rootId, readO
|
|
|
83411
83435
|
itemInstance: {
|
|
83412
83436
|
getProps: ({ item, prev }) => {
|
|
83413
83437
|
const isFolder = item.isFolder();
|
|
83414
|
-
const state = item.isExpanded() ? "expanded" : "collapsed";
|
|
83415
83438
|
return {
|
|
83416
83439
|
...prev?.(),
|
|
83417
|
-
...(isFolder && {
|
|
83418
|
-
"aria-label": `${item.getItemName()}, ${state}`,
|
|
83419
|
-
}),
|
|
83440
|
+
...(isFolder && { "aria-expanded": item.isExpanded() }),
|
|
83420
83441
|
onClick: () => {
|
|
83421
83442
|
item.setFocused();
|
|
83422
83443
|
item.primaryAction();
|
|
@@ -83509,6 +83530,7 @@ const EditorTypes_1 = __webpack_require__(42108);
|
|
|
83509
83530
|
const projectHelpers_1 = __webpack_require__(2610);
|
|
83510
83531
|
const ProjectTypes_1 = __webpack_require__(27130);
|
|
83511
83532
|
const stores_1 = __webpack_require__(32132);
|
|
83533
|
+
const announce_1 = __webpack_require__(29331);
|
|
83512
83534
|
const downloadContent_1 = __webpack_require__(9879);
|
|
83513
83535
|
const editorFsThunks_1 = __webpack_require__(71862);
|
|
83514
83536
|
/** Custom hook for action handlers on top headless-tree functionality */
|
|
@@ -83520,6 +83542,8 @@ const useFileTreeActions = () => {
|
|
|
83520
83542
|
const dispatch = (0, react_redux_1.useDispatch)();
|
|
83521
83543
|
// Creating component draft is local-only, not persisted in Redux
|
|
83522
83544
|
const [draft, setDraft] = (0, react_1.useState)(null);
|
|
83545
|
+
// A created item still waiting to be focused, once it renders in place.
|
|
83546
|
+
const [pendingFocusId, setPendingFocusId] = (0, react_1.useState)(null);
|
|
83523
83547
|
const openTreeFile = (0, react_1.useCallback)((id) => {
|
|
83524
83548
|
const isTab = (tab) => tab.type === EditorTypes_1.OpenedTabType.FILE && tab.id === id;
|
|
83525
83549
|
const fileIndex = openedTabs.findIndex(isTab);
|
|
@@ -83647,13 +83671,37 @@ const useFileTreeActions = () => {
|
|
|
83647
83671
|
const item = tree.getRenamingItem();
|
|
83648
83672
|
if (!item)
|
|
83649
83673
|
return;
|
|
83674
|
+
const id = item.getId();
|
|
83675
|
+
const isDraft = Boolean(draft && draft.id === id);
|
|
83650
83676
|
// If any draft that is being created
|
|
83651
|
-
if (draft &&
|
|
83677
|
+
if (draft && isDraft) {
|
|
83652
83678
|
const data = item.getItemData();
|
|
83653
83679
|
saveNewComponent(data, draft.parentId);
|
|
83654
83680
|
}
|
|
83655
83681
|
tree.completeRenaming();
|
|
83656
|
-
|
|
83682
|
+
if (isDraft) {
|
|
83683
|
+
setPendingFocusId(id);
|
|
83684
|
+
return;
|
|
83685
|
+
}
|
|
83686
|
+
setFocusedItem(id);
|
|
83687
|
+
const renamedRow = tree.getItemInstance(id)?.getElement();
|
|
83688
|
+
if (renamedRow)
|
|
83689
|
+
(0, announce_1.describeFocusTarget)(renamedRow);
|
|
83690
|
+
}, [tree, draft, saveNewComponent, setFocusedItem]);
|
|
83691
|
+
// Runs on the render that first places a created item in its sorted position.
|
|
83692
|
+
(0, react_1.useEffect)(() => {
|
|
83693
|
+
if (!pendingFocusId)
|
|
83694
|
+
return;
|
|
83695
|
+
const element = tree.getItemInstance(pendingFocusId)?.getElement();
|
|
83696
|
+
if (!element?.isConnected)
|
|
83697
|
+
return;
|
|
83698
|
+
setPendingFocusId(null);
|
|
83699
|
+
setFocusedItem(pendingFocusId);
|
|
83700
|
+
if (document.activeElement === element)
|
|
83701
|
+
element.blur();
|
|
83702
|
+
(0, announce_1.describeFocusTarget)(element);
|
|
83703
|
+
element.focus();
|
|
83704
|
+
}, [pendingFocusId, projectComponents, tree, setFocusedItem]);
|
|
83657
83705
|
const removeComponent = (0, react_1.useCallback)((id) => {
|
|
83658
83706
|
const item = tree.getItemInstance(id);
|
|
83659
83707
|
if (!item)
|
|
@@ -83699,6 +83747,7 @@ const FileTreeContext_1 = __webpack_require__(5323);
|
|
|
83699
83747
|
const treeGuides_1 = __webpack_require__(35258);
|
|
83700
83748
|
const EmptyStateMessage_1 = __webpack_require__(34898);
|
|
83701
83749
|
const FileTree = () => {
|
|
83750
|
+
const treeId = (0, react_1.useId)();
|
|
83702
83751
|
const projectComponents = (0, stores_1.useAppSelector)((state) => state.editor.project.components);
|
|
83703
83752
|
const focussedFileIndex = (0, stores_1.useAppSelector)((state) => state.editor.focussedFileIndex);
|
|
83704
83753
|
const openFiles = (0, stores_1.useAppSelector)((state) => state.editor.openedTabs);
|
|
@@ -83707,19 +83756,42 @@ const FileTree = () => {
|
|
|
83707
83756
|
const treeItems = tree.getItems();
|
|
83708
83757
|
const guidesByIndex = (0, treeGuides_1.getGuidesByIndex)(treeItems);
|
|
83709
83758
|
const activeLevel = (0, treeGuides_1.getActiveLevel)(treeItems.find((it) => it.getId() === focusedItem) ?? null);
|
|
83710
|
-
//
|
|
83759
|
+
// Selection, not focus: focus carries the tree's single tab stop, so pointing
|
|
83760
|
+
// it at the open file would make Tab land there instead of at the top.
|
|
83711
83761
|
(0, react_1.useEffect)(() => {
|
|
83712
83762
|
if (!openFiles || focussedFileIndex === undefined)
|
|
83713
83763
|
return;
|
|
83714
83764
|
const tab = openFiles[focussedFileIndex];
|
|
83715
|
-
const
|
|
83716
|
-
const projectFile = projectComponents.find((c) => c.id ===
|
|
83717
|
-
|
|
83718
|
-
setFocusedItem(projectFile.id);
|
|
83719
|
-
}
|
|
83765
|
+
const openFileId = tab?.type === EditorTypes_1.OpenedTabType.FILE ? tab.id : undefined;
|
|
83766
|
+
const projectFile = projectComponents.find((c) => c.id === openFileId);
|
|
83767
|
+
tree.setSelectedItems(projectFile ? [projectFile.id] : []);
|
|
83720
83768
|
// react only to focussedFileIndex and openFiles changes
|
|
83721
83769
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
83722
|
-
}, [focussedFileIndex, openFiles
|
|
83770
|
+
}, [focussedFileIndex, openFiles]);
|
|
83771
|
+
// Collapsing a folder hides whatever was focused inside it, and a focusedItem
|
|
83772
|
+
// matching no rendered row drops the whole tree out of the tab order.
|
|
83773
|
+
(0, react_1.useEffect)(() => {
|
|
83774
|
+
if (focusedItem === null)
|
|
83775
|
+
return;
|
|
83776
|
+
if (treeItems.some((item) => item.getId() === focusedItem))
|
|
83777
|
+
return;
|
|
83778
|
+
setFocusedItem(null);
|
|
83779
|
+
}, [treeItems, focusedItem, setFocusedItem]);
|
|
83780
|
+
// The tab stop lives on focusedItem, which is remembered — so without this
|
|
83781
|
+
// every entry after the first lands on the focused item, not first one.
|
|
83782
|
+
const handleFocusLeavingTree = (event) => {
|
|
83783
|
+
const movedTo = event.relatedTarget;
|
|
83784
|
+
if (movedTo && event.currentTarget.contains(movedTo))
|
|
83785
|
+
return; // still inside
|
|
83786
|
+
// A missing relatedTarget can also mean the rename input just unmounted, so
|
|
83787
|
+
// wait a frame and clear only if focus really landed outside the tree.
|
|
83788
|
+
const container = event.currentTarget;
|
|
83789
|
+
requestAnimationFrame(() => {
|
|
83790
|
+
if (container.contains(document.activeElement))
|
|
83791
|
+
return;
|
|
83792
|
+
setFocusedItem(null);
|
|
83793
|
+
});
|
|
83794
|
+
};
|
|
83723
83795
|
const treeCtx = {
|
|
83724
83796
|
createComponent,
|
|
83725
83797
|
cancelRenaming,
|
|
@@ -83734,7 +83806,7 @@ const FileTree = () => {
|
|
|
83734
83806
|
removeComponent,
|
|
83735
83807
|
importFolder,
|
|
83736
83808
|
};
|
|
83737
|
-
return ((0, jsx_runtime_1.jsxs)(FileTreeContext_1.TreeContext.Provider, { value: treeCtx, children: [(0, jsx_runtime_1.jsx)(FileTreeActions_1.FileTreeActions, { hasExpandedNodes: Boolean(tree.getState().expandedItems.length) }), treeItems.length > 0 ? ((0, jsx_runtime_1.jsxs)("div", { ...tree.getContainerProps("Project files"), className: styles_module_scss_1.default.tree, children: [treeItems.map((item, i) => ((0, jsx_runtime_1.jsx)(FileTreeItem_1.FileTreeItem, { item: item, guides: guidesByIndex[i], activeLevel: activeLevel, isContextMenuAvailable: !isReadOnly }, item.getId()))), (0, jsx_runtime_1.jsx)("div", { style: tree.getDragLineStyle(), className: styles_module_scss_1.default.dragline })] })) : ((0, jsx_runtime_1.jsx)(EmptyStateMessage_1.EmptyStateMessage, {}))] }));
|
|
83809
|
+
return ((0, jsx_runtime_1.jsxs)(FileTreeContext_1.TreeContext.Provider, { value: treeCtx, children: [(0, jsx_runtime_1.jsx)(FileTreeActions_1.FileTreeActions, { hasExpandedNodes: Boolean(tree.getState().expandedItems.length), treeId: treeItems.length > 0 ? treeId : undefined }), treeItems.length > 0 ? ((0, jsx_runtime_1.jsxs)("div", { ...tree.getContainerProps("Project files"), id: treeId, onBlur: handleFocusLeavingTree, className: styles_module_scss_1.default.tree, children: [treeItems.map((item, i) => ((0, jsx_runtime_1.jsx)(FileTreeItem_1.FileTreeItem, { item: item, guides: guidesByIndex[i], activeLevel: activeLevel, isContextMenuAvailable: !isReadOnly }, item.getId()))), (0, jsx_runtime_1.jsx)("div", { style: tree.getDragLineStyle(), className: styles_module_scss_1.default.dragline })] })) : ((0, jsx_runtime_1.jsx)(EmptyStateMessage_1.EmptyStateMessage, {}))] }));
|
|
83738
83810
|
};
|
|
83739
83811
|
exports.FileTree = FileTree;
|
|
83740
83812
|
|
|
@@ -87348,6 +87420,7 @@ exports["default"] = exports.UserSlice.reducer;
|
|
|
87348
87420
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
87349
87421
|
exports.fsImportFolder = exports.fsImportFiles = exports.fsRemove = exports.fsAdd = exports.fsMove = exports.fsRename = void 0;
|
|
87350
87422
|
const sendToast_1 = __webpack_require__(50068);
|
|
87423
|
+
const announce_1 = __webpack_require__(29331);
|
|
87351
87424
|
const fileValidation_1 = __webpack_require__(59615);
|
|
87352
87425
|
const planners_1 = __webpack_require__(5819);
|
|
87353
87426
|
const utils_1 = __webpack_require__(33321);
|
|
@@ -87355,6 +87428,7 @@ const constants_1 = __webpack_require__(16287);
|
|
|
87355
87428
|
const EditorTypes_1 = __webpack_require__(42108);
|
|
87356
87429
|
const ProjectTypes_1 = __webpack_require__(27130);
|
|
87357
87430
|
const macSystemFiles_1 = __webpack_require__(18213);
|
|
87431
|
+
const projectHelpers_1 = __webpack_require__(2610);
|
|
87358
87432
|
const EditorSlice_1 = __webpack_require__(68512);
|
|
87359
87433
|
const selectComponents = (state) => {
|
|
87360
87434
|
return state.editor.project.components ?? [];
|
|
@@ -87368,6 +87442,30 @@ const DELETE_SUCCESS_TOAST = {
|
|
|
87368
87442
|
[ProjectTypes_1.ProjectComponentType.DIR]: "The folder has been successfully deleted.",
|
|
87369
87443
|
[ProjectTypes_1.ProjectComponentType.FILE]: "The file has been successfully deleted.",
|
|
87370
87444
|
};
|
|
87445
|
+
// Screen-reader copy: shorter and single-line than the toasts.
|
|
87446
|
+
const kindOf = (component) => component.type === ProjectTypes_1.ProjectComponentType.DIR ? "Folder" : "File";
|
|
87447
|
+
const fileCount = (count) => `${count} ${count === 1 ? "file" : "files"}`;
|
|
87448
|
+
const withDuplicates = (summary, hasDuplicates) => hasDuplicates ? `${summary} Duplicate names were renamed.` : summary;
|
|
87449
|
+
const filesUploadedMessage = (uploaded, total, hasDuplicates, singleName) => {
|
|
87450
|
+
if (uploaded === 0) {
|
|
87451
|
+
return `Upload failed. ${fileCount(total)} could not be uploaded.`;
|
|
87452
|
+
}
|
|
87453
|
+
if (uploaded < total) {
|
|
87454
|
+
return withDuplicates(`${uploaded} of ${fileCount(total)} uploaded, ${total - uploaded} failed.`, hasDuplicates);
|
|
87455
|
+
}
|
|
87456
|
+
const summary = uploaded === 1 && singleName
|
|
87457
|
+
? `${singleName} uploaded.`
|
|
87458
|
+
: `${fileCount(uploaded)} uploaded.`;
|
|
87459
|
+
return withDuplicates(summary, hasDuplicates);
|
|
87460
|
+
};
|
|
87461
|
+
const folderUploadedMessage = (folderName, uploaded, total, hasDuplicates) => {
|
|
87462
|
+
if (uploaded === 0)
|
|
87463
|
+
return `Folder ${folderName} could not be uploaded.`;
|
|
87464
|
+
const summary = uploaded === total
|
|
87465
|
+
? `Folder ${folderName} uploaded with ${fileCount(uploaded)}.`
|
|
87466
|
+
: `Folder ${folderName} uploaded with ${uploaded} of ${fileCount(total)}, ${total - uploaded} failed.`;
|
|
87467
|
+
return withDuplicates(summary, hasDuplicates);
|
|
87468
|
+
};
|
|
87371
87469
|
const hasCaseInsensitiveDuplicateNames = (files) => {
|
|
87372
87470
|
const seen = new Set();
|
|
87373
87471
|
for (const file of files) {
|
|
@@ -87383,8 +87481,16 @@ const fsRename = ({ id, parentId, newName, }) => (dispatch, getState) => {
|
|
|
87383
87481
|
const state = getState();
|
|
87384
87482
|
const components = selectComponents(state);
|
|
87385
87483
|
const componentsMap = (0, utils_1.buildComponentsById)(components);
|
|
87484
|
+
const component = componentsMap.get(id);
|
|
87386
87485
|
const patch = (0, planners_1.planRename)(id, parentId, newName, componentsMap);
|
|
87387
87486
|
dispatch((0, EditorSlice_1.applyComponentsPatch)(patch));
|
|
87487
|
+
if (!component)
|
|
87488
|
+
return;
|
|
87489
|
+
// The tree creates items nameless and names them through this rename, so an
|
|
87490
|
+
// empty previous name means a create.
|
|
87491
|
+
(0, announce_1.announce)(component.name
|
|
87492
|
+
? `${(0, projectHelpers_1.getFullComponentName)(component)} renamed to ${newName}`
|
|
87493
|
+
: `${kindOf(component)} ${newName} created`);
|
|
87388
87494
|
};
|
|
87389
87495
|
exports.fsRename = fsRename;
|
|
87390
87496
|
const fsMove = ({ id, parentId }) => (dispatch, getState) => {
|
|
@@ -87392,8 +87498,15 @@ const fsMove = ({ id, parentId }) => (dispatch, getState) => {
|
|
|
87392
87498
|
const components = selectComponents(state);
|
|
87393
87499
|
const componentsMap = (0, utils_1.buildComponentsById)(components);
|
|
87394
87500
|
const parentByChildId = (0, utils_1.buildParentByChildId)(components);
|
|
87501
|
+
const destination = componentsMap.get(parentId);
|
|
87395
87502
|
const patch = (0, planners_1.planMove)(id, parentId, componentsMap, parentByChildId);
|
|
87396
87503
|
dispatch((0, EditorSlice_1.applyComponentsPatch)(patch));
|
|
87504
|
+
// Absent from the patch means nothing moved. Use the planned name: it may
|
|
87505
|
+
// have been made unique in the new parent.
|
|
87506
|
+
const moved = patch.upsert.find((component) => component.id === id);
|
|
87507
|
+
if (moved && destination) {
|
|
87508
|
+
(0, announce_1.announce)(`${(0, projectHelpers_1.getFullComponentName)(moved)} moved to ${destination.name || "the project root"}`);
|
|
87509
|
+
}
|
|
87397
87510
|
};
|
|
87398
87511
|
exports.fsMove = fsMove;
|
|
87399
87512
|
const fsAdd = ({ component, parentId, }) => (dispatch, getState) => {
|
|
@@ -87402,6 +87515,7 @@ const fsAdd = ({ component, parentId, }) => (dispatch, getState) => {
|
|
|
87402
87515
|
if (component.type === ProjectTypes_1.ProjectComponentType.FILE &&
|
|
87403
87516
|
!(0, utils_1.validateProjectFilesCount)(components, 1)) {
|
|
87404
87517
|
(0, sendToast_1.showError)(filesCountErrorMessage);
|
|
87518
|
+
(0, announce_1.announce)(filesCountErrorMessage);
|
|
87405
87519
|
return;
|
|
87406
87520
|
}
|
|
87407
87521
|
const componentsMap = (0, utils_1.buildComponentsById)(components);
|
|
@@ -87410,6 +87524,7 @@ const fsAdd = ({ component, parentId, }) => (dispatch, getState) => {
|
|
|
87410
87524
|
if (component.type === ProjectTypes_1.ProjectComponentType.FILE) {
|
|
87411
87525
|
dispatch((0, EditorSlice_1.openFile)({ id: component.id }));
|
|
87412
87526
|
}
|
|
87527
|
+
// Silent: the draft is nameless here, and fsRename announces the create.
|
|
87413
87528
|
};
|
|
87414
87529
|
exports.fsAdd = fsAdd;
|
|
87415
87530
|
const fsRemove = (id) => (dispatch, getState) => {
|
|
@@ -87427,8 +87542,10 @@ const fsRemove = (id) => (dispatch, getState) => {
|
|
|
87427
87542
|
dispatch((0, EditorSlice_1.closeFile)({ id }));
|
|
87428
87543
|
});
|
|
87429
87544
|
dispatch((0, EditorSlice_1.applyComponentsPatch)(patch));
|
|
87430
|
-
if (component)
|
|
87545
|
+
if (component) {
|
|
87431
87546
|
(0, sendToast_1.showSuccess)(DELETE_SUCCESS_TOAST[component.type]);
|
|
87547
|
+
(0, announce_1.announce)(`${kindOf(component)} ${(0, projectHelpers_1.getFullComponentName)(component)} deleted`);
|
|
87548
|
+
}
|
|
87432
87549
|
};
|
|
87433
87550
|
exports.fsRemove = fsRemove;
|
|
87434
87551
|
const fsImportFiles = ({ files, parentId }) => async (dispatch, getState) => {
|
|
@@ -87440,10 +87557,12 @@ const fsImportFiles = ({ files, parentId }) => async (dispatch, getState) => {
|
|
|
87440
87557
|
return;
|
|
87441
87558
|
if (!(0, utils_1.validateProjectFilesCount)(components, importableFiles.length)) {
|
|
87442
87559
|
(0, sendToast_1.showError)(filesCountErrorMessage);
|
|
87560
|
+
(0, announce_1.announce)(filesCountErrorMessage);
|
|
87443
87561
|
return;
|
|
87444
87562
|
}
|
|
87445
87563
|
const { validFiles, importErrors } = (0, fileValidation_1.validateFiles)(importableFiles);
|
|
87446
87564
|
const hasDuplicates = hasCaseInsensitiveDuplicateNames(validFiles);
|
|
87565
|
+
const summary = filesUploadedMessage(validFiles.length, importableFiles.length, hasDuplicates, validFiles[0]?.name);
|
|
87447
87566
|
if (validFiles.length > 0) {
|
|
87448
87567
|
(0, sendToast_1.showSuccess)(`Selected files uploaded successfully.\n${validFiles.length} of ${importableFiles.length} file(s) uploaded.`);
|
|
87449
87568
|
if (hasDuplicates) {
|
|
@@ -87452,6 +87571,7 @@ const fsImportFiles = ({ files, parentId }) => async (dispatch, getState) => {
|
|
|
87452
87571
|
}
|
|
87453
87572
|
else {
|
|
87454
87573
|
(0, sendToast_1.showError)(`Selected files couldn’t be uploaded.\n${importableFiles.length} file(s) failed to upload.`);
|
|
87574
|
+
(0, announce_1.announce)(summary);
|
|
87455
87575
|
}
|
|
87456
87576
|
for (const error of importErrors) {
|
|
87457
87577
|
(0, sendToast_1.showError)(error.reason);
|
|
@@ -87466,6 +87586,7 @@ const fsImportFiles = ({ files, parentId }) => async (dispatch, getState) => {
|
|
|
87466
87586
|
dispatch((0, EditorSlice_1.queueBinaryWrites)({
|
|
87467
87587
|
writes: binaryWrites,
|
|
87468
87588
|
}));
|
|
87589
|
+
(0, announce_1.announce)(summary);
|
|
87469
87590
|
};
|
|
87470
87591
|
exports.fsImportFiles = fsImportFiles;
|
|
87471
87592
|
const fsImportFolder = ({ files, parentId }) => async (dispatch, getState) => {
|
|
@@ -87479,11 +87600,13 @@ const fsImportFolder = ({ files, parentId }) => async (dispatch, getState) => {
|
|
|
87479
87600
|
return;
|
|
87480
87601
|
if (!(0, utils_1.validateProjectFilesCount)(components, importableFiles.length)) {
|
|
87481
87602
|
(0, sendToast_1.showError)(filesCountErrorMessage);
|
|
87603
|
+
(0, announce_1.announce)(filesCountErrorMessage);
|
|
87482
87604
|
return;
|
|
87483
87605
|
}
|
|
87484
87606
|
const folderName = importableFiles[0]?.webkitRelativePath?.split("/")[0];
|
|
87485
87607
|
const { validFiles, importErrors } = (0, fileValidation_1.validateFiles)(importableFiles);
|
|
87486
87608
|
const hasDuplicates = hasCaseInsensitiveDuplicateNames(validFiles);
|
|
87609
|
+
const summary = folderUploadedMessage(folderName ?? "", validFiles.length, importableFiles.length, hasDuplicates);
|
|
87487
87610
|
if (validFiles.length > 0) {
|
|
87488
87611
|
(0, sendToast_1.showSuccess)(`Folder '${folderName}' upload complete.\n${validFiles.length} of ${importableFiles.length} file(s) uploaded successfully.`);
|
|
87489
87612
|
if (hasDuplicates) {
|
|
@@ -87492,6 +87615,7 @@ const fsImportFolder = ({ files, parentId }) => async (dispatch, getState) => {
|
|
|
87492
87615
|
}
|
|
87493
87616
|
else {
|
|
87494
87617
|
(0, sendToast_1.showError)(`'${folderName}' folder couldn't be uploaded.\n${importableFiles.length} file(s) failed to upload.`);
|
|
87618
|
+
(0, announce_1.announce)(summary);
|
|
87495
87619
|
}
|
|
87496
87620
|
for (const error of importErrors) {
|
|
87497
87621
|
(0, sendToast_1.showError)(error.reason);
|
|
@@ -87509,6 +87633,7 @@ const fsImportFolder = ({ files, parentId }) => async (dispatch, getState) => {
|
|
|
87509
87633
|
dispatch((0, EditorSlice_1.queueBinaryWrites)({
|
|
87510
87634
|
writes: binaryWrites,
|
|
87511
87635
|
}));
|
|
87636
|
+
(0, announce_1.announce)(summary);
|
|
87512
87637
|
};
|
|
87513
87638
|
exports.fsImportFolder = fsImportFolder;
|
|
87514
87639
|
|
|
@@ -88040,6 +88165,115 @@ class LeaveGuardController {
|
|
|
88040
88165
|
exports.LeaveGuardController = LeaveGuardController;
|
|
88041
88166
|
|
|
88042
88167
|
|
|
88168
|
+
/***/ }),
|
|
88169
|
+
|
|
88170
|
+
/***/ 29331:
|
|
88171
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
88172
|
+
|
|
88173
|
+
|
|
88174
|
+
/**
|
|
88175
|
+
* Screen-reader status messages. Two rules: a message must
|
|
88176
|
+
* be a node inserted into a region already on the page, and a live region is
|
|
88177
|
+
* never heard while focus moves - hence describeFocusTarget().
|
|
88178
|
+
*/
|
|
88179
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
88180
|
+
exports.resetAnnouncements = exports.describeFocusTarget = exports.announce = exports.FOCUS_SETTLE_MS = void 0;
|
|
88181
|
+
// How long a message waits for a focus target to claim it.
|
|
88182
|
+
exports.FOCUS_SETTLE_MS = 150;
|
|
88183
|
+
// How long a message stays in the DOM once read.
|
|
88184
|
+
const MESSAGE_TTL_MS = 5000;
|
|
88185
|
+
const HIDDEN_STYLE = "position:absolute;inline-size:1px;block-size:1px;margin:-1px;padding:0;" +
|
|
88186
|
+
"overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0";
|
|
88187
|
+
let live = null;
|
|
88188
|
+
// Not a live region: holds text referenced by aria-describedby.
|
|
88189
|
+
let descriptions = null;
|
|
88190
|
+
let pending = null;
|
|
88191
|
+
let claimable = null;
|
|
88192
|
+
let descriptionCount = 0;
|
|
88193
|
+
const mount = () => {
|
|
88194
|
+
if (live)
|
|
88195
|
+
return;
|
|
88196
|
+
const host = document.createElement("div");
|
|
88197
|
+
host.setAttribute("style", HIDDEN_STYLE);
|
|
88198
|
+
live = document.createElement("div");
|
|
88199
|
+
live.setAttribute("role", "alert");
|
|
88200
|
+
live.setAttribute("aria-live", "assertive");
|
|
88201
|
+
descriptions = document.createElement("div");
|
|
88202
|
+
host.append(live, descriptions);
|
|
88203
|
+
document.body.appendChild(host);
|
|
88204
|
+
};
|
|
88205
|
+
if (typeof document !== "undefined") {
|
|
88206
|
+
if (document.body)
|
|
88207
|
+
mount();
|
|
88208
|
+
else
|
|
88209
|
+
document.addEventListener("DOMContentLoaded", mount, { once: true });
|
|
88210
|
+
}
|
|
88211
|
+
const announce = (message) => {
|
|
88212
|
+
const text = message.replace(/\s+/g, " ").trim();
|
|
88213
|
+
if (!text)
|
|
88214
|
+
return;
|
|
88215
|
+
claimable = text;
|
|
88216
|
+
if (pending)
|
|
88217
|
+
clearTimeout(pending);
|
|
88218
|
+
pending = setTimeout(() => {
|
|
88219
|
+
pending = null;
|
|
88220
|
+
if (claimable === null || !live)
|
|
88221
|
+
return;
|
|
88222
|
+
const node = document.createElement("div");
|
|
88223
|
+
node.textContent = claimable;
|
|
88224
|
+
claimable = null;
|
|
88225
|
+
live.appendChild(node);
|
|
88226
|
+
setTimeout(() => node.remove(), MESSAGE_TTL_MS);
|
|
88227
|
+
}, exports.FOCUS_SETTLE_MS);
|
|
88228
|
+
};
|
|
88229
|
+
exports.announce = announce;
|
|
88230
|
+
const describeFocusTarget = (element) => {
|
|
88231
|
+
if (claimable === null || !descriptions)
|
|
88232
|
+
return;
|
|
88233
|
+
const text = claimable;
|
|
88234
|
+
claimable = null;
|
|
88235
|
+
if (pending) {
|
|
88236
|
+
clearTimeout(pending);
|
|
88237
|
+
pending = null;
|
|
88238
|
+
}
|
|
88239
|
+
const id = `textjam-status-${(descriptionCount += 1)}`;
|
|
88240
|
+
const node = document.createElement("div");
|
|
88241
|
+
node.id = id;
|
|
88242
|
+
node.textContent = text;
|
|
88243
|
+
descriptions.appendChild(node);
|
|
88244
|
+
element.setAttribute("aria-describedby", [element.getAttribute("aria-describedby"), id].filter(Boolean).join(" "));
|
|
88245
|
+
// Only describes the action just taken, so drop it on blur.
|
|
88246
|
+
const cleanup = () => {
|
|
88247
|
+
if (!node.isConnected)
|
|
88248
|
+
return;
|
|
88249
|
+
element.removeEventListener("blur", cleanup);
|
|
88250
|
+
const next = (element.getAttribute("aria-describedby") ?? "")
|
|
88251
|
+
.split(/\s+/)
|
|
88252
|
+
.filter(Boolean)
|
|
88253
|
+
.filter((token) => token !== id)
|
|
88254
|
+
.join(" ");
|
|
88255
|
+
if (next)
|
|
88256
|
+
element.setAttribute("aria-describedby", next);
|
|
88257
|
+
else
|
|
88258
|
+
element.removeAttribute("aria-describedby");
|
|
88259
|
+
node.remove();
|
|
88260
|
+
};
|
|
88261
|
+
element.addEventListener("blur", cleanup);
|
|
88262
|
+
setTimeout(cleanup, MESSAGE_TTL_MS);
|
|
88263
|
+
};
|
|
88264
|
+
exports.describeFocusTarget = describeFocusTarget;
|
|
88265
|
+
/** Test helper: empties the regions and drops any pending message. */
|
|
88266
|
+
const resetAnnouncements = () => {
|
|
88267
|
+
if (pending)
|
|
88268
|
+
clearTimeout(pending);
|
|
88269
|
+
pending = null;
|
|
88270
|
+
claimable = null;
|
|
88271
|
+
live?.replaceChildren();
|
|
88272
|
+
descriptions?.replaceChildren();
|
|
88273
|
+
};
|
|
88274
|
+
exports.resetAnnouncements = resetAnnouncements;
|
|
88275
|
+
|
|
88276
|
+
|
|
88043
88277
|
/***/ }),
|
|
88044
88278
|
|
|
88045
88279
|
/***/ 5060:
|
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-module__itemButton--oB91C:focus-visible{outline:none}.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__itemButton--oB91C:focus-visible{outline:none}.styles-module__itemSelected--JLLW5 .styles-module__itemContent--663gn{background-color:#c5ffe8}.styles-module__itemSelected--JLLW5 .styles-module__itemButton--oB91C,.styles-module__itemFocused--SmUbE .styles-module__itemButton--oB91C{display:flex}.styles-module__itemContent--663gn:hover .styles-module__itemButton--oB91C,.styles-module__itemContent--663gn:focus-within .styles-module__itemButton--oB91C{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}
|
|
@@ -711,7 +711,7 @@
|
|
|
711
711
|
:root{--rpf-white: #ffffff}.styles-module__projRunnerContainer--ImBw-{display:flex;flex:5;border-radius:calc(.5rem*var(--scale-factor, 1));overflow:visible}.styles-module__projRunnerContainer--ImBw- .styles-module__react-tabs__tab-panel--selected--z2CLa{overflow-y:auto}.styles-module__projRunnerContainer--ImBw- .styles-module__react-tabs__tab-list--GLkmj{flex:1}.styles-module__projRunnerContainer--ImBw- .styles-module__react-tabs__tab-container--yOCPX .styles-module__btn--run--Nwouj,.styles-module__projRunnerContainer--ImBw- .styles-module__react-tabs__tab-container--yOCPX .styles-module__btn--stop--NAmPu{margin-block-start:0;margin-block-end:0}
|
|
712
712
|
:root{--rpf-white: #ffffff}.styles-module__outputPreview--dHe0z{display:flex;flex:1 1 auto;block-size:auto;overflow:hidden;background-color:#fff}
|
|
713
713
|
:root{--rpf-white: #ffffff}.styles-module__modalOverlay--uz0ee{display:flex;align-items:center;justify-content:center;padding:calc(5rem*var(--scale-factor, 1));z-index:800;position:fixed;inset:0px;background-color:HSL(0, 0%, 14%, 30%)}@media screen and (max-width: 480px){.styles-module__modalOverlay--uz0ee{padding:calc(2rem*var(--scale-factor, 1))}}.styles-module__modalContent--PcRss{font-family:Roboto,-apple-system,BlinkMacSystemFont,"Segoe UI",Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",sans-serif;max-block-size:100%;border:0;display:flex;flex-direction:column;border-radius:calc(.75rem*var(--scale-factor, 1));padding:calc(1.5rem*var(--scale-factor, 1));background-color:#fff;outline:none}.styles-module__modalContent--PcRss:focus{outline:none}.styles-module__modalContentHeader--U85mA{display:flex;align-items:center;min-block-size:fit-content}.styles-module__modalContentHeader--U85mA button{margin-inline-start:auto;block-size:fit-content}.styles-module__modalContentHeading--Pj43a{font-size:calc(1.5rem*var(--scale-factor, 1));line-height:calc(2rem*var(--scale-factor, 1));margin-block:calc(.5rem*var(--scale-factor, 1));margin-inline:calc(.5rem*var(--scale-factor, 1)) 0}.styles-module__modalContentBody--8Fp1K{padding-block-start:0;display:flex;flex-direction:column;row-gap:calc(.5rem*var(--scale-factor, 1));overflow-y:auto}.styles-module__modalContentSubHeading--YtzNg{font-size:calc(1rem*var(--scale-factor, 1));line-height:calc(1.5rem*var(--scale-factor, 1));margin:0;font-weight:700}.styles-module__modalContentText--qERKp{margin:0;line-height:1.4}.styles-module__modalContentButtons--3eyjq{display:flex;flex-wrap:wrap;flex-direction:row-reverse;justify-content:flex-start;gap:calc(.5rem*var(--scale-factor, 1));padding:0px}@media screen and (max-width: 480px){.styles-module__modalContentButtons--3eyjq{display:flex;flex-direction:column}}.styles-module__modalContentButtons--3eyjq button,.styles-module__modalContentButtons--3eyjq a{margin:0}.styles-module__modalContentButtons--3eyjq button span,.styles-module__modalContentButtons--3eyjq a span{inline-size:100%}@media screen and (max-width: 480px){.styles-module__modalContentButtons--3eyjq button,.styles-module__modalContentButtons--3eyjq a{inline-size:100%}}.styles-module__buttonClose--NQ701{background-color:rgba(0,0,0,0);inline-size:calc(1rem*var(--scale-factor, 1));block-size:calc(1rem*var(--scale-factor, 1))}.styles-module__buttonClose--NQ701 svg{color:#003046;fill:#003046;inline-size:calc(1rem*var(--scale-factor, 1));block-size:calc(1rem*var(--scale-factor, 1));padding:0px}.styles-module__headerContainer--yr6W5{text-align:center}.styles-module__headerText---tBwm{font-weight:400;font-size:calc(1.5rem*var(--scale-factor, 1));line-height:calc(2rem*var(--scale-factor, 1));text-align:center}.styles-module__headerIcon--Hof0F{text-align:center;inline-size:calc(2rem*var(--scale-factor, 1));block-size:calc(2rem*var(--scale-factor, 1))}.styles-module__modalContentButtons--3eyjq button span{font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1))}
|
|
714
|
-
:root{--rpf-white: #ffffff}.styles-module__content--khecF{inline-size:454px;max-inline-size:calc(100vw - 2*1rem*var(--scale-factor, 1))}.styles-module__headerIcon--fnE18 path{stroke:#33625e}.styles-module__headerText--ua6h6{color:#003046;font-weight:400;font-size:24px;line-height:34px;text-align:center}.styles-module__copyButton--jEsq1{flex-shrink:0;color:#003046;font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1))}.styles-module__copyButtonSelected--4baTP,.styles-module__copyButtonSelected--4baTP:hover,.styles-module__copyButtonSelected--4baTP:active{background:#fff;border
|
|
714
|
+
:root{--rpf-white: #ffffff}.styles-module__content--khecF{inline-size:454px;max-inline-size:calc(100vw - 2*1rem*var(--scale-factor, 1))}.styles-module__headerIcon--fnE18 path{stroke:#33625e}.styles-module__headerText--ua6h6{color:#003046;font-weight:400;font-size:24px;line-height:34px;text-align:center}.styles-module__copyButton--jEsq1{flex-shrink:0;color:#003046;border:1px solid rgba(0,0,0,0);padding:calc(.75rem*var(--scale-factor, 1) - 1px) calc(1.25rem*var(--scale-factor, 1) - 1px);font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1))}.styles-module__copyButtonSelected--4baTP,.styles-module__copyButtonSelected--4baTP:hover,.styles-module__copyButtonSelected--4baTP:active{background:#fff;border-color:#003046}.styles-module__tabContainer--Xb4IP{block-size:40px;margin-block-start:calc(.5rem*var(--scale-factor, 1))}.styles-module__tabButton--4BrBv{font-family:Roboto,-apple-system,BlinkMacSystemFont,"Segoe UI",Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",sans-serif;padding:calc(.75rem*var(--scale-factor, 1)) calc(1rem*var(--scale-factor, 1));background-color:#e5e5e5;font-weight:500;font-size:calc(.75rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1));letter-spacing:"0%";text-align:center;color:#527d7a;cursor:pointer}.styles-module__tabButton--4BrBv:first-child{border-start-start-radius:calc(.75rem*var(--scale-factor, 1));border-end-start-radius:calc(.75rem*var(--scale-factor, 1))}.styles-module__tabButton--4BrBv:last-child{border-start-end-radius:calc(.75rem*var(--scale-factor, 1));border-end-end-radius:calc(.75rem*var(--scale-factor, 1))}.styles-module__tabButtonActive--CdxX8{background-color:#c5ffe8;color:#003046}.styles-module__containerBox--rwoTV{margin-block-start:calc(.5rem*var(--scale-factor, 1));display:flex;align-items:center}.styles-module__linkContainer--XPt-Q{background-color:#c5ffe8;border-radius:calc(.5rem*var(--scale-factor, 1));display:flex;align-items:center;padding:calc(.875rem*var(--scale-factor, 1)) calc(1.25rem*var(--scale-factor, 1));flex:1;margin-inline-end:calc(.75rem*var(--scale-factor, 1));overflow:hidden}.styles-module__linkText--3vzcO{font-weight:600;flex:1;color:#33625e;font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1));overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
|
|
715
715
|
:root{--rpf-white: #ffffff}.styles-module__versionDate--OLHbO{font-weight:500;font-size:18px;line-height:30px;margin-block-start:calc(.5rem*var(--scale-factor, 1));color:#33625e}.styles-module__loadingButton--77kAZ{display:flex;flex-direction:row;align-items:center;gap:calc(.5rem*var(--scale-factor, 1))}
|
|
716
716
|
:root{--rpf-white: #ffffff}.base-module__modalOverlay--f2LcG{display:flex;align-items:center;justify-content:center;padding:calc(5rem*var(--scale-factor, 1));z-index:800;position:fixed;inset:0px;background-color:HSL(0, 0%, 14%, 30%)}.base-module__modalContent--uIBvv{max-block-size:100%;border:0;display:flex;flex-direction:column;border-radius:calc(.75rem*var(--scale-factor, 1));padding:calc(1.5rem*var(--scale-factor, 1));background-color:#fff;gap:calc(.5rem*var(--scale-factor, 1))}.base-module__modalContent--uIBvv:focus,.base-module__modalContent--uIBvv:focus-visible{outline:none}.base-module__header--yqkGA{display:flex;flex-direction:column;align-items:center;justify-content:center;min-block-size:fit-content;font-size:calc(1.5rem*var(--scale-factor, 1));line-height:calc(2rem*var(--scale-factor, 1))}.base-module__headerContent--UL1eM{display:flex;align-items:center;flex-direction:column;gap:calc(.5rem*var(--scale-factor, 1));inline-size:100%}.base-module__body--0dDkY{padding-block-start:0;display:flex;flex-direction:column;text-align:center;row-gap:calc(.5rem*var(--scale-factor, 1));overflow-y:auto}.base-module__footer--YgVxg{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:calc(.5rem*var(--scale-factor, 1))}.base-module__footer--YgVxg button,.base-module__footer--YgVxg a{margin:0;font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1))}.base-module__headerButtonContainer--A3leX{inline-size:100%;display:flex;align-items:center;justify-content:flex-end}.base-module__buttonClose--EPig\+{background-color:rgba(0,0,0,0);inline-size:calc(1rem*var(--scale-factor, 1));block-size:calc(1rem*var(--scale-factor, 1))}.base-module__buttonClose--EPig\+ svg{color:#003046;fill:#003046;inline-size:calc(1rem*var(--scale-factor, 1));block-size:calc(1rem*var(--scale-factor, 1));padding:0px}.base-module__infoBox--ggEhk{inline-size:100%;background-color:#b9e6ee;border-radius:calc(.5rem*var(--scale-factor, 1));padding:calc(1rem*var(--scale-factor, 1));display:flex;align-items:center;gap:calc(.5rem*var(--scale-factor, 1));overflow-wrap:anywhere}.base-module__infoBox--ggEhk svg{margin:calc(.125rem*var(--scale-factor, 1));color:#0d47a1}
|
|
717
717
|
:root{--rpf-white: #ffffff}.styles-module__content--uVl64{inline-size:330px;gap:0px}.styles-module__headerContainer--FPLYl{text-align:center}.styles-module__headerIcon--VUrhy path{fill:#e0201c}.styles-module__headerText--F\+NA0{color:#003046;line-height:34px}.styles-module__containerBox--Dezow{margin-block-start:calc(.25rem*var(--scale-factor, 1));color:#242424;font-weight:400;font-size:calc(.75rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1));text-align:center}.styles-module__buttonsContainer--pnT1Q{margin-block-start:calc(.75rem*var(--scale-factor, 1));padding-block-end:0}
|
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.10",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/GirlsFirst/gwchq-textjam",
|
|
7
7
|
"author": "Girls Who Code HQ",
|