@excalidraw/excalidraw 0.18.0-ab0255f → 0.18.0-abeeaeb

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 (72) hide show
  1. package/dist/dev/{chunk-MIHPVYKB.js → chunk-6WU4HLK7.js} +62 -10
  2. package/dist/dev/chunk-6WU4HLK7.js.map +7 -0
  3. package/dist/dev/{chunk-D5J7QMBX.js → chunk-7QNTKOP3.js} +5 -2
  4. package/dist/dev/chunk-7QNTKOP3.js.map +7 -0
  5. package/dist/dev/data/{image-GBYKOTUF.js → image-OPX5T4TO.js} +2 -2
  6. package/dist/dev/index.css +298 -218
  7. package/dist/dev/index.css.map +3 -3
  8. package/dist/dev/index.js +2495 -1559
  9. package/dist/dev/index.js.map +4 -4
  10. package/dist/dev/locales/{en-NHW6IHY3.js → en-YJ3ZYXZZ.js} +2 -2
  11. package/dist/prod/{chunk-CZQZEIFA.js → chunk-FLYJHZSQ.js} +3 -3
  12. package/dist/prod/chunk-RM4UPSZO.js +4 -0
  13. package/dist/prod/data/{image-XGD7JQR6.js → image-ZVKINSPA.js} +1 -1
  14. package/dist/prod/index.css +1 -1
  15. package/dist/prod/index.js +36 -36
  16. package/dist/prod/locales/{en-GADW4C6J.js → en-SJ2YIMFF.js} +1 -1
  17. package/dist/types/common/src/colors.d.ts +5 -7
  18. package/dist/types/element/src/sortElements.d.ts +10 -0
  19. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +15 -6
  20. package/dist/types/excalidraw/actions/actionBoundText.d.ts +10 -4
  21. package/dist/types/excalidraw/actions/actionCanvas.d.ts +35 -14
  22. package/dist/types/excalidraw/actions/actionClipboard.d.ts +10 -4
  23. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +5 -2
  24. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +15 -6
  25. package/dist/types/excalidraw/actions/actionDeselect.d.ts +5 -2
  26. package/dist/types/excalidraw/actions/actionElementLink.d.ts +5 -2
  27. package/dist/types/excalidraw/actions/actionElementLock.d.ts +10 -4
  28. package/dist/types/excalidraw/actions/actionExport.d.ts +10 -4
  29. package/dist/types/excalidraw/actions/actionFrame.d.ts +15 -6
  30. package/dist/types/excalidraw/actions/actionGroup.d.ts +11 -5
  31. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +5 -2
  32. package/dist/types/excalidraw/actions/actionLink.d.ts +5 -2
  33. package/dist/types/excalidraw/actions/actionMenu.d.ts +5 -2
  34. package/dist/types/excalidraw/actions/actionProperties.d.ts +10 -4
  35. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +5 -2
  36. package/dist/types/excalidraw/actions/actionStyles.d.ts +5 -2
  37. package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +5 -2
  38. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +5 -2
  39. package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +5 -2
  40. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +5 -2
  41. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +5 -2
  42. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +5 -2
  43. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +5 -2
  44. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +5 -2
  45. package/dist/types/excalidraw/appState.d.ts +5 -0
  46. package/dist/types/excalidraw/components/App.bucketFill.d.ts +14 -0
  47. package/dist/types/excalidraw/components/App.cursor.d.ts +2 -3
  48. package/dist/types/excalidraw/components/App.d.ts +12 -5
  49. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +6 -2
  50. package/dist/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +3 -1
  51. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +2 -1
  52. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +4 -2
  53. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +4 -2
  54. package/dist/types/excalidraw/components/ColorPicker/TopPicks.d.ts +8 -1
  55. package/dist/types/excalidraw/components/ColorPicker/topPicksDnD.d.ts +31 -0
  56. package/dist/types/excalidraw/components/LayerUI.d.ts +2 -1
  57. package/dist/types/excalidraw/components/UserList.d.ts +3 -2
  58. package/dist/types/excalidraw/components/ViewportStatusFrame/ViewportStatusFrame.d.ts +11 -0
  59. package/dist/types/excalidraw/components/icons.d.ts +3 -0
  60. package/dist/types/excalidraw/data/blob.d.ts +10 -4
  61. package/dist/types/excalidraw/data/json.d.ts +5 -2
  62. package/dist/types/excalidraw/index.d.ts +1 -0
  63. package/dist/types/excalidraw/lasso/utils.d.ts +2 -0
  64. package/dist/types/excalidraw/types.d.ts +47 -4
  65. package/dist/types/excalidraw/viewport.d.ts +5 -2
  66. package/package.json +4 -4
  67. package/dist/dev/chunk-D5J7QMBX.js.map +0 -7
  68. package/dist/dev/chunk-MIHPVYKB.js.map +0 -7
  69. package/dist/prod/chunk-AXR3VHVW.js +0 -4
  70. package/dist/types/excalidraw/components/FollowMode/FollowMode.d.ts +0 -10
  71. /package/dist/dev/data/{image-GBYKOTUF.js.map → image-OPX5T4TO.js.map} +0 -0
  72. /package/dist/dev/locales/{en-NHW6IHY3.js.map → en-YJ3ZYXZZ.js.map} +0 -0
