@automattic/social-previews 2.0.1-beta.8 → 2.0.1

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 (231) hide show
  1. package/dist/cjs/facebook-preview/custom-text.js.map +1 -1
  2. package/dist/cjs/facebook-preview/hooks/use-image-hook.js.map +1 -1
  3. package/dist/cjs/facebook-preview/post/header/index.js.map +1 -1
  4. package/dist/cjs/helpers.js +22 -1
  5. package/dist/cjs/helpers.js.map +1 -1
  6. package/dist/cjs/index.js +1 -0
  7. package/dist/cjs/index.js.map +1 -1
  8. package/dist/cjs/instagram-preview/style.scss +6 -1
  9. package/dist/cjs/linkedin-preview/link-preview.js +2 -1
  10. package/dist/cjs/linkedin-preview/link-preview.js.map +1 -1
  11. package/dist/cjs/linkedin-preview/post-preview.js +1 -1
  12. package/dist/cjs/linkedin-preview/post-preview.js.map +1 -1
  13. package/dist/cjs/mastodon-preview/constants.js +2 -1
  14. package/dist/cjs/mastodon-preview/constants.js.map +1 -1
  15. package/dist/cjs/mastodon-preview/post/actions/index.js +1 -31
  16. package/dist/cjs/mastodon-preview/post/actions/index.js.map +1 -1
  17. package/dist/cjs/mastodon-preview/post/actions/styles.scss +8 -23
  18. package/dist/cjs/mastodon-preview/post/body/index.js +8 -3
  19. package/dist/cjs/mastodon-preview/post/body/index.js.map +1 -1
  20. package/dist/cjs/mastodon-preview/post/card/index.js +4 -2
  21. package/dist/cjs/mastodon-preview/post/card/index.js.map +1 -1
  22. package/dist/cjs/mastodon-preview/post/card/styles.scss +37 -13
  23. package/dist/cjs/mastodon-preview/post/header/index.js +4 -6
  24. package/dist/cjs/mastodon-preview/post/header/index.js.map +1 -1
  25. package/dist/cjs/mastodon-preview/post/icons/index.js +5 -3
  26. package/dist/cjs/mastodon-preview/post/icons/index.js.map +1 -1
  27. package/dist/cjs/mastodon-preview/post-preview.js +6 -4
  28. package/dist/cjs/mastodon-preview/post-preview.js.map +1 -1
  29. package/dist/cjs/mastodon-preview/styles.scss +31 -0
  30. package/dist/cjs/nextdoor-preview/constants.js +6 -0
  31. package/dist/cjs/nextdoor-preview/constants.js.map +1 -0
  32. package/dist/cjs/nextdoor-preview/footer-actions.js +13 -0
  33. package/dist/cjs/nextdoor-preview/footer-actions.js.map +1 -0
  34. package/dist/cjs/nextdoor-preview/icons/chevron-icon.js +9 -0
  35. package/dist/cjs/nextdoor-preview/icons/chevron-icon.js.map +1 -0
  36. package/dist/cjs/nextdoor-preview/icons/comment-icon.js +9 -0
  37. package/dist/cjs/nextdoor-preview/icons/comment-icon.js.map +1 -0
  38. package/dist/cjs/nextdoor-preview/icons/default-avatar.js +9 -0
  39. package/dist/cjs/nextdoor-preview/icons/default-avatar.js.map +1 -0
  40. package/dist/cjs/nextdoor-preview/icons/default-image.js +9 -0
  41. package/dist/cjs/nextdoor-preview/icons/default-image.js.map +1 -0
  42. package/dist/cjs/nextdoor-preview/icons/globe-icon.js +9 -0
  43. package/dist/cjs/nextdoor-preview/icons/globe-icon.js.map +1 -0
  44. package/dist/cjs/nextdoor-preview/icons/like-icon.js +9 -0
  45. package/dist/cjs/nextdoor-preview/icons/like-icon.js.map +1 -0
  46. package/dist/cjs/nextdoor-preview/icons/share-icon.js +9 -0
  47. package/dist/cjs/nextdoor-preview/icons/share-icon.js.map +1 -0
  48. package/dist/cjs/nextdoor-preview/index.js +7 -0
  49. package/dist/cjs/nextdoor-preview/index.js.map +1 -0
  50. package/dist/cjs/nextdoor-preview/link-preview.js +13 -0
  51. package/dist/cjs/nextdoor-preview/link-preview.js.map +1 -0
  52. package/dist/cjs/nextdoor-preview/post-preview.js +31 -0
  53. package/dist/cjs/nextdoor-preview/post-preview.js.map +1 -0
  54. package/dist/cjs/nextdoor-preview/previews.js +19 -0
  55. package/dist/cjs/nextdoor-preview/previews.js.map +1 -0
  56. package/dist/cjs/nextdoor-preview/style.scss +211 -0
  57. package/dist/cjs/nextdoor-preview/types.js +3 -0
  58. package/dist/cjs/nextdoor-preview/types.js.map +1 -0
  59. package/dist/cjs/tumblr-preview/post/icons/index.js.map +1 -1
  60. package/dist/cjs/tumblr-preview/previews.js +2 -1
  61. package/dist/cjs/tumblr-preview/previews.js.map +1 -1
  62. package/dist/cjs/tumblr-preview/variables.scss +0 -1
  63. package/dist/cjs/twitter-preview/card.js +2 -2
  64. package/dist/cjs/twitter-preview/card.js.map +1 -1
  65. package/dist/cjs/twitter-preview/media.js +2 -2
  66. package/dist/cjs/twitter-preview/media.js.map +1 -1
  67. package/dist/cjs/twitter-preview/post-preview.js +1 -1
  68. package/dist/cjs/twitter-preview/post-preview.js.map +1 -1
  69. package/dist/cjs/twitter-preview/previews.js +2 -2
  70. package/dist/cjs/twitter-preview/previews.js.map +1 -1
  71. package/dist/cjs/twitter-preview/quote-tweet.js.map +1 -1
  72. package/dist/cjs/twitter-preview/text.js.map +1 -1
  73. package/dist/esm/facebook-preview/custom-text.js.map +1 -1
  74. package/dist/esm/facebook-preview/hooks/use-image-hook.js.map +1 -1
  75. package/dist/esm/facebook-preview/post/header/index.js.map +1 -1
  76. package/dist/esm/helpers.js +20 -0
  77. package/dist/esm/helpers.js.map +1 -1
  78. package/dist/esm/index.js +1 -0
  79. package/dist/esm/index.js.map +1 -1
  80. package/dist/esm/instagram-preview/style.scss +6 -1
  81. package/dist/esm/linkedin-preview/link-preview.js +2 -1
  82. package/dist/esm/linkedin-preview/link-preview.js.map +1 -1
  83. package/dist/esm/linkedin-preview/post-preview.js +2 -2
  84. package/dist/esm/linkedin-preview/post-preview.js.map +1 -1
  85. package/dist/esm/mastodon-preview/constants.js +1 -0
  86. package/dist/esm/mastodon-preview/constants.js.map +1 -1
  87. package/dist/esm/mastodon-preview/post/actions/index.js +1 -30
  88. package/dist/esm/mastodon-preview/post/actions/index.js.map +1 -1
  89. package/dist/esm/mastodon-preview/post/actions/styles.scss +8 -23
  90. package/dist/esm/mastodon-preview/post/body/index.js +8 -3
  91. package/dist/esm/mastodon-preview/post/body/index.js.map +1 -1
  92. package/dist/esm/mastodon-preview/post/card/index.js +4 -3
  93. package/dist/esm/mastodon-preview/post/card/index.js.map +1 -1
  94. package/dist/esm/mastodon-preview/post/card/styles.scss +37 -13
  95. package/dist/esm/mastodon-preview/post/header/index.js +5 -6
  96. package/dist/esm/mastodon-preview/post/header/index.js.map +1 -1
  97. package/dist/esm/mastodon-preview/post/icons/index.js +3 -3
  98. package/dist/esm/mastodon-preview/post/icons/index.js.map +1 -1
  99. package/dist/esm/mastodon-preview/post-preview.js +6 -4
  100. package/dist/esm/mastodon-preview/post-preview.js.map +1 -1
  101. package/dist/esm/mastodon-preview/styles.scss +31 -0
  102. package/dist/esm/nextdoor-preview/constants.js +3 -0
  103. package/dist/esm/nextdoor-preview/constants.js.map +1 -0
  104. package/dist/esm/nextdoor-preview/footer-actions.js +9 -0
  105. package/dist/esm/nextdoor-preview/footer-actions.js.map +1 -0
  106. package/dist/esm/nextdoor-preview/icons/chevron-icon.js +5 -0
  107. package/dist/esm/nextdoor-preview/icons/chevron-icon.js.map +1 -0
  108. package/dist/esm/nextdoor-preview/icons/comment-icon.js +5 -0
  109. package/dist/esm/nextdoor-preview/icons/comment-icon.js.map +1 -0
  110. package/dist/esm/nextdoor-preview/icons/default-avatar.js +5 -0
  111. package/dist/esm/nextdoor-preview/icons/default-avatar.js.map +1 -0
  112. package/dist/esm/nextdoor-preview/icons/default-image.js +5 -0
  113. package/dist/esm/nextdoor-preview/icons/default-image.js.map +1 -0
  114. package/dist/esm/nextdoor-preview/icons/globe-icon.js +5 -0
  115. package/dist/esm/nextdoor-preview/icons/globe-icon.js.map +1 -0
  116. package/dist/esm/nextdoor-preview/icons/like-icon.js +5 -0
  117. package/dist/esm/nextdoor-preview/icons/like-icon.js.map +1 -0
  118. package/dist/esm/nextdoor-preview/icons/share-icon.js +5 -0
  119. package/dist/esm/nextdoor-preview/icons/share-icon.js.map +1 -0
  120. package/dist/esm/nextdoor-preview/index.js +4 -0
  121. package/dist/esm/nextdoor-preview/index.js.map +1 -0
  122. package/dist/esm/nextdoor-preview/link-preview.js +9 -0
  123. package/dist/esm/nextdoor-preview/link-preview.js.map +1 -0
  124. package/dist/esm/nextdoor-preview/post-preview.js +26 -0
  125. package/dist/esm/nextdoor-preview/post-preview.js.map +1 -0
  126. package/dist/esm/nextdoor-preview/previews.js +14 -0
  127. package/dist/esm/nextdoor-preview/previews.js.map +1 -0
  128. package/dist/esm/nextdoor-preview/style.scss +211 -0
  129. package/dist/esm/nextdoor-preview/types.js +2 -0
  130. package/dist/esm/nextdoor-preview/types.js.map +1 -0
  131. package/dist/esm/tumblr-preview/post/icons/index.js.map +1 -1
  132. package/dist/esm/tumblr-preview/previews.js +2 -1
  133. package/dist/esm/tumblr-preview/previews.js.map +1 -1
  134. package/dist/esm/tumblr-preview/variables.scss +0 -1
  135. package/dist/esm/twitter-preview/card.js +2 -2
  136. package/dist/esm/twitter-preview/card.js.map +1 -1
  137. package/dist/esm/twitter-preview/media.js +2 -2
  138. package/dist/esm/twitter-preview/media.js.map +1 -1
  139. package/dist/esm/twitter-preview/post-preview.js +1 -1
  140. package/dist/esm/twitter-preview/post-preview.js.map +1 -1
  141. package/dist/esm/twitter-preview/previews.js +2 -2
  142. package/dist/esm/twitter-preview/previews.js.map +1 -1
  143. package/dist/esm/twitter-preview/quote-tweet.js.map +1 -1
  144. package/dist/esm/twitter-preview/text.js.map +1 -1
  145. package/dist/tsconfig-cjs.tsbuildinfo +1 -1
  146. package/dist/tsconfig.tsbuildinfo +1 -1
  147. package/dist/types/helpers.d.ts +11 -3
  148. package/dist/types/helpers.d.ts.map +1 -1
  149. package/dist/types/index.d.ts +1 -0
  150. package/dist/types/index.d.ts.map +1 -1
  151. package/dist/types/linkedin-preview/link-preview.d.ts.map +1 -1
  152. package/dist/types/linkedin-preview/post-preview.d.ts.map +1 -1
  153. package/dist/types/mastodon-preview/constants.d.ts +1 -0
  154. package/dist/types/mastodon-preview/constants.d.ts.map +1 -1
  155. package/dist/types/mastodon-preview/post/actions/index.d.ts.map +1 -1
  156. package/dist/types/mastodon-preview/post/body/index.d.ts.map +1 -1
  157. package/dist/types/mastodon-preview/post/card/index.d.ts.map +1 -1
  158. package/dist/types/mastodon-preview/post/header/index.d.ts.map +1 -1
  159. package/dist/types/mastodon-preview/post/icons/index.d.ts +1 -6
  160. package/dist/types/mastodon-preview/post/icons/index.d.ts.map +1 -1
  161. package/dist/types/mastodon-preview/post-preview.d.ts.map +1 -1
  162. package/dist/types/nextdoor-preview/constants.d.ts +3 -0
  163. package/dist/types/nextdoor-preview/constants.d.ts.map +1 -0
  164. package/dist/types/nextdoor-preview/footer-actions.d.ts +2 -0
  165. package/dist/types/nextdoor-preview/footer-actions.d.ts.map +1 -0
  166. package/dist/types/nextdoor-preview/icons/chevron-icon.d.ts +2 -0
  167. package/dist/types/nextdoor-preview/icons/chevron-icon.d.ts.map +1 -0
  168. package/dist/types/nextdoor-preview/icons/comment-icon.d.ts +2 -0
  169. package/dist/types/nextdoor-preview/icons/comment-icon.d.ts.map +1 -0
  170. package/dist/types/nextdoor-preview/icons/default-avatar.d.ts +3 -0
  171. package/dist/types/nextdoor-preview/icons/default-avatar.d.ts.map +1 -0
  172. package/dist/types/nextdoor-preview/icons/default-image.d.ts +2 -0
  173. package/dist/types/nextdoor-preview/icons/default-image.d.ts.map +1 -0
  174. package/dist/types/nextdoor-preview/icons/globe-icon.d.ts +2 -0
  175. package/dist/types/nextdoor-preview/icons/globe-icon.d.ts.map +1 -0
  176. package/dist/types/nextdoor-preview/icons/like-icon.d.ts +2 -0
  177. package/dist/types/nextdoor-preview/icons/like-icon.d.ts.map +1 -0
  178. package/dist/types/nextdoor-preview/icons/share-icon.d.ts +2 -0
  179. package/dist/types/nextdoor-preview/icons/share-icon.d.ts.map +1 -0
  180. package/dist/types/nextdoor-preview/index.d.ts +4 -0
  181. package/dist/types/nextdoor-preview/index.d.ts.map +1 -0
  182. package/dist/types/nextdoor-preview/link-preview.d.ts +6 -0
  183. package/dist/types/nextdoor-preview/link-preview.d.ts.map +1 -0
  184. package/dist/types/nextdoor-preview/post-preview.d.ts +4 -0
  185. package/dist/types/nextdoor-preview/post-preview.d.ts.map +1 -0
  186. package/dist/types/nextdoor-preview/previews.d.ts +4 -0
  187. package/dist/types/nextdoor-preview/previews.d.ts.map +1 -0
  188. package/dist/types/nextdoor-preview/types.d.ts +8 -0
  189. package/dist/types/nextdoor-preview/types.d.ts.map +1 -0
  190. package/dist/types/tumblr-preview/previews.d.ts.map +1 -1
  191. package/package.json +71 -71
  192. package/src/helpers.tsx +26 -3
  193. package/src/index.ts +1 -0
  194. package/src/instagram-preview/style.scss +6 -1
  195. package/src/linkedin-preview/link-preview.tsx +2 -0
  196. package/src/linkedin-preview/post-preview.tsx +4 -2
  197. package/src/mastodon-preview/constants.ts +3 -0
  198. package/src/mastodon-preview/post/actions/index.tsx +57 -42
  199. package/src/mastodon-preview/post/actions/styles.scss +8 -23
  200. package/src/mastodon-preview/post/body/index.tsx +14 -10
  201. package/src/mastodon-preview/post/card/index.tsx +21 -4
  202. package/src/mastodon-preview/post/card/styles.scss +37 -13
  203. package/src/mastodon-preview/post/header/index.tsx +7 -9
  204. package/src/mastodon-preview/post/icons/index.tsx +13 -7
  205. package/src/mastodon-preview/post-preview.tsx +23 -11
  206. package/src/mastodon-preview/styles.scss +31 -0
  207. package/src/nextdoor-preview/constants.ts +2 -0
  208. package/src/nextdoor-preview/footer-actions.tsx +23 -0
  209. package/src/nextdoor-preview/icons/chevron-icon.tsx +11 -0
  210. package/src/nextdoor-preview/icons/comment-icon.tsx +12 -0
  211. package/src/nextdoor-preview/icons/default-avatar.tsx +3 -0
  212. package/src/nextdoor-preview/icons/default-image.tsx +23 -0
  213. package/src/nextdoor-preview/icons/globe-icon.tsx +12 -0
  214. package/src/nextdoor-preview/icons/like-icon.tsx +12 -0
  215. package/src/nextdoor-preview/icons/share-icon.tsx +12 -0
  216. package/src/nextdoor-preview/index.tsx +3 -0
  217. package/src/nextdoor-preview/link-preview.tsx +22 -0
  218. package/src/nextdoor-preview/post-preview.tsx +117 -0
  219. package/src/nextdoor-preview/previews.tsx +53 -0
  220. package/src/nextdoor-preview/style.scss +211 -0
  221. package/src/nextdoor-preview/types.ts +9 -0
  222. package/src/tumblr-preview/previews.tsx +3 -1
  223. package/src/tumblr-preview/variables.scss +0 -1
  224. package/src/twitter-preview/card.tsx +2 -2
  225. package/src/twitter-preview/media.tsx +2 -2
  226. package/src/twitter-preview/post-preview.tsx +3 -3
  227. package/src/twitter-preview/previews.tsx +2 -2
  228. package/CHANGELOG.md +0 -62
  229. package/dist/cjs/mastodon-preview/post/icons/styles.scss +0 -50
  230. package/dist/esm/mastodon-preview/post/icons/styles.scss +0 -50
  231. package/src/mastodon-preview/post/icons/styles.scss +0 -50
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- export type Formatter = (text: string, options?: any) => string;
2
+ export type Formatter<Options = unknown> = (text: string, options?: Options) => string;
3
3
  type AugmentFormatterReturnType<T extends Formatter, TNewReturn> = (...a: Parameters<T>) => ReturnType<T> | TNewReturn;
