ugcinc-render 1.8.178 → 1.8.180

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,51 @@ function generateMessageElements2(props, calculatedMessages) {
5611
5623
  }
5612
5624
  return elements;
5613
5625
  }
5626
+ function generateTailData(props, calculatedMessages) {
5627
+ const showMessageTails = props.showMessageTails ?? MESSAGE_DEFAULTS2.showMessageTails;
5628
+ if (!showMessageTails) {
5629
+ return [];
5630
+ }
5631
+ const tails = [];
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
+ if (isUser) {
5650
+ tails.push({
5651
+ id: `tail-${cm.message.id}`,
5652
+ x: messageRight + senderTailOffsetLeft,
5653
+ y: messageBottom + senderTailOffsetTop,
5654
+ width: senderTailOffsetRight - senderTailOffsetLeft,
5655
+ height: senderTailOffsetBottom - senderTailOffsetTop,
5656
+ image: "imsg-sender-tail.png"
5657
+ });
5658
+ } else {
5659
+ tails.push({
5660
+ id: `tail-${cm.message.id}`,
5661
+ x: messageLeft + recipientTailOffsetLeft,
5662
+ y: messageBottom + recipientTailOffsetTop,
5663
+ width: recipientTailOffsetRight - recipientTailOffsetLeft,
5664
+ height: recipientTailOffsetBottom - recipientTailOffsetTop,
5665
+ image: "imsg-recv-tail.png"
5666
+ });
5667
+ }
5668
+ }
5669
+ return tails;
5670
+ }
5614
5671
  function generateHeaderTextElements(props, calculatedMessages) {
5615
5672
  if (calculatedMessages.length === 0) {
5616
5673
  return [];
@@ -5728,6 +5785,7 @@ function convertPropsToElements2(props) {
5728
5785
  const height = props.height ?? 2622;
5729
5786
  const calculatedMessages = calculateMessagePositions2(props);
5730
5787
  const messageElements = generateMessageElements2(props, calculatedMessages);
5788
+ const tails = generateTailData(props, calculatedMessages);
5731
5789
  const headerTextElements = generateHeaderTextElements(props, calculatedMessages);
5732
5790
  const readReceiptElements = generateReadReceiptElement(props, calculatedMessages);
5733
5791
  const allElements = [...messageElements, ...headerTextElements, ...readReceiptElements];
@@ -5736,6 +5794,7 @@ function convertPropsToElements2(props) {
5736
5794
  return {
5737
5795
  elements: allElements,
5738
5796
  imageUrls,
5797
+ tails,
5739
5798
  width,
5740
5799
  height
5741
5800
  };
@@ -5910,6 +5969,18 @@ var defaultIMessageDmProps = {
5910
5969
  messageHeaderLetterSpacing: 1.25,
5911
5970
  messageHeaderLeft: 0,
5912
5971
  messageHeaderRight: 1206,
5972
+ // Message tails (on last message in group)
5973
+ showMessageTails: true,
5974
+ // Recipient tail offsets (from message left & bottom)
5975
+ recipientTailOffsetLeft: -16,
5976
+ recipientTailOffsetRight: 18,
5977
+ recipientTailOffsetTop: -47,
5978
+ recipientTailOffsetBottom: 0,
5979
+ // Sender tail offsets (from message right & bottom)
5980
+ senderTailOffsetLeft: -18,
5981
+ senderTailOffsetRight: 16,
5982
+ senderTailOffsetTop: -47,
5983
+ senderTailOffsetBottom: 1,
5913
5984
  // Read receipt (under last sender message)
5914
5985
  showReadReceipt: true,
5915
5986
  readReceiptText: "Read 12:16 PM",
@@ -5963,7 +6034,7 @@ var IMessageDmComposition = (props) => {
5963
6034
  }), [props]);
5964
6035
  const conversionResult = (0, import_react10.useMemo)(() => {
5965
6036
  if (!fontsLoaded) {
5966
- return { elements: [], imageUrls: {}, width: mergedProps.width ?? 1206, height: mergedProps.height ?? 2622 };
6037
+ return { elements: [], imageUrls: {}, tails: [], width: mergedProps.width ?? 1206, height: mergedProps.height ?? 2622 };
5967
6038
  }
5968
6039
  return convertPropsToElements2(mergedProps);
5969
6040
  }, [mergedProps, fontsLoaded]);
@@ -6332,6 +6403,21 @@ var IMessageDmComposition = (props) => {
6332
6403
  children: messageText
6333
6404
  }
6334
6405
  ),
6406
+ conversionResult.tails.map((tail) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
6407
+ import_remotion10.Img,
6408
+ {
6409
+ src: (0, import_remotion10.staticFile)(tail.image),
6410
+ style: {
6411
+ position: "absolute",
6412
+ top: tail.y,
6413
+ left: tail.x,
6414
+ width: tail.width,
6415
+ height: tail.height,
6416
+ zIndex: 4
6417
+ }
6418
+ },
6419
+ tail.id
6420
+ )),
6335
6421
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
6336
6422
  ImageEditorComposition,
6337
6423
  {
@@ -7265,6 +7351,16 @@ var iMessageDmPropsSchema = import_zod.z.object({
7265
7351
  messageHeaderLetterSpacing: import_zod.z.number().optional(),
7266
7352
  messageHeaderLeft: import_zod.z.number().optional(),
7267
7353
  messageHeaderRight: import_zod.z.number().optional(),
7354
+ // Message tails
7355
+ showMessageTails: import_zod.z.boolean().optional(),
7356
+ recipientTailOffsetLeft: import_zod.z.number().optional(),
7357
+ recipientTailOffsetRight: import_zod.z.number().optional(),
7358
+ recipientTailOffsetTop: import_zod.z.number().optional(),
7359
+ recipientTailOffsetBottom: import_zod.z.number().optional(),
7360
+ senderTailOffsetLeft: import_zod.z.number().optional(),
7361
+ senderTailOffsetRight: import_zod.z.number().optional(),
7362
+ senderTailOffsetTop: import_zod.z.number().optional(),
7363
+ senderTailOffsetBottom: import_zod.z.number().optional(),
7268
7364
  // Read receipt
7269
7365
  showReadReceipt: import_zod.z.boolean().optional(),
7270
7366
  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,51 @@ function generateMessageElements2(props, calculatedMessages) {
4657
4669
  }
4658
4670
  return elements;
4659
4671
  }
4672
+ function generateTailData(props, calculatedMessages) {
4673
+ const showMessageTails = props.showMessageTails ?? MESSAGE_DEFAULTS2.showMessageTails;
4674
+ if (!showMessageTails) {
4675
+ return [];
4676
+ }
4677
+ const tails = [];
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
+ if (isUser) {
4696
+ tails.push({
4697
+ id: `tail-${cm.message.id}`,
4698
+ x: messageRight + senderTailOffsetLeft,
4699
+ y: messageBottom + senderTailOffsetTop,
4700
+ width: senderTailOffsetRight - senderTailOffsetLeft,
4701
+ height: senderTailOffsetBottom - senderTailOffsetTop,
4702
+ image: "imsg-sender-tail.png"
4703
+ });
4704
+ } else {
4705
+ tails.push({
4706
+ id: `tail-${cm.message.id}`,
4707
+ x: messageLeft + recipientTailOffsetLeft,
4708
+ y: messageBottom + recipientTailOffsetTop,
4709
+ width: recipientTailOffsetRight - recipientTailOffsetLeft,
4710
+ height: recipientTailOffsetBottom - recipientTailOffsetTop,
4711
+ image: "imsg-recv-tail.png"
4712
+ });
4713
+ }
4714
+ }
4715
+ return tails;
4716
+ }
4660
4717
  function generateHeaderTextElements(props, calculatedMessages) {
4661
4718
  if (calculatedMessages.length === 0) {
4662
4719
  return [];
@@ -4774,6 +4831,7 @@ function convertPropsToElements2(props) {
4774
4831
  const height = props.height ?? 2622;
4775
4832
  const calculatedMessages = calculateMessagePositions2(props);
4776
4833
  const messageElements = generateMessageElements2(props, calculatedMessages);
4834
+ const tails = generateTailData(props, calculatedMessages);
4777
4835
  const headerTextElements = generateHeaderTextElements(props, calculatedMessages);
4778
4836
  const readReceiptElements = generateReadReceiptElement(props, calculatedMessages);
4779
4837
  const allElements = [...messageElements, ...headerTextElements, ...readReceiptElements];
@@ -4782,6 +4840,7 @@ function convertPropsToElements2(props) {
4782
4840
  return {
4783
4841
  elements: allElements,
4784
4842
  imageUrls,
4843
+ tails,
4785
4844
  width,
4786
4845
  height
4787
4846
  };
@@ -4956,6 +5015,18 @@ var defaultIMessageDmProps = {
4956
5015
  messageHeaderLetterSpacing: 1.25,
4957
5016
  messageHeaderLeft: 0,
4958
5017
  messageHeaderRight: 1206,
5018
+ // Message tails (on last message in group)
5019
+ showMessageTails: true,
5020
+ // Recipient tail offsets (from message left & bottom)
5021
+ recipientTailOffsetLeft: -16,
5022
+ recipientTailOffsetRight: 18,
5023
+ recipientTailOffsetTop: -47,
5024
+ recipientTailOffsetBottom: 0,
5025
+ // Sender tail offsets (from message right & bottom)
5026
+ senderTailOffsetLeft: -18,
5027
+ senderTailOffsetRight: 16,
5028
+ senderTailOffsetTop: -47,
5029
+ senderTailOffsetBottom: 1,
4959
5030
  // Read receipt (under last sender message)
4960
5031
  showReadReceipt: true,
4961
5032
  readReceiptText: "Read 12:16 PM",
@@ -5009,7 +5080,7 @@ var IMessageDmComposition = (props) => {
5009
5080
  }), [props]);
5010
5081
  const conversionResult = useMemo8(() => {
5011
5082
  if (!fontsLoaded) {
5012
- return { elements: [], imageUrls: {}, width: mergedProps.width ?? 1206, height: mergedProps.height ?? 2622 };
5083
+ return { elements: [], imageUrls: {}, tails: [], width: mergedProps.width ?? 1206, height: mergedProps.height ?? 2622 };
5013
5084
  }
5014
5085
  return convertPropsToElements2(mergedProps);
5015
5086
  }, [mergedProps, fontsLoaded]);
@@ -5378,6 +5449,21 @@ var IMessageDmComposition = (props) => {
5378
5449
  children: messageText
5379
5450
  }
5380
5451
  ),
5452
+ conversionResult.tails.map((tail) => /* @__PURE__ */ jsx12(
5453
+ Img5,
5454
+ {
5455
+ src: staticFile3(tail.image),
5456
+ style: {
5457
+ position: "absolute",
5458
+ top: tail.y,
5459
+ left: tail.x,
5460
+ width: tail.width,
5461
+ height: tail.height,
5462
+ zIndex: 4
5463
+ }
5464
+ },
5465
+ tail.id
5466
+ )),
5381
5467
  /* @__PURE__ */ jsx12(
5382
5468
  ImageEditorComposition,
5383
5469
  {
@@ -6028,6 +6114,16 @@ var iMessageDmPropsSchema = z.object({
6028
6114
  messageHeaderLetterSpacing: z.number().optional(),
6029
6115
  messageHeaderLeft: z.number().optional(),
6030
6116
  messageHeaderRight: z.number().optional(),
6117
+ // Message tails
6118
+ showMessageTails: z.boolean().optional(),
6119
+ recipientTailOffsetLeft: z.number().optional(),
6120
+ recipientTailOffsetRight: z.number().optional(),
6121
+ recipientTailOffsetTop: z.number().optional(),
6122
+ recipientTailOffsetBottom: z.number().optional(),
6123
+ senderTailOffsetLeft: z.number().optional(),
6124
+ senderTailOffsetRight: z.number().optional(),
6125
+ senderTailOffsetTop: z.number().optional(),
6126
+ senderTailOffsetBottom: z.number().optional(),
6031
6127
  // Read receipt
6032
6128
  showReadReceipt: z.boolean().optional(),
6033
6129
  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.180",
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",