@flozy/editor 3.6.3 → 3.6.5

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.
@@ -146,21 +146,19 @@ function AppHeader(props) {
146
146
  src: appLogo
147
147
  }) : appTitle
148
148
  }), /*#__PURE__*/_jsx(Divider, {}), /*#__PURE__*/_jsx(List, {
149
- children: menus.map((item, i) => {
150
- const buttonProps = handleLinkType(item.url, item.linkType, true, item.target === "_blank");
151
- return /*#__PURE__*/_jsx(ListItem, {
152
- disablePadding: true,
153
- children: /*#__PURE__*/_jsx(ListItemButton, {
154
- ...buttonProps,
155
- sx: {
156
- textAlign: "center"
157
- },
158
- children: /*#__PURE__*/_jsx(ListItemText, {
159
- primary: item.text
160
- })
149
+ children: menus.map((item, i) => /*#__PURE__*/_jsx(ListItem, {
150
+ disablePadding: true,
151
+ children: /*#__PURE__*/_jsx(ListItemButton, {
152
+ component: "a",
153
+ href: item.url,
154
+ sx: {
155
+ textAlign: "center"
156
+ },
157
+ children: /*#__PURE__*/_jsx(ListItemText, {
158
+ primary: item.text
161
159
  })
162
- }, `${item.text}_${i}`);
163
- })
160
+ })
161
+ }, `${item.text}_${i}`))
164
162
  })]
165
163
  });
166
164
  const container = window !== undefined ? () => window().document.body : undefined;
@@ -2,7 +2,8 @@ import React, { useState } from "react";
2
2
  import { Transforms } from "slate";
3
3
  import { ReactEditor, useSlateStatic } from "slate-react";
4
4
  import { IconButton, Tooltip, Box } from "@mui/material";
5
- import * as fIcons from "@mui/icons-material";
5
+ // import * as fIcons from "@mui/icons-material";
6
+ import MUIIcon from "../../common/StyleBuilder/fieldTypes/loadIcon";
6
7
  import SettingsIcon from "@mui/icons-material/Settings";
7
8
  import OpenInNewIcon from "@mui/icons-material/OpenInNew";
8
9
  import LinkIcon from "@mui/icons-material/Link";
@@ -63,7 +64,7 @@ const EditorButton = props => {
63
64
  };
64
65
  const isTrigger = linkType === "actionTrigger";
65
66
  const refURl = isTrigger ? buttonLink?.url : url;
66
- const BtnIcon = buttonIcon ? fIcons[buttonIcon] : null;
67
+ const BtnIcon = buttonIcon ? buttonIcon : null;
67
68
  windowVar.lastButtonProps = element;
68
69
  const handleTrigger = async () => {
69
70
  if (metadata?.buttonLink?.handler) {
@@ -80,6 +81,7 @@ const EditorButton = props => {
80
81
  }
81
82
  };
82
83
  const buttonProps = handleLinkType(refURl, linkType, readOnly, openInNewTab, handleTrigger);
84
+ console.log(openInNewTab);
83
85
  const onMenuClick = val => () => {
84
86
  switch (val) {
85
87
  case "edit":
@@ -131,6 +133,7 @@ const EditorButton = props => {
131
133
  color: "rgba(0, 0, 0, 0.54)"
132
134
  },
133
135
  ...btnProps,
136
+ target: openInNewTab ? "_blank" : "_self",
134
137
  children: /*#__PURE__*/_jsx(OpenInNewIcon, {})
135
138
  })
136
139
  })]
@@ -212,12 +215,14 @@ const EditorButton = props => {
212
215
  }
213
216
  },
214
217
  ...buttonProps,