4
4
  type ConditionalFormatter = AugmentFormatterReturnType<Formatter, boolean>;
5
5
  type NullableFormatter = AugmentFormatterReturnType<Formatter, undefined>;
@@ -8,10 +8,18 @@ export declare const shortEnough: (n: number) => ConditionalFormatter;
8
8
  export declare const truncatedAtSpace: (a: number, b: number) => ConditionalFormatter;
9
9
  export declare const hardTruncation: (n: number) => Formatter;
10
10
  export declare const firstValid: (...args: ConditionalFormatter[]) => NullableFormatter;
11
- export declare const stripHtmlTags: Formatter;
11
+ export declare const stripHtmlTags: Formatter<Array<string>>;
12
+ /**
13
+ * For social note posts we use the first 50 characters of the description.
14
+ * @param description The post description.
15
+ * @returns The first 50 characters of the description.
16
+ */
17
+ export declare const getTitleFromDescription: (description: string) => string;
12
18
  export declare const hasTag: (text: string, tag: string) => boolean;
19
+ export declare const formatNextdoorDate: (date?: number | Date | undefined) => string;
13
20
  export declare const formatTweetDate: (date?: number | Date | undefined) => string;
14
- export type Platform = 'twitter' | 'facebook' | 'linkedin' | 'instagram' | 'mastodon';
21
+ export declare const formatMastodonDate: (date?: number | Date | undefined) => string;
22
+ export type Platform = 'twitter' | 'facebook' | 'linkedin' | 'instagram' | 'mastodon' | 'nextdoor';
15
23
  type PreviewTextOptions = {
16
24
  platform: Platform;
17
25
  maxChars?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.tsx"],"names":[],"mappings":";AAGA,MAAM,MAAM,SAAS,GAAG,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,KAAM,MAAM,CAAC;AAClE,KAAK,0BAA0B,CAAE,CAAC,SAAS,SAAS,EAAE,UAAU,IAAK,CACpE,GAAG,CAAC,EAAE,UAAU,CAAE,CAAC,CAAE,KACjB,UAAU,CAAE,CAAC,CAAE,GAAG,UAAU,CAAC;AAClC,KAAK,oBAAoB,GAAG,0BAA0B,CAAE,SAAS,EAAE,OAAO,CAAE,CAAC;AAC7E,KAAK,iBAAiB,GAAG,0BAA0B,CAAE,SAAS,EAAE,SAAS,CAAE,CAAC;AAE5E,eAAO,MAAM,UAAU,QAAU,MAAM,KAAI,MAGlB,CAAC;AAE1B,eAAO,MAAM,WAAW,EAAE,CAAE,CAAC,EAAE,MAAM,KAAM,oBACL,CAAC;AAEvC,eAAO,MAAM,gBAAgB,EAAE,CAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAM,oBAQzD,CAAC;AAEH,eAAO,MAAM,cAAc,EAAE,CAAE,CAAC,EAAE,MAAM,KAAM,SACR,CAAC;AAEvC,eAAO,MAAM,UAAU,EAAE,CAAE,GAAG,IAAI,EAAE,oBAAoB,EAAE,KAAM,iBAGM,CAAC;AAEvE,eAAO,MAAM,aAAa,EAAE,SAI3B,CAAC;AAEF,eAAO,MAAM,MAAM,SAAW,MAAM,OAAO,MAAM,KAAI,OAIpD,CAAC;AAEF,eAAO,MAAM,eAAe,8CAIlB,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC;AAEtF,KAAK,kBAAkB,GAAG;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAE,QAAQ,EAAE,MAAM,CAMnD,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAI,KAAK,CAAC,SAAS,CAoH/F"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.tsx"],"names":[],"mappings":";AAGA,MAAM,MAAM,SAAS,CAAE,OAAO,GAAG,OAAO,IAAK,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAM,MAAM,CAAC;AAC3F,KAAK,0BAA0B,CAAE,CAAC,SAAS,SAAS,EAAE,UAAU,IAAK,CACpE,GAAG,CAAC,EAAE,UAAU,CAAE,CAAC,CAAE,KACjB,UAAU,CAAE,CAAC,CAAE,GAAG,UAAU,CAAC;AAClC,KAAK,oBAAoB,GAAG,0BAA0B,CAAE,SAAS,EAAE,OAAO,CAAE,CAAC;AAC7E,KAAK,iBAAiB,GAAG,0BAA0B,CAAE,SAAS,EAAE,SAAS,CAAE,CAAC;AAE5E,eAAO,MAAM,UAAU,QAAU,MAAM,KAAI,MAGlB,CAAC;AAE1B,eAAO,MAAM,WAAW,EAAE,CAAE,CAAC,EAAE,MAAM,KAAM,oBACL,CAAC;AAEvC,eAAO,MAAM,gBAAgB,EAAE,CAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAM,oBAQzD,CAAC;AAEH,eAAO,MAAM,cAAc,EAAE,CAAE,CAAC,EAAE,MAAM,KAAM,SACR,CAAC;AAEvC,eAAO,MAAM,UAAU,EAAE,CAAE,GAAG,IAAI,EAAE,oBAAoB,EAAE,KAAM,iBAGM,CAAC;AAEvE,eAAO,MAAM,aAAa,EAAE,SAAS,CAAE,KAAK,CAAE,MAAM,CAAE,CAIrD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,gBAAkB,MAAM,KAAI,MAE/D,CAAC;AAEF,eAAO,MAAM,MAAM,SAAW,MAAM,OAAO,MAAM,KAAI,OAIpD,CAAC;AAEF,eAAO,MAAM,kBAAkB,8CAIrB,CAAC;AAEX,eAAO,MAAM,eAAe,8CAIlB,CAAC;AAEX,eAAO,MAAM,kBAAkB,8CAKrB,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC;AAEnG,KAAK,kBAAkB,GAAG;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAE,QAAQ,EAAE,MAAM,CAOnD,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAI,KAAK,CAAC,SAAS,CAoH/F"}
