@quadrats/react 1.0.0 → 1.1.1

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 (119) hide show
  1. package/card/components/Card.js +83 -75
  2. package/card/index.cjs.js +82 -74
  3. package/carousel/components/Carousel.js +32 -28
  4. package/carousel/index.cjs.js +32 -28
  5. package/components/Tooltip/index.js +5 -2
  6. package/components/index.cjs.js +5 -2
  7. package/core/components/Quadrats.js +5 -2
  8. package/core/contexts/modal/CarouselModal/CarouselModal.js +14 -17
  9. package/embed/renderers/base/components/BaseEmbedElement.js +51 -43
  10. package/embed/renderers/base/index.cjs.js +50 -42
  11. package/image/components/Image.js +34 -26
  12. package/image/createReactImage.js +1 -1
  13. package/image/index.cjs.js +34 -26
  14. package/index.cjs.js +19 -19
  15. package/package.json +4 -4
  16. package/table/components/ColumnDragButton.d.ts +10 -0
  17. package/table/components/ColumnDragButton.js +41 -0
  18. package/table/components/RowDragButton.d.ts +10 -0
  19. package/table/components/RowDragButton.js +42 -0
  20. package/table/components/Table.d.ts +9 -0
  21. package/table/components/Table.js +236 -0
  22. package/table/components/TableBody.d.ts +5 -0
  23. package/table/components/TableBody.js +8 -0
  24. package/table/components/TableCell.d.ts +5 -0
  25. package/table/components/TableCell.js +297 -0
  26. package/table/components/TableDragLayer.d.ts +6 -0
  27. package/table/components/TableDragLayer.js +89 -0
  28. package/table/components/TableHeader.d.ts +5 -0
  29. package/table/components/TableHeader.js +13 -0
  30. package/table/components/TableMain.d.ts +5 -0
  31. package/table/components/TableMain.js +233 -0
  32. package/table/components/TableRow.d.ts +5 -0
  33. package/table/components/TableRow.js +8 -0
  34. package/table/components/TableTitle.d.ts +5 -0
  35. package/table/components/TableTitle.js +18 -0
  36. package/table/contexts/TableActionsContext.d.ts +3 -0
  37. package/table/contexts/TableActionsContext.js +5 -0
  38. package/table/contexts/TableDragContext.d.ts +26 -0
  39. package/table/contexts/TableDragContext.js +26 -0
  40. package/table/contexts/TableHeaderContext.d.ts +2 -0
  41. package/table/contexts/TableHeaderContext.js +7 -0
  42. package/table/contexts/TableMetadataContext.d.ts +3 -0
  43. package/table/contexts/TableMetadataContext.js +5 -0
  44. package/table/contexts/TableScrollContext.d.ts +2 -0
  45. package/table/contexts/TableScrollContext.js +9 -0
  46. package/table/contexts/TableStateContext.d.ts +3 -0
  47. package/table/contexts/TableStateContext.js +5 -0
  48. package/table/createReactTable.d.ts +4 -0
  49. package/table/createReactTable.js +297 -0
  50. package/table/defaultRenderTableElements.d.ts +2 -0
  51. package/table/defaultRenderTableElements.js +20 -0
  52. package/table/hooks/useColumnResize.d.ts +12 -0
  53. package/table/hooks/useColumnResize.js +168 -0
  54. package/table/hooks/useTableActions.d.ts +27 -0
  55. package/table/hooks/useTableActions.js +1092 -0
  56. package/table/hooks/useTableActionsContext.d.ts +1 -0
  57. package/table/hooks/useTableActionsContext.js +12 -0
  58. package/table/hooks/useTableCell.d.ts +16 -0
  59. package/table/hooks/useTableCell.js +166 -0
  60. package/table/hooks/useTableCellToolbarActions.d.ts +34 -0
  61. package/table/hooks/useTableCellToolbarActions.js +526 -0
  62. package/table/hooks/useTableMetadata.d.ts +1 -0
  63. package/table/hooks/useTableMetadata.js +12 -0
  64. package/table/hooks/useTableStateContext.d.ts +1 -0
  65. package/table/hooks/useTableStateContext.js +12 -0
  66. package/table/hooks/useTableStates.d.ts +18 -0
  67. package/table/hooks/useTableStates.js +14 -0
  68. package/table/index.cjs.js +4002 -0
  69. package/table/index.d.ts +16 -0
  70. package/table/index.js +27 -0
  71. package/table/jsx-serializer/components/Table.d.ts +3 -0
  72. package/table/jsx-serializer/components/Table.js +7 -0
  73. package/table/jsx-serializer/components/TableBody.d.ts +3 -0
  74. package/table/jsx-serializer/components/TableBody.js +7 -0
  75. package/table/jsx-serializer/components/TableCell.d.ts +5 -0
  76. package/table/jsx-serializer/components/TableCell.js +33 -0
  77. package/table/jsx-serializer/components/TableHeader.d.ts +3 -0
  78. package/table/jsx-serializer/components/TableHeader.js +10 -0
  79. package/table/jsx-serializer/components/TableMain.d.ts +6 -0
  80. package/table/jsx-serializer/components/TableMain.js +18 -0
  81. package/table/jsx-serializer/components/TableRow.d.ts +3 -0
  82. package/table/jsx-serializer/components/TableRow.js +7 -0
  83. package/table/jsx-serializer/components/TableTitle.d.ts +3 -0
  84. package/table/jsx-serializer/components/TableTitle.js +7 -0
  85. package/table/jsx-serializer/contexts/TableHeaderContext.d.ts +1 -0
  86. package/table/jsx-serializer/contexts/TableHeaderContext.js +5 -0
  87. package/table/jsx-serializer/contexts/TableScrollContext.d.ts +2 -0
  88. package/table/jsx-serializer/contexts/TableScrollContext.js +7 -0
  89. package/table/jsx-serializer/createJsxSerializeTable.d.ts +5 -0
  90. package/table/jsx-serializer/createJsxSerializeTable.js +113 -0
  91. package/table/jsx-serializer/defaultRenderTableElements.d.ts +2 -0
  92. package/table/jsx-serializer/defaultRenderTableElements.js +20 -0
  93. package/table/jsx-serializer/index.cjs.js +195 -0
  94. package/table/jsx-serializer/index.d.ts +3 -0
  95. package/table/jsx-serializer/index.js +2 -0
  96. package/table/jsx-serializer/package.json +7 -0
  97. package/table/jsx-serializer/typings.d.ts +12 -0
  98. package/table/package.json +10 -0
  99. package/table/table.css +1 -0
  100. package/table/table.scss +428 -0
  101. package/table/toolbar/TableToolbarIcon.d.ts +8 -0
  102. package/table/toolbar/TableToolbarIcon.js +12 -0
  103. package/table/toolbar/index.cjs.js +24 -0
  104. package/table/toolbar/index.d.ts +2 -0
  105. package/table/toolbar/index.js +2 -0
  106. package/table/toolbar/package.json +7 -0
  107. package/table/toolbar/useTableTool.d.ts +4 -0
  108. package/table/toolbar/useTableTool.js +13 -0
  109. package/table/typings.d.ts +68 -0
  110. package/table/utils/helper.d.ts +186 -0
  111. package/table/utils/helper.js +799 -0
  112. package/toolbar/components/InlineToolbar.d.ts +12 -11
  113. package/toolbar/components/InlineToolbar.js +23 -19
  114. package/toolbar/components/Toolbar.js +2 -2
  115. package/toolbar/index.cjs.js +24 -21
  116. package/toolbar/toolbar.css +1 -1
  117. package/toolbar/toolbar.scss +4 -1
  118. package/utils/index.cjs.js +7 -1
  119. package/utils/removePreviousElement.js +7 -1