@@ -137,15 +137,18 @@ var getDefaultAppState = () => {
137
137
  y: 0
138
138
  },
139
139
  objectsSnapModeEnabled: false,
140
- userToFollow: null,
141
- followedBy: /* @__PURE__ */ new Set(),
142
140
  isCropping: false,
143
141
  croppingElementId: null,
144
142
  searchMatches: null,
145
143
  lockedMultiSelections: {},
146
144
  activeLockedId: null,
147
145
  bindMode: "orbit",
148
- boxSelectionMode: "contain"
146
+ boxSelectionMode: "contain",
147
+ colorTopPicks: {
148
+ elementStroke: null,
149
+ elementBackground: null,
150
+ bucketFill: null
151
+ }
149
152
  };
150
153
  };
151
154
  var APP_STATE_STORAGE_CONF = /* @__PURE__ */ ((config) => config)({
@@ -255,14 +258,13 @@ var APP_STATE_STORAGE_CONF = /* @__PURE__ */ ((config) => config)({
255
258
  snapLines: { browser: false, export: false, server: false },
256
259
  originSnapOffset: { browser: false, export: false, server: false },
257
260
  objectsSnapModeEnabled: { browser: true, export: false, server: false },
258
- userToFollow: { browser: false, export: false, server: false },
259
- followedBy: { browser: false, export: false, server: false },
260
261
  isCropping: { browser: false, export: false, server: false },
261
262
  croppingElementId: { browser: false, export: false, server: false },
262
263
  searchMatches: { browser: false, export: false, server: false },
263
264
  lockedMultiSelections: { browser: true, export: true, server: true },
264
265
  activeLockedId: { browser: false, export: false, server: false },
265
- bindMode: { browser: true, export: false, server: false }
266
+ bindMode: { browser: true, export: false, server: false },
267
+ colorTopPicks: { browser: true, export: false, server: false }
266
268
  });
267
269
  var _clearAppStateForStorage = (appState, exportType) => {
268
270
  const stateForExport = {};
@@ -4674,6 +4676,8 @@ var getCanvasSize = (elements, exportPadding) => {
4674
4676
  // data/restore.ts
4675
4677
  import { isFiniteNumber, isValidPoint, pointFrom as pointFrom3 } from "@excalidraw/math";
4676
4678
  import {
4679
+ colorToHex,
4680
+ COLOR_TOP_PICKS_SLOTS,
4677
4681
  DEFAULT_FONT_FAMILY as DEFAULT_FONT_FAMILY2,
4678
4682
  DEFAULT_STROKE_STREAMLINE,
4679
4683
  DEFAULT_TEXT_ALIGN as DEFAULT_TEXT_ALIGN2,
@@ -4721,7 +4725,11 @@ import {
4721
4725
  isTextElement as isTextElement4,
4722
4726
  isUsingAdaptiveRadius
4723
4727
  } from "@excalidraw/element";
4724
- import { syncInvalidIndices as syncInvalidIndices2 } from "@excalidraw/element";
4728
+ import {
4729
+ normalizeBoundElementsOrder,
4730
+ syncInvalidIndices as syncInvalidIndices2,
4731
+ syncMovedIndices
4732
+ } from "@excalidraw/element";
4725
4733
  import { refreshTextDimensions } from "@excalidraw/element";
4726
4734
  import { getNormalizedDimensions } from "@excalidraw/element";
4727
4735
  import { isInvisiblySmallElement } from "@excalidraw/element";
@@ -5156,6 +5164,19 @@ var repairBoundElement = (boundElement, elementsMap) => {
5156
5164
  container.boundElements = boundElements;
5157
5165
  }
5158
5166
  };
5167
+ var repairBoundTextElementOrder = (elements) => {
5168
+ const originalPositions = new Map(
5169
+ elements.map((element, index) => [element.id, index])
5170
+ );
5171
+ const normalizedElements = normalizeBoundElementsOrder(elements);
5172
+ const reorderedBoundTextElements = normalizedElements.filter(
5173
+ (element, index) => isTextElement4(element) && element.containerId && originalPositions.get(element.id) !== index
5174
+ );
5175
+ return reorderedBoundTextElements.length ? syncMovedIndices(
5176
+ normalizedElements,
5177
+ arrayToMap3(reorderedBoundTextElements)
5178
+ ) : normalizedElements;
5179
+ };
5159
5180
  var repairFrameMembership = (element, elementsMap) => {
5160
5181
  if (element.frameId) {
5161
5182
  const containingFrame = elementsMap.get(element.frameId);
@@ -5237,7 +5258,8 @@ var restoreElements = (targetElements, existingElements, opts) => {
5237
5258
  }
5238
5259
  }
5239
5260
  }
5240
- return restoredElements.map((element) => {
5261
+ const repairedElements = repairBoundTextElementOrder(restoredElements);
5262
+ return repairedElements.map((element) => {
5241
5263
  if (isElbowArrow(element) && !isArrowBoundToElement(element) && !validateElbowPoints(element.points)) {
5242
5264
  return {
5243
5265
  ...element,
@@ -5304,6 +5326,25 @@ var LegacyAppStateMigrations = {
5304
5326
  ];
5305
5327
  }
5306
5328
  };
5329
+ var restoreColorTopPicksList = (value) => {
5330
+ if (!Array.isArray(value)) {
5331
+ return null;
5332
+ }
5333
+ const colors = /* @__PURE__ */ new Map();
5334
+ for (const color of value) {
5335
+ if (typeof color !== "string") {
5336
+ continue;
5337
+ }
5338
+ const normalized = colorToHex(color) ?? color.toLowerCase();
5339
+ if (!colors.has(normalized)) {
5340
+ colors.set(normalized, color);
5341
+ }
5342
+ if (colors.size >= COLOR_TOP_PICKS_SLOTS) {
5343
+ break;
5344
+ }
5345
+ }
5346
+ return colors.size ? [...colors.values()] : null;
5347
+ };
5307
5348
  var restoreAppState = (appState, localAppState) => {
5308
5349
  appState = appState || {};
5309
5350
  const defaultAppState = getDefaultAppState();
@@ -5328,6 +5369,17 @@ var restoreAppState = (appState, localAppState) => {
5328
5369
  if (boxSelectionMode !== void 0) {
5329
5370
  nextAppState.boxSelectionMode = boxSelectionMode;
5330
5371
  }
5372
+ nextAppState.colorTopPicks = {
5373
+ elementStroke: restoreColorTopPicksList(
5374
+ nextAppState.colorTopPicks?.elementStroke
5375
+ ),
5376
+ elementBackground: restoreColorTopPicksList(
5377
+ nextAppState.colorTopPicks?.elementBackground
5378
+ ),
5379
+ bucketFill: restoreColorTopPicksList(
5380
+ nextAppState.colorTopPicks?.bucketFill
5381
+ )
5382
+ };
5331
5383
  if (appState.currentItemStrokeWidth !== void 0) {
5332
5384
  nextAppState.currentItemStrokeWidthKey = getStrokeWidthKey(appState.currentItemStrokeWidth) ?? defaultAppState.currentItemStrokeWidthKey;
5333
5385
  }
@@ -5403,7 +5455,7 @@ var parseFileContents = async (blob) => {
5403
5455
  let contents;
5404
5456
  if (blob.type === MIME_TYPES6.png) {
5405
5457
  try {
5406
- return await (await import("./data/image-GBYKOTUF.js")).decodePngMetadata(blob);
5458
+ return await (await import("./data/image-OPX5T4TO.js")).decodePngMetadata(blob);
5407
5459
  } catch (error) {
5408
5460
  if (error.message === "INVALID") {
5409
5461
  throw new ImageSceneDataError(
@@ -5879,4 +5931,4 @@ export {
5879
5931
  createFile,
5880
5932
  normalizeFile
5881
5933
  };
5882
- //# sourceMappingURL=chunk-MIHPVYKB.js.map
5934
+ //# sourceMappingURL=chunk-6WU4HLK7.js.map