gwchq-textjam 0.2.20 → 0.2.22
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 +191 -82
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -68344,8 +68344,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
68344
68344
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
68345
68345
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
68346
68346
|
/* harmony export */ });
|
|
68347
|
-
/* harmony import */ var
|
|
68348
|
-
/* harmony import */ var
|
|
68347
|
+
/* harmony import */ var C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(89379);
|
|
68348
|
+
/* harmony import */ var C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(53986);
|
|
68349
68349
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51649);
|
|
68350
68350
|
/* harmony import */ var _hello_pangea_dnd__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(98850);
|
|
68351
68351
|
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14062);
|
|
@@ -68369,7 +68369,7 @@ var DraggableTab = _ref => {
|
|
|
68369
68369
|
panelIndex,
|
|
68370
68370
|
fileIndex
|
|
68371
68371
|
} = _ref,
|
|
68372
|
-
otherProps = (0,
|
|
68372
|
+
otherProps = (0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)(_ref, _excluded);
|
|
68373
68373
|
var openFiles = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useSelector)(state => state.editor.openedFiles);
|
|
68374
68374
|
var openFilesCount = openFiles[panelIndex].length;
|
|
68375
68375
|
var dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useDispatch)();
|
|
@@ -68386,7 +68386,7 @@ var DraggableTab = _ref => {
|
|
|
68386
68386
|
switchToFileTab(panelIndex, (fileIndex + openFilesCount - 1) % openFilesCount);
|
|
68387
68387
|
}
|
|
68388
68388
|
};
|
|
68389
|
-
var InnerTab = () => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(react_tabs__WEBPACK_IMPORTED_MODULE_2__.Tab, (0,
|
|
68389
|
+
var InnerTab = () => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(react_tabs__WEBPACK_IMPORTED_MODULE_2__.Tab, (0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
|
|
68390
68390
|
onClick: e => {
|
|
68391
68391
|
e.stopPropagation();
|
|
68392
68392
|
switchToFileTab(panelIndex, fileIndex);
|
|
@@ -68404,7 +68404,7 @@ var DraggableTab = _ref => {
|
|
|
68404
68404
|
draggableProps,
|
|
68405
68405
|
dragHandleProps
|
|
68406
68406
|
} = _ref2;
|
|
68407
|
-
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("div", (0,
|
|
68407
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("div", (0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
|
|
68408
68408
|
className: "draggable-tab",
|
|
68409
68409
|
ref: innerRef
|
|
68410
68410
|
}, draggableProps), dragHandleProps), {}, {
|
|
@@ -68426,8 +68426,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
68426
68426
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
68427
68427
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
68428
68428
|
/* harmony export */ });
|
|
68429
|
-
/* harmony import */ var
|
|
68430
|
-
/* harmony import */ var
|
|
68429
|
+
/* harmony import */ var C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(89379);
|
|
68430
|
+
/* harmony import */ var C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(53986);
|
|
68431
68431
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51649);
|
|
68432
68432
|
/* harmony import */ var _hello_pangea_dnd__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(98850);
|
|
68433
68433
|
/* harmony import */ var react_tabs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39243);
|
|
@@ -68446,8 +68446,8 @@ var DroppableTabList = _ref => {
|
|
|
68446
68446
|
children: _children,
|
|
68447
68447
|
index
|
|
68448
68448
|
} = _ref,
|
|
68449
|
-
otherProps = (0,
|
|
68450
|
-
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(react_tabs__WEBPACK_IMPORTED_MODULE_1__.TabList, (0,
|
|
68449
|
+
otherProps = (0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(_ref, _excluded);
|
|
68450
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(react_tabs__WEBPACK_IMPORTED_MODULE_1__.TabList, (0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)((0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)({}, otherProps), {}, {
|
|
68451
68451
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_hello_pangea_dnd__WEBPACK_IMPORTED_MODULE_6__.Droppable, {
|
|
68452
68452
|
direction: "horizontal",
|
|
68453
68453
|
droppableId: index.toString(),
|
|
@@ -68457,7 +68457,7 @@ var DroppableTabList = _ref => {
|
|
|
68457
68457
|
droppableProps,
|
|
68458
68458
|
placeholder
|
|
68459
68459
|
} = _ref2;
|
|
68460
|
-
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", (0,
|
|
68460
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", (0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)((0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)({
|
|
68461
68461
|
className: "droppable-tab-list"
|
|
68462
68462
|
}, droppableProps), {}, {
|
|
68463
68463
|
ref: innerRef,
|
|
@@ -103011,7 +103011,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
103011
103011
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
103012
103012
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
103013
103013
|
/* harmony export */ });
|
|
103014
|
-
/* harmony import */ var
|
|
103014
|
+
/* harmony import */ var C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(89379);
|
|
103015
103015
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51649);
|
|
103016
103016
|
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14062);
|
|
103017
103017
|
/* harmony import */ var _redux_EditorSlice__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(68512);
|
|
@@ -103031,6 +103031,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
103031
103031
|
|
|
103032
103032
|
|
|
103033
103033
|
|
|
103034
|
+
var defaultProjectName = "New project";
|
|
103035
|
+
var getProjectName = project => (project === null || project === void 0 ? void 0 : project.name) || defaultProjectName;
|
|
103034
103036
|
var ProjectName = _ref => {
|
|
103035
103037
|
var {
|
|
103036
103038
|
className = null,
|
|
@@ -103038,17 +103040,23 @@ var ProjectName = _ref => {
|
|
|
103038
103040
|
editable = true
|
|
103039
103041
|
} = _ref;
|
|
103040
103042
|
var project = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useSelector)(state => state.editor.project, react_redux__WEBPACK_IMPORTED_MODULE_1__.shallowEqual);
|
|
103043
|
+
var projectName = getProjectName(project);
|
|
103041
103044
|
var dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useDispatch)();
|
|
103045
|
+
var nameInput = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
|
|
103046
|
+
var nameBeforeEditingRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(projectName);
|
|
103047
|
+
var [isEditing, setEditing] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
103048
|
+
var [name, setName] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(projectName);
|
|
103042
103049
|
var {
|
|
103043
103050
|
hovered,
|
|
103044
103051
|
hoverProps
|
|
103045
|
-
} = (0,_hooks_useHover__WEBPACK_IMPORTED_MODULE_5__.useHover)();
|
|
103046
|
-
var nameInput = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
|
|
103047
|
-
var [isEditing, setEditing] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
103048
|
-
var [name, setName] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(project.name || "New project");
|
|
103052
|
+
} = (0,_hooks_useHover__WEBPACK_IMPORTED_MODULE_5__.useHover)(_hooks_useHover__WEBPACK_IMPORTED_MODULE_5__.TOOLTIP_SHOW_DELAY_MS);
|
|
103049
103053
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
103050
|
-
|
|
103051
|
-
|
|
103054
|
+
if (!isEditing) {
|
|
103055
|
+
setName(projectName);
|
|
103056
|
+
nameBeforeEditingRef.current = projectName;
|
|
103057
|
+
dispatch((0,_redux_EditorSlice__WEBPACK_IMPORTED_MODULE_6__.setProjectNameDraft)(null));
|
|
103058
|
+
}
|
|
103059
|
+
}, [projectName, isEditing, dispatch]);
|
|
103052
103060
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
103053
103061
|
if (isEditing) {
|
|
103054
103062
|
var _nameInput$current, _nameInput$current2;
|
|
@@ -103057,33 +103065,59 @@ var ProjectName = _ref => {
|
|
|
103057
103065
|
}
|
|
103058
103066
|
}, [isEditing]);
|
|
103059
103067
|
var startEditing = () => {
|
|
103060
|
-
if (!editable) return;
|
|
103068
|
+
if (!editable || isEditing) return;
|
|
103069
|
+
nameBeforeEditingRef.current = projectName;
|
|
103061
103070
|
setEditing(true);
|
|
103062
103071
|
};
|
|
103063
103072
|
var saveName = () => {
|
|
103064
103073
|
var newName = nameInput.current.value.trim();
|
|
103065
|
-
|
|
103074
|
+
dispatch((0,_redux_EditorSlice__WEBPACK_IMPORTED_MODULE_6__.setProjectNameDraft)(null));
|
|
103075
|
+
if (!newName) {
|
|
103076
|
+
setName(projectName);
|
|
103077
|
+
} else if (newName !== projectName) {
|
|
103066
103078
|
dispatch((0,_redux_EditorSlice__WEBPACK_IMPORTED_MODULE_6__.updateProjectName)(newName));
|
|
103079
|
+
setName(newName);
|
|
103067
103080
|
}
|
|
103068
103081
|
setEditing(false);
|
|
103069
103082
|
};
|
|
103070
103083
|
var cancelEditing = () => {
|
|
103071
|
-
|
|
103084
|
+
var previousName = nameBeforeEditingRef.current;
|
|
103085
|
+
dispatch((0,_redux_EditorSlice__WEBPACK_IMPORTED_MODULE_6__.setProjectNameDraft)(null));
|
|
103086
|
+
setName(previousName);
|
|
103087
|
+
if (previousName !== projectName) {
|
|
103088
|
+
dispatch((0,_redux_EditorSlice__WEBPACK_IMPORTED_MODULE_6__.updateProjectName)(previousName));
|
|
103089
|
+
}
|
|
103072
103090
|
setEditing(false);
|
|
103073
103091
|
};
|
|
103074
103092
|
var handleOnChange = () => {
|
|
103075
|
-
|
|
103093
|
+
var nextName = nameInput.current.value;
|
|
103094
|
+
var trimmedName = nextName.trim();
|
|
103095
|
+
setName(nextName);
|
|
103096
|
+
dispatch((0,_redux_EditorSlice__WEBPACK_IMPORTED_MODULE_6__.setProjectNameDraft)(trimmedName && trimmedName !== projectName ? trimmedName : null));
|
|
103097
|
+
};
|
|
103098
|
+
var handleOnBlur = () => {
|
|
103099
|
+
saveName();
|
|
103100
|
+
};
|
|
103101
|
+
var stopKeyboardEventPropagation = event => {
|
|
103102
|
+
var _event$nativeEvent;
|
|
103103
|
+
if (!isEditing) return;
|
|
103104
|
+
event.stopPropagation();
|
|
103105
|
+
if ((_event$nativeEvent = event.nativeEvent) !== null && _event$nativeEvent !== void 0 && _event$nativeEvent.stopImmediatePropagation) {
|
|
103106
|
+
event.nativeEvent.stopImmediatePropagation();
|
|
103107
|
+
}
|
|
103076
103108
|
};
|
|
103077
103109
|
var handleKeyDown = event => {
|
|
103110
|
+
stopKeyboardEventPropagation(event);
|
|
103078
103111
|
if (event.key === "Enter") {
|
|
103079
103112
|
event.preventDefault();
|
|
103080
103113
|
saveName();
|
|
103081
103114
|
} else if (event.key === "Escape") {
|
|
103115
|
+
event.preventDefault();
|
|
103082
103116
|
cancelEditing();
|
|
103083
103117
|
}
|
|
103084
103118
|
};
|
|
103085
|
-
var
|
|
103086
|
-
|
|
103119
|
+
var handleKeyUp = event => {
|
|
103120
|
+
stopKeyboardEventPropagation(event);
|
|
103087
103121
|
};
|
|
103088
103122
|
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.Fragment, {
|
|
103089
103123
|
children: [showLabel && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("label", {
|
|
@@ -103091,7 +103125,7 @@ var ProjectName = _ref => {
|
|
|
103091
103125
|
id: "project_name_label",
|
|
103092
103126
|
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__["default"].projectLabel,
|
|
103093
103127
|
children: "Project Name"
|
|
103094
|
-
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", (0,
|
|
103128
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", (0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
|
|
103095
103129
|
className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_styles_module_scss__WEBPACK_IMPORTED_MODULE_3__["default"].projectName, className)
|
|
103096
103130
|
}, hoverProps), {}, {
|
|
103097
103131
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)((components_Tooltip_Tooltip__WEBPACK_IMPORTED_MODULE_8___default()), {
|
|
@@ -103106,6 +103140,7 @@ var ProjectName = _ref => {
|
|
|
103106
103140
|
onFocus: startEditing,
|
|
103107
103141
|
onClick: startEditing,
|
|
103108
103142
|
onKeyDown: handleKeyDown,
|
|
103143
|
+
onKeyUp: handleKeyUp,
|
|
103109
103144
|
value: name,
|
|
103110
103145
|
readOnly: !isEditing,
|
|
103111
103146
|
onChange: handleOnChange,
|
|
@@ -370829,6 +370864,7 @@ const ContextMenu = (props) => {
|
|
|
370829
370864
|
[styles_module_scss_1.default.withDivider]: showDivider && i !== menuOptions.length - 1,
|
|
370830
370865
|
}), onClick: (e) => {
|
|
370831
370866
|
e.stopPropagation = true;
|
|
370867
|
+
e.syntheticEvent.stopPropagation();
|
|
370832
370868
|
option.action?.();
|
|
370833
370869
|
onClose();
|
|
370834
370870
|
}, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.optionContent, children: [option.icon ?? null, option.text] }), hoverElement && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.hoverElement, children: hoverElement }))] }, option.id ?? i)))] }));
|
|
@@ -370958,32 +370994,21 @@ const ItemEdit_1 = __webpack_require__(61576);
|
|
|
370958
370994
|
const ItemIcon_1 = __webpack_require__(3427);
|
|
370959
370995
|
const styles_module_scss_1 = __importDefault(__webpack_require__(68233));
|
|
370960
370996
|
const Tooltip_1 = __importDefault(__webpack_require__(26982));
|
|
370997
|
+
const useHover_1 = __webpack_require__(78556);
|
|
370961
370998
|
const button_dots_svg_1 = __importDefault(__webpack_require__(80054));
|
|
370962
370999
|
const SvgIcon_1 = __webpack_require__(82917);
|
|
370963
|
-
const react_1 = __webpack_require__(51649);
|
|
370964
371000
|
const stores_1 = __webpack_require__(32132);
|
|
370965
371001
|
const BasicItemContent = ({ item, onContextMenu, }) => {
|
|
370966
371002
|
const itemData = item.getItemData();
|
|
370967
|
-
const [showTooltip, setShowTooltip] = (0, react_1.useState)(false);
|
|
370968
|
-
const timerRef = (0, react_1.useRef)(undefined);
|
|
370969
371003
|
const isSharedProject = (0, stores_1.useAppSelector)((state) => state.editor.isSharedProject);
|
|
371004
|
+
const { hovered, hoverProps } = (0, useHover_1.useHover)(useHover_1.TOOLTIP_SHOW_DELAY_MS);
|
|
370970
371005
|
if (item.isRenaming()) {
|
|
370971
371006
|
return (0, jsx_runtime_1.jsx)(ItemEdit_1.ItemEdit, { item: item });
|
|
370972
371007
|
}
|
|
370973
|
-
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: onContextMenu, 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,
|
|
370974
|
-
timerRef.current = setTimeout(() => {
|
|
370975
|
-
setShowTooltip(true);
|
|
370976
|
-
}, 1000);
|
|
370977
|
-
}, onMouseLeave: () => {
|
|
370978
|
-
clearTimeout(timerRef.current);
|
|
370979
|
-
setShowTooltip(false);
|
|
370980
|
-
}, onDragStart: () => {
|
|
370981
|
-
clearTimeout(timerRef.current);
|
|
370982
|
-
setShowTooltip(false);
|
|
370983
|
-
}, children: item.getItemName() }), !isSharedProject && ((0, jsx_runtime_1.jsx)(SvgIcon_1.SvgIcon, { className: styles_module_scss_1.default.itemButton, size: 16, SvgElement: button_dots_svg_1.default, onClick: (e) => {
|
|
371008
|
+
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: onContextMenu, 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)(SvgIcon_1.SvgIcon, { className: styles_module_scss_1.default.itemButton, size: 16, SvgElement: button_dots_svg_1.default, onClick: (e) => {
|
|
370984
371009
|
onContextMenu(e);
|
|
370985
371010
|
e.stopPropagation();
|
|
370986
|
-
} }))] }), (0, jsx_runtime_1.jsx)(Tooltip_1.default, { message: item.getItemName(), visible:
|
|
371011
|
+
} }))] }), (0, jsx_runtime_1.jsx)(Tooltip_1.default, { message: item.getItemName(), visible: hovered, position: "bottom" })] }));
|
|
370987
371012
|
};
|
|
370988
371013
|
exports.BasicItemContent = BasicItemContent;
|
|
370989
371014
|
|
|
@@ -373480,17 +373505,48 @@ exports.validateProjectFilesCount = validateProjectFilesCount;
|
|
|
373480
373505
|
|
|
373481
373506
|
|
|
373482
373507
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
373483
|
-
exports.useHover = void 0;
|
|
373508
|
+
exports.useHover = exports.TOOLTIP_SHOW_DELAY_MS = void 0;
|
|
373484
373509
|
const react_1 = __webpack_require__(51649);
|
|
373485
|
-
|
|
373510
|
+
exports.TOOLTIP_SHOW_DELAY_MS = 1000;
|
|
373511
|
+
const useHover = (delay = 0) => {
|
|
373486
373512
|
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
373513
|
+
const timeoutRef = (0, react_1.useRef)(null);
|
|
373514
|
+
const clearHoverTimeout = () => {
|
|
373515
|
+
if (timeoutRef.current !== null) {
|
|
373516
|
+
clearTimeout(timeoutRef.current);
|
|
373517
|
+
timeoutRef.current = null;
|
|
373518
|
+
}
|
|
373519
|
+
};
|
|
373520
|
+
const activate = () => {
|
|
373521
|
+
clearHoverTimeout();
|
|
373522
|
+
if (delay > 0) {
|
|
373523
|
+
timeoutRef.current = setTimeout(() => {
|
|
373524
|
+
setHovered(true);
|
|
373525
|
+
timeoutRef.current = null;
|
|
373526
|
+
}, delay);
|
|
373527
|
+
}
|
|
373528
|
+
else {
|
|
373529
|
+
setHovered(true);
|
|
373530
|
+
}
|
|
373531
|
+
};
|
|
373532
|
+
const deactivate = () => {
|
|
373533
|
+
clearHoverTimeout();
|
|
373534
|
+
setHovered(false);
|
|
373535
|
+
};
|
|
373536
|
+
(0, react_1.useEffect)(() => {
|
|
373537
|
+
return () => {
|
|
373538
|
+
clearHoverTimeout();
|
|
373539
|
+
};
|
|
373540
|
+
}, []);
|
|
373487
373541
|
return {
|
|
373488
373542
|
hovered,
|
|
373489
373543
|
hoverProps: {
|
|
373490
|
-
onMouseEnter:
|
|
373491
|
-
onMouseLeave:
|
|
373492
|
-
onFocus:
|
|
373493
|
-
onBlur:
|
|
373544
|
+
onMouseEnter: activate,
|
|
373545
|
+
onMouseLeave: deactivate,
|
|
373546
|
+
onFocus: activate,
|
|
373547
|
+
onBlur: deactivate,
|
|
373548
|
+
onDragStart: deactivate,
|
|
373549
|
+
onKeyDown: deactivate,
|
|
373494
373550
|
},
|
|
373495
373551
|
};
|
|
373496
373552
|
};
|
|
@@ -373542,7 +373598,7 @@ const useProjectCache_1 = __webpack_require__(69557);
|
|
|
373542
373598
|
const helpers_1 = __webpack_require__(59578);
|
|
373543
373599
|
const sendToast_1 = __webpack_require__(50068);
|
|
373544
373600
|
const useUnsavedDraftResolution_1 = __webpack_require__(61171);
|
|
373545
|
-
const
|
|
373601
|
+
const projectSnapshotHelpers_1 = __webpack_require__(22390);
|
|
373546
373602
|
const isFinalLoadingState = (state) => state === types_1.LoadingState.SUCCESS || state === types_1.LoadingState.FAILED;
|
|
373547
373603
|
const useProject = ({ projectData, projectContent = null, isContentLoaded = null, isLoading = false, loadProjectContent, loadTemplateProjectData, isTemplateDataLoaded, }) => {
|
|
373548
373604
|
const project = (0, stores_1.useAppSelector)((state) => state.editor.project);
|
|
@@ -373588,7 +373644,10 @@ const useProject = ({ projectData, projectContent = null, isContentLoaded = null
|
|
|
373588
373644
|
components: preparedComponents,
|
|
373589
373645
|
commitId: null,
|
|
373590
373646
|
};
|
|
373591
|
-
dispatch((0, EditorSlice_1.setProject)(
|
|
373647
|
+
dispatch((0, EditorSlice_1.setProject)({
|
|
373648
|
+
...projectToSet,
|
|
373649
|
+
lastSavedSnapshot: (0, projectSnapshotHelpers_1.buildProjectSnapshot)(projectToSet),
|
|
373650
|
+
}));
|
|
373592
373651
|
}, [dispatch]);
|
|
373593
373652
|
// set initial project data on first load
|
|
373594
373653
|
(0, react_1.useEffect)(() => {
|
|
@@ -373746,7 +373805,7 @@ const useProject = ({ projectData, projectContent = null, isContentLoaded = null
|
|
|
373746
373805
|
};
|
|
373747
373806
|
dispatch((0, EditorSlice_1.setProject)({
|
|
373748
373807
|
...projectToSet,
|
|
373749
|
-
lastSavedSnapshot: (0,
|
|
373808
|
+
lastSavedSnapshot: (0, projectSnapshotHelpers_1.buildProjectSnapshot)(projectToSet),
|
|
373750
373809
|
}));
|
|
373751
373810
|
dispatch((0, EditorSlice_1.setCommits)({ commits: commits ?? [] }));
|
|
373752
373811
|
})
|
|
@@ -373858,7 +373917,7 @@ const constants_1 = __webpack_require__(16287);
|
|
|
373858
373917
|
const sendToast_1 = __webpack_require__(50068);
|
|
373859
373918
|
const projectTabSync_1 = __webpack_require__(48235);
|
|
373860
373919
|
const LeaveFlowSlice_1 = __webpack_require__(52990);
|
|
373861
|
-
const
|
|
373920
|
+
const projectSnapshotHelpers_1 = __webpack_require__(22390);
|
|
373862
373921
|
const selectors_1 = __webpack_require__(43551);
|
|
373863
373922
|
const AUTO_SAVE_INTERVAL = 2000;
|
|
373864
373923
|
const useProjectPersistence = ({ user, projectData, hasShownSavePrompt, saveProject, isShared, }) => {
|
|
@@ -373999,7 +374058,7 @@ const useProjectPersistence = ({ user, projectData, hasShownSavePrompt, saveProj
|
|
|
373999
374058
|
commitId: incomingCommitId ?? project.commitId,
|
|
374000
374059
|
commits,
|
|
374001
374060
|
};
|
|
374002
|
-
const newLastSavedSnapshot = (0,
|
|
374061
|
+
const newLastSavedSnapshot = (0, projectSnapshotHelpers_1.buildProjectSnapshot)(cleanedProject);
|
|
374003
374062
|
const updatedProjectSnapshot = {
|
|
374004
374063
|
components: cleanedComponents,
|
|
374005
374064
|
hasStructureChanges: false,
|
|
@@ -374207,6 +374266,7 @@ const react_1 = __webpack_require__(51649);
|
|
|
374207
374266
|
const react_redux_1 = __webpack_require__(14062);
|
|
374208
374267
|
const EditorSlice_1 = __webpack_require__(68512);
|
|
374209
374268
|
const types_1 = __webpack_require__(92932);
|
|
374269
|
+
const projectSnapshotHelpers_1 = __webpack_require__(22390);
|
|
374210
374270
|
// check if incoming and cached projects are the same draft
|
|
374211
374271
|
const isSameDraftProjectType = (incomingProject, cachedProject) => {
|
|
374212
374272
|
if (!incomingProject || !cachedProject)
|
|
@@ -374216,12 +374276,34 @@ const isSameDraftProjectType = (incomingProject, cachedProject) => {
|
|
|
374216
374276
|
cachedProject.project_type === incomingProject.project_type &&
|
|
374217
374277
|
cachedProject.extension === incomingProject.extension);
|
|
374218
374278
|
};
|
|
374279
|
+
const buildTemplateSnapshotFromIncomingProject = (cachedProject, incomingProject) => {
|
|
374280
|
+
if (!incomingProject?.components?.length)
|
|
374281
|
+
return null;
|
|
374282
|
+
return (0, projectSnapshotHelpers_1.buildProjectSnapshot)({
|
|
374283
|
+
...cachedProject,
|
|
374284
|
+
...incomingProject,
|
|
374285
|
+
components: incomingProject.components,
|
|
374286
|
+
commitId: null,
|
|
374287
|
+
});
|
|
374288
|
+
};
|
|
374289
|
+
const hasCachedDraftChanges = (cachedProject, incomingProject) => {
|
|
374290
|
+
if (!cachedProject)
|
|
374291
|
+
return false;
|
|
374292
|
+
const cachedSnapshot = (0, projectSnapshotHelpers_1.buildProjectSnapshot)(cachedProject);
|
|
374293
|
+
const baselineSnapshot = cachedProject.lastSavedSnapshot ??
|
|
374294
|
+
buildTemplateSnapshotFromIncomingProject(cachedProject, incomingProject);
|
|
374295
|
+
if (!baselineSnapshot) {
|
|
374296
|
+
return true;
|
|
374297
|
+
}
|
|
374298
|
+
return !(0, projectSnapshotHelpers_1.areProjectSnapshotsEqual)(cachedSnapshot, baselineSnapshot);
|
|
374299
|
+
};
|
|
374219
374300
|
// handles unsaved draft logic and modal decision
|
|
374220
374301
|
const useUnsavedDraftResolution = ({ projectData, cachedProject, isCurrentOutdated, }) => {
|
|
374221
374302
|
const dispatch = (0, react_redux_1.useDispatch)();
|
|
374222
374303
|
// flag to ignore cached draft after Start New
|
|
374223
374304
|
const [shouldBypassCachedDraft, setShouldBypassCachedDraft] = (0, react_1.useState)(false);
|
|
374224
374305
|
const isSameDraftType = (0, react_1.useMemo)(() => isSameDraftProjectType(projectData, cachedProject), [projectData, cachedProject]);
|
|
374306
|
+
const hasDraftChanges = (0, react_1.useMemo)(() => hasCachedDraftChanges(cachedProject, projectData), [cachedProject, projectData]);
|
|
374225
374307
|
(0, react_1.useEffect)(() => {
|
|
374226
374308
|
if (projectData?.commitId && shouldBypassCachedDraft) {
|
|
374227
374309
|
setShouldBypassCachedDraft(false);
|
|
@@ -374231,7 +374313,8 @@ const useUnsavedDraftResolution = ({ projectData, cachedProject, isCurrentOutdat
|
|
|
374231
374313
|
const shouldShowUnsavedDraftModal = !!cachedProject &&
|
|
374232
374314
|
!isCurrentOutdated &&
|
|
374233
374315
|
!shouldBypassCachedDraft &&
|
|
374234
|
-
isSameDraftType
|
|
374316
|
+
isSameDraftType &&
|
|
374317
|
+
hasDraftChanges;
|
|
374235
374318
|
const openUnsavedDraftModal = (0, react_1.useCallback)(() => {
|
|
374236
374319
|
dispatch((0, EditorSlice_1.showModal)({
|
|
374237
374320
|
modal: types_1.ModalType.DRAFT_UNSAVED_CHANGES,
|
|
@@ -374259,8 +374342,8 @@ exports.useUnsavedDraftResolution = useUnsavedDraftResolution;
|
|
|
374259
374342
|
|
|
374260
374343
|
var _a;
|
|
374261
374344
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
374262
|
-
exports.
|
|
374263
|
-
exports.queueBinaryWrites = void 0;
|
|
374345
|
+
exports.setRemixTriggered = exports.setIsLoadingCommit = exports.setCommitIdLoadTriggered = exports.setShareLinks = exports.setCommits = exports.setSharedStatus = exports.setCodeVisibility = exports.applyComponentsPatch = exports.setSaving = exports.disableTheming = exports.hideSidebar = exports.showSidebar = exports.closeModal = exports.showModal = exports.closeErrorModal = exports.showErrorModal = exports.updateProjectName = exports.setProjectNameDraft = exports.setSaveTriggered = exports.triggerDraw = exports.triggerCodeRun = exports.stopDraw = exports.stopCodeRun = exports.setLoading = exports.setReadOnly = exports.updateProjectIdentifier = exports.updateProjectCommits = exports.updateProjectSnapshot = exports.setProject = exports.setHasShownSavePrompt = exports.setError = exports.setCascadeUpdate = exports.setIsOutputOnly = exports.setAutorunEnabled = exports.setPage = exports.setFocussedFileIndex = exports.addFilePanel = exports.setOpenedFiles = exports.openFile = exports.closeFile = exports.expireJustLoaded = exports.codeRunHandled = exports.resetRunner = exports.setLoadedRunner = exports.loadingRunner = exports.updateProjectComponent = exports.addProjectComponent = exports.resetState = exports.EditorSlice = exports.editorInitialState = void 0;
|
|
374346
|
+
exports.queueBinaryWrites = exports.revertProject = void 0;
|
|
374264
374347
|
const toolkit_1 = __webpack_require__(12069);
|
|
374265
374348
|
const ProjectTypes_1 = __webpack_require__(27130);
|
|
374266
374349
|
const types_1 = __webpack_require__(92932);
|
|
@@ -374308,6 +374391,7 @@ exports.editorInitialState = {
|
|
|
374308
374391
|
isSharedProject: false,
|
|
374309
374392
|
shareLinks: null,
|
|
374310
374393
|
remixTriggered: false,
|
|
374394
|
+
projectNameDraft: null,
|
|
374311
374395
|
};
|
|
374312
374396
|
exports.EditorSlice = (0, toolkit_1.createSlice)({
|
|
374313
374397
|
name: "editor",
|
|
@@ -374414,6 +374498,7 @@ exports.EditorSlice = (0, toolkit_1.createSlice)({
|
|
|
374414
374498
|
},
|
|
374415
374499
|
setProject: (state, action) => {
|
|
374416
374500
|
state.project = action.payload;
|
|
374501
|
+
state.projectNameDraft = null;
|
|
374417
374502
|
state.loading = types_1.LoadingState.SUCCESS;
|
|
374418
374503
|
state.openedFiles = [[]];
|
|
374419
374504
|
state.focussedFileIndices = [0];
|
|
@@ -374462,8 +374547,12 @@ exports.EditorSlice = (0, toolkit_1.createSlice)({
|
|
|
374462
374547
|
setSaving: (state, action) => {
|
|
374463
374548
|
state.saving = action.payload;
|
|
374464
374549
|
},
|
|
374550
|
+
setProjectNameDraft: (state, action) => {
|
|
374551
|
+
state.projectNameDraft = action.payload;
|
|
374552
|
+
},
|
|
374465
374553
|
updateProjectName: (state, action) => {
|
|
374466
374554
|
state.project.name = action.payload;
|
|
374555
|
+
state.projectNameDraft = null;
|
|
374467
374556
|
state.saving = types_1.SavingState.IDLE;
|
|
374468
374557
|
},
|
|
374469
374558
|
updateProjectComponent: (state, action) => {
|
|
@@ -374504,6 +374593,7 @@ exports.EditorSlice = (0, toolkit_1.createSlice)({
|
|
|
374504
374593
|
state.project.components = action.payload.components;
|
|
374505
374594
|
state.project.hasStructureChanges = action.payload.hasStructureChanges;
|
|
374506
374595
|
state.project.lastSavedSnapshot = action.payload.lastSavedSnapshot;
|
|
374596
|
+
state.projectNameDraft = null;
|
|
374507
374597
|
if (action.payload.identifier) {
|
|
374508
374598
|
state.project.identifier = action.payload.identifier;
|
|
374509
374599
|
}
|
|
@@ -374587,7 +374677,7 @@ exports.EditorSlice = (0, toolkit_1.createSlice)({
|
|
|
374587
374677
|
},
|
|
374588
374678
|
});
|
|
374589
374679
|
// Action creators are generated for each case reducer function
|
|
374590
|
-
_a = exports.EditorSlice.actions, exports.resetState = _a.resetState, exports.addProjectComponent = _a.addProjectComponent, exports.updateProjectComponent = _a.updateProjectComponent, exports.loadingRunner = _a.loadingRunner, exports.setLoadedRunner = _a.setLoadedRunner, exports.resetRunner = _a.resetRunner, exports.codeRunHandled = _a.codeRunHandled, exports.expireJustLoaded = _a.expireJustLoaded, exports.closeFile = _a.closeFile, exports.openFile = _a.openFile, exports.setOpenedFiles = _a.setOpenedFiles, exports.addFilePanel = _a.addFilePanel, exports.setFocussedFileIndex = _a.setFocussedFileIndex, exports.setPage = _a.setPage, exports.setAutorunEnabled = _a.setAutorunEnabled, exports.setIsOutputOnly = _a.setIsOutputOnly, exports.setCascadeUpdate = _a.setCascadeUpdate, exports.setError = _a.setError, exports.setHasShownSavePrompt = _a.setHasShownSavePrompt, exports.setProject = _a.setProject, exports.updateProjectSnapshot = _a.updateProjectSnapshot, exports.updateProjectCommits = _a.updateProjectCommits, exports.updateProjectIdentifier = _a.updateProjectIdentifier, exports.setReadOnly = _a.setReadOnly, exports.setLoading = _a.setLoading, exports.stopCodeRun = _a.stopCodeRun, exports.stopDraw = _a.stopDraw, exports.triggerCodeRun = _a.triggerCodeRun, exports.triggerDraw = _a.triggerDraw, exports.setSaveTriggered = _a.setSaveTriggered, exports.updateProjectName = _a.updateProjectName, exports.showErrorModal = _a.showErrorModal, exports.closeErrorModal = _a.closeErrorModal, exports.showModal = _a.showModal, exports.closeModal = _a.closeModal, exports.showSidebar = _a.showSidebar, exports.hideSidebar = _a.hideSidebar, exports.disableTheming = _a.disableTheming, exports.setSaving = _a.setSaving, exports.applyComponentsPatch = _a.applyComponentsPatch, exports.setCodeVisibility = _a.setCodeVisibility, exports.setSharedStatus = _a.setSharedStatus, exports.setCommits = _a.setCommits, exports.setShareLinks = _a.setShareLinks, exports.setCommitIdLoadTriggered = _a.setCommitIdLoadTriggered, exports.setIsLoadingCommit = _a.setIsLoadingCommit, exports.setRemixTriggered = _a.setRemixTriggered, exports.revertProject = _a.revertProject;
|
|
374680
|
+
_a = exports.EditorSlice.actions, exports.resetState = _a.resetState, exports.addProjectComponent = _a.addProjectComponent, exports.updateProjectComponent = _a.updateProjectComponent, exports.loadingRunner = _a.loadingRunner, exports.setLoadedRunner = _a.setLoadedRunner, exports.resetRunner = _a.resetRunner, exports.codeRunHandled = _a.codeRunHandled, exports.expireJustLoaded = _a.expireJustLoaded, exports.closeFile = _a.closeFile, exports.openFile = _a.openFile, exports.setOpenedFiles = _a.setOpenedFiles, exports.addFilePanel = _a.addFilePanel, exports.setFocussedFileIndex = _a.setFocussedFileIndex, exports.setPage = _a.setPage, exports.setAutorunEnabled = _a.setAutorunEnabled, exports.setIsOutputOnly = _a.setIsOutputOnly, exports.setCascadeUpdate = _a.setCascadeUpdate, exports.setError = _a.setError, exports.setHasShownSavePrompt = _a.setHasShownSavePrompt, exports.setProject = _a.setProject, exports.updateProjectSnapshot = _a.updateProjectSnapshot, exports.updateProjectCommits = _a.updateProjectCommits, exports.updateProjectIdentifier = _a.updateProjectIdentifier, exports.setReadOnly = _a.setReadOnly, exports.setLoading = _a.setLoading, exports.stopCodeRun = _a.stopCodeRun, exports.stopDraw = _a.stopDraw, exports.triggerCodeRun = _a.triggerCodeRun, exports.triggerDraw = _a.triggerDraw, exports.setSaveTriggered = _a.setSaveTriggered, exports.setProjectNameDraft = _a.setProjectNameDraft, exports.updateProjectName = _a.updateProjectName, exports.showErrorModal = _a.showErrorModal, exports.closeErrorModal = _a.closeErrorModal, exports.showModal = _a.showModal, exports.closeModal = _a.closeModal, exports.showSidebar = _a.showSidebar, exports.hideSidebar = _a.hideSidebar, exports.disableTheming = _a.disableTheming, exports.setSaving = _a.setSaving, exports.applyComponentsPatch = _a.applyComponentsPatch, exports.setCodeVisibility = _a.setCodeVisibility, exports.setSharedStatus = _a.setSharedStatus, exports.setCommits = _a.setCommits, exports.setShareLinks = _a.setShareLinks, exports.setCommitIdLoadTriggered = _a.setCommitIdLoadTriggered, exports.setIsLoadingCommit = _a.setIsLoadingCommit, exports.setRemixTriggered = _a.setRemixTriggered, exports.revertProject = _a.revertProject;
|
|
374591
374681
|
exports.queueBinaryWrites = (0, toolkit_1.createAction)("editor/queueBinaryWrites");
|
|
374592
374682
|
exports["default"] = exports.EditorSlice.reducer;
|
|
374593
374683
|
|
|
@@ -374946,8 +375036,10 @@ exports.selectProjectHasContentChanges = (0, toolkit_1.createSelector)([
|
|
|
374946
375036
|
exports.selectProjectHasNameChanges = (0, toolkit_1.createSelector)([
|
|
374947
375037
|
(state) => state.editor.project?.name,
|
|
374948
375038
|
(state) => state.editor.project?.lastSavedSnapshot?.name,
|
|
374949
|
-
|
|
374950
|
-
|
|
375039
|
+
(state) => state.editor.projectNameDraft,
|
|
375040
|
+
], (projectName, snapshotName, projectNameDraft) => {
|
|
375041
|
+
const effectiveProjectName = projectNameDraft || projectName;
|
|
375042
|
+
return Boolean(snapshotName) && effectiveProjectName !== snapshotName;
|
|
374951
375043
|
});
|
|
374952
375044
|
exports.selectProjectDirtyState = (0, toolkit_1.createSelector)([exports.selectProjectHasContentChanges, exports.selectProjectHasNameChanges], (hasContentChanges, hasNameChanges) => {
|
|
374953
375045
|
return hasContentChanges || hasNameChanges;
|
|
@@ -375460,32 +375552,6 @@ class BinaryStore {
|
|
|
375460
375552
|
exports.binaryStore = new BinaryStore();
|
|
375461
375553
|
|
|
375462
375554
|
|
|
375463
|
-
/***/ }),
|
|
375464
|
-
|
|
375465
|
-
/***/ 10533:
|
|
375466
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
375467
|
-
|
|
375468
|
-
|
|
375469
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
375470
|
-
exports.buildProjectSnapshot = void 0;
|
|
375471
|
-
const ProjectTypes_1 = __webpack_require__(27130);
|
|
375472
|
-
const signatureHelpers_1 = __webpack_require__(41835);
|
|
375473
|
-
const buildProjectSnapshot = (project) => {
|
|
375474
|
-
return {
|
|
375475
|
-
name: project.name,
|
|
375476
|
-
identifier: project.identifier,
|
|
375477
|
-
components: Object.fromEntries(project.components.map((c) => [
|
|
375478
|
-
c.path,
|
|
375479
|
-
c.type === ProjectTypes_1.ProjectComponentType.FILE
|
|
375480
|
-
? c.content
|
|
375481
|
-
: undefined,
|
|
375482
|
-
])),
|
|
375483
|
-
structureSignature: (0, signatureHelpers_1.buildSignature)(project.components),
|
|
375484
|
-
};
|
|
375485
|
-
};
|
|
375486
|
-
exports.buildProjectSnapshot = buildProjectSnapshot;
|
|
375487
|
-
|
|
375488
|
-
|
|
375489
375555
|
/***/ }),
|
|
375490
375556
|
|
|
375491
375557
|
/***/ 56469:
|
|
@@ -376054,6 +376120,49 @@ const getAuthorName = (author) => {
|
|
|
376054
376120
|
exports.getAuthorName = getAuthorName;
|
|
376055
376121
|
|
|
376056
376122
|
|
|
376123
|
+
/***/ }),
|
|
376124
|
+
|
|
376125
|
+
/***/ 22390:
|
|
376126
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
376127
|
+
|
|
376128
|
+
|
|
376129
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
376130
|
+
exports.areProjectSnapshotsEqual = exports.buildProjectSnapshot = void 0;
|
|
376131
|
+
const ProjectTypes_1 = __webpack_require__(27130);
|
|
376132
|
+
const signatureHelpers_1 = __webpack_require__(41835);
|
|
376133
|
+
const buildProjectSnapshot = (project) => {
|
|
376134
|
+
return {
|
|
376135
|
+
name: project.name,
|
|
376136
|
+
identifier: project.identifier,
|
|
376137
|
+
components: Object.fromEntries(project.components.map((c) => [
|
|
376138
|
+
c.path,
|
|
376139
|
+
c.type === ProjectTypes_1.ProjectComponentType.FILE
|
|
376140
|
+
? c.content
|
|
376141
|
+
: undefined,
|
|
376142
|
+
])),
|
|
376143
|
+
structureSignature: (0, signatureHelpers_1.buildSignature)(project.components),
|
|
376144
|
+
};
|
|
376145
|
+
};
|
|
376146
|
+
exports.buildProjectSnapshot = buildProjectSnapshot;
|
|
376147
|
+
const areProjectSnapshotsEqual = (first, second) => {
|
|
376148
|
+
if (!first || !second)
|
|
376149
|
+
return false;
|
|
376150
|
+
if (first.name !== second.name)
|
|
376151
|
+
return false;
|
|
376152
|
+
if ((0, signatureHelpers_1.isSignatureDifferent)(first.structureSignature, second.structureSignature)) {
|
|
376153
|
+
return false;
|
|
376154
|
+
}
|
|
376155
|
+
const firstComponentPaths = Object.keys(first.components);
|
|
376156
|
+
const secondComponentPaths = Object.keys(second.components);
|
|
376157
|
+
if (firstComponentPaths.length !== secondComponentPaths.length) {
|
|
376158
|
+
return false;
|
|
376159
|
+
}
|
|
376160
|
+
return firstComponentPaths.every((path) => Object.prototype.hasOwnProperty.call(second.components, path) &&
|
|
376161
|
+
first.components[path] === second.components[path]);
|
|
376162
|
+
};
|
|
376163
|
+
exports.areProjectSnapshotsEqual = areProjectSnapshotsEqual;
|
|
376164
|
+
|
|
376165
|
+
|
|
376057
376166
|
/***/ }),
|
|
376058
376167
|
|
|
376059
376168
|
/***/ 48235:
|
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.2.
|
|
4
|
+
"version": "0.2.22",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/GirlsFirst/gwchq-textjam",
|
|
7
7
|
"author": "Girls Who Code HQ",
|