ugcinc-render 1.8.167 → 1.8.169

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/index.d.mts CHANGED
@@ -1104,6 +1104,10 @@ interface IMessageDmCompositionProps {
1104
1104
  recipientBubbleLeft?: number;
1105
1105
  senderBubbleRight?: number;
1106
1106
  bubbleMaxWidth?: number;
1107
+ senderImageLeft?: number;
1108
+ senderImageHeight?: number;
1109
+ senderImageGapToText?: number;
1110
+ senderImageBorderRadius?: number;
1107
1111
  messages?: ImMessage[];
1108
1112
  }
1109
1113
 
package/dist/index.d.ts CHANGED
@@ -1104,6 +1104,10 @@ interface IMessageDmCompositionProps {
1104
1104
  recipientBubbleLeft?: number;
1105
1105
  senderBubbleRight?: number;
1106
1106
  bubbleMaxWidth?: number;
1107
+ senderImageLeft?: number;
1108
+ senderImageHeight?: number;
1109
+ senderImageGapToText?: number;
1110
+ senderImageBorderRadius?: number;
1107
1111
  messages?: ImMessage[];
1108
1112
  }
1109
1113
 
package/dist/index.js CHANGED
@@ -5288,11 +5288,11 @@ var MESSAGE_DEFAULTS2 = {
5288
5288
  recipientBubbleLeft: 48,
5289
5289
  senderBubbleRight: 1158,
5290
5290
  bubbleMaxWidth: 900,
5291
- // Image message defaults
5292
- imageMaxWidth: 600,
5293
- imageAspectRatio: 1,
5294
- imageBorderRadius: 30,
5295
- imageGapToText: 8
5291
+ // Sender image attachment
5292
+ senderImageLeft: 336,
5293
+ senderImageHeight: 1120,
5294
+ senderImageGapToText: 3,
5295
+ senderImageBorderRadius: 30
5296
5296
  };
5297
5297
  var FONT_FAMILY2 = getFontFamily("apple");