@@ -2,17 +2,18 @@ import React from 'react';
2
2
  import { IconDefinition } from '@quadrats/icons';
3
3
  export interface InlineToolbarProps {
4
4
  className?: string;
5
- leftIcons: {
6
- icon: IconDefinition;
7
- onClick: VoidFunction;
8
- active: boolean;
9
- disabled?: boolean;
10
- }[];
11
- rightIcons: {
12
- icon: IconDefinition;
13
- onClick: VoidFunction;
14
- disabled?: boolean;
5
+ iconGroups: {
6
+ enabledBgColor?: boolean;
7
+ icons: ({
8
+ icon: IconDefinition;
9
+ onClick: VoidFunction;
10
+ active?: boolean;
11
+ disabled?: boolean;
12
+ className?: string;
13
+ } | React.JSX.Element)[];
15
14
  }[];
15
+ style?: React.CSSProperties;
16
+ onClickAway?: VoidFunction;
16
17
  }
17
- declare function InlineToolbar({ className, leftIcons, rightIcons }: InlineToolbarProps): React.JSX.Element;
18
+ declare function InlineToolbar({ className, iconGroups, style, onClickAway }: InlineToolbarProps): React.JSX.Element;
18
19
  export default InlineToolbar;
@@ -1,27 +1,31 @@
1
- import React from 'react';
1
+ import React, { useRef, Fragment } from 'react';
2
2
  import clsx from 'clsx';
3
3
  import { Icon } from '@quadrats/react/components';
4
+ import { useClickAway } from '@quadrats/react/utils';
4
5
 
5
- function InlineToolbar({ className, leftIcons, rightIcons }) {
6
- return (React.createElement("div", { contentEditable: false, className: clsx('qdr-inline-toolbar', className) },
7
- leftIcons.length > 0 && (React.createElement("div", { className: "qdr-inline-toolbar__wrapper" }, leftIcons.map((icon) => (React.createElement(Icon, { key: icon.icon.name, className: clsx('qdr-inline-toolbar__icon', {
8
- 'qdr-inline-toolbar__icon--active': icon.active,
9
- 'qdr-inline-toolbar__icon--disabled': icon.disabled,
10
- }), icon: icon.icon, width: 24, height: 24, onClick: (e) => {
11
- if (!icon.disabled) {
6
+ function InlineToolbar({ className, iconGroups, style, onClickAway }) {
7
+ const validIconsGroup = iconGroups.filter((group) => group.icons.length);
8
+ const ref = useRef(null);
9
+ useClickAway(() => {
10
+ return onClickAway
11
+ ? () => {
12
+ onClickAway();
13
+ }
14
+ : undefined;
15
+ }, ref, [onClickAway]);
16
+ return (React.createElement("div", { ref: ref, contentEditable: false, className: clsx('qdr-inline-toolbar', className), style: style }, validIconsGroup.map((group, index) => (React.createElement(Fragment, { key: index },
17
+ React.createElement("div", { className: clsx('qdr-inline-toolbar__wrapper', {
18
+ 'qdr-inline-toolbar__wrapper--enabledBgColor': group.enabledBgColor,
19
+ }) }, group.icons.map((child) => 'icon' in child ? (React.createElement(Icon, { key: child.icon.name, className: clsx('qdr-inline-toolbar__icon', child.className, {
20
+ 'qdr-inline-toolbar__icon--active': child.active,
21
+ 'qdr-inline-toolbar__icon--disabled': child.disabled,
22
+ }), icon: child.icon, width: 24, height: 24, onClick: (e) => {
23
+ if (!child.disabled) {
12
24
  e.preventDefault();
13
- icon.onClick();
25
+ child.onClick();
14
26
  }
15
- } }))))),
16
- leftIcons.length > 0 && rightIcons.length > 0 && React.createElement("div", { className: "qdr-inline-toolbar__divider" }),
17
- rightIcons.map((icon) => (React.createElement(Icon, { key: icon.icon.name, className: clsx('qdr-inline-toolbar__icon', {
18
- 'qdr-inline-toolbar__icon--disabled': icon.disabled,
19
- }), icon: icon.icon, width: 24, height: 24, onClick: (e) => {
20
- if (!icon.disabled) {
21
- e.preventDefault();
22
- icon.onClick();
23
- }
24
- } })))));
27
+ } })) : (child))),
28
+ index < validIconsGroup.length - 1 && React.createElement("div", { className: "qdr-inline-toolbar__divider" }))))));
25
29
  }
26
30
 
27
31
  export { InlineToolbar as default };
@@ -39,7 +39,7 @@ function Toolbar(props) {
39
39
  const focused = ReactEditor.isFocused(editor);
40
40
  const { selection } = editor;
41
41
  const [toolInput, setToolInput] = useState();
42
- const startToolInput = useCallback(inputConfig => setToolInput(Object.assign(Object.assign({}, inputConfig), { currentSelection: selection })), [selection]);
42
+ const startToolInput = useCallback((inputConfig) => setToolInput(Object.assign(Object.assign({}, inputConfig), { currentSelection: selection })), [selection]);
43
43
  let renderExpandedStatus;
44
44
  if (toolInput) {
45
45
  const { currentSelection } = toolInput;
@@ -97,7 +97,7 @@ function Toolbar(props) {
97
97
  const toolbarBody = (React.createElement(React.Fragment, null,
98
98
  React.createElement(StartToolInputContext.Provider, { value: startToolInput }, takeCount > 0 ? (React.createElement(React.Fragment, null,
99
99
  shownElements,
100
- React.createElement(ToolbarGroupIcon, { icon: More, withArrow: false }, groupElements))) : tools),
100
+ React.createElement(ToolbarGroupIcon, { icon: More, withArrow: false }, groupElements))) : (tools)),
101
101
  toolInput && (React.createElement(ToolbarInput, { exit: () => {
102
102
  const { currentSelection } = toolInput;
103
103
  if (currentSelection) {
@@ -3,37 +3,40 @@
3
3
  var React = require('react');
4
4
  var clsx = require('clsx');
5
5
  var components = require('@quadrats/react/components');
6
+ var utils = require('@quadrats/react/utils');
6
7
  var core = require('@quadrats/core');
7
8
  var icons = require('@quadrats/icons');
8
9
  var react = require('@quadrats/react');
9
10
  var tslib = require('tslib');
10
- var utils = require('@quadrats/react/utils');
11
11
 
12
12
  /**
13
13
  * A react element constant of toolbar divider.
14
14
  */
15
15
  const TOOLBAR_DIVIDER = React.createElement("span", { className: "qdr-toolbar__divider" });
16
16
 
17
- function InlineToolbar({ className, leftIcons, rightIcons }) {
18
- return (React.createElement("div", { contentEditable: false, className: clsx('qdr-inline-toolbar', className) },
19
- leftIcons.length > 0 && (React.createElement("div", { className: "qdr-inline-toolbar__wrapper" }, leftIcons.map((icon) => (React.createElement(components.Icon, { key: icon.icon.name, className: clsx('qdr-inline-toolbar__icon', {
20
- 'qdr-inline-toolbar__icon--active': icon.active,
21
- 'qdr-inline-toolbar__icon--disabled': icon.disabled,
22
- }), icon: icon.icon, width: 24, height: 24, onClick: (e) => {
23
- if (!icon.disabled) {
24
- e.preventDefault();
25
- icon.onClick();
26
- }
27
- } }))))),
28
- leftIcons.length > 0 && rightIcons.length > 0 && React.createElement("div", { className: "qdr-inline-toolbar__divider" }),
29
- rightIcons.map((icon) => (React.createElement(components.Icon, { key: icon.icon.name, className: clsx('qdr-inline-toolbar__icon', {
30
- 'qdr-inline-toolbar__icon--disabled': icon.disabled,
31
- }), icon: icon.icon, width: 24, height: 24, onClick: (e) => {
32
- if (!icon.disabled) {
17
+ function InlineToolbar({ className, iconGroups, style, onClickAway }) {
18
+ const validIconsGroup = iconGroups.filter((group) => group.icons.length);
19
+ const ref = React.useRef(null);
20
+ utils.useClickAway(() => {
21
+ return onClickAway
22
+ ? () => {
23
+ onClickAway();
24
+ }
25
+ : undefined;
26
+ }, ref, [onClickAway]);
27
+ return (React.createElement("div", { ref: ref, contentEditable: false, className: clsx('qdr-inline-toolbar', className), style: style }, validIconsGroup.map((group, index) => (React.createElement(React.Fragment, { key: index },
28
+ React.createElement("div", { className: clsx('qdr-inline-toolbar__wrapper', {
29
+ 'qdr-inline-toolbar__wrapper--enabledBgColor': group.enabledBgColor,
30
+ }) }, group.icons.map((child) => 'icon' in child ? (React.createElement(components.Icon, { key: child.icon.name, className: clsx('qdr-inline-toolbar__icon', child.className, {
31
+ 'qdr-inline-toolbar__icon--active': child.active,
32
+ 'qdr-inline-toolbar__icon--disabled': child.disabled,
33
+ }), icon: child.icon, width: 24, height: 24, onClick: (e) => {
34
+ if (!child.disabled) {
33
35
  e.preventDefault();
34
- icon.onClick();
36
+ child.onClick();
35
37
  }
36
- } })))));
38
+ } })) : (child))),
39
+ index < validIconsGroup.length - 1 && React.createElement("div", { className: "qdr-inline-toolbar__divider" }))))));
37
40
  }
38
41
 
39
42
  const ToolbarContext = React.createContext({
@@ -251,7 +254,7 @@ function Toolbar(props) {
251
254
  const focused = react.ReactEditor.isFocused(editor);
252
255
  const { selection } = editor;
253
256
  const [toolInput, setToolInput] = React.useState();
254
- const startToolInput = React.useCallback(inputConfig => setToolInput(Object.assign(Object.assign({}, inputConfig), { currentSelection: selection })), [selection]);
257
+ const startToolInput = React.useCallback((inputConfig) => setToolInput(Object.assign(Object.assign({}, inputConfig), { currentSelection: selection })), [selection]);
255
258
  let renderExpandedStatus;
256
259
  if (toolInput) {
257
260
  const { currentSelection } = toolInput;
@@ -309,7 +312,7 @@ function Toolbar(props) {
309
312
  const toolbarBody = (React.createElement(React.Fragment, null,
310
313
  React.createElement(StartToolInputContext.Provider, { value: startToolInput }, takeCount > 0 ? (React.createElement(React.Fragment, null,
311
314
  shownElements,
312
- React.createElement(ToolbarGroupIcon, { icon: icons.More, withArrow: false }, groupElements))) : tools),
315
+ React.createElement(ToolbarGroupIcon, { icon: icons.More, withArrow: false }, groupElements))) : (tools)),
313
316
  toolInput && (React.createElement(ToolbarInput, { exit: () => {
314
317
  const { currentSelection } = toolInput;
315
318
  if (currentSelection) {
@@ -1 +1 @@
1
- .qdr-toolbar{display:flex;align-items:center;gap:var(--qdr-spacing-4);height:var(--qdr-spacing-14);padding:var(--qdr-spacing-4) var(--qdr-spacing-4);background-color:var(--qdr-surface);border:1px solid var(--qdr-border);box-sizing:border-box}.qdr-toolbar--radius{border-radius:var(--qdr-radius-3)}.qdr-toolbar--shadow{box-shadow:var(--qdr-shadow-s)}.qdr-toolbar__input{font-size:.8125rem;background:var(--qdr-block);color:var(--qdr-text-secondary);width:calc(100% - var(--qdr-spacing-7));height:100%;border:none;padding:0;outline:none}.qdr-toolbar__input__wrapper{display:flex;align-items:center;position:absolute;top:var(--qdr-spacing-4);left:var(--qdr-spacing-4);width:calc(100% - var(--qdr-spacing-4)*2);height:calc(100% - (var(--qdr-spacing-4)*2 + var(--qdr-spacing-4)));background:var(--qdr-block);box-sizing:border-box}.qdr-toolbar__input__cross{fill:var(--qdr-text-secondary);font-size:var(--qdr-spacing-7);width:var(--qdr-spacing-7);height:var(--qdr-spacing-7);cursor:pointer}.qdr-toolbar__wrapper{box-sizing:content-box;height:var(--qdr-spacing-14)}.qdr-toolbar__wrapper--fixed{position:sticky;top:0;z-index:1}.qdr-toolbar__wrapper--fixed .qdr-toolbar__input__wrapper{height:calc(100% - var(--qdr-spacing-4)*2)}.qdr-toolbar__wrapper--float{position:absolute;z-index:1;padding-bottom:var(--qdr-spacing-4)}.qdr-toolbar__wrapper--float .qdr-toolbar{background-color:var(--qdr-block)}.qdr-toolbar__wrapper--inputting{min-width:250px}.qdr-toolbar__arrow{position:absolute;top:calc(100% - var(--qdr-spacing-4));left:50%;content:"";width:var(--qdr-spacing-4);height:var(--qdr-spacing-4);background:var(--qdr-surface);border:1px solid var(--qdr-border);border-top:none;border-left:none;transform:translateX(-50%) translateY(-50%) rotate(45deg)}.qdr-toolbar__divider{width:1px;height:var(--qdr-spacing-8);background-color:var(--qdr-divider)}.qdr-toolbar__icon{position:relative;color:var(--qdr-action-inactive);font-size:24px;display:inline-flex;justify-content:center;align-items:center;gap:var(--qdr-spacing-1);border:0;background-color:rgba(0,0,0,0);padding:var(--qdr-spacing-2);outline:none;box-shadow:none;border-radius:var(--qdr-radius-1);transition:color var(--qdr-duration-short) var(--qdr-easing-standard),background var(--qdr-duration-short) var(--qdr-easing-standard);cursor:pointer}.qdr-toolbar__icon:hover,.qdr-toolbar__icon--expanded{color:var(--qdr-action-active);background:var(--qdr-secondary-hover-bg)}.qdr-toolbar__icon--active{color:var(--qdr-primary)}.qdr-toolbar__icon--with-name{display:flex;align-items:center;justify-content:flex-start;border-radius:0;gap:var(--qdr-spacing-4);padding:0 var(--qdr-spacing-6)}.qdr-toolbar__icon--with-name:hover{color:var(--qdr-action-inactive);background:var(--qdr-primary-hover-bg)}.qdr-toolbar__icon--with-name--active{color:var(--qdr-action-inactive);background:var(--qdr-primary-active-bg)}.qdr-toolbar__icon__wrapper{display:flex;align-items:center;justify-content:center;position:relative}.qdr-toolbar__icon__arrow{color:var(--qdr-action-disabled)}.qdr-toolbar__icon__name{flex:1;margin:0;font-size:var(--qdr-typography-basic-input1-font-size);line-height:var(--qdr-typography-basic-input1-line-height);letter-spacing:var(--qdr-typography-basic-input1-letter-spacing);font-weight:var(--qdr-typography-basic-input1-font-weight);color:var(--qdr-text-primary)}.qdr-toolbar__icon__check{color:var(--qdr-primary)}.qdr-toolbar__icon__menu{opacity:0;position:absolute;background:var(--qdr-surface);border:1px solid var(--qdr-border);padding:var(--qdr-spacing-2) 0;width:200px;max-height:240px;box-shadow:var(--qdr-shadow-xl);pointer-events:none;overflow-y:auto;transition:opacity var(--qdr-duration-short) var(--qdr-easing-standard)}.qdr-toolbar__icon__menu--expanded{pointer-events:auto;opacity:1}.qdr-toolbar__icon__menu--top{bottom:var(--qdr-spacing-14)}.qdr-toolbar__icon__menu--bottom{top:var(--qdr-spacing-14)}.qdr-inline-toolbar{position:absolute;top:var(--qdr-spacing-4);right:var(--qdr-spacing-4);display:flex;align-items:center;justify-content:flex-start;gap:var(--qdr-spacing-3);background-color:var(--qdr-bg);padding:var(--qdr-spacing-3);border:1px solid var(--qdr-border);border-radius:var(--qdr-radius-3);pointer-events:none;opacity:0;transition:opacity var(--qdr-duration-short) var(--qdr-easing-standard);z-index:1}.qdr-inline-toolbar__wrapper{display:flex;align-items:center;justify-content:flex-start;gap:var(--qdr-spacing-1);padding:var(--qdr-spacing-1);background-color:var(--qdr-divider);border-radius:var(--qdr-radius-1)}.qdr-inline-toolbar__divider{width:1px;height:16px;background-color:var(--qdr-divider)}.qdr-inline-toolbar__icon{color:var(--qdr-action-inactive);border-radius:var(--qdr-radius-1);transition:color var(--qdr-duration-short) var(--qdr-easing-standard),background-color var(--qdr-duration-short) var(--qdr-easing-standard);cursor:pointer}.qdr-inline-toolbar__icon:hover{color:var(--qdr-primary-light)}.qdr-inline-toolbar__icon--active{color:var(--qdr-primary-light);background-color:var(--qdr-block)}.qdr-inline-toolbar__icon--disabled:hover{color:var(--qdr-action-inactive);cursor:not-allowed}
1
+ .qdr-toolbar{display:flex;align-items:center;gap:var(--qdr-spacing-4);height:var(--qdr-spacing-14);padding:var(--qdr-spacing-4) var(--qdr-spacing-4);background-color:var(--qdr-surface);border:1px solid var(--qdr-border);box-sizing:border-box}.qdr-toolbar--radius{border-radius:var(--qdr-radius-3)}.qdr-toolbar--shadow{box-shadow:var(--qdr-shadow-s)}.qdr-toolbar__input{font-size:.8125rem;background:var(--qdr-block);color:var(--qdr-text-secondary);width:calc(100% - var(--qdr-spacing-7));height:100%;border:none;padding:0;outline:none}.qdr-toolbar__input__wrapper{display:flex;align-items:center;position:absolute;top:var(--qdr-spacing-4);left:var(--qdr-spacing-4);width:calc(100% - var(--qdr-spacing-4)*2);height:calc(100% - (var(--qdr-spacing-4)*2 + var(--qdr-spacing-4)));background:var(--qdr-block);box-sizing:border-box}.qdr-toolbar__input__cross{fill:var(--qdr-text-secondary);font-size:var(--qdr-spacing-7);width:var(--qdr-spacing-7);height:var(--qdr-spacing-7);cursor:pointer}.qdr-toolbar__wrapper{box-sizing:content-box;height:var(--qdr-spacing-14)}.qdr-toolbar__wrapper--fixed{position:sticky;top:0;z-index:1}.qdr-toolbar__wrapper--fixed .qdr-toolbar__input__wrapper{height:calc(100% - var(--qdr-spacing-4)*2)}.qdr-toolbar__wrapper--float{position:absolute;z-index:1;padding-bottom:var(--qdr-spacing-4)}.qdr-toolbar__wrapper--float .qdr-toolbar{background-color:var(--qdr-block)}.qdr-toolbar__wrapper--inputting{min-width:250px}.qdr-toolbar__arrow{position:absolute;top:calc(100% - var(--qdr-spacing-4));left:50%;content:"";width:var(--qdr-spacing-4);height:var(--qdr-spacing-4);background:var(--qdr-surface);border:1px solid var(--qdr-border);border-top:none;border-left:none;transform:translateX(-50%) translateY(-50%) rotate(45deg)}.qdr-toolbar__divider{width:1px;height:var(--qdr-spacing-8);background-color:var(--qdr-divider)}.qdr-toolbar__icon{position:relative;color:var(--qdr-action-inactive);font-size:24px;display:inline-flex;justify-content:center;align-items:center;gap:var(--qdr-spacing-1);border:0;background-color:rgba(0,0,0,0);padding:var(--qdr-spacing-2);outline:none;box-shadow:none;border-radius:var(--qdr-radius-1);transition:color var(--qdr-duration-short) var(--qdr-easing-standard),background var(--qdr-duration-short) var(--qdr-easing-standard);cursor:pointer}.qdr-toolbar__icon:hover,.qdr-toolbar__icon--expanded{color:var(--qdr-action-active);background:var(--qdr-secondary-hover-bg)}.qdr-toolbar__icon--active{color:var(--qdr-primary)}.qdr-toolbar__icon--with-name{display:flex;align-items:center;justify-content:flex-start;border-radius:0;gap:var(--qdr-spacing-4);padding:0 var(--qdr-spacing-6)}.qdr-toolbar__icon--with-name:hover{color:var(--qdr-action-inactive);background:var(--qdr-primary-hover-bg)}.qdr-toolbar__icon--with-name--active{color:var(--qdr-action-inactive);background:var(--qdr-primary-active-bg)}.qdr-toolbar__icon__wrapper{display:flex;align-items:center;justify-content:center;position:relative}.qdr-toolbar__icon__arrow{color:var(--qdr-action-disabled)}.qdr-toolbar__icon__name{flex:1;margin:0;font-size:var(--qdr-typography-basic-input1-font-size);line-height:var(--qdr-typography-basic-input1-line-height);letter-spacing:var(--qdr-typography-basic-input1-letter-spacing);font-weight:var(--qdr-typography-basic-input1-font-weight);color:var(--qdr-text-primary)}.qdr-toolbar__icon__check{color:var(--qdr-primary)}.qdr-toolbar__icon__menu{opacity:0;position:absolute;background:var(--qdr-surface);border:1px solid var(--qdr-border);padding:var(--qdr-spacing-2) 0;width:200px;max-height:240px;box-shadow:var(--qdr-shadow-xl);pointer-events:none;overflow-y:auto;transition:opacity var(--qdr-duration-short) var(--qdr-easing-standard)}.qdr-toolbar__icon__menu--expanded{pointer-events:auto;opacity:1}.qdr-toolbar__icon__menu--top{bottom:var(--qdr-spacing-14)}.qdr-toolbar__icon__menu--bottom{top:var(--qdr-spacing-14)}.qdr-inline-toolbar{position:absolute;top:var(--qdr-spacing-4);right:var(--qdr-spacing-4);display:flex;align-items:center;justify-content:flex-start;gap:var(--qdr-spacing-3);background-color:var(--qdr-bg);padding:var(--qdr-spacing-3);border:1px solid var(--qdr-border);border-radius:var(--qdr-radius-3);pointer-events:none;opacity:0;transition:opacity var(--qdr-duration-short) var(--qdr-easing-standard);z-index:1}.qdr-inline-toolbar__wrapper{display:flex;align-items:center;justify-content:flex-start;gap:var(--qdr-spacing-1);padding:var(--qdr-spacing-1);border-radius:var(--qdr-radius-1)}.qdr-inline-toolbar__wrapper--enabledBgColor{background-color:var(--qdr-divider)}.qdr-inline-toolbar__divider{width:1px;height:16px;background-color:var(--qdr-divider)}.qdr-inline-toolbar__icon{color:var(--qdr-action-inactive);border-radius:var(--qdr-radius-1);transition:color var(--qdr-duration-short) var(--qdr-easing-standard),background-color var(--qdr-duration-short) var(--qdr-easing-standard);cursor:pointer}.qdr-inline-toolbar__icon:hover{color:var(--qdr-primary-light)}.qdr-inline-toolbar__icon--active{color:var(--qdr-primary-light);background-color:var(--qdr-block)}.qdr-inline-toolbar__icon--disabled:hover{color:var(--qdr-action-inactive);cursor:not-allowed}
@@ -232,8 +232,11 @@ $qdr-toolbar-input-cross-size: --qdr-spacing-7;
232
232
  justify-content: flex-start;
233
233
  gap: var(--qdr-spacing-1);
234
234
  padding: var(--qdr-spacing-1);
235
- background-color: var(--qdr-divider);
236
235
  border-radius: var(--qdr-radius-1);
236
+
237
+ &--enabledBgColor {
238
+ background-color: var(--qdr-divider);
239
+ }
237
240
  }
238
241
 
239
242
  &__divider {
@@ -48,7 +48,13 @@ function removePreviousElement({ event, editor, type, confirmModal, doConfirm, }
48
48
  // at: currentPath,
49
49
  // match: (n) => Element.isElement(n) && (n as QuadratsElement).type === type,
50
50
  // });
51
- const prevPath = core.Path.previous(currentPath);
51
+ let prevPath = currentPath;
52
+ try {
53
+ prevPath = core.Path.previous(currentPath);
54
+ }
55
+ catch (ex) {
56
+ // error
57
+ }
52
58
  const prevNode = core.Node.get(editor, prevPath);
53
59
  if (core.Element.isElement(prevNode) && prevNode.type === type) {
54
60
  event.preventDefault();
@@ -13,7 +13,13 @@ function removePreviousElement({ event, editor, type, confirmModal, doConfirm, }
13
13
  // at: currentPath,
14
14
  // match: (n) => Element.isElement(n) && (n as QuadratsElement).type === type,
15
15
  // });
16
- const prevPath = Path.previous(currentPath);
16
+ let prevPath = currentPath;
17
+ try {
18
+ prevPath = Path.previous(currentPath);
19
+ }
20
+ catch (ex) {
21
+ // error
22
+ }
17
23
  const prevNode = Node.get(editor, prevPath);
18
24
  if (Element.isElement(prevNode) && prevNode.type === type) {
19
25
  event.preventDefault();