microboard-temp 0.13.79 → 0.13.81

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.
package/dist/cjs/node.js CHANGED
@@ -3638,6 +3638,8 @@ var init_Settings = __esm(() => {
3638
3638
  getDPI: () => 1,
3639
3639
  reactEditorFocus: () => {},
3640
3640
  reactEditorToSlatePoint: () => null,
3641
+ onAuthInvalid: async () => false,
3642
+ onAuthTerminalFailure: () => {},
3641
3643
  planNames: {
3642
3644
  basic: "Basic",
3643
3645
  plus: "Plus",
@@ -6183,11 +6185,12 @@ function getSnapshotFromList(list, board) {
6183
6185
  const snapshot = {
6184
6186
  events: list.getConfirmedRecords().map((record) => record.event),
6185
6187
  items: board.serialize(),
6186
- lastIndex: list.getLastIndex()
6188
+ lastIndex: getLastIndexFromList(list)
6187
6189
  };
6188
6190
  list.applyUnconfirmed();
6189
6191
  return snapshot;
6190
6192
  }
6193
+ var init_getSnapshotFromList = () => {};
6191
6194
 
6192
6195
  // src/Events/Log/EventsLog.ts
6193
6196
  class EventsLog {
@@ -6276,6 +6279,7 @@ var init_EventsLog = __esm(() => {
6276
6279
  init_getUndoRecordFromList();
6277
6280
  init_getUnpublishedEventFromList();
6278
6281
  init_insertEventsFromOtherConnectionsIntoList();
6282
+ init_getSnapshotFromList();
6279
6283
  });
6280
6284
 
6281
6285
  // src/Events/Log/index.ts
@@ -14452,6 +14456,11 @@ class Events {
14452
14456
  getOpKey(op) {
14453
14457
  return op.method;
14454
14458
  }
14459
+ refreshIdentity() {
14460
+ const sessionId = this.getSessionId();
14461
+ const authorUserId = this.getAuthorUserId();
14462
+ this.log.refreshUnconfirmedIdentity(sessionId, authorUserId);
14463
+ }
14455
14464
  getSessionId() {
14456
14465
  return getConnectionSessionId(this.connection);
14457
14466
  }
@@ -31962,7 +31971,32 @@ var init_setLink = __esm(() => {
31962
31971
 
31963
31972
  // src/Items/RichText/editorHelpers/common/getSelectionMarks.ts
31964
31973
  function getSelectionMarks(editor) {
31965
- return import_slate41.Editor.marks(editor);
31974
+ const marks = import_slate41.Editor.marks(editor);
31975
+ if (!editor.selection) {
31976
+ return marks;
31977
+ }
31978
+ if (!import_slate41.Range.isExpanded(editor.selection) || marks && Object.keys(marks).length > 0) {
31979
+ return marks;
31980
+ }
31981
+ const textEntries = Array.from(import_slate41.Editor.nodes(editor, {
31982
+ at: editor.selection,
31983
+ match: (node) => import_slate41.Text.isText(node)
31984
+ }));
31985
+ const [firstEntry, ...restEntries] = textEntries;
31986
+ if (!firstEntry) {
31987
+ return marks;
31988
+ }
31989
+ const { text: _firstText, ...firstMarks } = firstEntry[0];
31990
+ const commonMarks = { ...firstMarks };
31991
+ for (const [node] of restEntries) {
31992
+ const { text: _text, ...nodeMarks } = node;
31993
+ for (const key of Object.keys(commonMarks)) {
31994
+ if (commonMarks[key] !== nodeMarks[key]) {
31995
+ delete commonMarks[key];
31996
+ }
31997
+ }
31998
+ }
31999
+ return commonMarks;
31966
32000
  }
31967
32001
  var import_slate41;
31968
32002
  var init_getSelectionMarks = __esm(() => {
@@ -41914,7 +41948,14 @@ function setSelectionFontSize(editor, isAutosize, fontSize, selectionContext) {
41914
41948
  shouldUpdateElement = true;
41915
41949
  }
41916
41950
  } else {
41917
- import_slate52.Editor.addMark(editor, "fontSize", size);
41951
+ if (editor.selection && import_slate52.Range.isExpanded(editor.selection)) {
41952
+ import_slate52.Transforms.setNodes(editor, { fontSize: size }, {
41953
+ match: (n) => import_slate52.Text.isText(n),
41954
+ split: true
41955
+ });
41956
+ } else {
41957
+ import_slate52.Editor.addMark(editor, "fontSize", size);
41958
+ }
41918
41959
  }
41919
41960
  }
41920
41961
  if (selectionContext === "EditTextUnderPointer") {
@@ -41994,7 +42035,14 @@ function setSelectionFontColor(editor, format, selectionContext) {
41994
42035
  return;
41995
42036
  }
41996
42037
  if (marks.fontColor !== format) {
41997
- import_slate54.Editor.addMark(editor, "fontColor", format);
42038
+ if (editor.selection && import_slate54.Range.isExpanded(editor.selection)) {
42039
+ import_slate54.Transforms.setNodes(editor, { fontColor: format }, {
42040
+ match: (n) => import_slate54.Text.isText(n),
42041
+ split: true
42042
+ });
42043
+ } else {
42044
+ import_slate54.Editor.addMark(editor, "fontColor", format);
42045
+ }
41998
42046
  }
41999
42047
  if (selectionContext === "EditTextUnderPointer") {
42000
42048
  try {
@@ -42545,7 +42593,14 @@ function applySelectionFontColor(editor, fontColor) {
42545
42593
  if (!marks) {
42546
42594
  return;
42547
42595
  }
42548
- import_slate56.Editor.addMark(editor, "fontColor", fontColor);
42596
+ if (editor.selection && import_slate56.Range.isExpanded(editor.selection)) {
42597
+ import_slate56.Transforms.setNodes(editor, { fontColor }, {
42598
+ match: (n) => import_slate56.Text.isText(n),
42599
+ split: true
42600
+ });
42601
+ } else {
42602
+ import_slate56.Editor.addMark(editor, "fontColor", fontColor);
42603
+ }
42549
42604
  }
42550
42605
  var import_slate56;
42551
42606
  var init_applySelectionFontColor = __esm(() => {
@@ -42573,7 +42628,14 @@ function applySelectionFontSize(editor, fontSize, selectionContext) {
42573
42628
  focus: import_slate57.Editor.end(editor, [])
42574
42629
  });
42575
42630
  }
42576
- import_slate57.Editor.addMark(editor, "fontSize", size);
42631
+ if (editor.selection && import_slate57.Range.isExpanded(editor.selection)) {
42632
+ import_slate57.Transforms.setNodes(editor, { fontSize: size }, {
42633
+ match: (n) => import_slate57.Text.isText(n),
42634
+ split: true
42635
+ });
42636
+ } else {
42637
+ import_slate57.Editor.addMark(editor, "fontSize", size);
42638
+ }
42577
42639
  if (selectionContext === "EditTextUnderPointer") {}
42578
42640
  }
42579
42641
  var import_slate57;
@@ -44241,6 +44303,35 @@ var init_Audio = __esm(() => {
44241
44303
  };
44242
44304
  });
44243
44305
 
44306
+ // src/api/AuthRequest.ts
44307
+ async function authenticatedFetch(url2, init2 = {}, boardId) {
44308
+ const getAuthInit = (originalInit) => {
44309
+ const token = conf.getAccessToken();
44310
+ if (!token) {
44311
+ return originalInit;
44312
+ }
44313
+ const headers = new Headers(originalInit.headers);
44314
+ headers.set("Authorization", `Bearer ${token}`);
44315
+ return { ...originalInit, headers };
44316
+ };
44317
+ let response = await fetch(url2, getAuthInit(init2));
44318
+ if (response.status === 401) {
44319
+ const body = await response.clone().json().catch(() => ({}));
44320
+ if (body.code === "AUTH_INVALID_ACCESS_TOKEN") {
44321
+ const refreshed = await conf.onAuthInvalid(boardId);
44322
+ if (refreshed) {
44323
+ response = await fetch(url2, getAuthInit(init2));
44324
+ } else {
44325
+ conf.onAuthTerminalFailure(boardId, body.code);
44326
+ }
44327
+ }
44328
+ }
44329
+ return response;
44330
+ }
44331
+ var init_AuthRequest = __esm(() => {
44332
+ init_Settings();
44333
+ });
44334
+
44244
44335
  // src/api/MediaHelpers.ts
44245
44336
  function getAccessTypeFromUrl(url2) {
44246
44337
  try {
@@ -44258,15 +44349,14 @@ function getAccessTypeFromUrl(url2) {
44258
44349
  }
44259
44350
  return null;
44260
44351
  }
44261
- var uploadSvgDirectly = async (blob, accessToken, boardId, baseUrl) => {
44262
- const response = await fetch(`${baseUrl || ""}/svg/${boardId}`, {
44352
+ var uploadSvgDirectly = async (blob, boardId, baseUrl) => {
44353
+ const response = await authenticatedFetch(`${baseUrl || ""}/svg/${boardId}`, {
44263
44354
  method: "POST",
44264
44355
  headers: {
44265
- "Content-Type": "image/svg+xml",
44266
- Authorization: `Bearer ${accessToken}`
44356
+ "Content-Type": "image/svg+xml"
44267
44357
  },
44268
44358
  body: blob
44269
- });
44359
+ }, boardId);
44270
44360
  if (!response.ok) {
44271
44361
  conf.hooks.onUploadMediaError(response, "image");
44272
44362
  throw new Error(`Failed to upload SVG. Status: ${response.status}`);
@@ -44276,19 +44366,18 @@ var uploadSvgDirectly = async (blob, accessToken, boardId, baseUrl) => {
44276
44366
  throw new Error("Server did not provide a key for the uploaded SVG.");
44277
44367
  }
44278
44368
  return data.url;
44279
- }, uploadWithPresignedUrl = async (blob, accessToken, boardId, type, baseUrl) => {
44280
- const generateUrlResponse = await fetch(`${baseUrl || ""}/media/upload`, {
44369
+ }, uploadWithPresignedUrl = async (blob, boardId, type, baseUrl) => {
44370
+ const generateUrlResponse = await authenticatedFetch(`${baseUrl || ""}/media/upload`, {
44281
44371
  method: "POST",
44282
44372
  headers: {
44283
- "Content-Type": "application/json",
44284
- Authorization: `Bearer ${accessToken}`
44373
+ "Content-Type": "application/json"
44285
44374
  },
44286
44375
  body: JSON.stringify({
44287
44376
  fileSize: blob.size,
44288
44377
  fileType: blob.type,
44289
44378
  boardId
44290
44379
  })
44291
- });
44380
+ }, boardId);
44292
44381
  if (!generateUrlResponse.ok) {
44293
44382
  conf.hooks.onUploadMediaError(generateUrlResponse, type);
44294
44383
  throw new Error(`Failed to get presigned URL. Status: ${generateUrlResponse.status}`);
@@ -44310,18 +44399,18 @@ var uploadSvgDirectly = async (blob, accessToken, boardId, baseUrl) => {
44310
44399
  throw new Error(`Direct upload to storage failed. Status: ${uploadResponse.status}`);
44311
44400
  }
44312
44401
  return url2;
44313
- }, uploadMediaToStorage = async (blob, accessToken, boardId, type, baseUrl) => {
44402
+ }, uploadMediaToStorage = async (blob, boardId, type, baseUrl) => {
44314
44403
  try {
44315
44404
  if (blob.type === "image/svg+xml") {
44316
- return await uploadSvgDirectly(blob, accessToken, boardId, baseUrl);
44405
+ return await uploadSvgDirectly(blob, boardId, baseUrl);
44317
44406
  } else {
44318
- return await uploadWithPresignedUrl(blob, accessToken, boardId, type, baseUrl);
44407
+ return await uploadWithPresignedUrl(blob, boardId, type, baseUrl);
44319
44408
  }
44320
44409
  } catch (error48) {
44321
44410
  console.error("Media upload process error:", error48);
44322
44411
  throw error48;
44323
44412
  }
44324
- }, getMediaSignedUrl = async (url2, accessToken) => {
44413
+ }, getMediaSignedUrl = async (url2) => {
44325
44414
  const accessType = getAccessTypeFromUrl(url2);
44326
44415
  if (!accessType) {
44327
44416
  return null;
@@ -44329,15 +44418,9 @@ var uploadSvgDirectly = async (blob, accessToken, boardId, baseUrl) => {
44329
44418
  if (accessType === "anonymous") {
44330
44419
  return url2;
44331
44420
  }
44332
- if (!accessToken) {
44333
- return null;
44334
- }
44335
44421
  try {
44336
- const response = await fetch(url2, {
44337
- method: "GET",
44338
- headers: {
44339
- Authorization: `Bearer ${accessToken}`
44340
- }
44422
+ const response = await authenticatedFetch(url2, {
44423
+ method: "GET"
44341
44424
  });
44342
44425
  if (!response.ok) {
44343
44426
  console.error("Failed to get media signed url:", response.status, response.statusText);
@@ -44352,15 +44435,16 @@ var uploadSvgDirectly = async (blob, accessToken, boardId, baseUrl) => {
44352
44435
  };
44353
44436
  var init_MediaHelpers = __esm(() => {
44354
44437
  init_Settings();
44438
+ init_AuthRequest();
44355
44439
  });
44356
44440
 
44357
44441
  // src/Items/Audio/AudioHelpers.ts
44358
- var prepareAudio = (file2, accessToken, boardId, baseUrl) => {
44442
+ var prepareAudio = (file2, boardId, baseUrl) => {
44359
44443
  return new Promise((resolve, reject) => {
44360
44444
  const audio = document.createElement("audio");
44361
44445
  audio.src = URL.createObjectURL(file2);
44362
44446
  audio.onloadedmetadata = () => {
44363
- uploadMediaToStorage(file2, accessToken, boardId, "audio", baseUrl).then((url2) => {
44447
+ uploadMediaToStorage(file2, boardId, "audio", baseUrl).then((url2) => {
44364
44448
  resolve(url2);
44365
44449
  }).catch(reject);
44366
44450
  };
@@ -62887,7 +62971,7 @@ var init_Video = __esm(() => {
62887
62971
  async setPreviewUrl(url2) {
62888
62972
  if (this.isStorageUrl) {
62889
62973
  try {
62890
- this.preview.src = await getMediaSignedUrl(url2, this.board.getAccount()?.accessToken || null) || "";
62974
+ this.preview.src = await getMediaSignedUrl(url2) || "";
62891
62975
  } catch (err) {
62892
62976
  console.error(err);
62893
62977
  this.onError();
@@ -63247,9 +63331,9 @@ var getBlobFromDataURL = (dataURL) => {
63247
63331
  };
63248
63332
  }
63249
63333
  });
63250
- }, prepareImage = (inp, accessToken, boardId, baseUrl) => resizeAndConvertToPng(inp).then(({ width: width2, height: height2, dataURL, hash: hash2 }) => {
63334
+ }, prepareImage = (inp, boardId, baseUrl) => resizeAndConvertToPng(inp).then(({ width: width2, height: height2, dataURL, hash: hash2 }) => {
63251
63335
  const { blob, mimeType } = getBlobFromDataURL(dataURL);
63252
- return uploadMediaToStorage(blob, accessToken, boardId, "image", baseUrl).then((src) => {
63336
+ return uploadMediaToStorage(blob, boardId, "image", baseUrl).then((src) => {
63253
63337
  return {
63254
63338
  imageDimension: { width: width2, height: height2 },
63255
63339
  base64: dataURL,
@@ -63290,15 +63374,15 @@ var getVideoMetadata = (file2) => {
63290
63374
  board.selection.add(boardVideo);
63291
63375
  onLoadCb(boardVideo);
63292
63376
  });
63293
- }, prepareVideo = (file2, accessToken, boardId, baseUrl) => {
63377
+ }, prepareVideo = (file2, boardId, baseUrl) => {
63294
63378
  return new Promise((resolve2, reject) => {
63295
63379
  const video = document.createElement("video");
63296
63380
  video.src = URL.createObjectURL(file2);
63297
63381
  video.onloadedmetadata = () => {
63298
63382
  video.onseeked = () => {
63299
63383
  video.onseeked = null;
63300
- prepareImage(captureFrame(0.1, video)?.src, accessToken, boardId, baseUrl).then((imageData) => {
63301
- uploadMediaToStorage(file2, accessToken, boardId, "video", baseUrl).then((url2) => {
63384
+ prepareImage(captureFrame(0.1, video)?.src, boardId, baseUrl).then((imageData) => {
63385
+ uploadMediaToStorage(file2, boardId, "video", baseUrl).then((url2) => {
63302
63386
  resolve2({
63303
63387
  url: url2,
63304
63388
  previewUrl: imageData.storageLink
@@ -69286,8 +69370,8 @@ var init_Card = __esm(() => {
69286
69370
  async createImages() {
69287
69371
  this.face = conf.documentFactory.createElement("img");
69288
69372
  this.backside = conf.documentFactory.createElement("img");
69289
- this.face.src = await getMediaSignedUrl(this.faceUrl, this.board.getAccount()?.accessToken || null) || "";
69290
- this.backside.src = await getMediaSignedUrl(this.backsideUrl, this.board.getAccount()?.accessToken || null) || "";
69373
+ this.face.src = await getMediaSignedUrl(this.faceUrl) || "";
69374
+ this.backside.src = await getMediaSignedUrl(this.backsideUrl) || "";
69291
69375
  this.face.onload = () => {
69292
69376
  this.subject.publish(this);
69293
69377
  };
@@ -69988,7 +70072,7 @@ var init_Dice = __esm(() => {
69988
70072
  this.renderValues[index2] = value;
69989
70073
  } else {
69990
70074
  const image2 = conf.documentFactory.createElement("img");
69991
- image2.src = await getMediaSignedUrl(value, this.board.getAccount()?.accessToken || null) || "";
70075
+ image2.src = await getMediaSignedUrl(value) || "";
69992
70076
  this.renderValues[index2] = image2;
69993
70077
  image2.onload = () => {
69994
70078
  this.subject.publish(this);
@@ -70443,7 +70527,7 @@ var init_Screen = __esm(() => {
70443
70527
  this.backgroundUrl = url2 || "";
70444
70528
  if (url2) {
70445
70529
  this.backgroundImage = conf.documentFactory.createElement("img");
70446
- this.backgroundImage.src = await getMediaSignedUrl(url2, this.board.getAccount()?.accessToken || null) || "";
70530
+ this.backgroundImage.src = await getMediaSignedUrl(url2) || "";
70447
70531
  this.applyBackgroundColor("none");
70448
70532
  this.backgroundImage.onload = () => {
70449
70533
  this.subject.publish(this);
@@ -72305,7 +72389,7 @@ var init_Image = __esm(() => {
72305
72389
  }
72306
72390
  async setStorageLink(link2) {
72307
72391
  this.storageLink = link2;
72308
- this.signedUrl = await getMediaSignedUrl(link2, this.board.getAccount()?.accessToken || null) || "";
72392
+ this.signedUrl = await getMediaSignedUrl(link2) || "";
72309
72393
  if (!this.signedUrl) {
72310
72394
  const canvas = conf.documentFactory.createElement("canvas");
72311
72395
  canvas.width = 100;
@@ -72726,7 +72810,7 @@ function handleAudioGenerate(response, board) {
72726
72810
  }
72727
72811
  function handleImageGenerate(response, board) {
72728
72812
  if (response.status === "completed" && response.base64) {
72729
- prepareImage(response.base64, conf.getAccessToken(), board.getBoardId()).then((imageData) => {
72813
+ prepareImage(response.base64, board.getBoardId()).then((imageData) => {
72730
72814
  const placeholderId = board.aiImagePlaceholder?.getId();
72731
72815
  if (placeholderId) {
72732
72816
  const placeholderNode = board.items.getById(placeholderId);