215
- children: [BtnIcon && iconPosition === "start" && /*#__PURE__*/_jsx(BtnIcon, {
218
+ children: [BtnIcon && iconPosition === "start" && /*#__PURE__*/_jsx(MUIIcon, {
219
+ iconName: buttonIcon,
216
220
  style: {
217
221
  paddingLeft: "4px",
218
222
  paddingRight: "4px"
219
223
  }
220
- }), label || "My Button", BtnIcon && iconPosition === "end" && /*#__PURE__*/_jsx(BtnIcon, {
224
+ }), label || "My Button", BtnIcon && iconPosition === "end" && /*#__PURE__*/_jsx(MUIIcon, {
225
+ iconName: buttonIcon,
221
226
  style: {
222
227
  paddingLeft: "4px",
223
228
  paddingRight: "4px"
@@ -1,10 +1,10 @@
1
1
  import React, { useState } from "react";
2
2
  import { Transforms } from "slate";
3
3
  import { useSlateStatic, ReactEditor } from "slate-react";
4
- import * as fIcons from "@mui/icons-material";
5
4
  import { Box } from "@mui/material";
6
5
  import ChipTextPopup from "./ChipTextPopup";
7
6
  import { getTRBLBreakPoints, getBreakPointsValue } from "../../helper/theme";
7
+ import MUIIcon from "../../common/StyleBuilder/fieldTypes/loadIcon";
8
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
10
10
  const ChipText = props => {
@@ -26,7 +26,6 @@ const ChipText = props => {
26
26
  buttonIcon,
27
27
  textSize
28
28
  } = element;
29
- const BtnIcon = buttonIcon ? fIcons[buttonIcon] : fIcons["Check"];
30
29
  const [openSetttings, setOpenSettings] = useState(false);
31
30
  const editor = useSlateStatic();
32
31
  const path = ReactEditor.findPath(editor, element);
@@ -82,7 +81,8 @@ const ChipText = props => {
82
81
  background: bgColor || "#CCC",
83
82
  color: textColor
84
83
  },
85
- children: [/*#__PURE__*/_jsx(BtnIcon, {
84
+ children: [/*#__PURE__*/_jsx(MUIIcon, {
85
+ iconName: buttonIcon || "Check",
86
86
  style: {
87
87
  fontSize: textSize || "16px",
88
88
  lineHeight: textSize || "16px",
@@ -277,7 +277,7 @@ const Grid = props => {
277
277
  } = getBreakPointsValue(borderRadius, size?.device) || {};
278
278
  return /*#__PURE__*/_jsxs(GridContainer, {
279
279
  container: true,
280
- className: `grid-container ${grid} has-hover element-root`,
280
+ className: `grid-container ${grid} has-hover element-root dpath`,
281
281
  ...attributes,
282
282
  ...sectionId,
283
283
  sx: {
@@ -105,7 +105,7 @@ const GridItem = props => {
105
105
  return /*#__PURE__*/_jsxs(Item, {
106
106
  item: true,
107
107
  component: "div",
108
- className: `grid-item element-root gi-top-wrpr`,
108
+ className: `grid-item element-root gi-top-wrpr dpath`,
109
109
  ...attributes,
110
110
  sx: {
111
111
  width: {
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import * as fIcons from "@mui/icons-material";
3
2
  import { Box } from "@mui/material";
3
+ import Check from "@mui/icons-material/Check";
4
4
  import { getBreakPointsValue } from "../../helper/theme";
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
6
6
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -23,7 +23,6 @@ const InlineIcon = props => {
23
23
  right,
24
24
  bottom
25
25
  } = bannerSpacing || {};
26
- const BtnIcon = fIcons["Check"];
27
26
  return /*#__PURE__*/_jsxs(Box, {
28
27
  ...attributes,
29
28
  className: "editor-icon-text",
@@ -42,7 +41,7 @@ const InlineIcon = props => {
42
41
  background: bgColor || "#CCC",
43
42
  color: textColor
44
43
  },
45
- children: [/*#__PURE__*/_jsx(BtnIcon, {}), /*#__PURE__*/_jsx("div", {
44
+ children: [/*#__PURE__*/_jsx(Check, {}), /*#__PURE__*/_jsx("div", {
46
45
  contentEditable: true,
47
46
  children: children
48
47
  })]
@@ -11,7 +11,9 @@ const CheckList = ({
11
11
  attributes,
12
12
  children,
13
13
  element,
14
- isEmpty
14
+ isEmpty,
15
+ className,
16
+ style
15
17
  }) => {
16
18
  const editor = useSlateStatic();
17
19
  const readOnly = useReadOnly();
@@ -30,12 +32,14 @@ const CheckList = ({
30
32
  const nestedCheckList = element?.children?.length && element.children[0].type === "check-list-item";
31
33
  return /*#__PURE__*/_jsx(_Fragment, {
32
34
  children: /*#__PURE__*/_jsxs("div", {
35
+ className: className || "",
33
36
  ...attributes,
34
37
  style: {
35
38
  textAlign: element.alignment || "left",
36
39
  display: "flex",
37
40
  justifyContent: "center",
38
- alignItems: "center"
41
+ alignItems: "center",
42
+ ...(style || {})
39
43
  },
40
44
  children: [/*#__PURE__*/_jsxs("div", {
41
45
  contentEditable: false,
@@ -188,6 +188,7 @@ const editorStyles = ({
188
188
  }
189
189
  },
190
190
  "& .checkbox-edit": {
191
+ alignSelf: "flex-start",
191
192
  "& .MuiFormControlLabel-root": {
192
193
  marginRight: "0px"
193
194
  },
@@ -212,7 +213,7 @@ const editorStyles = ({
212
213
  "& svg": {
213
214
  width: "17px",
214
215
  height: "18px",
215
- marginTop: '-1px'
216
+ marginTop: "-1px"
216
217
  }
217
218
  }
218
219
  },
@@ -273,7 +274,7 @@ const editorStyles = ({
273
274
  },
274
275
  cardsTypo: {
275
276
  color: theme?.palette?.editor?.textColor,
276
- fontSize: '14px !important'
277
+ fontSize: "14px !important"
277
278
  }
278
279
  });
279
280
  export default editorStyles;
@@ -1,24 +1,8 @@
1
1
  import { Autocomplete, Checkbox, FormControlLabel, MenuItem, Select, TextField, Typography, createFilterOptions } from "@mui/material";
2
2
  import { useEffect, useMemo, useState } from "react";
3
- import { useSlate } from "slate-react";
4
3
  import { jsx as _jsx } from "react/jsx-runtime";
5
4
  import { Fragment as _Fragment } from "react/jsx-runtime";
6
5
  import { jsxs as _jsxs } from "react/jsx-runtime";
7
- const sectionTypes = ["grid"];
8
- const loopChildren = (children = [], sections) => {
9
- if (!children?.length) {
10
- return sections;
11
- }
12
- for (let child of children) {
13
- if (sectionTypes.includes(child?.type)) {
14
- if (child.id) {
15
- sections.push(child.id);
16
- }
17
- }
18
- sections = loopChildren(child.children, sections);
19
- }
20
- return sections;
21
- };
22
6
  const OpenInNewTab = props => {
23
7
  const {
24
8
  nav,
@@ -58,35 +42,21 @@ export const SelectPage = props => {
58
42
  services
59
43
  } = props;
60
44
  const [pages, setPages] = useState([]);
61
- const editor = useSlate();
62
45
  const getPages = async () => {
63
46
  const result = await services("getPages", {});
64
- if (result?.data?.length) {
65
- const refactor = result?.data?.map(r => {
66
- const {
67
- title,
68
- url_name,
69
- ...rest
70
- } = r;
71
- return {
72
- label: url_name,
73
- value: url_name,
74
- ...rest
75
- };
76
- });
77
- setPages(refactor);
78
- } else {
79
- const currentPage = {
80
- label: "Current Page",
81
- value: "_currentPage",
82
- is_current_page: 1,
83
- sections: loopChildren(editor.children, [])
47
+ const refactor = result?.data?.map(r => {
48
+ const {
49
+ title,
50
+ url_name,
51
+ ...rest
52
+ } = r;
53
+ return {
54
+ label: url_name,
55
+ value: url_name,
56
+ ...rest
84
57
  };
85
- setPages([currentPage]);
86
- if (!value) {
87
- onChange(currentPage.value);
88
- }
89
- }
58
+ });
59
+ setPages(refactor);
90
60
  };
91
61
  useEffect(() => {
92
62
  getPages();
@@ -106,14 +76,12 @@ export const SelectPage = props => {
106
76
  }
107
77
  return [];
108
78
  }, [value, pages]);
109
- const isCurrentPage = page?.value === "_currentPage";
110
79
  return /*#__PURE__*/_jsxs("div", {
111
80
  children: [/*#__PURE__*/_jsx(FreeSoloCreateOption, {
112
81
  label: page?.label,
113
- setValue: val => onChange(val?.value || ""),
82
+ setValue: val => onChange(val?.value),
114
83
  placeholder: "Select Page",
115
- options: pages,
116
- disabled: isCurrentPage
84
+ options: pages
117
85
  }), /*#__PURE__*/_jsx(FreeSoloCreateOption, {
118
86
  label: section?.label,
119
87
  setValue: val => {
@@ -128,7 +96,7 @@ export const SelectPage = props => {
128
96
  label: p,
129
97
  value: p
130
98
  }))
131
- }), isCurrentPage ? null : /*#__PURE__*/_jsx(OpenInNewTab, {
99
+ }), /*#__PURE__*/_jsx(OpenInNewTab, {
132
100
  ...props
133
101
  })]
134
102
  });
@@ -181,8 +149,7 @@ export function FreeSoloCreateOption({
181
149
  label,
182
150
  setValue,
183
151
  options = [],
184
- placeholder = "",
185
- disabled = false
152
+ placeholder = ""
186
153
  }) {
187
154
  return /*#__PURE__*/_jsx(Autocomplete, {
188
155
  freeSolo: true,
@@ -197,7 +164,7 @@ export function FreeSoloCreateOption({
197
164
  children: option.label
198
165
  }),
199
166
  onChange: (event, newValue) => {
200
- if (typeof newValue === "string") {
167
+ if (typeof newValue === 'string') {
201
168
  setValue({
202
169
  value: newValue
203
170
  });
@@ -222,7 +189,7 @@ export function FreeSoloCreateOption({
222
189
  } = params;
223
190
  // Suggest the creation of a new value
224
191
  const isExisting = options.some(option => inputValue === option.label);
225
- if (inputValue !== "" && !isExisting) {
192
+ if (inputValue !== '' && !isExisting) {
226
193
  filtered.push({
227
194
  inputValue,
228
195
  label: `Add "${inputValue}"`
@@ -235,7 +202,7 @@ export function FreeSoloCreateOption({
235
202
  handleHomeEndKeys: true,
236
203
  getOptionLabel: option => {
237
204
  // Value selected with enter, right from the input
238
- if (typeof option === "string") {
205
+ if (typeof option === 'string') {
239
206
  return option;
240
207
  }
241
208
  // Add "xxx" option created dynamically
@@ -247,7 +214,6 @@ export function FreeSoloCreateOption({
247
214
  },
248
215
  sx: {
249
216
  marginTop: "10px"
250
- },
251
- disabled: disabled
217
+ }
252
218
  });
253
219
  }
@@ -0,0 +1,48 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { Box } from "@mui/material";
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ const iconLoader = async iconName => {
5
+ try {
6
+ const iconResponse = await fetch(`${process.env.ICON_API}/icon/${iconName}`);
7
+ const icon = await iconResponse.text();
8
+ return icon;
9
+ } catch (error) {
10
+ console.error(`Icon "${iconName}" could not be loaded.`, error);
11
+ return null; // Or return a default fallback icon
12
+ }
13
+ };
14
+
15
+ const DynamicIcon = ({
16
+ iconName,
17
+ ...props
18
+ }) => {
19
+ const [icon, setIcon] = useState("");
20
+ useEffect(() => {
21
+ let mounted = true;
22
+ iconLoader(iconName).then(iconHTML => {
23
+ if (mounted) {
24
+ setIcon(iconHTML);
25
+ }
26
+ });
27
+ return () => {
28
+ mounted = false;
29
+ };
30
+ }, [iconName]);
31
+ if (!icon) {
32
+ return null; // Or return a placeholder/spinner
33
+ }
34
+
35
+ return /*#__PURE__*/_jsx(Box, {
36
+ sx: {
37
+ display: "flex",
38
+ width: "auto",
39
+ height: "auto",
40
+ paddingLeft: "4px",
41
+ paddingRight: "4px"
42
+ },
43
+ dangerouslySetInnerHTML: {
44
+ __html: icon
45
+ }
46
+ });
47
+ };
48
+ export default DynamicIcon;
@@ -1,29 +1,10 @@
1
1
  import React, { useState } from "react";
2
2
  import { Grid, IconButton, TextField, Tooltip } from "@mui/material";
3
- import * as fIcons from "@mui/icons-material";
3
+ import MUIIcon from "./loadIcon";
4
+ import MUIFilledIcons from "./mui_filled_icons";
4
5
  import { jsx as _jsx } from "react/jsx-runtime";
5
6
  import { jsxs as _jsxs } from "react/jsx-runtime";
6
7
  import { Fragment as _Fragment } from "react/jsx-runtime";
7
- const MUIIcons = Object.keys(fIcons).reduce((a, b) => {
8
- if (b.indexOf("Outlined") > -1) {
9
- a.outlined.push(b);
10
- } else if (b.indexOf("Rounded") > -1) {
11
- a.rounded.push(b);
12
- } else if (b.indexOf("Sharp") > -1) {
13
- a.sharp.push(b);
14
- } else if (b.indexOf("TwoTone") > -1) {
15
- a.tt.push(b);
16
- } else {
17
- a.filled.push(b);
18
- }
19
- return a;
20
- }, {
21
- filled: [],
22
- outlined: [],
23
- rounded: [],
24
- tt: [],
25
- sharp: []
26
- });
27
8
  const Icons = props => {
28
9
  const {
29
10
  value,
@@ -34,7 +15,7 @@ const Icons = props => {
34
15
  key
35
16
  } = data;
36
17
  const [val, setVal] = useState("");
37
- const [list, setList] = useState(MUIIcons.filled.slice(0, 90));
18
+ const [list, setList] = useState(MUIFilledIcons.slice(0, 90));
38
19
  const onSelectIcon = ico => () => {
39
20
  onChange({
40
21
  [key]: ico
@@ -44,11 +25,11 @@ const Icons = props => {
44
25
  const keyVal = e.target.value?.toLowerCase();
45
26
  setVal(keyVal);
46
27
  if (keyVal) {
47
- setList(MUIIcons.filled.filter(f => {
28
+ setList(MUIFilledIcons.filter(f => {
48
29
  return f.toLowerCase().indexOf(keyVal) > -1;
49
30
  }).slice(0, 90));
50
31
  } else {
51
- setList(MUIIcons.filled.slice(0, 90));
32
+ setList(MUIFilledIcons.slice(0, 90));
52
33
  }
53
34
  };
54
35
  const onRemoveIcon = () => {
@@ -56,7 +37,7 @@ const Icons = props => {
56
37
  [key]: null
57
38
  });
58
39
  };
59
- const SelectedIcon = value ? fIcons[value] : null;
40
+ const SelectedIcon = value ? value : null;
60
41
  return /*#__PURE__*/_jsxs(_Fragment, {
61
42
  children: [/*#__PURE__*/_jsx(Grid, {
62
43
  item: true,
@@ -92,7 +73,9 @@ const Icons = props => {
92
73
  arrow: true,
93
74
  children: /*#__PURE__*/_jsx(IconButton, {
94
75
  onClick: onRemoveIcon,
95
- children: /*#__PURE__*/_jsx(SelectedIcon, {})
76
+ children: /*#__PURE__*/_jsx(MUIIcon, {
77
+ iconName: value
78
+ })
96
79
  })
97
80
  }) : ""
98
81
  })]
@@ -107,13 +90,14 @@ const Icons = props => {
107
90
  paddingTop: "5px"
108
91
  },
109
92
  children: list.map(m => {
110
- const Ico = fIcons[m];
111
93
  return /*#__PURE__*/_jsx(Tooltip, {
112
94
  title: m,
113
95
  arrow: true,
114
96
  children: /*#__PURE__*/_jsx(IconButton, {
115
97
  onClick: onSelectIcon(m),
116
- children: /*#__PURE__*/_jsx(Ico, {})
98
+ children: /*#__PURE__*/_jsx(MUIIcon, {
99
+ iconName: m
100
+ })
117
101
  })
118
102
  }, `mui_ico_${m}`);
119
103
  })
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import DynamicIcon from "../../MUIIcon";
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ const MUIIcon = ({
5
+ iconName,
6
+ ...rest
7
+ }) => {
8
+ return /*#__PURE__*/_jsx(DynamicIcon, {
9
+ iconName: iconName,
10
+ ...rest
11
+ });
12
+ };
13
+ export default MUIIcon;
@@ -0,0 +1,2 @@
1
+ const MUIFilledIcons = ["Abc", "AcUnit", "AccessAlarm", "AccessAlarms", "AccessTime", "AccessTimeFilled", "Accessibility", "AccessibilityNew", "Accessible", "AccessibleForward", "AccountBalance", "AccountBalanceWallet", "AccountBox", "AccountCircle", "AccountTree", "AdUnits", "Adb", "Add", "AddAPhoto", "AddAlarm", "AddAlert", "AddBox", "AddBusiness", "AddCard", "AddCircle", "AddCircleOutline", "AddComment", "AddHome", "AddHomeWork", "AddIcCall", "AddLink", "AddLocation", "AddLocationAlt", "AddModerator", "AddPhotoAlternate", "AddReaction", "AddRoad", "AddShoppingCart", "AddTask", "AddToDrive", "AddToHomeScreen", "AddToPhotos", "AddToQueue", "Addchart", "AdfScanner", "Adjust", "AdminPanelSettings", "AdsClick", "Agriculture", "Air", "AirlineSeatFlat", "AirlineSeatFlatAngled", "AirlineSeatIndividualSuite", "AirlineSeatLegroomExtra", "AirlineSeatLegroomNormal", "AirlineSeatLegroomReduced", "AirlineSeatReclineExtra", "AirlineSeatReclineNormal", "AirlineStops", "Airlines", "AirplaneTicket", "AirplanemodeActive", "AirplanemodeInactive", "Airplay", "AirportShuttle", "Alarm", "AlarmAdd", "AlarmOff", "AlarmOn", "Album", "AlignHorizontalCenter", "AlignHorizontalLeft", "AlignHorizontalRight", "AlignVerticalBottom", "AlignVerticalCenter", "AlignVerticalTop", "AllInbox", "AllInclusive", "AllOut", "AltRoute", "AlternateEmail", "Analytics", "Anchor", "Android", "Animation", "Announcement", "Aod", "Apartment", "Api", "AppBlocking", "AppRegistration", "AppSettingsAlt", "AppShortcut", "Apple", "Approval", "Apps", "AppsOutage", "Architecture", "Archive", "ArrowBack", "ArrowBackIos", "ArrowBackIosNew", "ArrowCircleDown", "ArrowCircleLeft", "ArrowCircleRight", "ArrowCircleUp", "ArrowDownward", "ArrowDropDown", "ArrowDropDownCircle", "ArrowDropUp", "ArrowForward", "ArrowForwardIos", "ArrowLeft", "ArrowOutward", "ArrowRight", "ArrowRightAlt", "ArrowUpward", "ArtTrack", "Article", "AspectRatio", "Assessment", "Assignment", "AssignmentInd", "AssignmentLate", "AssignmentReturn", "AssignmentReturned", "AssignmentTurnedIn", "AssistWalker", "Assistant", "AssistantDirection", "AssistantPhoto", "AssuredWorkload", "Atm", "AttachEmail", "AttachFile", "AttachMoney", "Attachment", "Attractions", "Attribution", "AudioFile", "Audiotrack", "AutoAwesome", "AutoAwesomeMosaic", "AutoAwesomeMotion", "AutoDelete", "AutoFixHigh", "AutoFixNormal", "AutoFixOff", "AutoGraph", "AutoMode", "AutoStories", "AutofpsSelect", "Autorenew", "AvTimer", "BabyChangingStation", "BackHand", "Backpack", "Backspace", "Backup", "BackupTable", "Badge", "BakeryDining", "Balance", "Balcony", "Ballot", "BarChart", "BatchPrediction", "Bathroom", "Bathtub", "Battery0Bar", "Battery1Bar", "Battery20", "Battery2Bar", "Battery30", "Battery3Bar", "Battery4Bar", "Battery50", "Battery5Bar", "Battery60", "Battery6Bar", "Battery80", "Battery90", "BatteryAlert", "BatteryCharging20", "BatteryCharging30", "BatteryCharging50", "BatteryCharging60", "BatteryCharging80", "BatteryCharging90", "BatteryChargingFull", "BatteryFull", "BatterySaver", "BatteryStd", "BatteryUnknown", "BeachAccess", "Bed", "BedroomBaby", "BedroomChild", "BedroomParent", "Bedtime", "BedtimeOff", "Beenhere", "Bento", "BikeScooter", "Biotech", "Blender", "Blind", "Blinds", "BlindsClosed", "Block", "Bloodtype", "Bluetooth", "BluetoothAudio", "BluetoothConnected", "BluetoothDisabled", "BluetoothDrive", "BluetoothSearching", "BlurCircular", "BlurLinear", "BlurOff", "BlurOn", "Bolt", "Book", "BookOnline", "Bookmark", "BookmarkAdd", "BookmarkAdded", "BookmarkBorder", "BookmarkRemove", "Bookmarks", "BorderAll", "BorderBottom", "BorderClear", "BorderColor", "BorderHorizontal", "BorderInner", "BorderLeft", "BorderOuter", "BorderRight", "BorderStyle", "BorderTop", "BorderVertical", "Boy", "BrandingWatermark", "BreakfastDining", "Brightness1", "Brightness2", "Brightness3", "Brightness4", "Brightness5", "Brightness6", "Brightness7", "BrightnessAuto", "BrightnessHigh", "BrightnessLow", "BrightnessMedium", "BroadcastOnHome", "BroadcastOnPersonal", "BrokenImage", "BrowseGallery", "BrowserNotSupported", "BrowserUpdated", "BrunchDining", "Brush", "BubbleChart", "BugReport", "Build", "BuildCircle", "Bungalow", "BurstMode", "BusAlert", "Business", "BusinessCenter", "Cabin", "Cable", "Cached", "Cake", "Calculate", "CalendarMonth", "CalendarToday", "CalendarViewDay", "CalendarViewMonth", "CalendarViewWeek", "Call", "CallEnd", "CallMade", "CallMerge", "CallMissed", "CallMissedOutgoing", "CallReceived", "CallSplit", "CallToAction", "Camera", "CameraAlt", "CameraEnhance", "CameraFront", "CameraIndoor", "CameraOutdoor", "CameraRear", "CameraRoll", "Cameraswitch", "Campaign", "Cancel", "CancelPresentation", "CancelScheduleSend", "CandlestickChart", "CarCrash", "CarRental", "CarRepair", "CardGiftcard", "CardMembership", "CardTravel", "Carpenter", "Cases", "Casino", "Cast", "CastConnected", "CastForEducation", "Castle", "CatchingPokemon", "Category", "Celebration", "CellTower", "CellWifi", "CenterFocusStrong", "CenterFocusWeak", "Chair", "ChairAlt", "Chalet", "ChangeCircle", "ChangeHistory", "ChargingStation", "Chat", "ChatBubble", "ChatBubbleOutline", "Check", "CheckBox", "CheckBoxOutlineBlank", "CheckCircle", "CheckCircleOutline", "Checklist", "ChecklistRtl", "Checkroom", "ChevronLeft", "ChevronRight", "ChildCare", "ChildFriendly", "ChromeReaderMode", "Church", "Circle", "CircleNotifications", "Class", "CleanHands", "CleaningServices", "Clear", "ClearAll", "Close", "CloseFullscreen", "ClosedCaption", "ClosedCaptionDisabled", "ClosedCaptionOff", "Cloud", "CloudCircle", "CloudDone", "CloudDownload", "CloudOff", "CloudQueue", "CloudSync", "CloudUpload", "Co2", "CoPresent", "Code", "CodeOff", "Coffee", "CoffeeMaker", "Collections", "CollectionsBookmark", "ColorLens", "Colorize", "Comment", "CommentBank", "CommentsDisabled", "Commit", "Commute", "Compare", "CompareArrows", "CompassCalibration", "Compress", "Computer", "ConfirmationNumber", "ConnectWithoutContact", "ConnectedTv", "ConnectingAirports", "Construction", "ContactEmergency", "ContactMail", "ContactPage", "ContactPhone", "ContactSupport", "Contactless", "Contacts", "ContentCopy", "ContentCut", "ContentPaste", "ContentPasteGo", "ContentPasteOff", "ContentPasteSearch", "Contrast", "ControlCamera", "ControlPoint", "ControlPointDuplicate", "Cookie", "CopyAll", "Copyright", "Coronavirus", "CorporateFare", "Cottage", "Countertops", "Create", "CreateNewFolder", "CreditCard", "CreditCardOff", "CreditScore", "Crib", "CrisisAlert", "Crop", "Crop169", "Crop32", "Crop54", "Crop75", "CropDin", "CropFree", "CropLandscape", "CropOriginal", "CropPortrait", "CropRotate", "CropSquare", "Css", "CurrencyBitcoin", "CurrencyExchange", "CurrencyFranc", "CurrencyLira", "CurrencyPound", "CurrencyRuble", "CurrencyRupee", "CurrencyYen", "CurrencyYuan", "Curtains", "CurtainsClosed", "Cyclone", "Dangerous", "DarkMode", "Dashboard", "DashboardCustomize", "DataArray", "DataObject", "DataSaverOff", "DataSaverOn", "DataThresholding", "DataUsage", "Dataset", "DatasetLinked", "DateRange", "Deblur", "Deck", "Dehaze", "Delete", "DeleteForever", "DeleteOutline", "DeleteSweep", "DeliveryDining", "DensityLarge", "DensityMedium", "DensitySmall", "DepartureBoard", "Description", "Deselect", "DesignServices", "Desk", "DesktopAccessDisabled", "DesktopMac", "DesktopWindows", "Details", "DeveloperBoard", "DeveloperBoardOff", "DeveloperMode", "DeviceHub", "DeviceThermostat", "DeviceUnknown", "Devices", "DevicesFold", "DevicesOther", "DialerSip", "Dialpad", "Diamond", "Difference", "Dining", "DinnerDining", "Directions", "DirectionsBike", "DirectionsBoat", "DirectionsBoatFilled", "DirectionsBus", "DirectionsBusFilled", "DirectionsCar", "DirectionsCarFilled", "DirectionsOff", "DirectionsRailway", "DirectionsRailwayFilled", "DirectionsRun", "DirectionsSubway", "DirectionsSubwayFilled", "DirectionsTransit", "DirectionsTransitFilled", "DirectionsWalk", "DirtyLens", "DisabledByDefault", "DiscFull", "Discount", "DisplaySettings", "Diversity1", "Diversity2", "Diversity3", "Dns", "DoDisturb", "DoDisturbAlt", "DoDisturbOff", "DoDisturbOn", "DoNotDisturb", "DoNotDisturbAlt", "DoNotDisturbOff", "DoNotDisturbOn", "DoNotDisturbOnTotalSilence", "DoNotStep", "DoNotTouch", "Dock", "DocumentScanner", "Domain", "DomainAdd", "DomainDisabled", "DomainVerification", "Done", "DoneAll", "DoneOutline", "DonutLarge", "DonutSmall", "DoorBack", "DoorFront", "DoorSliding", "Doorbell", "DoubleArrow", "DownhillSkiing", "Download", "DownloadDone", "DownloadForOffline", "Downloading", "Drafts", "DragHandle", "DragIndicator", "Draw", "DriveEta", "DriveFileMove", "DriveFileRenameOutline", "DriveFolderUpload", "Dry", "DryCleaning", "Duo", "Dvr", "DynamicFeed", "DynamicForm", "EMobiledata", "Earbuds", "EarbudsBattery", "East", "EdgesensorHigh", "EdgesensorLow", "Edit", "EditAttributes", "EditCalendar", "EditLocation", "EditLocationAlt", "EditNote", "EditNotifications", "EditOff", "EditRoad", "Egg", "EggAlt", "EightK", "EightKPlus", "EightMp", "EighteenMp", "EighteenUpRating", "EightteenMp", "Eject", "Elderly", "ElderlyWoman", "ElectricBike", "ElectricBolt", "ElectricCar", "ElectricMeter", "ElectricMoped", "ElectricRickshaw", "ElectricScooter", "ElectricalServices", "Elevator", "ElevenMp", "Email", "EmergencyRecording", "EmergencyShare", "EmojiEmotions", "EmojiEvents", "EmojiFlags", "EmojiFoodBeverage", "EmojiNature", "EmojiObjects", "EmojiPeople", "EmojiSymbols", "EmojiTransportation", "EnergySavingsLeaf", "Engineering", "EnhancedEncryption", "Equalizer", "Error", "ErrorOutline", "Escalator", "EscalatorWarning", "Euro", "EuroSymbol", "EvStation", "Event", "EventAvailable", "EventBusy", "EventNote", "EventRepeat", "EventSeat", "ExitToApp", "Expand", "ExpandCircleDown", "ExpandLess", "ExpandMore", "Explicit", "Explore", "ExploreOff", "Exposure", "Extension", "ExtensionOff", "Face", "Face2", "Face3", "Face4", "Face5", "Face6", "FaceRetouchingNatural", "FaceRetouchingOff", "Facebook", "FactCheck", "Factory", "FamilyRestroom", "FastForward", "FastRewind", "Fastfood", "Favorite", "FavoriteBorder", "Fax", "FeaturedPlayList", "FeaturedVideo", "Feed", "Feedback", "Female", "Fence", "Festival", "FiberDvr", "FiberManualRecord", "FiberNew", "FiberPin", "FiberSmartRecord", "FifteenMp", "FileCopy", "FileDownload", "FileDownloadDone", "FileDownloadOff", "FileOpen", "FilePresent", "FileUpload", "Filter", "Filter1", "Filter2", "Filter3", "Filter4", "Filter5", "Filter6", "Filter7", "Filter8", "Filter9", "Filter9Plus", "FilterAlt", "FilterAltOff", "FilterBAndW", "FilterCenterFocus", "FilterDrama", "FilterFrames", "FilterHdr", "FilterList", "FilterListOff", "FilterNone", "FilterTiltShift", "FilterVintage", "FindInPage", "FindReplace", "Fingerprint", "FireExtinguisher", "FireHydrantAlt", "FireTruck", "Fireplace", "FirstPage", "FitScreen", "Fitbit", "FitnessCenter", "FiveG", "FiveK", "FiveKPlus", "FiveMp", "FivteenMp", "Flag", "FlagCircle", "Flaky", "Flare", "FlashAuto", "FlashOff", "FlashOn", "FlashlightOff", "FlashlightOn", "Flatware", "Flight", "FlightClass", "FlightLand", "FlightTakeoff", "Flip", "FlipCameraAndroid", "FlipCameraIos", "FlipToBack", "FlipToFront", "Flood", "Fluorescent", "FlutterDash", "FmdBad", "FmdGood", "Folder", "FolderCopy", "FolderDelete", "FolderOff", "FolderOpen", "FolderShared", "FolderSpecial", "FolderZip", "FollowTheSigns", "FontDownload", "FontDownloadOff", "FoodBank", "Forest", "ForkLeft", "ForkRight", "FormatAlignCenter", "FormatAlignJustify", "FormatAlignLeft", "FormatAlignRight", "FormatBold", "FormatClear", "FormatColorFill", "FormatColorReset", "FormatColorText", "FormatIndentDecrease", "FormatIndentIncrease", "FormatItalic", "FormatLineSpacing", "FormatListBulleted", "FormatListNumbered", "FormatListNumberedRtl", "FormatOverline", "FormatPaint", "FormatQuote", "FormatShapes", "FormatSize", "FormatStrikethrough", "FormatTextdirectionLToR", "FormatTextdirectionRToL", "FormatUnderlined", "Fort", "Forum", "Forward", "Forward10", "Forward30", "Forward5", "ForwardToInbox", "Foundation", "FourGMobiledata", "FourGPlusMobiledata", "FourK", "FourKPlus", "FourMp", "FourteenMp", "FreeBreakfast", "Fullscreen", "FullscreenExit", "Functions", "GMobiledata", "GTranslate", "Gamepad", "Games", "Garage", "GasMeter", "Gavel", "Gesture", "GetApp", "Gif", "GifBox", "Girl", "GitHub", "Gite", "GolfCourse", "Google", "GppBad", "GppGood", "GppMaybe", "GpsFixed", "GpsNotFixed", "GpsOff", "Grade", "Gradient", "Grading", "Grain", "GraphicEq", "Grass", "Grid3x3", "Grid4x4", "GridGoldenratio", "GridOff", "GridOn", "GridView", "Group", "GroupAdd", "GroupRemove", "GroupWork", "Groups", "Groups2", "Groups3", "HMobiledata", "HPlusMobiledata", "Hail", "Handshake", "Handyman", "Hardware", "Hd", "HdrAuto", "HdrAutoSelect", "HdrEnhancedSelect", "HdrOff", "HdrOffSelect", "HdrOn", "HdrOnSelect", "HdrPlus", "HdrStrong", "HdrWeak", "Headphones", "HeadphonesBattery", "Headset", "HeadsetMic", "HeadsetOff", "Healing", "HealthAndSafety", "Hearing", "HearingDisabled", "HeartBroken", "HeatPump", "Height", "Help", "HelpCenter", "HelpOutline", "Hevc", "Hexagon", "HideImage", "HideSource", "HighQuality", "Highlight", "HighlightAlt", "HighlightOff", "Hiking", "History", "HistoryEdu", "HistoryToggleOff", "Hive", "Hls", "HlsOff", "HolidayVillage", "Home", "HomeMax", "HomeMini", "HomeRepairService", "HomeWork", "HorizontalRule", "HorizontalSplit", "HotTub", "Hotel", "HourglassBottom", "HourglassDisabled", "HourglassEmpty", "HourglassFull", "HourglassTop", "House", "HouseSiding", "Houseboat", "HowToReg", "HowToVote", "Html", "Http", "Https", "Hub", "Hvac", "IceSkating", "Icecream", "Image", "ImageAspectRatio", "ImageNotSupported", "ImageSearch", "ImagesearchRoller", "ImportContacts", "ImportExport", "ImportantDevices", "Inbox", "IndeterminateCheckBox", "Info", "Input", "InsertChart", "InsertComment", "InsertDriveFile", "InsertEmoticon", "InsertInvitation", "InsertLink", "InsertPageBreak", "InsertPhoto", "Insights", "Instagram", "InstallDesktop", "InstallMobile", "IntegrationInstructions", "Interests", "InterpreterMode", "Inventory", "Inventory2", "InvertColors", "InvertColorsOff", "IosShare", "Iron", "Iso", "Javascript", "JoinFull", "JoinInner", "JoinLeft", "JoinRight", "Kayaking", "KebabDining", "Key", "KeyOff", "Keyboard", "KeyboardAlt", "KeyboardArrowDown", "KeyboardArrowLeft", "KeyboardArrowRight", "KeyboardArrowUp", "KeyboardBackspace", "KeyboardCapslock", "KeyboardCommandKey", "KeyboardControlKey", "KeyboardDoubleArrowDown", "KeyboardDoubleArrowLeft", "KeyboardDoubleArrowRight", "KeyboardDoubleArrowUp", "KeyboardHide", "KeyboardOptionKey", "KeyboardReturn", "KeyboardTab", "KeyboardVoice", "KingBed", "Kitchen", "Kitesurfing", "Label", "LabelImportant", "LabelOff", "Lan", "Landscape", "Landslide", "Language", "Laptop", "LaptopChromebook", "LaptopMac", "LaptopWindows", "LastPage", "Launch", "Layers", "LayersClear", "Leaderboard", "LeakAdd", "LeakRemove", "LegendToggle", "Lens", "LensBlur", "LibraryAdd", "LibraryAddCheck", "LibraryBooks", "LibraryMusic", "Light", "LightMode", "Lightbulb", "LightbulbCircle", "LineAxis", "LineStyle", "LineWeight", "LinearScale", "Link", "LinkOff", "LinkedCamera", "LinkedIn", "Liquor", "List", "ListAlt", "LiveHelp", "LiveTv", "Living", "LocalActivity", "LocalAirport", "LocalAtm", "LocalBar", "LocalCafe", "LocalCarWash", "LocalConvenienceStore", "LocalDining", "LocalDrink", "LocalFireDepartment", "LocalFlorist", "LocalGasStation", "LocalGroceryStore", "LocalHospital", "LocalHotel", "LocalLaundryService", "LocalLibrary", "LocalMall", "LocalMovies", "LocalOffer", "LocalParking", "LocalPharmacy", "LocalPhone", "LocalPizza", "LocalPlay", "LocalPolice", "LocalPostOffice", "LocalPrintshop", "LocalSee", "LocalShipping", "LocalTaxi", "LocationCity", "LocationDisabled", "LocationOff", "LocationOn", "LocationSearching", "Lock", "LockClock", "LockOpen", "LockPerson", "LockReset", "Login", "LogoDev", "Logout", "Looks", "Looks3", "Looks4", "Looks5", "Looks6", "LooksOne", "LooksTwo", "Loop", "Loupe", "LowPriority", "Loyalty", "LteMobiledata", "LtePlusMobiledata", "Luggage", "LunchDining", "Lyrics", "MacroOff", "Mail", "MailLock", "MailOutline", "Male", "Man", "Man2", "Man3", "Man4", "ManageAccounts", "ManageHistory", "ManageSearch", "Map", "MapsHomeWork", "MapsUgc", "Margin", "MarkAsUnread", "MarkChatRead", "MarkChatUnread", "MarkEmailRead", "MarkEmailUnread", "MarkUnreadChatAlt", "Markunread", "MarkunreadMailbox", "Masks", "Maximize", "MediaBluetoothOff", "MediaBluetoothOn", "Mediation", "MedicalInformation", "MedicalServices", "Medication", "MedicationLiquid", "MeetingRoom", "Memory", "Menu", "MenuBook", "MenuOpen", "Merge", "MergeType", "Message", "Mic", "MicExternalOff", "MicExternalOn", "MicNone", "MicOff", "Microsoft", "Microwave", "MilitaryTech", "Minimize", "MinorCrash", "MiscellaneousServices", "MissedVideoCall", "Mms", "MobileFriendly", "MobileOff", "MobileScreenShare", "MobiledataOff", "Mode", "ModeComment", "ModeEdit", "ModeEditOutline", "ModeFanOff", "ModeNight", "ModeOfTravel", "ModeStandby", "ModelTraining", "MonetizationOn", "Money", "MoneyOff", "MoneyOffCsred", "Monitor", "MonitorHeart", "MonitorWeight", "MonochromePhotos", "Mood", "MoodBad", "Moped", "More", "MoreHoriz", "MoreTime", "MoreVert", "Mosque", "MotionPhotosAuto", "MotionPhotosOff", "Mouse", "MoveDown", "MoveToInbox", "MoveUp", "Movie", "MovieCreation", "MovieFilter", "Moving", "Mp", "MultilineChart", "MultipleStop", "Museum", "MusicNote", "MusicOff", "MusicVideo", "MyLocation", "Nat", "Nature", "NaturePeople", "NavigateBefore", "NavigateNext", "Navigation", "NearMe", "NearMeDisabled", "NearbyError", "NearbyOff", "NestCamWiredStand", "NetworkCell", "NetworkCheck", "NetworkLocked", "NetworkPing", "NetworkWifi", "NetworkWifi1Bar", "NetworkWifi2Bar", "NetworkWifi3Bar", "NewReleases", "Newspaper", "NextPlan", "NextWeek", "Nfc", "NightShelter", "Nightlife", "Nightlight", "NightlightRound", "NightsStay", "NineK", "NineKPlus", "NineMp", "NineteenMp", "NoAccounts", "NoAdultContent", "NoBackpack", "NoCell", "NoCrash", "NoDrinks", "NoEncryption", "NoEncryptionGmailerrorred", "NoFlash", "NoFood", "NoLuggage", "NoMeals", "NoMeetingRoom", "NoPhotography", "NoSim", "NoStroller", "NoTransfer", "NoiseAware", "NoiseControlOff", "NordicWalking", "North", "NorthEast", "NorthWest", "NotAccessible", "NotInterested", "NotListedLocation", "NotStarted", "Note", "NoteAdd", "NoteAlt", "Notes", "NotificationAdd", "NotificationImportant", "Notifications", "NotificationsActive", "NotificationsNone", "NotificationsOff", "NotificationsPaused", "Numbers", "OfflineBolt", "OfflinePin", "OfflineShare", "OilBarrel", "OnDeviceTraining", "OndemandVideo", "OneK", "OneKPlus", "OneKk", "OnlinePrediction", "Opacity", "OpenInBrowser", "OpenInFull", "OpenInNew", "OpenInNewOff", "OpenWith", "OtherHouses", "Outbound", "Outbox", "OutdoorGrill", "Outlet", "Output", "Padding", "Pages", "Pageview", "Paid", "Palette", "PanTool", "PanToolAlt", "Panorama", "PanoramaFishEye", "PanoramaHorizontal", "PanoramaHorizontalSelect", "PanoramaPhotosphere", "PanoramaPhotosphereSelect", "PanoramaVertical", "PanoramaVerticalSelect", "PanoramaWideAngle", "PanoramaWideAngleSelect", "Paragliding", "Park", "PartyMode", "Password", "Pattern", "Pause", "PauseCircle", "PauseCircleFilled", "PauseCircleOutline", "PausePresentation", "Payment", "Payments", "PedalBike", "Pending", "PendingActions", "Pentagon", "People", "PeopleAlt", "PeopleOutline", "Percent", "PermCameraMic", "PermContactCalendar", "PermDataSetting", "PermDeviceInformation", "PermIdentity", "PermMedia", "PermPhoneMsg", "PermScanWifi", "Person", "Person2", "Person3", "Person4", "PersonAdd", "PersonAddAlt", "PersonAddAlt1", "PersonAddDisabled", "PersonOff", "PersonOutline", "PersonPin", "PersonPinCircle", "PersonRemove", "PersonRemoveAlt1", "PersonSearch", "PersonalVideo", "PestControl", "PestControlRodent", "Pets", "Phishing", "Phone", "PhoneAndroid", "PhoneBluetoothSpeaker", "PhoneCallback", "PhoneDisabled", "PhoneEnabled", "PhoneForwarded", "PhoneInTalk", "PhoneIphone", "PhoneLocked", "PhoneMissed", "PhonePaused", "Phonelink", "PhonelinkErase", "PhonelinkLock", "PhonelinkOff", "PhonelinkRing", "PhonelinkSetup", "Photo", "PhotoAlbum", "PhotoCamera", "PhotoCameraBack", "PhotoCameraFront", "PhotoFilter", "PhotoLibrary", "PhotoSizeSelectActual", "PhotoSizeSelectLarge", "PhotoSizeSelectSmall", "Php", "Piano", "PianoOff", "PictureAsPdf", "PictureInPicture", "PictureInPictureAlt", "PieChart", "PieChartOutline", "Pin", "PinDrop", "Pinch", "Pinterest", "PivotTableChart", "Pix", "Place", "Plagiarism", "PlayArrow", "PlayCircle", "PlayCircleFilled", "PlayCircleFilledWhite", "PlayCircleOutline", "PlayDisabled", "PlayForWork", "PlayLesson", "PlaylistAdd", "PlaylistAddCheck", "PlaylistAddCheckCircle", "PlaylistAddCircle", "PlaylistPlay", "PlaylistRemove", "Plumbing", "PlusOne", "Podcasts", "PointOfSale", "Policy", "Poll", "Polyline", "Pool", "PortableWifiOff", "Portrait", "PostAdd", "Power", "PowerInput", "PowerOff", "PowerSettingsNew", "PrecisionManufacturing", "PregnantWoman", "PresentToAll", "Preview", "PriceChange", "PriceCheck", "Print", "PrintDisabled", "PriorityHigh", "PrivacyTip", "ProductionQuantityLimits", "Propane", "PropaneTank", "Psychology", "PsychologyAlt", "Public", "PublicOff", "Publish", "PublishedWithChanges", "PunchClock", "PushPin", "QrCode", "QrCode2", "QrCodeScanner", "QueryBuilder", "QueryStats", "QuestionAnswer", "QuestionMark", "Queue", "QueueMusic", "QueuePlayNext", "Quickreply", "Quiz", "RMobiledata", "Radar", "Radio", "RadioButtonChecked", "RadioButtonUnchecked", "RailwayAlert", "RamenDining", "RampLeft", "RampRight", "RateReview", "RawOff", "RawOn", "ReadMore", "Receipt", "ReceiptLong", "RecentActors", "Recommend", "RecordVoiceOver", "Rectangle", "Recycling", "Reddit", "Redeem", "Redo", "ReduceCapacity", "Refresh", "RememberMe", "Remove", "RemoveCircle", "RemoveCircleOutline", "RemoveDone", "RemoveFromQueue", "RemoveModerator", "RemoveRedEye", "RemoveRoad", "RemoveShoppingCart", "Reorder", "Repartition", "Repeat", "RepeatOn", "RepeatOne", "RepeatOneOn", "Replay", "Replay10", "Replay30", "Replay5", "ReplayCircleFilled", "Reply", "ReplyAll", "Report", "ReportGmailerrorred", "ReportOff", "ReportProblem", "RequestPage", "RequestQuote", "ResetTv", "RestartAlt", "Restaurant", "RestaurantMenu", "Restore", "RestoreFromTrash", "RestorePage", "Reviews", "RiceBowl", "RingVolume", "Rocket", "RocketLaunch", "RollerShades", "RollerShadesClosed", "RollerSkating", "Roofing", "Room", "RoomPreferences", "RoomService", "Rotate90DegreesCcw", "Rotate90DegreesCw", "RotateLeft", "RotateRight", "RoundaboutLeft", "RoundaboutRight", "Route", "Router", "Rowing", "RssFeed", "Rsvp", "Rtt", "Rule", "RuleFolder", "RunCircle", "RunningWithErrors", "RvHookup", "SafetyCheck", "SafetyDivider", "Sailing", "Sanitizer", "Satellite", "SatelliteAlt", "Save", "SaveAlt", "SaveAs", "SavedSearch", "Savings", "Scale", "Scanner", "ScatterPlot", "Schedule", "ScheduleSend", "Schema", "School", "Science", "Score", "Scoreboard", "ScreenLockLandscape", "ScreenLockPortrait", "ScreenLockRotation", "ScreenRotation", "ScreenRotationAlt", "ScreenSearchDesktop", "ScreenShare", "Screenshot", "ScreenshotMonitor", "ScubaDiving", "Sd", "SdCard", "SdCardAlert", "SdStorage", "Search", "SearchOff", "Security", "SecurityUpdate", "SecurityUpdateGood", "SecurityUpdateWarning", "Segment", "SelectAll", "SelfImprovement", "Sell", "Send", "SendAndArchive", "SendTimeExtension", "SendToMobile", "SensorDoor", "SensorOccupied", "SensorWindow", "Sensors", "SensorsOff", "SentimentDissatisfied", "SentimentNeutral", "SentimentSatisfied", "SentimentSatisfiedAlt", "SentimentVeryDissatisfied", "SentimentVerySatisfied", "SetMeal", "Settings", "SettingsAccessibility", "SettingsApplications", "SettingsBackupRestore", "SettingsBluetooth", "SettingsBrightness", "SettingsCell", "SettingsEthernet", "SettingsInputAntenna", "SettingsInputComponent", "SettingsInputComposite", "SettingsInputHdmi", "SettingsInputSvideo", "SettingsOverscan", "SettingsPhone", "SettingsPower", "SettingsRemote", "SettingsSuggest", "SettingsSystemDaydream", "SettingsVoice", "SevenK", "SevenKPlus", "SevenMp", "SeventeenMp", "SevereCold", "ShapeLine", "Share", "ShareLocation", "Shield", "ShieldMoon", "Shop", "Shop2", "ShopTwo", "ShoppingBag", "ShoppingBasket", "ShoppingCart", "ShoppingCartCheckout", "ShortText", "Shortcut", "ShowChart", "Shower", "Shuffle", "ShuffleOn", "ShutterSpeed", "Sick", "SignLanguage", "SignalCellular0Bar", "SignalCellular1Bar", "SignalCellular2Bar", "SignalCellular3Bar", "SignalCellular4Bar", "SignalCellularAlt", "SignalCellularAlt1Bar", "SignalCellularAlt2Bar", "SignalCellularConnectedNoInternet0Bar", "SignalCellularConnectedNoInternet1Bar", "SignalCellularConnectedNoInternet2Bar", "SignalCellularConnectedNoInternet3Bar", "SignalCellularConnectedNoInternet4Bar", "SignalCellularNoSim", "SignalCellularNodata", "SignalCellularNull", "SignalCellularOff", "SignalWifi0Bar", "SignalWifi1Bar", "SignalWifi1BarLock", "SignalWifi2Bar", "SignalWifi2BarLock", "SignalWifi3Bar", "SignalWifi3BarLock", "SignalWifi4Bar", "SignalWifi4BarLock", "SignalWifiBad", "SignalWifiConnectedNoInternet4", "SignalWifiOff", "SignalWifiStatusbar4Bar", "SignalWifiStatusbarConnectedNoInternet4", "SignalWifiStatusbarNull", "Signpost", "SimCard", "SimCardAlert", "SimCardDownload", "SingleBed", "Sip", "SixK", "SixKPlus", "SixMp", "SixteenMp", "SixtyFps", "SixtyFpsSelect", "Skateboarding", "SkipNext", "SkipPrevious", "Sledding", "Slideshow", "SlowMotionVideo", "SmartButton", "SmartDisplay", "SmartScreen", "SmartToy", "Smartphone", "SmokeFree", "SmokingRooms", "Sms", "SmsFailed", "SnippetFolder", "Snooze", "Snowboarding", "Snowmobile", "Snowshoeing", "Soap", "SocialDistance", "SolarPower", "Sort", "SortByAlpha", "Sos", "SoupKitchen", "Source", "South", "SouthAmerica", "SouthEast", "SouthWest", "Spa", "SpaceBar", "SpaceDashboard", "SpatialAudio", "SpatialAudioOff", "SpatialTracking", "Speaker", "SpeakerGroup", "SpeakerNotes", "SpeakerNotesOff", "SpeakerPhone", "Speed", "Spellcheck", "Splitscreen", "Spoke", "Sports", "SportsBar", "SportsBaseball", "SportsBasketball", "SportsCricket", "SportsEsports", "SportsFootball", "SportsGolf", "SportsGymnastics", "SportsHandball", "SportsHockey", "SportsKabaddi", "SportsMartialArts", "SportsMma", "SportsMotorsports", "SportsRugby", "SportsScore", "SportsSoccer", "SportsTennis", "SportsVolleyball", "Square", "SquareFoot", "SsidChart", "StackedBarChart", "StackedLineChart", "Stadium", "Stairs", "Star", "StarBorder", "StarBorderPurple500", "StarHalf", "StarOutline", "StarPurple500", "StarRate", "Stars", "Start", "StayCurrentLandscape", "StayCurrentPortrait", "StayPrimaryLandscape", "StayPrimaryPortrait", "StickyNote2", "Stop", "StopCircle", "StopScreenShare", "Storage", "Store", "StoreMallDirectory", "Storefront", "Storm", "Straight", "Straighten", "Stream", "Streetview", "StrikethroughS", "Stroller", "Style", "SubdirectoryArrowLeft", "SubdirectoryArrowRight", "Subject", "Subscript", "Subscriptions", "Subtitles", "SubtitlesOff", "Subway", "Summarize", "Superscript", "SupervisedUserCircle", "SupervisorAccount", "Support", "SupportAgent", "Surfing", "SurroundSound", "SwapCalls", "SwapHoriz", "SwapHorizontalCircle", "SwapVert", "SwapVerticalCircle", "Swipe", "SwipeDown", "SwipeDownAlt", "SwipeLeft", "SwipeLeftAlt", "SwipeRight", "SwipeRightAlt", "SwipeUp", "SwipeUpAlt", "SwipeVertical", "SwitchAccessShortcut", "SwitchAccessShortcutAdd", "SwitchAccount", "SwitchCamera", "SwitchLeft", "SwitchRight", "SwitchVideo", "Synagogue", "Sync", "SyncAlt", "SyncDisabled", "SyncLock", "SyncProblem", "SystemSecurityUpdate", "SystemSecurityUpdateGood", "SystemSecurityUpdateWarning", "SystemUpdate", "SystemUpdateAlt", "Tab", "TabUnselected", "TableBar", "TableChart", "TableRestaurant", "TableRows", "TableView", "Tablet", "TabletAndroid", "TabletMac", "Tag", "TagFaces", "TakeoutDining", "TapAndPlay", "Tapas", "Task", "TaskAlt", "TaxiAlert", "Telegram", "TempleBuddhist", "TempleHindu", "TenMp", "Terminal", "Terrain", "TextDecrease", "TextFields", "TextFormat", "TextIncrease", "TextRotateUp", "TextRotateVertical", "TextRotationAngledown", "TextRotationAngleup", "TextRotationDown", "TextRotationNone", "TextSnippet", "Textsms", "Texture", "TheaterComedy", "Theaters", "Thermostat", "ThermostatAuto", "ThirteenMp", "ThirtyFps", "ThirtyFpsSelect", "ThreeDRotation", "ThreeGMobiledata", "ThreeK", "ThreeKPlus", "ThreeMp", "ThreeP", "ThreeSixty", "ThumbDown", "ThumbDownAlt", "ThumbDownOffAlt", "ThumbUp", "ThumbUpAlt", "ThumbUpOffAlt", "ThumbsUpDown", "Thunderstorm", "TimeToLeave", "Timelapse", "Timeline", "Timer", "Timer10", "Timer10Select", "Timer3", "Timer3Select", "TimerOff", "TimesOneMobiledata", "TipsAndUpdates", "TireRepair", "Title", "Toc", "Today", "ToggleOff", "ToggleOn", "Token", "Toll", "Tonality", "Topic", "Tornado", "TouchApp", "Tour", "Toys", "TrackChanges", "Traffic", "Train", "Tram", "Transcribe", "TransferWithinAStation", "Transform", "Transgender", "TransitEnterexit", "Translate", "TravelExplore", "TrendingDown", "TrendingFlat", "TrendingUp", "TripOrigin", "Troubleshoot", "Try", "Tsunami", "Tty", "Tune", "Tungsten", "TurnLeft", "TurnRight", "TurnSlightLeft", "TurnSlightRight", "TurnedIn", "TurnedInNot", "Tv", "TvOff", "TwelveMp", "TwentyFourMp", "TwentyOneMp", "TwentyThreeMp", "TwentyTwoMp", "TwentyZeroMp", "Twitter", "TwoK", "TwoKPlus", "TwoMp", "TwoWheeler", "TypeSpecimen", "UTurnLeft", "UTurnRight", "Umbrella", "Unarchive", "Undo", "UnfoldLess", "UnfoldLessDouble", "UnfoldMore", "UnfoldMoreDouble", "Unpublished", "Unsubscribe", "Upcoming", "Update", "UpdateDisabled", "Upgrade", "Upload", "UploadFile", "Usb", "UsbOff", "Vaccines", "VapeFree", "VapingRooms", "Verified", "VerifiedUser", "VerticalAlignBottom", "VerticalAlignCenter", "VerticalAlignTop", "VerticalShades", "VerticalShadesClosed", "VerticalSplit", "Vibration", "VideoCall", "VideoCameraBack", "VideoCameraFront", "VideoChat", "VideoFile", "VideoLabel", "VideoLibrary", "VideoSettings", "VideoStable", "Videocam", "VideocamOff", "VideogameAsset", "VideogameAssetOff", "ViewAgenda", "ViewArray", "ViewCarousel", "ViewColumn", "ViewComfy", "ViewComfyAlt", "ViewCompact", "ViewCompactAlt", "ViewCozy", "ViewDay", "ViewHeadline", "ViewInAr", "ViewKanban", "ViewList", "ViewModule", "ViewQuilt", "ViewSidebar", "ViewStream", "ViewTimeline", "ViewWeek", "Vignette", "Villa", "Visibility", "VisibilityOff", "VoiceChat", "VoiceOverOff", "Voicemail", "Volcano", "VolumeDown", "VolumeMute", "VolumeOff", "VolumeUp", "VolunteerActivism", "VpnKey", "VpnKeyOff", "VpnLock", "Vrpano", "Wallet", "Wallpaper", "Warehouse", "Warning", "WarningAmber", "Wash", "Watch", "WatchLater", "WatchOff", "Water", "WaterDamage", "WaterDrop", "WaterfallChart", "Waves", "WavingHand", "WbAuto", "WbCloudy", "WbIncandescent", "WbIridescent", "WbShade", "WbSunny", "WbTwilight", "Wc", "Web", "WebAsset", "WebAssetOff", "WebStories", "Webhook", "Weekend", "West", "WhatsApp", "Whatshot", "WheelchairPickup", "WhereToVote", "Widgets", "WidthFull", "WidthNormal", "WidthWide", "Wifi", "Wifi1Bar", "Wifi2Bar", "WifiCalling", "WifiCalling3", "WifiChannel", "WifiFind", "WifiLock", "WifiOff", "WifiPassword", "WifiProtectedSetup", "WifiTethering", "WifiTetheringError", "WifiTetheringOff", "WindPower", "Window", "WineBar", "Woman", "Woman2", "Work", "WorkHistory", "WorkOff", "WorkOutline", "WorkspacePremium", "Workspaces", "WrapText", "WrongLocation", "Wysiwyg", "Yard", "YouTube", "YoutubeSearchedFor", "ZoomIn", "ZoomInMap", "ZoomOut", "ZoomOutMap"];
2
+ export default MUIFilledIcons;
@@ -139,4 +139,19 @@ export const isEmptyTextNode = element => {
139
139
  console.log(err);
140
140
  return false;
141
141
  }
142
+ };
143
+ export const debounce = function (func, wait, immediate) {
144
+ let timeout;
145
+ return function () {
146
+ const context = this,
147
+ args = arguments,
148
+ later = function () {
149
+ timeout = null;
150
+ if (!immediate) func.apply(context, args);
151
+ },
152
+ callNow = immediate && !timeout;
153
+ clearTimeout(timeout);
154
+ timeout = setTimeout(later, wait);
155
+ if (callNow) func.apply(context, args);
156
+ };
142
157
  };
@@ -1,5 +1,6 @@
1
1
  import { useEffect, useState, createContext, useContext, useMemo } from "react";
2
2
  import { getSelectedText } from "../utils/helper";
3
+ import { debounce } from "../helper";
3
4
  import { jsx as _jsx } from "react/jsx-runtime";
4
5
  const EditorContext = /*#__PURE__*/createContext();
5
6
  export const useEditorSelection = editor => {
@@ -73,15 +74,21 @@ const useMouseMove = () => {
73
74
  };
74
75
  }, []);
75
76
  const onMouseMove = e => {
76
- setEvent({
77
- target: e.target
78
- });
77
+ const dpath = e?.target?.closest(".dpath");
78
+ console.log(dpath);
79
+ if (dpath) {
80
+ console.log(`Stopped position: (${e.clientX}, ${e.clientY})`, dpath);
81
+ setEvent({
82
+ target: dpath
83
+ });
84
+ }
79
85
  };
86
+ const debounceMouseMove = debounce(onMouseMove, 100);
80
87
  const addListener = () => {
81
- document.addEventListener("mousemove", onMouseMove);
88
+ document.addEventListener("mousemove", debounceMouseMove);
82
89
  };
83
90
  const removeListener = () => {
84
- document.removeEventListener("mousemove", onMouseMove);
91
+ document.removeEventListener("mousemove", debounceMouseMove);
85
92
  };
86
93
  return [event];
87
94
  };
@@ -208,13 +208,7 @@ export const hasVerticalScrollbar = (element = {}) => {
208
208
  return element.scrollHeight > element.clientHeight;
209
209
  };
210
210
  const isHomePage = page => {
211
- return page === "home" || page === "iframe.html" || page === "_currentPage" || !page;
212
- };
213
- const getScrollElement = () => {
214
- const slateWrapper = document.getElementById("slate-wrapper-scroll-container");
215
- const isSlateWrapperScroll = hasVerticalScrollbar(slateWrapper);
216
- const scrollFrom = isSlateWrapperScroll ? slateWrapper : window;
217
- return scrollFrom;
211
+ return page === "home" || page === "iframe.html" || !page;
218
212
  };
219
213
  export const handleLinkType = (url, linkType, readOnly, openInNewTab, onClick = () => {}) => {
220
214
  const props = {};
@@ -245,33 +239,16 @@ export const handleLinkType = (url, linkType, readOnly, openInNewTab, onClick =
245
239
  }
246
240
  break;
247
241
  case "page":
248
- const [page = "", section] = url?.split("#") || [];
242
+ props.component = "a";
243
+ const [page, section] = url?.split("#") || [];
249
244
  const sec = section ? `#${section}` : "";
250
- if (page === "_currentPage") {
251
- props.component = "button";
252
- props.onClick = () => {
253
- const scrollFrom = getScrollElement();
254
- if (sec) {
255
- const element = document.getElementById(section);
256
- if (element) {
257
- const topPosition = element.getBoundingClientRect().top + scrollFrom.scrollTop;
258
- scrollFrom.scrollTo({
259
- top: topPosition,
260
- behavior: "smooth"
261
- });
262
- }
263
- }
264
- };
265
- } else {
266
- props.component = "a";
267
- const currentUserPage = getCurrentUserPage();
268
- props.href = isCurrentPage(page) ? `./${currentUserPage}${sec}` : `./${url}`;
269
- if (openInNewTab) {
270
- if (isCurrentPage(page)) {
271
- // temp fix, if user is presented in current page, open in new tab option is restricted, we will scroll to the element in current page
272
- } else {
273
- props.target = "_blank";
274
- }
245
+ const currentUserPage = getCurrentUserPage();
246
+ props.href = isHomePage(page) ? `./${currentUserPage}${sec}` : `./${url}`;
247
+ if (openInNewTab) {
248
+ if (isCurrentPage(page)) {
249
+ // temp fix, if user is presented in current page, open in new tab option is restricted, we will scroll to the element in current page
250
+ } else {
251
+ props.target = "_blank";
275
252
  }
276
253
  }
277
254
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flozy/editor",
3
- "version": "3.6.3",
3
+ "version": "3.6.5",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"
@@ -58,11 +58,11 @@
58
58
  "prepare": "husky install .husky",
59
59
  "lint": "./node_modules/.bin/eslint --ignore-path .gitignore .",
60
60
  "start": "craco start",
61
- "build": "craco build",
61
+ "build": "NODE_OPTIONS='--max_old_space_size=4096' craco build",
62
62
  "test": "craco test --passWithNoTests",
63
63
  "eject": "react-scripts eject",
64
- "storybook": "storybook dev -p 6006",
65
- "build-storybook": "storybook build",
64
+ "storybook": "NODE_OPTIONS='--max_old_space_size=4096' storybook dev -p 6006",
65
+ "build-storybook": "NODE_OPTIONS='--max_old_space_size=4096' storybook build",
66
66
  "publish:npm": "rm -rf dist && mkdir dist && babel src/components -d dist --copy-files",
67
67
  "publish:local": "rm -rf /Users/agenciflow08/Documents/flozy/client/node_modules/@flozy/editor/dist && babel src/components -d /Users/agenciflow08/Documents/flozy/client/node_modules/@flozy/editor/dist --copy-files"
68
68
  },