@excalidraw/common 0.18.0-de715913e → 0.18.0-ec07091

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 (61) hide show
  1. package/dist/dev/index.js +67 -6
  2. package/dist/dev/index.js.map +2 -2
  3. package/dist/prod/index.js +3 -3
  4. package/dist/types/common/src/constants.d.ts +20 -4
  5. package/dist/types/common/src/utils.d.ts +3 -0
  6. package/dist/types/element/src/bounds.d.ts +1 -1
  7. package/dist/types/element/src/delta.d.ts +2 -2
  8. package/dist/types/element/src/index.d.ts +1 -0
  9. package/dist/types/element/src/positionElementsOnGrid.d.ts +2 -0
  10. package/dist/types/element/src/renderElement.d.ts +4 -1
  11. package/dist/types/element/src/store.d.ts +3 -2
  12. package/dist/types/element/src/textElement.d.ts +1 -1
  13. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +6 -3
  14. package/dist/types/excalidraw/actions/actionBoundText.d.ts +4 -2
  15. package/dist/types/excalidraw/actions/actionCanvas.d.ts +29 -15
  16. package/dist/types/excalidraw/actions/actionClipboard.d.ts +12 -6
  17. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +2 -1
  18. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +6 -3
  19. package/dist/types/excalidraw/actions/actionElementLink.d.ts +2 -1
  20. package/dist/types/excalidraw/actions/actionElementLock.d.ts +4 -2
  21. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +2 -1
  22. package/dist/types/excalidraw/actions/actionExport.d.ts +18 -9
  23. package/dist/types/excalidraw/actions/actionFinalize.d.ts +4 -2
  24. package/dist/types/excalidraw/actions/actionFrame.d.ts +8 -4
  25. package/dist/types/excalidraw/actions/actionGroup.d.ts +4 -2
  26. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +3 -2
  27. package/dist/types/excalidraw/actions/actionLink.d.ts +2 -1
  28. package/dist/types/excalidraw/actions/actionMenu.d.ts +6 -3
  29. package/dist/types/excalidraw/actions/actionNavigate.d.ts +4 -2
  30. package/dist/types/excalidraw/actions/actionProperties.d.ts +48 -24
  31. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +2 -1
  32. package/dist/types/excalidraw/actions/actionStyles.d.ts +2 -1
  33. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +2 -1
  34. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +2 -1
  35. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +2 -1
  36. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +2 -1
  37. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +2 -1
  38. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +2 -1
  39. package/dist/types/excalidraw/actions/index.d.ts +1 -1
  40. package/dist/types/excalidraw/actions/types.d.ts +1 -1
  41. package/dist/types/excalidraw/appState.d.ts +1 -0
  42. package/dist/types/excalidraw/clipboard.d.ts +64 -1
  43. package/dist/types/excalidraw/components/Actions.d.ts +8 -1
  44. package/dist/types/excalidraw/components/App.d.ts +10 -8
  45. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +2 -1
  46. package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -0
  47. package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +2 -1
  48. package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +2 -1
  49. package/dist/types/excalidraw/components/InlineIcon.d.ts +3 -1
  50. package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +1 -1
  51. package/dist/types/excalidraw/components/PropertiesPopover.d.ts +1 -0
  52. package/dist/types/excalidraw/components/TextField.d.ts +1 -0
  53. package/dist/types/excalidraw/components/icons.d.ts +6 -0
  54. package/dist/types/excalidraw/components/shapes.d.ts +129 -1
  55. package/dist/types/excalidraw/data/blob.d.ts +3 -7
  56. package/dist/types/excalidraw/data/types.d.ts +4 -1
  57. package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
  58. package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +14 -0
  59. package/dist/types/excalidraw/types.d.ts +5 -1
  60. package/dist/types/math/src/segment.d.ts +1 -0
  61. package/package.json +1 -1
package/dist/dev/index.js CHANGED
@@ -647,9 +647,12 @@ var isAndroid = /\b(android)\b/i.test(navigator.userAgent);
647
647
  var isFirefox = typeof window !== "undefined" && "netscape" in window && navigator.userAgent.indexOf("rv:") > 1 && navigator.userAgent.indexOf("Gecko") > 1;
648
648
  var isChrome = navigator.userAgent.indexOf("Chrome") !== -1;
649
649
  var isSafari = !isChrome && navigator.userAgent.indexOf("Safari") !== -1;
650
- var isIOS = /iPad|iPhone/.test(navigator.platform) || // iPadOS 13+
650
+ var isIOS = /iPad|iPhone/i.test(navigator.platform) || // iPadOS 13+
651
651
  navigator.userAgent.includes("Mac") && "ontouchend" in document;
652
652
  var isBrave = () => navigator.brave?.isBrave?.name === "isBrave";
