ugcinc-render 1.8.178 → 1.8.179

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
@@ -1135,6 +1135,15 @@ interface IMessageDmCompositionProps {
1135
1135
  messageHeaderLetterSpacing?: number;
1136
1136
  messageHeaderLeft?: number;
1137
1137
  messageHeaderRight?: number;
1138
+ showMessageTails?: boolean;
1139
+ recipientTailOffsetLeft?: number;
1140
+ recipientTailOffsetRight?: number;
1141
+ recipientTailOffsetTop?: number;
1142
+ recipientTailOffsetBottom?: number;
1143
+ senderTailOffsetLeft?: number;
1144
+ senderTailOffsetRight?: number;
1145
+ senderTailOffsetTop?: number;
1146
+ senderTailOffsetBottom?: number;
1138
1147
  showReadReceipt?: boolean;
1139
1148
  readReceiptText?: string;
1140
1149
  readReceiptGap?: number;
package/dist/index.d.ts CHANGED
@@ -1135,6 +1135,15 @@ interface IMessageDmCompositionProps {
1135
1135
  messageHeaderLetterSpacing?: number;
1136
1136
  messageHeaderLeft?: number;
1137
1137
  messageHeaderRight?: number;
1138
+ showMessageTails?: boolean;
1139
+ recipientTailOffsetLeft?: number;
1140
+ recipientTailOffsetRight?: number;
1141
+ recipientTailOffsetTop?: number;
1142
+ recipientTailOffsetBottom?: number;
1143
+ senderTailOffsetLeft?: number;
1144
+ senderTailOffsetRight?: number;
1145
+ senderTailOffsetTop?: number;
1146
+ senderTailOffsetBottom?: number;
1138
1147
  showReadReceipt?: boolean;
1139
1148
  readReceiptText?: string;
1140
1149
  readReceiptGap?: number;
package/dist/index.js CHANGED
@@ -5304,6 +5304,18 @@ var MESSAGE_DEFAULTS2 = {
5304
5304
  messageHeaderLetterSpacing: 1.25,
5305
5305
  messageHeaderLeft: 0,
5306
5306
  messageHeaderRight: 1206,
5307
+ // Message tails (on last message in group)
5308
+ showMessageTails: true,
5309
+ // Recipient tail offsets (from message left & bottom)
5310
+ recipientTailOffsetLeft: -16,
5311
+ recipientTailOffsetRight: 18,
5312
+ recipientTailOffsetTop: -47,
5313
+ recipientTailOffsetBottom: 0,
5314
+ // Sender tail offsets (from message right & bottom)
5315
+ senderTailOffsetLeft: -18,
5316
+ senderTailOffsetRight: 16,
5317
+ senderTailOffsetTop: -47,
5318
+ senderTailOffsetBottom: 1,
5307
5319
  // Read receipt (under last sender message)
5308
5320
  showReadReceipt: true,
5309
5321
  readReceiptText: "Read 12:16 PM",
@@ -5611,6 +5623,61 @@ function generateMessageElements2(props, calculatedMessages) {
5611
5623
  }
5612
5624
  return elements;
5613
5625
  }
5626
+ function generateTailElements(props, calculatedMessages) {
5627
+ const showMessageTails = props.showMessageTails ?? MESSAGE_DEFAULTS2.showMessageTails;
5628
+ if (!showMessageTails) {
5629
+ return [];
5630
+ }
5631
+ const elements = [];
5632
+ const recipientTailOffsetLeft = props.recipientTailOffsetLeft ?? MESSAGE_DEFAULTS2.recipientTailOffsetLeft;
5633
+ const recipientTailOffsetRight = props.recipientTailOffsetRight ?? MESSAGE_DEFAULTS2.recipientTailOffsetRight;
5634
+ const recipientTailOffsetTop = props.recipientTailOffsetTop ?? MESSAGE_DEFAULTS2.recipientTailOffsetTop;
5635
+ const recipientTailOffsetBottom = props.recipientTailOffsetBottom ?? MESSAGE_DEFAULTS2.recipientTailOffsetBottom;
5636
+ const senderTailOffsetLeft = props.senderTailOffsetLeft ?? MESSAGE_DEFAULTS2.senderTailOffsetLeft;
5637
+ const senderTailOffsetRight = props.senderTailOffsetRight ?? MESSAGE_DEFAULTS2.senderTailOffsetRight;
5638
+ const senderTailOffsetTop = props.senderTailOffsetTop ?? MESSAGE_DEFAULTS2.senderTailOffsetTop;
5639
+ const senderTailOffsetBottom = props.senderTailOffsetBottom ?? MESSAGE_DEFAULTS2.senderTailOffsetBottom;
5640
+ for (let i = 0; i < calculatedMessages.length; i++) {
5641
+ const cm = calculatedMessages[i];
5642
+ if (!cm.isLastInGroup) {
5643
+ continue;
5644
+ }
5645
+ const isUser = cm.message.sender === "user";
5646
+ const messageLeft = cm.left;
5647
+ const messageRight = cm.left + cm.width;
5648
+ const messageBottom = cm.bottom;
5649
+ let tailX;
5650
+ let tailY;
5651
+ let tailWidth;
5652
+ let tailHeight;
5653
+ let tailImage;
5654
+ if (isUser) {
5655
+ tailX = messageRight + senderTailOffsetLeft;
5656
+ tailY = messageBottom + senderTailOffsetTop;
5657
+ tailWidth = senderTailOffsetRight - senderTailOffsetLeft;
5658
+ tailHeight = senderTailOffsetBottom - senderTailOffsetTop;
5659
+ tailImage = "imsg-sender-tail.png";
5660
+ } else {
5661
+ tailX = messageLeft + recipientTailOffsetLeft;
5662
+ tailY = messageBottom + recipientTailOffsetTop;
5663
+ tailWidth = recipientTailOffsetRight - recipientTailOffsetLeft;
5664
+ tailHeight = recipientTailOffsetBottom - recipientTailOffsetTop;
5665
+ tailImage = "imsg-recv-tail.png";
5666
+ }
5667
+ elements.push({
5668
+ id: `tail-${cm.message.id}`,
5669
+ type: "image",
5670
+ x: tailX,
5671
+ y: tailY,
5672
+ width: tailWidth,
5673
+ height: tailHeight,
5674
+ zIndex: 4,
5675
+ // Below message elements (5+i)
5676
+ url: `/${tailImage}`
5677
+ });
5678
+ }
5679
+ return elements;
5680
+ }
5614
5681
  function generateHeaderTextElements(props, calculatedMessages) {
5615
5682
  if (calculatedMessages.length === 0) {
5616
5683
  return [];
@@ -5728,9 +5795,10 @@ function convertPropsToElements2(props) {
5728
5795
  const height = props.height ?? 2622;
5729
5796
  const calculatedMessages = calculateMessagePositions2(props);
5730
5797
  const messageElements = generateMessageElements2(props, calculatedMessages);
5798
+ const tailElements = generateTailElements(props, calculatedMessages);
5731
5799
  const headerTextElements = generateHeaderTextElements(props, calculatedMessages);
5732
5800
  const readReceiptElements = generateReadReceiptElement(props, calculatedMessages);
5733
- const allElements = [...messageElements, ...headerTextElements, ...readReceiptElements];
5801
+ const allElements = [...messageElements, ...tailElements, ...headerTextElements, ...readReceiptElements];
5734
5802
  allElements.sort((a, b) => (a.zIndex ?? 0) - (b.zIndex ?? 0));
5735
5803
  const imageUrls = buildImageUrls2(props);
5736
5804
  return {
@@ -5910,6 +5978,18 @@ var defaultIMessageDmProps = {
5910
5978
  messageHeaderLetterSpacing: 1.25,
5911
5979
  messageHeaderLeft: 0,
5912
5980
  messageHeaderRight: 1206,
5981
+ // Message tails (on last message in group)
5982
+ showMessageTails: true,
5983
+ // Recipient tail offsets (from message left & bottom)
5984
+ recipientTailOffsetLeft: -16,
5985
+ recipientTailOffsetRight: 18,
5986
+ recipientTailOffsetTop: -47,
5987
+ recipientTailOffsetBottom: 0,
5988
+ // Sender tail offsets (from message right & bottom)
5989
+ senderTailOffsetLeft: -18,
5990
+ senderTailOffsetRight: 16,
5991
+ senderTailOffsetTop: -47,
5992
+ senderTailOffsetBottom: 1,
5913
5993
  // Read receipt (under last sender message)
5914
5994
  showReadReceipt: true,
5915
5995
  readReceiptText: "Read 12:16 PM",
@@ -7265,6 +7345,16 @@ var iMessageDmPropsSchema = import_zod.z.object({
7265
7345
  messageHeaderLetterSpacing: import_zod.z.number().optional(),
7266
7346
  messageHeaderLeft: import_zod.z.number().optional(),
7267
7347
  messageHeaderRight: import_zod.z.number().optional(),
7348
+ // Message tails
7349
+ showMessageTails: import_zod.z.boolean().optional(),
7350
+ recipientTailOffsetLeft: import_zod.z.number().optional(),
7351
+ recipientTailOffsetRight: import_zod.z.number().optional(),
7352
+ recipientTailOffsetTop: import_zod.z.number().optional(),
7353
+ recipientTailOffsetBottom: import_zod.z.number().optional(),
7354
+ senderTailOffsetLeft: import_zod.z.number().optional(),
7355
+ senderTailOffsetRight: import_zod.z.number().optional(),
7356
+ senderTailOffsetTop: import_zod.z.number().optional(),
7357
+ senderTailOffsetBottom: import_zod.z.number().optional(),
7268
7358
  // Read receipt
7269
7359
  showReadReceipt: import_zod.z.boolean().optional(),
7270
7360
  readReceiptText: import_zod.z.string().optional(),
package/dist/index.mjs CHANGED
@@ -4350,6 +4350,18 @@ var MESSAGE_DEFAULTS2 = {
4350
4350
  messageHeaderLetterSpacing: 1.25,
4351
4351
  messageHeaderLeft: 0,
4352
4352
  messageHeaderRight: 1206,
4353
+ // Message tails (on last message in group)
4354
+ showMessageTails: true,
4355
+ // Recipient tail offsets (from message left & bottom)
4356
+ recipientTailOffsetLeft: -16,
4357
+ recipientTailOffsetRight: 18,
4358
+ recipientTailOffsetTop: -47,
4359
+ recipientTailOffsetBottom: 0,
4360
+ // Sender tail offsets (from message right & bottom)
4361
+ senderTailOffsetLeft: -18,
4362
+ senderTailOffsetRight: 16,
4363
+ senderTailOffsetTop: -47,
4364
+ senderTailOffsetBottom: 1,
4353
4365
  // Read receipt (under last sender message)
4354
4366
  showReadReceipt: true,
4355
4367
  readReceiptText: "Read 12:16 PM",
@@ -4657,6 +4669,61 @@ function generateMessageElements2(props, calculatedMessages) {
4657
4669
  }
4658
4670
  return elements;
4659
4671
  }
4672
+ function generateTailElements(props, calculatedMessages) {
4673
+ const showMessageTails = props.showMessageTails ?? MESSAGE_DEFAULTS2.showMessageTails;
4674
+ if (!showMessageTails) {
4675
+ return [];
4676
+ }
4677
+ const elements = [];
4678
+ const recipientTailOffsetLeft = props.recipientTailOffsetLeft ?? MESSAGE_DEFAULTS2.recipientTailOffsetLeft;
4679
+ const recipientTailOffsetRight = props.recipientTailOffsetRight ?? MESSAGE_DEFAULTS2.recipientTailOffsetRight;
4680
+ const recipientTailOffsetTop = props.recipientTailOffsetTop ?? MESSAGE_DEFAULTS2.recipientTailOffsetTop;
4681
+ const recipientTailOffsetBottom = props.recipientTailOffsetBottom ?? MESSAGE_DEFAULTS2.recipientTailOffsetBottom;
4682
+ const senderTailOffsetLeft = props.senderTailOffsetLeft ?? MESSAGE_DEFAULTS2.senderTailOffsetLeft;
4683
+ const senderTailOffsetRight = props.senderTailOffsetRight ?? MESSAGE_DEFAULTS2.senderTailOffsetRight;
4684
+ const senderTailOffsetTop = props.senderTailOffsetTop ?? MESSAGE_DEFAULTS2.senderTailOffsetTop;
4685
+ const senderTailOffsetBottom = props.senderTailOffsetBottom ?? MESSAGE_DEFAULTS2.senderTailOffsetBottom;
4686
+ for (let i = 0; i < calculatedMessages.length; i++) {
4687
+ const cm = calculatedMessages[i];
4688
+ if (!cm.isLastInGroup) {
4689
+ continue;
4690
+ }
4691
+ const isUser = cm.message.sender === "user";
4692
+ const messageLeft = cm.left;
4693
+ const messageRight = cm.left + cm.width;
4694
+ const messageBottom = cm.bottom;
4695
+ let tailX;
4696
+ let tailY;
4697
+ let tailWidth;
4698
+ let tailHeight;
4699
+ let tailImage;
4700
+ if (isUser) {
4701
+ tailX = messageRight + senderTailOffsetLeft;
4702
+ tailY = messageBottom + senderTailOffsetTop;
4703
+ tailWidth = senderTailOffsetRight - senderTailOffsetLeft;
4704
+ tailHeight = senderTailOffsetBottom - senderTailOffsetTop;
4705
+ tailImage = "imsg-sender-tail.png";
4706
+ } else {
4707
+ tailX = messageLeft + recipientTailOffsetLeft;
4708
+ tailY = messageBottom + recipientTailOffsetTop;
4709
+ tailWidth = recipientTailOffsetRight - recipientTailOffsetLeft;
4710
+ tailHeight = recipientTailOffsetBottom - recipientTailOffsetTop;
4711
+ tailImage = "imsg-recv-tail.png";
4712
+ }
4713
+ elements.push({
4714
+ id: `tail-${cm.message.id}`,
4715
+ type: "image",
4716
+ x: tailX,
4717
+ y: tailY,
4718
+ width: tailWidth,
4719
+ height: tailHeight,
4720
+ zIndex: 4,
4721
+ // Below message elements (5+i)
4722
+ url: `/${tailImage}`
4723
+ });
4724
+ }
4725
+ return elements;
4726
+ }
4660
4727
  function generateHeaderTextElements(props, calculatedMessages) {
4661
4728
  if (calculatedMessages.length === 0) {
4662
4729
  return [];
@@ -4774,9 +4841,10 @@ function convertPropsToElements2(props) {
4774
4841
  const height = props.height ?? 2622;
4775
4842
  const calculatedMessages = calculateMessagePositions2(props);
4776
4843
  const messageElements = generateMessageElements2(props, calculatedMessages);
4844
+ const tailElements = generateTailElements(props, calculatedMessages);
4777
4845
  const headerTextElements = generateHeaderTextElements(props, calculatedMessages);
4778
4846
  const readReceiptElements = generateReadReceiptElement(props, calculatedMessages);
4779
- const allElements = [...messageElements, ...headerTextElements, ...readReceiptElements];
4847
+ const allElements = [...messageElements, ...tailElements, ...headerTextElements, ...readReceiptElements];
4780
4848
  allElements.sort((a, b) => (a.zIndex ?? 0) - (b.zIndex ?? 0));
4781
4849
  const imageUrls = buildImageUrls2(props);
4782
4850
  return {
@@ -4956,6 +5024,18 @@ var defaultIMessageDmProps = {
4956
5024
  messageHeaderLetterSpacing: 1.25,
4957
5025
  messageHeaderLeft: 0,
4958
5026
  messageHeaderRight: 1206,
5027
+ // Message tails (on last message in group)
5028
+ showMessageTails: true,
5029
+ // Recipient tail offsets (from message left & bottom)
5030
+ recipientTailOffsetLeft: -16,
5031
+ recipientTailOffsetRight: 18,
5032
+ recipientTailOffsetTop: -47,
5033
+ recipientTailOffsetBottom: 0,
5034
+ // Sender tail offsets (from message right & bottom)
5035
+ senderTailOffsetLeft: -18,
5036
+ senderTailOffsetRight: 16,
5037
+ senderTailOffsetTop: -47,
5038
+ senderTailOffsetBottom: 1,
4959
5039
  // Read receipt (under last sender message)
4960
5040
  showReadReceipt: true,
4961
5041
  readReceiptText: "Read 12:16 PM",
@@ -6028,6 +6108,16 @@ var iMessageDmPropsSchema = z.object({
6028
6108
  messageHeaderLetterSpacing: z.number().optional(),
6029
6109
  messageHeaderLeft: z.number().optional(),
6030
6110
  messageHeaderRight: z.number().optional(),
6111
+ // Message tails
6112
+ showMessageTails: z.boolean().optional(),
6113
+ recipientTailOffsetLeft: z.number().optional(),
6114
+ recipientTailOffsetRight: z.number().optional(),
6115
+ recipientTailOffsetTop: z.number().optional(),
6116
+ recipientTailOffsetBottom: z.number().optional(),
6117
+ senderTailOffsetLeft: z.number().optional(),
6118
+ senderTailOffsetRight: z.number().optional(),
6119
+ senderTailOffsetTop: z.number().optional(),
6120
+ senderTailOffsetBottom: z.number().optional(),
6031
6121
  // Read receipt
6032
6122
  showReadReceipt: z.boolean().optional(),
6033
6123
  readReceiptText: z.string().optional(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugcinc-render",
3
- "version": "1.8.178",
3
+ "version": "1.8.179",
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",