gwchq-textjam 0.2.20 → 0.2.21
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 +134 -46
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -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)();
|
|
103042
103045
|
var {
|
|
103043
103046
|
hovered,
|
|
103044
103047
|
hoverProps
|
|
103045
103048
|
} = (0,_hooks_useHover__WEBPACK_IMPORTED_MODULE_5__.useHover)();
|
|
103046
103049
|
var nameInput = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
|
|
103050
|
+
var nameBeforeEditingRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(projectName);
|
|
103047
103051
|
var [isEditing, setEditing] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
103048
|
-
var [name, setName] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(
|
|
103052
|
+
var [name, setName] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(projectName);
|
|
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", {
|
|
@@ -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,
|
|
@@ -373542,7 +373577,7 @@ const useProjectCache_1 = __webpack_require__(69557);
|
|
|
373542
373577
|
const helpers_1 = __webpack_require__(59578);
|
|
373543
373578
|
const sendToast_1 = __webpack_require__(50068);
|
|
373544
373579
|
const useUnsavedDraftResolution_1 = __webpack_require__(61171);
|
|
373545
|
-
const
|
|
373580
|
+
const projectSnapshotHelpers_1 = __webpack_require__(22390);
|
|
373546
373581
|
const isFinalLoadingState = (state) => state === types_1.LoadingState.SUCCESS || state === types_1.LoadingState.FAILED;
|
|
373547
373582
|
const useProject = ({ projectData, projectContent = null, isContentLoaded = null, isLoading = false, loadProjectContent, loadTemplateProjectData, isTemplateDataLoaded, }) => {
|
|
373548
373583
|
const project = (0, stores_1.useAppSelector)((state) => state.editor.project);
|
|
@@ -373588,7 +373623,10 @@ const useProject = ({ projectData, projectContent = null, isContentLoaded = null
|
|
|
373588
373623
|
components: preparedComponents,
|
|
373589
373624
|
commitId: null,
|
|
373590
373625
|
};
|
|
373591
|
-
dispatch((0, EditorSlice_1.setProject)(
|
|
373626
|
+
dispatch((0, EditorSlice_1.setProject)({
|
|
373627
|
+
...projectToSet,
|
|
373628
|
+
lastSavedSnapshot: (0, projectSnapshotHelpers_1.buildProjectSnapshot)(projectToSet),
|
|
373629
|
+
}));
|
|
373592
373630
|
}, [dispatch]);
|
|
373593
373631
|
// set initial project data on first load
|
|
373594
373632
|
(0, react_1.useEffect)(() => {
|
|
@@ -373746,7 +373784,7 @@ const useProject = ({ projectData, projectContent = null, isContentLoaded = null
|
|
|
373746
373784
|
};
|
|
373747
373785
|
dispatch((0, EditorSlice_1.setProject)({
|
|
373748
373786
|
...projectToSet,
|
|
373749
|
-
lastSavedSnapshot: (0,
|
|
373787
|
+
lastSavedSnapshot: (0, projectSnapshotHelpers_1.buildProjectSnapshot)(projectToSet),
|
|
373750
373788
|
}));
|
|
373751
373789
|
dispatch((0, EditorSlice_1.setCommits)({ commits: commits ?? [] }));
|
|
373752
373790
|
})
|
|
@@ -373858,7 +373896,7 @@ const constants_1 = __webpack_require__(16287);
|
|
|
373858
373896
|
const sendToast_1 = __webpack_require__(50068);
|
|
373859
373897
|
const projectTabSync_1 = __webpack_require__(48235);
|
|
373860
373898
|
const LeaveFlowSlice_1 = __webpack_require__(52990);
|
|
373861
|
-
const
|
|
373899
|
+
const projectSnapshotHelpers_1 = __webpack_require__(22390);
|
|
373862
373900
|
const selectors_1 = __webpack_require__(43551);
|
|
373863
373901
|
const AUTO_SAVE_INTERVAL = 2000;
|
|
373864
373902
|
const useProjectPersistence = ({ user, projectData, hasShownSavePrompt, saveProject, isShared, }) => {
|
|
@@ -373999,7 +374037,7 @@ const useProjectPersistence = ({ user, projectData, hasShownSavePrompt, saveProj
|
|
|
373999
374037
|
commitId: incomingCommitId ?? project.commitId,
|
|
374000
374038
|
commits,
|
|
374001
374039
|
};
|
|
374002
|
-
const newLastSavedSnapshot = (0,
|
|
374040
|
+
const newLastSavedSnapshot = (0, projectSnapshotHelpers_1.buildProjectSnapshot)(cleanedProject);
|
|
374003
374041
|
const updatedProjectSnapshot = {
|
|
374004
374042
|
components: cleanedComponents,
|
|
374005
374043
|
hasStructureChanges: false,
|
|
@@ -374207,6 +374245,7 @@ const react_1 = __webpack_require__(51649);
|
|
|
374207
374245
|
const react_redux_1 = __webpack_require__(14062);
|
|
374208
374246
|
const EditorSlice_1 = __webpack_require__(68512);
|
|
374209
374247
|
const types_1 = __webpack_require__(92932);
|
|
374248
|
+
const projectSnapshotHelpers_1 = __webpack_require__(22390);
|
|
374210
374249
|
// check if incoming and cached projects are the same draft
|
|
374211
374250
|
const isSameDraftProjectType = (incomingProject, cachedProject) => {
|
|
374212
374251
|
if (!incomingProject || !cachedProject)
|
|
@@ -374216,12 +374255,34 @@ const isSameDraftProjectType = (incomingProject, cachedProject) => {
|
|
|
374216
374255
|
cachedProject.project_type === incomingProject.project_type &&
|
|
374217
374256
|
cachedProject.extension === incomingProject.extension);
|
|
374218
374257
|
};
|
|
374258
|
+
const buildTemplateSnapshotFromIncomingProject = (cachedProject, incomingProject) => {
|
|
374259
|
+
if (!incomingProject?.components?.length)
|
|
374260
|
+
return null;
|
|
374261
|
+
return (0, projectSnapshotHelpers_1.buildProjectSnapshot)({
|
|
374262
|
+
...cachedProject,
|
|
374263
|
+
...incomingProject,
|
|
374264
|
+
components: incomingProject.components,
|
|
374265
|
+
commitId: null,
|
|
374266
|
+
});
|
|
374267
|
+
};
|
|
374268
|
+
const hasCachedDraftChanges = (cachedProject, incomingProject) => {
|
|
374269
|
+
if (!cachedProject)
|
|
374270
|
+
return false;
|
|
374271
|
+
const cachedSnapshot = (0, projectSnapshotHelpers_1.buildProjectSnapshot)(cachedProject);
|
|
374272
|
+
const baselineSnapshot = cachedProject.lastSavedSnapshot ??
|
|
374273
|
+
buildTemplateSnapshotFromIncomingProject(cachedProject, incomingProject);
|
|
374274
|
+
if (!baselineSnapshot) {
|
|
374275
|
+
return true;
|
|
374276
|
+
}
|
|
374277
|
+
return !(0, projectSnapshotHelpers_1.areProjectSnapshotsEqual)(cachedSnapshot, baselineSnapshot);
|
|
374278
|
+
};
|
|
374219
374279
|
// handles unsaved draft logic and modal decision
|
|
374220
374280
|
const useUnsavedDraftResolution = ({ projectData, cachedProject, isCurrentOutdated, }) => {
|
|
374221
374281
|
const dispatch = (0, react_redux_1.useDispatch)();
|
|
374222
374282
|
// flag to ignore cached draft after Start New
|
|
374223
374283
|
const [shouldBypassCachedDraft, setShouldBypassCachedDraft] = (0, react_1.useState)(false);
|
|
374224
374284
|
const isSameDraftType = (0, react_1.useMemo)(() => isSameDraftProjectType(projectData, cachedProject), [projectData, cachedProject]);
|
|
374285
|
+
const hasDraftChanges = (0, react_1.useMemo)(() => hasCachedDraftChanges(cachedProject, projectData), [cachedProject, projectData]);
|
|
374225
374286
|
(0, react_1.useEffect)(() => {
|
|
374226
374287
|
if (projectData?.commitId && shouldBypassCachedDraft) {
|
|
374227
374288
|
setShouldBypassCachedDraft(false);
|
|
@@ -374231,7 +374292,8 @@ const useUnsavedDraftResolution = ({ projectData, cachedProject, isCurrentOutdat
|
|
|
374231
374292
|
const shouldShowUnsavedDraftModal = !!cachedProject &&
|
|
374232
374293
|
!isCurrentOutdated &&
|
|
374233
374294
|
!shouldBypassCachedDraft &&
|
|
374234
|
-
isSameDraftType
|
|
374295
|
+
isSameDraftType &&
|
|
374296
|
+
hasDraftChanges;
|
|
374235
374297
|
const openUnsavedDraftModal = (0, react_1.useCallback)(() => {
|
|
374236
374298
|
dispatch((0, EditorSlice_1.showModal)({
|
|
374237
374299
|
modal: types_1.ModalType.DRAFT_UNSAVED_CHANGES,
|
|
@@ -374259,8 +374321,8 @@ exports.useUnsavedDraftResolution = useUnsavedDraftResolution;
|
|
|
374259
374321
|
|
|
374260
374322
|
var _a;
|
|
374261
374323
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
374262
|
-
exports.
|
|
374263
|
-
exports.queueBinaryWrites = void 0;
|
|
374324
|
+
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;
|
|
374325
|
+
exports.queueBinaryWrites = exports.revertProject = void 0;
|
|
374264
374326
|
const toolkit_1 = __webpack_require__(12069);
|
|
374265
374327
|
const ProjectTypes_1 = __webpack_require__(27130);
|
|
374266
374328
|
const types_1 = __webpack_require__(92932);
|
|
@@ -374308,6 +374370,7 @@ exports.editorInitialState = {
|
|
|
374308
374370
|
isSharedProject: false,
|
|
374309
374371
|
shareLinks: null,
|
|
374310
374372
|
remixTriggered: false,
|
|
374373
|
+
projectNameDraft: null,
|
|
374311
374374
|
};
|
|
374312
374375
|
exports.EditorSlice = (0, toolkit_1.createSlice)({
|
|
374313
374376
|
name: "editor",
|
|
@@ -374414,6 +374477,7 @@ exports.EditorSlice = (0, toolkit_1.createSlice)({
|
|
|
374414
374477
|
},
|
|
374415
374478
|
setProject: (state, action) => {
|
|
374416
374479
|
state.project = action.payload;
|
|
374480
|
+
state.projectNameDraft = null;
|
|
374417
374481
|
state.loading = types_1.LoadingState.SUCCESS;
|
|
374418
374482
|
state.openedFiles = [[]];
|
|
374419
374483
|
state.focussedFileIndices = [0];
|
|
@@ -374462,8 +374526,12 @@ exports.EditorSlice = (0, toolkit_1.createSlice)({
|
|
|
374462
374526
|
setSaving: (state, action) => {
|
|
374463
374527
|
state.saving = action.payload;
|
|
374464
374528
|
},
|
|
374529
|
+
setProjectNameDraft: (state, action) => {
|
|
374530
|
+
state.projectNameDraft = action.payload;
|
|
374531
|
+
},
|
|
374465
374532
|
updateProjectName: (state, action) => {
|
|
374466
374533
|
state.project.name = action.payload;
|
|
374534
|
+
state.projectNameDraft = null;
|
|
374467
374535
|
state.saving = types_1.SavingState.IDLE;
|
|
374468
374536
|
},
|
|
374469
374537
|
updateProjectComponent: (state, action) => {
|
|
@@ -374504,6 +374572,7 @@ exports.EditorSlice = (0, toolkit_1.createSlice)({
|
|
|
374504
374572
|
state.project.components = action.payload.components;
|
|
374505
374573
|
state.project.hasStructureChanges = action.payload.hasStructureChanges;
|
|
374506
374574
|
state.project.lastSavedSnapshot = action.payload.lastSavedSnapshot;
|
|
374575
|
+
state.projectNameDraft = null;
|
|
374507
374576
|
if (action.payload.identifier) {
|
|
374508
374577
|
state.project.identifier = action.payload.identifier;
|
|
374509
374578
|
}
|
|
@@ -374587,7 +374656,7 @@ exports.EditorSlice = (0, toolkit_1.createSlice)({
|
|
|
374587
374656
|
},
|
|
374588
374657
|
});
|
|
374589
374658
|
// 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;
|
|
374659
|
+
_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
374660
|
exports.queueBinaryWrites = (0, toolkit_1.createAction)("editor/queueBinaryWrites");
|
|
374592
374661
|
exports["default"] = exports.EditorSlice.reducer;
|
|
374593
374662
|
|
|
@@ -374946,8 +375015,10 @@ exports.selectProjectHasContentChanges = (0, toolkit_1.createSelector)([
|
|
|
374946
375015
|
exports.selectProjectHasNameChanges = (0, toolkit_1.createSelector)([
|
|
374947
375016
|
(state) => state.editor.project?.name,
|
|
374948
375017
|
(state) => state.editor.project?.lastSavedSnapshot?.name,
|
|
374949
|
-
|
|
374950
|
-
|
|
375018
|
+
(state) => state.editor.projectNameDraft,
|
|
375019
|
+
], (projectName, snapshotName, projectNameDraft) => {
|
|
375020
|
+
const effectiveProjectName = projectNameDraft || projectName;
|
|
375021
|
+
return Boolean(snapshotName) && effectiveProjectName !== snapshotName;
|
|
374951
375022
|
});
|
|
374952
375023
|
exports.selectProjectDirtyState = (0, toolkit_1.createSelector)([exports.selectProjectHasContentChanges, exports.selectProjectHasNameChanges], (hasContentChanges, hasNameChanges) => {
|
|
374953
375024
|
return hasContentChanges || hasNameChanges;
|
|
@@ -375460,32 +375531,6 @@ class BinaryStore {
|
|
|
375460
375531
|
exports.binaryStore = new BinaryStore();
|
|
375461
375532
|
|
|
375462
375533
|
|
|
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
375534
|
/***/ }),
|
|
375490
375535
|
|
|
375491
375536
|
/***/ 56469:
|
|
@@ -376054,6 +376099,49 @@ const getAuthorName = (author) => {
|
|
|
376054
376099
|
exports.getAuthorName = getAuthorName;
|
|
376055
376100
|
|
|
376056
376101
|
|
|
376102
|
+
/***/ }),
|
|
376103
|
+
|
|
376104
|
+
/***/ 22390:
|
|
376105
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
376106
|
+
|
|
376107
|
+
|
|
376108
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
376109
|
+
exports.areProjectSnapshotsEqual = exports.buildProjectSnapshot = void 0;
|
|
376110
|
+
const ProjectTypes_1 = __webpack_require__(27130);
|
|
376111
|
+
const signatureHelpers_1 = __webpack_require__(41835);
|
|
376112
|
+
const buildProjectSnapshot = (project) => {
|
|
376113
|
+
return {
|
|
376114
|
+
name: project.name,
|
|
376115
|
+
identifier: project.identifier,
|
|
376116
|
+
components: Object.fromEntries(project.components.map((c) => [
|
|
376117
|
+
c.path,
|
|
376118
|
+
c.type === ProjectTypes_1.ProjectComponentType.FILE
|
|
376119
|
+
? c.content
|
|
376120
|
+
: undefined,
|
|
376121
|
+
])),
|
|
376122
|
+
structureSignature: (0, signatureHelpers_1.buildSignature)(project.components),
|
|
376123
|
+
};
|
|
376124
|
+
};
|
|
376125
|
+
exports.buildProjectSnapshot = buildProjectSnapshot;
|
|
376126
|
+
const areProjectSnapshotsEqual = (first, second) => {
|
|
376127
|
+
if (!first || !second)
|
|
376128
|
+
return false;
|
|
376129
|
+
if (first.name !== second.name)
|
|
376130
|
+
return false;
|
|
376131
|
+
if ((0, signatureHelpers_1.isSignatureDifferent)(first.structureSignature, second.structureSignature)) {
|
|
376132
|
+
return false;
|
|
376133
|
+
}
|
|
376134
|
+
const firstComponentPaths = Object.keys(first.components);
|
|
376135
|
+
const secondComponentPaths = Object.keys(second.components);
|
|
376136
|
+
if (firstComponentPaths.length !== secondComponentPaths.length) {
|
|
376137
|
+
return false;
|
|
376138
|
+
}
|
|
376139
|
+
return firstComponentPaths.every((path) => Object.prototype.hasOwnProperty.call(second.components, path) &&
|
|
376140
|
+
first.components[path] === second.components[path]);
|
|
376141
|
+
};
|
|
376142
|
+
exports.areProjectSnapshotsEqual = areProjectSnapshotsEqual;
|
|
376143
|
+
|
|
376144
|
+
|
|
376057
376145
|
/***/ }),
|
|
376058
376146
|
|
|
376059
376147
|
/***/ 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.21",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/GirlsFirst/gwchq-textjam",
|
|
7
7
|
"author": "Girls Who Code HQ",
|