653
+ var isMobile = isIOS || /android|webos|ipod|blackberry|iemobile|opera mini/i.test(
654
+ navigator.userAgent
655
+ ) || /android|ios|ipod|blackberry|windows phone/i.test(navigator.platform);
653
656
  var supportsResizeObserver = typeof window !== "undefined" && "ResizeObserver" in window;
654
657
  var APP_NAME = "Excalidraw";
655
658
  var TEXT_AUTOWRAP_THRESHOLD = 36;
@@ -731,10 +734,12 @@ var ENV = {
731
734
  PRODUCTION: "production"
732
735
  };
733
736
  var CLASSES = {
737
+ SIDEBAR: "sidebar",
734
738
  SHAPE_ACTIONS_MENU: "App-menu__left",
735
739
  ZOOM_ACTIONS: "zoom-actions",
736
740
  SEARCH_MENU_INPUT_WRAPPER: "layer-ui__search-inputWrapper",
737
- CONVERT_ELEMENT_TYPE_POPUP: "ConvertElementTypePopup"
741
+ CONVERT_ELEMENT_TYPE_POPUP: "ConvertElementTypePopup",
742
+ SHAPE_ACTIONS_THEME_SCOPE: "shape-actions-theme-scope"
738
743
  };
739
744
  var CJK_HAND_DRAWN_FALLBACK_FONT = "Xiaolai";
740
745
  var WINDOWS_EMOJI_FALLBACK_FONT = "Segoe UI Emoji";
@@ -829,13 +834,19 @@ var IMAGE_MIME_TYPES = {
829
834
  avif: "image/avif",
830
835
  jfif: "image/jfif"
831
836
  };