5298
5298
  function calculateAutoWidthAndLines3({
@@ -5409,9 +5409,9 @@ function calculateMessagePositions2(props) {
5409
5409
  const recipientBubbleLeft = props.recipientBubbleLeft ?? MESSAGE_DEFAULTS2.recipientBubbleLeft;
5410
5410
  const senderBubbleRight = props.senderBubbleRight ?? MESSAGE_DEFAULTS2.senderBubbleRight;
5411
5411
  const bubbleMaxWidth = props.bubbleMaxWidth ?? MESSAGE_DEFAULTS2.bubbleMaxWidth;
5412
- const imageMaxWidth = MESSAGE_DEFAULTS2.imageMaxWidth;
5413
- const imageAspectRatio = MESSAGE_DEFAULTS2.imageAspectRatio;
5414
- const imageGapToText = MESSAGE_DEFAULTS2.imageGapToText;
5412
+ const senderImageLeft = props.senderImageLeft ?? MESSAGE_DEFAULTS2.senderImageLeft;
5413
+ const senderImageHeight = props.senderImageHeight ?? MESSAGE_DEFAULTS2.senderImageHeight;
5414
+ const senderImageGapToText = props.senderImageGapToText ?? MESSAGE_DEFAULTS2.senderImageGapToText;
5415
5415
  const calculatedMessages = [];
5416
5416
  let currentBottom = messageAreaBottom;
5417
5417
  for (let i = messages.length - 1; i >= 0; i--) {
@@ -5462,10 +5462,10 @@ function calculateMessagePositions2(props) {
5462
5462
  let imageWidth;
5463
5463
  let imageHeight;
5464
5464
  let imageY;
5465
- if (message.imageUrl) {
5466
- imageWidth = Math.min(imageMaxWidth, bubbleMaxWidth);
5467
- imageHeight = imageWidth / imageAspectRatio;
5468
- imageY = bubbleTop - imageGapToText - imageHeight;
5465
+ if (message.imageUrl && message.sender === "user") {
5466
+ imageWidth = senderBubbleRight - senderImageLeft;
5467
+ imageHeight = senderImageHeight;
5468
+ imageY = bubbleTop - senderImageGapToText - imageHeight;
5469
5469
  }
5470
5470
  calculatedMessages.unshift({
5471
5471
  message,
@@ -5537,24 +5537,24 @@ function generateMessageElements2(props, calculatedMessages) {
5537
5537
  const bubbleMaxWidth = props.bubbleMaxWidth ?? MESSAGE_DEFAULTS2.bubbleMaxWidth;
5538
5538
  const recipientBubbleLeft = props.recipientBubbleLeft ?? MESSAGE_DEFAULTS2.recipientBubbleLeft;
5539
5539
  const senderBubbleRight = props.senderBubbleRight ?? MESSAGE_DEFAULTS2.senderBubbleRight;
5540
- const imageBorderRadius = MESSAGE_DEFAULTS2.imageBorderRadius;
5540
+ const senderImageLeft = props.senderImageLeft ?? MESSAGE_DEFAULTS2.senderImageLeft;
5541
+ const senderImageBorderRadius = props.senderImageBorderRadius ?? MESSAGE_DEFAULTS2.senderImageBorderRadius;
5541
5542
  const lineHeightMultiplier = messageLineHeight / messageFontSize;
5542
5543
  for (let i = 0; i < calculatedMessages.length; i++) {
5543
5544
  const cm = calculatedMessages[i];
5544
5545
  const isUser = cm.message.sender === "user";
5545
5546
  const bubbleColor = isUser ? senderBubbleColor : recipientBubbleColor;
5546
- if (cm.message.imageUrl && cm.imageWidth && cm.imageHeight && cm.imageY !== void 0) {
5547
- const imageX = isUser ? senderBubbleRight - cm.imageWidth : recipientBubbleLeft;
5547
+ if (cm.message.imageUrl && cm.imageWidth && cm.imageHeight && cm.imageY !== void 0 && isUser) {
5548
5548
  elements.push({
5549
5549
  id: `image-${cm.message.id}`,
5550
5550
  type: "image",
5551
- x: imageX,
5551
+ x: senderImageLeft,
5552
5552
  y: cm.imageY,
5553
5553
  width: cm.imageWidth,
5554
5554
  height: cm.imageHeight,
5555
5555
  zIndex: 5 + i,
5556
5556
  url: cm.message.imageUrl,
5557
- borderRadius: imageBorderRadius,
5557
+ borderRadius: senderImageBorderRadius,
5558
5558
  objectFit: "cover"
5559
5559
  });
5560
5560
  }
@@ -5737,6 +5737,11 @@ var defaultIMessageDmProps = {
5737
5737
  recipientBubbleLeft: 48,
5738
5738
  senderBubbleRight: 1158,
5739
5739
  bubbleMaxWidth: 900,
5740
+ // Sender image attachment
5741
+ senderImageLeft: 336,
5742
+ senderImageHeight: 1120,
5743
+ senderImageGapToText: 3,
5744
+ senderImageBorderRadius: 30,
5740
5745
  // Example messages
5741
5746
  messages: [
5742
5747
  { id: "msg-1", sender: "user", text: "heyyy fae, help me slide on this baddie pls \u{1F64F}", imageUrl: "https://n14dcpakf8w1fekl.public.blob.vercel-storage.com/media/06c3ed1c-eefb-4a60-b0c4-5fb872811ba0/pinterest-1766175214139-0-JpXmGIxVWdjEJ3qxGyoC4DAi2KAZrg.jpg" },
@@ -5754,6 +5759,17 @@ var IMessageDmComposition = (props) => {
5754
5759
  if (typeof document !== "undefined" && document.fonts?.ready) {
5755
5760
  await document.fonts.ready;
5756
5761
  }
5762
+ await new Promise((resolve) => {
5763
+ if (typeof requestAnimationFrame !== "undefined") {
5764
+ requestAnimationFrame(() => {
5765
+ requestAnimationFrame(() => {
5766
+ resolve();
5767
+ });
5768
+ });
5769
+ } else {
5770
+ resolve();
5771
+ }
5772
+ });
5757
5773
  };
5758
5774
  loadFonts().then(() => {
5759
5775
  setFontsLoaded(true);
@@ -6951,6 +6967,11 @@ var iMessageDmPropsSchema = import_zod.z.object({
6951
6967
  recipientBubbleLeft: import_zod.z.number().optional(),
6952
6968
  senderBubbleRight: import_zod.z.number().optional(),
6953
6969
  bubbleMaxWidth: import_zod.z.number().optional(),
6970
+ // Sender image attachment
6971
+ senderImageLeft: import_zod.z.number().optional(),
6972
+ senderImageHeight: import_zod.z.number().optional(),
6973
+ senderImageGapToText: import_zod.z.number().optional(),
6974
+ senderImageBorderRadius: import_zod.z.number().optional(),
6954
6975
  // Messages
6955
6976
  messages: import_zod.z.array(import_zod.z.object({
6956
6977
  id: import_zod.z.string(),
package/dist/index.mjs CHANGED
@@ -4334,11 +4334,11 @@ var MESSAGE_DEFAULTS2 = {
4334
4334
  recipientBubbleLeft: 48,
4335
4335
  senderBubbleRight: 1158,
4336
4336
  bubbleMaxWidth: 900,
4337
- // Image message defaults
4338
- imageMaxWidth: 600,
4339
- imageAspectRatio: 1,
4340
- imageBorderRadius: 30,
4341
- imageGapToText: 8
4337
+ // Sender image attachment
4338
+ senderImageLeft: 336,
4339
+ senderImageHeight: 1120,
4340
+ senderImageGapToText: 3,
4341
+ senderImageBorderRadius: 30
4342
4342
  };
4343
4343
  var FONT_FAMILY2 = getFontFamily("apple");
4344
4344
  function calculateAutoWidthAndLines3({
@@ -4455,9 +4455,9 @@ function calculateMessagePositions2(props) {
4455
4455
  const recipientBubbleLeft = props.recipientBubbleLeft ?? MESSAGE_DEFAULTS2.recipientBubbleLeft;
4456
4456
  const senderBubbleRight = props.senderBubbleRight ?? MESSAGE_DEFAULTS2.senderBubbleRight;
4457
4457
  const bubbleMaxWidth = props.bubbleMaxWidth ?? MESSAGE_DEFAULTS2.bubbleMaxWidth;
4458
- const imageMaxWidth = MESSAGE_DEFAULTS2.imageMaxWidth;
4459
- const imageAspectRatio = MESSAGE_DEFAULTS2.imageAspectRatio;
4460
- const imageGapToText = MESSAGE_DEFAULTS2.imageGapToText;
4458
+ const senderImageLeft = props.senderImageLeft ?? MESSAGE_DEFAULTS2.senderImageLeft;
4459
+ const senderImageHeight = props.senderImageHeight ?? MESSAGE_DEFAULTS2.senderImageHeight;
4460
+ const senderImageGapToText = props.senderImageGapToText ?? MESSAGE_DEFAULTS2.senderImageGapToText;
4461
4461
  const calculatedMessages = [];
4462
4462
  let currentBottom = messageAreaBottom;
4463
4463
  for (let i = messages.length - 1; i >= 0; i--) {
@@ -4508,10 +4508,10 @@ function calculateMessagePositions2(props) {
4508
4508
  let imageWidth;
4509
4509
  let imageHeight;
4510
4510
  let imageY;
4511
- if (message.imageUrl) {
4512
- imageWidth = Math.min(imageMaxWidth, bubbleMaxWidth);
4513
- imageHeight = imageWidth / imageAspectRatio;
4514
- imageY = bubbleTop - imageGapToText - imageHeight;
4511
+ if (message.imageUrl && message.sender === "user") {
4512
+ imageWidth = senderBubbleRight - senderImageLeft;
4513
+ imageHeight = senderImageHeight;
4514
+ imageY = bubbleTop - senderImageGapToText - imageHeight;
4515
4515
  }
4516
4516
  calculatedMessages.unshift({
4517
4517
  message,
@@ -4583,24 +4583,24 @@ function generateMessageElements2(props, calculatedMessages) {
4583
4583
  const bubbleMaxWidth = props.bubbleMaxWidth ?? MESSAGE_DEFAULTS2.bubbleMaxWidth;
4584
4584
  const recipientBubbleLeft = props.recipientBubbleLeft ?? MESSAGE_DEFAULTS2.recipientBubbleLeft;
4585
4585
  const senderBubbleRight = props.senderBubbleRight ?? MESSAGE_DEFAULTS2.senderBubbleRight;
4586
- const imageBorderRadius = MESSAGE_DEFAULTS2.imageBorderRadius;
4586
+ const senderImageLeft = props.senderImageLeft ?? MESSAGE_DEFAULTS2.senderImageLeft;
4587
+ const senderImageBorderRadius = props.senderImageBorderRadius ?? MESSAGE_DEFAULTS2.senderImageBorderRadius;
4587
4588
  const lineHeightMultiplier = messageLineHeight / messageFontSize;
4588
4589
  for (let i = 0; i < calculatedMessages.length; i++) {
4589
4590
  const cm = calculatedMessages[i];
4590
4591
  const isUser = cm.message.sender === "user";
4591
4592
  const bubbleColor = isUser ? senderBubbleColor : recipientBubbleColor;
4592
- if (cm.message.imageUrl && cm.imageWidth && cm.imageHeight && cm.imageY !== void 0) {
4593
- const imageX = isUser ? senderBubbleRight - cm.imageWidth : recipientBubbleLeft;
4593
+ if (cm.message.imageUrl && cm.imageWidth && cm.imageHeight && cm.imageY !== void 0 && isUser) {
4594
4594
  elements.push({
4595
4595
  id: `image-${cm.message.id}`,
4596
4596
  type: "image",
4597
- x: imageX,
4597
+ x: senderImageLeft,
4598
4598
  y: cm.imageY,
4599
4599
  width: cm.imageWidth,
4600
4600
  height: cm.imageHeight,
4601
4601
  zIndex: 5 + i,
4602
4602
  url: cm.message.imageUrl,
4603
- borderRadius: imageBorderRadius,
4603
+ borderRadius: senderImageBorderRadius,
4604
4604
  objectFit: "cover"
4605
4605
  });
4606
4606
  }
@@ -4783,6 +4783,11 @@ var defaultIMessageDmProps = {
4783
4783
  recipientBubbleLeft: 48,
4784
4784
  senderBubbleRight: 1158,
4785
4785
  bubbleMaxWidth: 900,
4786
+ // Sender image attachment
4787
+ senderImageLeft: 336,
4788
+ senderImageHeight: 1120,
4789
+ senderImageGapToText: 3,
4790
+ senderImageBorderRadius: 30,
4786
4791
  // Example messages
4787
4792
  messages: [
4788
4793
  { id: "msg-1", sender: "user", text: "heyyy fae, help me slide on this baddie pls \u{1F64F}", imageUrl: "https://n14dcpakf8w1fekl.public.blob.vercel-storage.com/media/06c3ed1c-eefb-4a60-b0c4-5fb872811ba0/pinterest-1766175214139-0-JpXmGIxVWdjEJ3qxGyoC4DAi2KAZrg.jpg" },
@@ -4800,6 +4805,17 @@ var IMessageDmComposition = (props) => {
4800
4805
  if (typeof document !== "undefined" && document.fonts?.ready) {
4801
4806
  await document.fonts.ready;
4802
4807
  }
4808
+ await new Promise((resolve) => {
4809
+ if (typeof requestAnimationFrame !== "undefined") {
4810
+ requestAnimationFrame(() => {
4811
+ requestAnimationFrame(() => {
4812
+ resolve();
4813
+ });
4814
+ });
4815
+ } else {
4816
+ resolve();
4817
+ }
4818
+ });
4803
4819
  };
4804
4820
  loadFonts().then(() => {
4805
4821
  setFontsLoaded(true);
@@ -5714,6 +5730,11 @@ var iMessageDmPropsSchema = z.object({
5714
5730
  recipientBubbleLeft: z.number().optional(),
5715
5731
  senderBubbleRight: z.number().optional(),
5716
5732
  bubbleMaxWidth: z.number().optional(),
5733
+ // Sender image attachment
5734
+ senderImageLeft: z.number().optional(),
5735
+ senderImageHeight: z.number().optional(),
5736
+ senderImageGapToText: z.number().optional(),
5737
+ senderImageBorderRadius: z.number().optional(),
5717
5738
  // Messages
5718
5739
  messages: z.array(z.object({
5719
5740
  id: z.string(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugcinc-render",
3
- "version": "1.8.167",
3
+ "version": "1.8.169",
4
4
  "description": "Unified rendering package for UGC Inc - shared types, components, and compositions for pixel-perfect client/server rendering",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",