@@ -4,6 +4,7 @@ export * from './linkedin-preview';
4
4
  export * from './tumblr-preview';
5
5
  export * from './facebook-preview';
6
6
  export * from './mastodon-preview';
7
+ export * from './nextdoor-preview';
7
8
  export * from './constants';
8
9
  export * from './instagram-preview';
9
10
  export * from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"link-preview.d.ts","sourceRoot":"","sources":["../../../src/linkedin-preview/link-preview.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,KAAK,aAAa,GAAG,OAAO,CAAE,IAAI,CAAE,oBAAoB,EAAE,MAAM,GAAG,cAAc,CAAE,CAAE,CAAC;AAEtF,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAE,oBAAoB,EAAE,MAAM,aAAa,CAAE,GACvF,aAAa,CAAC;AAEf,wBAAgB,mBAAmB,CAAE,KAAK,EAAE,wBAAwB,2CAWnE"}
1
+ {"version":3,"file":"link-preview.d.ts","sourceRoot":"","sources":["../../../src/linkedin-preview/link-preview.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,KAAK,aAAa,GAAG,OAAO,CAAE,IAAI,CAAE,oBAAoB,EAAE,MAAM,GAAG,cAAc,CAAE,CAAE,CAAC;AAEtF,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAE,oBAAoB,EAAE,MAAM,aAAa,CAAE,GACvF,aAAa,CAAC;AAEf,wBAAgB,mBAAmB,CAAE,KAAK,EAAE,wBAAwB,2CAYnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"post-preview.d.ts","sourceRoot":"","sources":["../../../src/linkedin-preview/post-preview.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,cAAc,CAAC;AAEtB,wBAAgB,mBAAmB,CAAE,EACpC,eAAmB,EACnB,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,KAAK,EACL,KAAK,EACL,GAAG,GACH,EAAE,oBAAoB,2CAgGtB"}
1
+ {"version":3,"file":"post-preview.d.ts","sourceRoot":"","sources":["../../../src/linkedin-preview/post-preview.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,cAAc,CAAC;AAEtB,wBAAgB,mBAAmB,CAAE,EACpC,eAAmB,EACnB,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,KAAK,EACL,KAAK,EACL,GAAG,GACH,EAAE,oBAAoB,2CAkGtB"}
@@ -1,2 +1,3 @@
1
1
  export declare const DEFAULT_MASTODON_INSTANCE = "mastodon.social";
2
+ export declare const DEFAULT_AVATAR = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAMAAAC3Ycb+AAAAWlBMVEXZ4ejW3+fQ2eTN1+LL1eHI0+DG0d7U3ebY4Oi7ydm0w9a2xNe5x9i+y9vS2+XDz93BzduwwNWputKjts+rvNOmudGtvtSgtM2OpMKHn72Bmbl8lbacsMuVq8fmVh92AAAKsklEQVR4AezBMQEAAAQAMKB/ZSWc2wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnmT17O5xVx8ItqJAFIZLUcIhqXV1/zudeZnObYCr+G2gwy91pOz7TrRKU0W0+vXLS9n/+uWb+mMIafCadV6Khi5PCemdxWtGCkXVCinGOy4KTVno0HZy8FFmfH1aRIfPmD7UWcPha3YQ+liJLrpx4pceMLFTR2sMFl9zUlFVtPBYw0a19xQOmPkzE/a3DtJiDdNRNRppsdoQttc2C39rHoeWNms9VrOyqSQHtvGB1mt6N/Fak+nK5EhJ7vQ6kkHROsLyRpNZnVsNSO6SRDjs0usVrePCeyyxoe9piV2coOtSA/b69kMOlneb/bdJgsFeXtFFdThC0hdax4fMpsn+PJKOLikiyfultZaTAq9EGRwzaLoc5XCUbekjjecs5qg/642kyMU9QWuRQU/v9RPnsgj6QI8MbEuXIiyyiPRGGDmn91OiI7Kw4iZz/sabSy9nzmsSb3p4vFP/tPdAkSKN5fy8pqQxwP2KCOSUrkr74BJGlbdHIugSAlCkSORCJrGiR73LriyKFPFcTp+1R2IDnU4bZOc1acslRfrBIDuj6WwRBfgGXJbRekAB8laDnkxcmpNI7jPsjUMJM5c3ogjX0JlidT2SB3C7oxXqu1fliwQ6j6+xR7KgBH+zRX/w84w323WD/EZ+pvFWTyRU34NnlNDeaEFmfq4JBQx0ClX1oBcddkVnkMhu4aTmGenpDA7ZcVL1jJibTPrEZ1j+Z+cMciWFYSAaIj6kFYABk77/UWc18m42X928Cn5XKLnsisGdhMNJ37A+Z1pTD451mKNuWksPM9Zpd/HuYc4a9QvkkyUypm/zRzkSfv7dd5dvIW+7E/0mMqALBFAiQ/ouGV0ggNE3i/f0Zvdyqnf1qY8CcdSj4QooEHQXWaWHrMPuR/x9saJDOiCu1/RVCrxAAHFd+SXrNAKHchDZAHsp+OS76ebCwxgoJ8PcnWN5Ww9BDEILQTylc9p6CNLMAaT1EMQwNF1Btp4cyxHeqi+AGQvtWYvsSt1AnLofXI89pUJHd0E1o3+YAgy+s+rfU8269KyX7Ke9hqLp/pAw99RCHOFfdlZsCgEIssqe9buMxaF7XK5UaCwEPMFX3X8Mm7G4hO+dDBU5ZAHm3jrrngIy63Du3XWvLR5GQ7BAnCkEYV3MGiouhgDm3joIn7S+OhTkJ93IEoKwLsVmWC4EJMMsfba3GY1LcuR1hiUEIVyJdXIIgjAsZw9BCIbllCUE+cdSkiNpWobjlDUsZwpB/M0EwSsE8UhIYK4hiD/yEhhDEL8wjmAPQfbkOGqBvekL4hEdRX56DskJxvRsQaZEo7yeLMirJBxbfa4gdUtAfm4QBLKgGhORsj51Y7iWhGR+6k59S0j+Y1q/EOQvNWeR6DwMA2E/LIXJfP9j/lhWrFdH3sy3D1nVjJQq1nrMQH62HmzMhOdQdi5LG+u8984aPcoJxvp/Z4vc2fArLFF72HMLaP0NG0YZ0fkbTICxW0JCVywg2vhHJFlyC+4ZF8cE4O+wxC/ikyvo/DNue0SiJ9j1s83ywVFsX/9pBZ219hIbt1W2DDlbMiIzuqMTqhIBCReZCmc7FkXkcvTZzKNlMm6AHGvg+CzQqgf3/BsOdrtqReJB8Xz+kTLB9+iEStyqa/d/BVd+5nZkYLMtcle4scAnCOFT3Bna2wqSiMQxl/9rH55ibhNn67ETRD44t6QkxiTipDcJVqRZuC6B+AlC+ZI1IjqlTdrRQPFwB4X1y6AniHxHgfWayOmkG4T8CsulUydIqt7TXkHQSQISGKuw2Smi2bPRFBnwm3TpG605uUyUkO0ikZyND/2E/xZLpFm0zNKsLNncQstxBxgarV66zyW+Zi0rAbFsT2EyA+LShk+uBatYPB+CMsuw/bjNdHXDZlQkZ4OdHeV5E7l6ZExCGxPGHKLhFC5ELfD0NwVDDTp4Msn3ucTvDQfUkZMvhUMDut1JDzxrwlNhbghUruhFHr0G/RThWyHRQJrIVEKx8DVrgrSQSmHxhWgi2DUWz9sJz0Rm8OkfnhavNZzKWDr+yNyEZyGnnYLjG85EyicI6pfSM5piVW8KkE8wzeqLDTfg/08FVmN1CpQDUrO+oHyhI6CpgGz9dQNpFCy7CsTWMyy92ilg3g4oLvJdv6hXbwqa3+zdC3qqMBAF4BMISeSRjAyw/6Xevm6tmipGA1Tn34BfOUxOArVVM37OnbZYu0V2gK1m3D2dwh/nQn1REz6W5MDrsp+lF5q/8ps/d9DNhQW5Ul+T1K88IF+cvjAmjQb+PqBo67hdiW+BVzRaHJRdHdcWeBIq1BHB46eB10M44qmOCA7Po9zVx1pjcczwagaFE9Y0TzkeB0639UGrHc7seS0a51y1O+o6PB1X0GcmnfGIKXglNeK8+cykDSWelLLe4lc1r2L0+J31VuFFORp5DS2ihKeGVzCQQozQRAMvbuyoRIwIRN3IS2uJDESEpTcNL6ymNwrinKZ309IF8q6EOOMCfRgXLpB3BuKMp0+7hQvkg4U4pelLvXCByJoVF+i/iReyp/8MxImCvnU9L2KiA4tjwtBBNy60wTrQOCIU/dRyfj0dcRA/aTrSLLXhJan1uEDH6uXykFqPKOjUfrE8pNYjDJ2ZOJ9xR2cqfBOeIqZl5kNGJMJQzLBoHjIi8QHJn0jfUZxFlAzIwZQ9DxmRiIJouUSGjn5lIQ4vQuL22Z5fRRi8EZouqTM9340qIWDpsoYfp6YrlOThDF2xG/lBWrrGSCCarur6TMfziFJ2WDN0U6btVYSXI+EMgfherad5rBT6VcGiGPg+BWygOYLCy5p5iYwCoFq+i8LsRKysVxdVCh90z+l6vFFGErmgoFm0wxfb3/slKVeRNHvc7GtT4KC7/3vo5ey74MX4lPW84GThxg82Fq9EVWk3as+p9O2fraTNTwSPEw2n8jgoZLd1zIXUW5Q40YiD2bstIwPyg/E4V3GiPY55I4f2m/a7oUBMwYl2OFUGCWT2A5NQOkRZTlThjNMkb0e+VFemw+EXihN5RKgrU6LxKpy+3h1x6Z0eV5hLeci50JQWlyhO0+BXVgc5GcZLNWgLIEsgFS7x55mYAq8kch2q0uI6y0lGhcucLQ19M9riVVlflLoqrcMsZcY/9+N8qXVZeuswl6g4SYE8BHGKGpmIllOUyERMnGBCLoJTGGQiSk4wOGyJdHqFXETNt9sjF6HGTW2xRODbNchGDHyz0SMXYfh2hFyE6uVMuCmdNPqmaL7dDrmIYuSbTQqZiKKX1yBbUo0b2mEJ28prqQ1RNHKCQUE8nqqakVOMBcQjOVuarpk4VQXxQF3P9wkQj9TwfTqIh6qf6f/gSSCtg3is+nnykEB2EA+3f5L9lQQyVtgQCWQosCESSK2QhZg4wRiwIRLI5LEdEshIDtmIgW9Ue2yHBDJpZCV6vkEfHDZDAulJITfRSxzbMv7BxUoCGbYUhwQyGQexFL5s3HcFtkEC6etOK4hFOY6amq7yWJcEMvbTvmk7o73DWkRHwVSVLgur8JTEv/bgQAAAAAAAyP+1EVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFpJkoc9sa+hgAAAAASUVORK5CYII=";
2
3
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/mastodon-preview/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,oBAAoB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/mastodon-preview/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAE3D,eAAO,MAAM,cAAc,mzHACsxH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/mastodon-preview/post/actions/index.tsx"],"names":[],"mappings":";AAGA,OAAO,eAAe,CAAC;AAEvB,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EA0ChC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/mastodon-preview/post/actions/index.tsx"],"names":[],"mappings":";AAAA,OAAO,eAAe,CAAC;AAEvB,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EA4DhC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/mastodon-preview/post/body/index.tsx"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,eAAe,CAAC;AAEvB,KAAK,KAAK,GAAG,oBAAoB,GAAG;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAAC;AAEnE,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAE,KAAK,CAoCpC,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/mastodon-preview/post/body/index.tsx"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,eAAe,CAAC;AAEvB,KAAK,KAAK,GAAG,oBAAoB,GAAG;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAAC;AAEnE,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAE,KAAK,CAwCpC,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/mastodon-preview/post/card/index.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,eAAe,CAAC;AAEvB,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAE,oBAAoB,CAuBrD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/mastodon-preview/post/card/index.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,eAAe,CAAC;AAEvB,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAE,oBAAoB,CAuCrD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/mastodon-preview/post/header/index.tsx"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,eAAe,CAAC;AAEvB,KAAK,KAAK,GAAG,IAAI,CAAE,oBAAoB,EAAE,MAAM,CAAE,CAAC;AAElD,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAE,KAAK,CA2BxC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/mastodon-preview/post/header/index.tsx"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,eAAe,CAAC;AAEvB,KAAK,KAAK,GAAG,IAAI,CAAE,oBAAoB,EAAE,MAAM,CAAE,CAAC;AAElD,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAE,KAAK,CAwBxC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,7 +1,2 @@
1
- /// <reference types="react" />
2
- import './styles.scss';
3
- declare const MastodonPostIcon: React.FC<{
4
- name: string;
5
- }>;
6
- export default MastodonPostIcon;
1
+ export declare function GlobeIcon(): import("react/jsx-runtime").JSX.Element;
7
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/mastodon-preview/post/icons/index.tsx"],"names":[],"mappings":";AAAA,OAAO,eAAe,CAAC;AAEvB,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAEjD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/mastodon-preview/post/icons/index.tsx"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,4CAYxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"post-preview.d.ts","sourceRoot":"","sources":["../../../src/mastodon-preview/post-preview.tsx"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,OAAO,eAAe,CAAC;AAEvB,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAE,oBAAoB,CAoB/D,CAAC"}
1
+ {"version":3,"file":"post-preview.d.ts","sourceRoot":"","sources":["../../../src/mastodon-preview/post-preview.tsx"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,OAAO,eAAe,CAAC;AAEvB,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAE,oBAAoB,CA+B/D,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const FEED_TEXT_MAX_LENGTH = 160;
2
+ export declare const FEED_TEXT_MAX_LINES = 2;
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/nextdoor-preview/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,mBAAmB,IAAI,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function FooterActions(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=footer-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer-actions.d.ts","sourceRoot":"","sources":["../../../src/nextdoor-preview/footer-actions.tsx"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,4CAiB5B"}
@@ -0,0 +1,2 @@
1
+ export declare function ChevronIcon(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=chevron-icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chevron-icon.d.ts","sourceRoot":"","sources":["../../../../src/nextdoor-preview/icons/chevron-icon.tsx"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,4CAU1B"}
@@ -0,0 +1,2 @@
1
+ export declare function CommentIcon(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=comment-icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment-icon.d.ts","sourceRoot":"","sources":["../../../../src/nextdoor-preview/icons/comment-icon.tsx"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,4CAW1B"}
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ export declare const DefaultAvatar: React.FC;
3
+ //# sourceMappingURL=default-avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-avatar.d.ts","sourceRoot":"","sources":["../../../../src/nextdoor-preview/icons/default-avatar.tsx"],"names":[],"mappings":";AAAA,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAEjC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function DefaultImage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=default-image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-image.d.ts","sourceRoot":"","sources":["../../../../src/nextdoor-preview/icons/default-image.tsx"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,4CAsB3B"}
@@ -0,0 +1,2 @@
1
+ export declare function GlobeIcon(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=globe-icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globe-icon.d.ts","sourceRoot":"","sources":["../../../../src/nextdoor-preview/icons/globe-icon.tsx"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,4CAWxB"}
@@ -0,0 +1,2 @@
1
+ export declare function LikeIcon(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=like-icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"like-icon.d.ts","sourceRoot":"","sources":["../../../../src/nextdoor-preview/icons/like-icon.tsx"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,4CAWvB"}
@@ -0,0 +1,2 @@
1
+ export declare function ShareIcon(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=share-icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share-icon.d.ts","sourceRoot":"","sources":["../../../../src/nextdoor-preview/icons/share-icon.tsx"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,4CAWxB"}
@@ -0,0 +1,4 @@
1
+ export * from './link-preview';
2
+ export * from './post-preview';
3
+ export * from './previews';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nextdoor-preview/index.tsx"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { NextdoorPreviewProps } from './types';
2
+ type OptionalProps = Partial<Pick<NextdoorPreviewProps, 'name' | 'profileImage'>>;
3
+ export type NextdoorLinkPreviewProps = Omit<NextdoorPreviewProps, keyof OptionalProps> & OptionalProps;
4
+ export declare function NextdoorLinkPreview(props: NextdoorLinkPreviewProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=link-preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-preview.d.ts","sourceRoot":"","sources":["../../../src/nextdoor-preview/link-preview.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,KAAK,aAAa,GAAG,OAAO,CAAE,IAAI,CAAE,oBAAoB,EAAE,MAAM,GAAG,cAAc,CAAE,CAAE,CAAC;AAEtF,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAE,oBAAoB,EAAE,MAAM,aAAa,CAAE,GACvF,aAAa,CAAC;AAEf,wBAAgB,mBAAmB,CAAE,KAAK,EAAE,wBAAwB,2CAYnE"}
@@ -0,0 +1,4 @@
1
+ import { NextdoorPreviewProps } from './types';
2
+ import './style.scss';
3
+ export declare function NextdoorPostPreview({ image, name, profileImage, description, neighborhood, media, title, url, }: NextdoorPreviewProps): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=post-preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-preview.d.ts","sourceRoot":"","sources":["../../../src/nextdoor-preview/post-preview.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,cAAc,CAAC;AAEtB,wBAAgB,mBAAmB,CAAE,EACpC,KAAK,EACL,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,KAAK,EACL,KAAK,EACL,GAAG,GACH,EAAE,oBAAoB,2CAyFtB"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import type { NextdoorPreviewsProps } from './types';
3
+ export declare const NextdoorPreviews: React.FC<NextdoorPreviewsProps>;
4
+ //# sourceMappingURL=previews.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"previews.d.ts","sourceRoot":"","sources":["../../../src/nextdoor-preview/previews.tsx"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAE,qBAAqB,CA6C7D,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { SocialPreviewBaseProps, SocialPreviewsBaseProps } from '../types';
2
+ export type NextdoorPreviewProps = SocialPreviewBaseProps & {
3
+ neighborhood?: string;
4
+ name: string;
5
+ profileImage: string;
6
+ };
7
+ export type NextdoorPreviewsProps = NextdoorPreviewProps & SocialPreviewsBaseProps;
8
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/nextdoor-preview/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAE3E,MAAM,MAAM,oBAAoB,GAAG,sBAAsB,GAAG;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"previews.d.ts","sourceRoot":"","sources":["../../../src/tumblr-preview/previews.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAGnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG,uBAAuB,CAAC;AAE/E,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAE,mBAAmB,CA6CzD,CAAC"}
1
+ {"version":3,"file":"previews.d.ts","sourceRoot":"","sources":["../../../src/tumblr-preview/previews.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAGnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG,uBAAuB,CAAC;AAE/E,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAE,mBAAmB,CA+CzD,CAAC"}
package/package.json CHANGED
@@ -1,72 +1,72 @@
1
1
  {
2
- "name": "@automattic/social-previews",
3
- "version": "2.0.1-beta.8",
4
- "description": "A suite of components to generate previews for a post for both social and search engines.",
5
- "main": "dist/cjs/index.js",
6
- "module": "dist/esm/index.js",
7
- "calypso:src": "src/index.ts",
8
- "sideEffects": [
9
- "*.css",
10
- "*.scss"
11
- ],
12
- "keywords": [
13
- "wordpress",
14
- "social",
15
- "seo",
16
- "search"
17
- ],
18
- "author": "Automattic Inc.",
19
- "homepage": "https://github.com/Automattic/wp-calypso",
20
- "license": "GPL-2.0-or-later",
21
- "repository": {
22
- "type": "git",
23
- "url": "git+https://github.com/Automattic/wp-calypso.git",
24
- "directory": "packages/social-previews"
25
- },
26
- "publishConfig": {
27
- "access": "public"
28
- },
29
- "bugs": "https://github.com/Automattic/wp-calypso/issues",
30
- "files": [
31
- "dist",
32
- "src"
33
- ],
34
- "types": "dist/types",
35
- "scripts": {
36
- "clean": "tsc --build ./tsconfig.json ./tsconfig-cjs.json --clean && rm -rf dist",
37
- "build": "tsc --build ./tsconfig.json ./tsconfig-cjs.json && copy-assets",
38
- "prepare": "yarn run clean && yarn run build",
39
- "prepack": "yarn run clean && yarn run build",
40
- "watch": "tsc --build ./tsconfig.json --watch"
41
- },
42
- "dependencies": {
43
- "@emotion/react": "^11.11.1",
44
- "@wordpress/components": "^25.7.0",
45
- "@wordpress/element": "^5.18.0",
46
- "@wordpress/i18n": "^4.41.0",
47
- "classnames": "^2.3.1",
48
- "prop-types": "^15.7.2",
49
- "tslib": "^2.3.0"
50
- },
51
- "devDependencies": {
52
- "@automattic/calypso-build": "^10.0.0",
53
- "@automattic/calypso-typescript-config": "^1.0.0",
54
- "@testing-library/jest-dom": "^5.17.0",
55
- "@testing-library/react": "^14.0.0",
56
- "postcss": "^8.4.5",
57
- "react": "^18.2.0",
58
- "react-dom": "^18.2.0",
59
- "typescript": "^5.1.6",
60
- "webpack": "^5.68.0"
61
- },
62
- "peerDependencies": {
63
- "@babel/runtime": "^7",
64
- "react": "^18.2.0",
65
- "react-dom": "^18.2.0"
66
- },
67
- "peerDependenciesMeta": {
68
- "@babel/runtime": {
69
- "optional": true
70
- }
71
- }
72
- }
2
+ "name": "@automattic/social-previews",
3
+ "version": "2.0.1",
4
+ "description": "A suite of components to generate previews for a post for both social and search engines.",
5
+ "main": "dist/cjs/index.js",
6
+ "module": "dist/esm/index.js",
7
+ "calypso:src": "src/index.ts",
8
+ "sideEffects": [
9
+ "*.css",
10
+ "*.scss"
11
+ ],
12
+ "keywords": [
13
+ "wordpress",
14
+ "social",
15
+ "seo",
16
+ "search"
17
+ ],
18
+ "author": "Automattic Inc.",
19
+ "homepage": "https://github.com/Automattic/wp-calypso",
20
+ "license": "GPL-2.0-or-later",
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "git+https://github.com/Automattic/wp-calypso.git",
24
+ "directory": "packages/social-previews"
25
+ },
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "bugs": "https://github.com/Automattic/wp-calypso/issues",
30
+ "files": [
31
+ "dist",
32
+ "src"
33
+ ],
34
+ "types": "dist/types",
35
+ "scripts": {
36
+ "clean": "tsc --build ./tsconfig.json ./tsconfig-cjs.json --clean && rm -rf dist",
37
+ "build": "tsc --build ./tsconfig.json ./tsconfig-cjs.json && copy-assets",
38
+ "prepare": "yarn run build",
39
+ "prepack": "yarn run clean && yarn run build",
40
+ "watch": "tsc --build ./tsconfig.json --watch"
41
+ },
42
+ "dependencies": {
43
+ "@emotion/react": "^11.11.1",
44
+ "@wordpress/components": "^28.0.0",
45
+ "@wordpress/element": "^6.0.0",
46
+ "@wordpress/i18n": "^5.0.0",
47
+ "clsx": "^2.1.1",
48
+ "prop-types": "^15.7.2",
49
+ "tslib": "^2.3.0"
50
+ },
51
+ "devDependencies": {
52
+ "@automattic/calypso-build": "workspace:^",
53
+ "@automattic/calypso-typescript-config": "workspace:^",
54
+ "@testing-library/jest-dom": "^6.4.5",
55
+ "@testing-library/react": "^15.0.7",
56
+ "postcss": "^8.4.5",
57
+ "react": "^18.2.0",
58
+ "react-dom": "^18.2.0",
59
+ "typescript": "^5.3.3",
60
+ "webpack": "^5.91.0"
61
+ },
62
+ "peerDependencies": {
63
+ "@babel/runtime": "^7.24.5",
64
+ "react": "^18.2.0",
65
+ "react-dom": "^18.2.0"
66
+ },
67
+ "peerDependenciesMeta": {
68
+ "@babel/runtime": {
69
+ "optional": true
70
+ }
71
+ }
72
+ }
package/src/helpers.tsx CHANGED
@@ -1,7 +1,7 @@
1
1
  import { createInterpolateElement } from '@wordpress/element';
2
2
  import { sprintf } from '@wordpress/i18n';
3
3
 
4
- export type Formatter = ( text: string, options?: any ) => string;
4
+ export type Formatter< Options = unknown > = ( text: string, options?: Options ) => string;
5
5
  type AugmentFormatterReturnType< T extends Formatter, TNewReturn > = (
6
6
  ...a: Parameters< T >
7
7
  ) => ReturnType< T > | TNewReturn;
@@ -34,25 +34,47 @@ export const firstValid: ( ...args: ConditionalFormatter[] ) => NullableFormatte
34
34
  ( a ) =>
35
35
  ( predicates.find( ( p ) => false !== p( a ) ) as Formatter )?.( a );
36
36
 
37
- export const stripHtmlTags: Formatter = ( description, allowedTags = [] ) => {
37
+ export const stripHtmlTags: Formatter< Array< string > > = ( description, allowedTags = [] ) => {
38
38
  const pattern = new RegExp( `(<([^${ allowedTags.join( '' ) }>]+)>)`, 'gi' );
39
39
 
40
40
  return description ? description.replace( pattern, '' ) : '';
41
41
  };
42
42
 
43
+ /**
44
+ * For social note posts we use the first 50 characters of the description.
45
+ * @param description The post description.
46
+ * @returns The first 50 characters of the description.
47
+ */
48
+ export const getTitleFromDescription = ( description: string ): string => {
49
+ return stripHtmlTags( description ).substring( 0, 50 );
50
+ };
51
+
43
52
  export const hasTag = ( text: string, tag: string ): boolean => {
44
53
  const pattern = new RegExp( `<${ tag }[^>]*>`, 'gi' );
45
54
 
46
55
  return pattern.test( text );
47
56
  };
48
57
 
58
+ export const formatNextdoorDate = new Intl.DateTimeFormat( 'en-GB', {
59
+ // Result: "7 Oct", "31 Dec"
60
+ day: 'numeric',
61
+ month: 'short',
62
+ } ).format;
63
+
49
64
  export const formatTweetDate = new Intl.DateTimeFormat( 'en-US', {
50
65
  // Result: "Apr 7", "Dec 31"
51
66
  month: 'short',
52
67
  day: 'numeric',
53
68
  } ).format;
54
69
 
55
- export type Platform = 'twitter' | 'facebook' | 'linkedin' | 'instagram' | 'mastodon';
70
+ export const formatMastodonDate = new Intl.DateTimeFormat( 'en-US', {
71
+ // Result: "Apr 7, 2024", "Dec 31, 2023"
72
+ month: 'short',
73
+ day: 'numeric',
74
+ year: 'numeric',
75
+ } ).format;
76
+
77
+ export type Platform = 'twitter' | 'facebook' | 'linkedin' | 'instagram' | 'mastodon' | 'nextdoor';
56
78
 
57
79
  type PreviewTextOptions = {
58
80
  platform: Platform;
@@ -69,6 +91,7 @@ export const hashtagUrlMap: Record< Platform, string > = {
69
91
  linkedin: 'https://www.linkedin.com/feed/hashtag/?keywords=%1$s',
70
92
  instagram: 'https://www.instagram.com/explore/tags/%1$s',
71
93
  mastodon: 'https://%2$s/tags/%1$s',
94
+ nextdoor: 'https://nextdoor.com/hashtag/%1$s',
72
95
  };
73
96
 
74
97
  /**
package/src/index.ts CHANGED
@@ -4,6 +4,7 @@ export * from './linkedin-preview';
4
4
  export * from './tumblr-preview';
5
5
  export * from './facebook-preview';
6
6
  export * from './mastodon-preview';
7
+ export * from './nextdoor-preview';
7
8
  export * from './constants';
8
9
  export * from './instagram-preview';
9
10
  export * from './types';
@@ -57,12 +57,17 @@
57
57
  &__media {
58
58
  display: flex;
59
59
 
60
- &--image {
60
+ &--image,
61
+ &--video {
61
62
  width: 100%;
62
63
  object-fit: cover;
63
64
  }
64
65
  }
65
66
 
67
+ &__media-item {
68
+ flex-grow: 1;
69
+ }
70
+
66
71
  &__content {
67
72
  display: flex;
68
73
  flex-direction: column;
@@ -1,3 +1,4 @@
1
+ import { getTitleFromDescription } from '../helpers';
1
2
  import { LinkedInPostPreview } from './post-preview';
2
3
  import { LinkedInPreviewProps } from './types';
3
4
 
@@ -15,6 +16,7 @@ export function LinkedInLinkPreview( props: LinkedInLinkPreviewProps ) {
15
16
  // Override the props that are irrelevant to link preview
16
17
  description=""
17
18
  media={ undefined }
19
+ title={ props.title || getTitleFromDescription( props.description ) }
18
20
  />
19
21
  );
20
22
  }
@@ -1,5 +1,5 @@
1
1
  import { __, sprintf } from '@wordpress/i18n';
2
- import { baseDomain, preparePreviewText } from '../helpers';
2
+ import { baseDomain, getTitleFromDescription, preparePreviewText } from '../helpers';
3
3
  import { FEED_TEXT_MAX_LENGTH, FEED_TEXT_MAX_LINES } from './constants';
4
4
  import { DefaultAvatar } from './icons/default-avatar';
5
5
  import { LinkedInPreviewProps } from './types';
@@ -90,7 +90,9 @@ export function LinkedInPostPreview( {
90
90
  { image ? <img className="linkedin-preview__image" src={ image } alt="" /> : null }
91
91
  { url ? (
92
92
  <div className="linkedin-preview__description">
93
- <h2 className="linkedin-preview__description--title">{ title }</h2>
93
+ <h2 className="linkedin-preview__description--title">
94
+ { title || getTitleFromDescription( description ) }
95
+ </h2>
94
96
  <div className="linkedin-preview__description--meta">
95
97
  <span className="linkedin-preview__description--url">
96
98
  { baseDomain( url ) }
@@ -1 +1,4 @@
1
1
  export const DEFAULT_MASTODON_INSTANCE = 'mastodon.social';
2
+
3
+ export const DEFAULT_AVATAR =
4
+ 'data:image/png;base64,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';