832
- var MIME_TYPES = {
837
+ var STRING_MIME_TYPES = {
833
838
  text: "text/plain",
834
839
  html: "text/html",
835
840
  json: "application/json",
836
841
  // excalidraw data
837
842
  excalidraw: "application/vnd.excalidraw+json",
843
+ // LEGACY: fully-qualified library JSON data
838
844
  excalidrawlib: "application/vnd.excalidrawlib+json",
845
+ // list of excalidraw library item ids
846
+ excalidrawlibIds: "application/vnd.excalidrawlib.ids+json"
847
+ };
848
+ var MIME_TYPES = {
849
+ ...STRING_MIME_TYPES,
839
850
  // image-encoded excalidraw data
840
851
  "excalidraw.svg": "image/svg+xml",
841
852
  "excalidraw.png": "image/png",
@@ -894,9 +905,12 @@ var DEFAULT_UI_OPTIONS = {
894
905
  image: true
895
906
  }
896
907
  };
897
- var MQ_MAX_WIDTH_PORTRAIT = 730;
908
+ var MQ_MAX_MOBILE = 599;
898
909
  var MQ_MAX_WIDTH_LANDSCAPE = 1e3;
899
910
  var MQ_MAX_HEIGHT_LANDSCAPE = 500;
911
+ var MQ_MIN_TABLET = MQ_MAX_MOBILE + 1;
912
+ var MQ_MAX_TABLET = 1400;
913
+ var MQ_MIN_WIDTH_DESKTOP = 1440;
900
914
  var MQ_RIGHT_SIDEBAR_MIN_WIDTH = 1229;
901
915
  var MAX_DECIMALS_FOR_SVG_EXPORT = 2;
902
916
  var EXPORT_SCALES = [1, 2, 3];
@@ -1017,6 +1031,7 @@ var UserIdleState = /* @__PURE__ */ ((UserIdleState2) => {
1017
1031
  return UserIdleState2;
1018
1032
  })(UserIdleState || {});
1019
1033
  var LINE_POLYGON_POINT_MERGE_DISTANCE = 20;
1034
+ var DOUBLE_TAP_POSITION_THRESHOLD = 35;
1020
1035
 
1021
1036
  // src/font-metadata.ts
1022
1037
  init_define_import_meta_env();
@@ -1417,7 +1432,7 @@ var isInteractive = (target) => {
1417
1432
  return isInputLike(target) || target instanceof Element && !!target.closest("label, button");
1418
1433
  };
1419
1434
  var isWritableElement = (target) => target instanceof HTMLElement && target.dataset.type === "wysiwyg" || target instanceof HTMLBRElement || // newline in wysiwyg
1420
- target instanceof HTMLTextAreaElement || target instanceof HTMLInputElement && (target.type === "text" || target.type === "number" || target.type === "password");
1435
+ target instanceof HTMLTextAreaElement || target instanceof HTMLInputElement && (target.type === "text" || target.type === "number" || target.type === "password" || target.type === "search");
1421
1436
  var getFontFamilyString = ({
1422
1437
  fontFamily
1423
1438
  }) => {
@@ -1434,6 +1449,9 @@ var getFontString = ({
1434
1449
  }) => {
1435
1450
  return `${fontSize}px ${getFontFamilyString({ fontFamily })}`;
1436
1451
  };
1452
+ var nextAnimationFrame = async (cb) => {
1453
+ requestAnimationFrame(() => requestAnimationFrame(cb));
1454
+ };
1437
1455
  var debounce = (fn, timeout) => {
1438
1456
  let handle = 0;
1439
1457
  let lastArgs = null;
@@ -2067,6 +2085,41 @@ var reduceToCommonValue = (collection, getValue) => {
2067
2085
  }
2068
2086
  return commonValue;
2069
2087
  };
2088
+ var isMobileOrTablet = () => {
2089
+ const ua = navigator.userAgent || "";
2090
+ const platform = navigator.platform || "";
2091
+ const uaData = navigator.userAgentData;
2092
+ if (uaData) {
2093
+ const plat = (uaData.platform || "").toLowerCase();
2094
+ const isDesktopOS = plat === "windows" || plat === "macos" || plat === "linux" || plat === "chrome os";
2095
+ if (uaData.mobile === true) {
2096
+ return true;
2097
+ }
2098
+ if (uaData.mobile === false && plat === "android") {
2099
+ const looksTouchTablet = matchMedia?.("(hover: none)").matches && matchMedia?.("(pointer: coarse)").matches;
2100
+ return looksTouchTablet;
2101
+ }
2102
+ if (isDesktopOS) {
2103
+ return false;
2104
+ }
2105
+ }
2106
+ if (isIOS) {
2107
+ return true;
2108
+ }
2109
+ if (isAndroid) {
2110
+ const isAndroidPhone = /Mobile/i.test(ua);
2111
+ const isAndroidTablet = !isAndroidPhone;
2112
+ if (isAndroidPhone || isAndroidTablet) {
2113
+ const looksTouchTablet = matchMedia?.("(hover: none)").matches && matchMedia?.("(pointer: coarse)").matches;
2114
+ return looksTouchTablet;
2115
+ }
2116
+ }
2117
+ const looksDesktopPlatform = /Win|Linux|CrOS|Mac/.test(platform) || /Windows NT|X11|CrOS|Macintosh/.test(ua);
2118
+ if (looksDesktopPlatform) {
2119
+ return false;
2120
+ }
2121
+ return false;
2122
+ };
2070
2123
 
2071
2124
  // src/random.ts
2072
2125
  var random = new Random(Date.now());
@@ -2189,6 +2242,7 @@ export {
2189
2242
  DEFAULT_UI_OPTIONS,
2190
2243
  DEFAULT_VERSION,
2191
2244
  DEFAULT_VERTICAL_ALIGN,
2245
+ DOUBLE_TAP_POSITION_THRESHOLD,
2192
2246
  DRAGGING_THRESHOLD,
2193
2247
  EDITOR_LS_KEYS,
2194
2248
  ELEMENTS_PALETTE_SHADE_INDEXES,
@@ -2232,8 +2286,11 @@ export {
2232
2286
  MIN_ZOOM,
2233
2287
  MONOSPACE_GENERIC_FONT,
2234
2288
  MQ_MAX_HEIGHT_LANDSCAPE,
2289
+ MQ_MAX_MOBILE,
2290
+ MQ_MAX_TABLET,
2235
2291
  MQ_MAX_WIDTH_LANDSCAPE,
2236
- MQ_MAX_WIDTH_PORTRAIT,
2292
+ MQ_MIN_TABLET,
2293
+ MQ_MIN_WIDTH_DESKTOP,
2237
2294
  MQ_RIGHT_SIDEBAR_MIN_WIDTH,
2238
2295
  ORIG_ID,
2239
2296
  POINTER_BUTTON,
@@ -2247,6 +2304,7 @@ export {
2247
2304
  SHIFT_LOCKING_ANGLE,
2248
2305
  SIDE_RESIZING_THRESHOLD,
2249
2306
  STATS_PANELS,
2307
+ STRING_MIME_TYPES,
2250
2308
  STROKE_WIDTH,
2251
2309
  SVG_DOCUMENT_PREAMBLE,
2252
2310
  SVG_NS,
@@ -2326,6 +2384,8 @@ export {
2326
2384
  isLatinChar,
2327
2385
  isLocalLink,
2328
2386
  isMemberOf,
2387
+ isMobile,
2388
+ isMobileOrTablet,
2329
2389
  isPrimitive,
2330
2390
  isProdEnv,
2331
2391
  isPromiseLike,
@@ -2345,6 +2405,7 @@ export {
2345
2405
  memoize,
2346
2406
  muteFSAbortError,
2347
2407
  nFormatter,
2408
+ nextAnimationFrame,
2348
2409
  normalizeEOL,
2349
2410
  normalizeLink,
2350
2411
  preventUnload,