gwchq-textjam 0.2.21 → 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.
Files changed (2) hide show
  1. package/dist/index.js +58 -37
  2. 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 D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(89379);
68348
- /* harmony import */ var D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(53986);
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,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)(_ref, _excluded);
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,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
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,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
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 D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(89379);
68430
- /* harmony import */ var D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(53986);
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,D_gwc2_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,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)({}, otherProps), {}, {
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,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)({
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 D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(89379);
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);
@@ -103042,14 +103042,14 @@ var ProjectName = _ref => {
103042
103042
  var project = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useSelector)(state => state.editor.project, react_redux__WEBPACK_IMPORTED_MODULE_1__.shallowEqual);
103043
103043
  var projectName = getProjectName(project);
103044
103044
  var dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useDispatch)();
103045
- var {
103046
- hovered,
103047
- hoverProps
103048
- } = (0,_hooks_useHover__WEBPACK_IMPORTED_MODULE_5__.useHover)();
103049
103045
  var nameInput = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
103050
103046
  var nameBeforeEditingRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(projectName);
103051
103047
  var [isEditing, setEditing] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
103052
103048
  var [name, setName] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(projectName);
103049
+ var {
103050
+ hovered,
103051
+ hoverProps
103052
+ } = (0,_hooks_useHover__WEBPACK_IMPORTED_MODULE_5__.useHover)(_hooks_useHover__WEBPACK_IMPORTED_MODULE_5__.TOOLTIP_SHOW_DELAY_MS);
103053
103053
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
103054
103054
  if (!isEditing) {
103055
103055
  setName(projectName);
@@ -103125,7 +103125,7 @@ var ProjectName = _ref => {
103125
103125
  id: "project_name_label",
103126
103126
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__["default"].projectLabel,
103127
103127
  children: "Project Name"
103128
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", (0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
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)({
103129
103129
  className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_styles_module_scss__WEBPACK_IMPORTED_MODULE_3__["default"].projectName, className)
103130
103130
  }, hoverProps), {}, {
103131
103131
  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)((components_Tooltip_Tooltip__WEBPACK_IMPORTED_MODULE_8___default()), {
@@ -370864,6 +370864,7 @@ const ContextMenu = (props) => {
370864
370864
  [styles_module_scss_1.default.withDivider]: showDivider && i !== menuOptions.length - 1,
370865
370865
  }), onClick: (e) => {
370866
370866
  e.stopPropagation = true;
370867
+ e.syntheticEvent.stopPropagation();
370867
370868
  option.action?.();
370868
370869
  onClose();
370869
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)))] }));
@@ -370993,32 +370994,21 @@ const ItemEdit_1 = __webpack_require__(61576);
370993
370994
  const ItemIcon_1 = __webpack_require__(3427);
370994
370995
  const styles_module_scss_1 = __importDefault(__webpack_require__(68233));
370995
370996
  const Tooltip_1 = __importDefault(__webpack_require__(26982));
370997
+ const useHover_1 = __webpack_require__(78556);
370996
370998
  const button_dots_svg_1 = __importDefault(__webpack_require__(80054));
370997
370999
  const SvgIcon_1 = __webpack_require__(82917);
370998
- const react_1 = __webpack_require__(51649);
370999
371000
  const stores_1 = __webpack_require__(32132);
371000
371001
  const BasicItemContent = ({ item, onContextMenu, }) => {
371001
371002
  const itemData = item.getItemData();
371002
- const [showTooltip, setShowTooltip] = (0, react_1.useState)(false);
371003
- const timerRef = (0, react_1.useRef)(undefined);
371004
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);
371005
371005
  if (item.isRenaming()) {
371006
371006
  return (0, jsx_runtime_1.jsx)(ItemEdit_1.ItemEdit, { item: item });
371007
371007
  }
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, onMouseEnter: () => {
371009
- timerRef.current = setTimeout(() => {
371010
- setShowTooltip(true);
371011
- }, 1000);
371012
- }, onMouseLeave: () => {
371013
- clearTimeout(timerRef.current);
371014
- setShowTooltip(false);
371015
- }, onDragStart: () => {
371016
- clearTimeout(timerRef.current);
371017
- setShowTooltip(false);
371018
- }, 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) => {
371019
371009
  onContextMenu(e);
371020
371010
  e.stopPropagation();
371021
- } }))] }), (0, jsx_runtime_1.jsx)(Tooltip_1.default, { message: item.getItemName(), visible: showTooltip, position: "bottom" })] }));
371011
+ } }))] }), (0, jsx_runtime_1.jsx)(Tooltip_1.default, { message: item.getItemName(), visible: hovered, position: "bottom" })] }));
371022
371012
  };
371023
371013
  exports.BasicItemContent = BasicItemContent;
371024
371014
 
@@ -373515,17 +373505,48 @@ exports.validateProjectFilesCount = validateProjectFilesCount;
373515
373505
 
373516
373506
 
373517
373507
  Object.defineProperty(exports, "__esModule", ({ value: true }));
373518
- exports.useHover = void 0;
373508
+ exports.useHover = exports.TOOLTIP_SHOW_DELAY_MS = void 0;
373519
373509
  const react_1 = __webpack_require__(51649);
373520
- const useHover = () => {
373510
+ exports.TOOLTIP_SHOW_DELAY_MS = 1000;
373511
+ const useHover = (delay = 0) => {
373521
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
+ }, []);
373522
373541
  return {
373523
373542
  hovered,
373524
373543
  hoverProps: {
373525
- onMouseEnter: () => setHovered(true),
373526
- onMouseLeave: () => setHovered(false),
373527
- onFocus: () => setHovered(true),
373528
- onBlur: () => setHovered(false),
373544
+ onMouseEnter: activate,
373545
+ onMouseLeave: deactivate,
373546
+ onFocus: activate,
373547
+ onBlur: deactivate,
373548
+ onDragStart: deactivate,
373549
+ onKeyDown: deactivate,
373529
373550
  },
373530
373551
  };
373531
373552
  };
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.21",
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",