@select-org/select-post-builder 1.0.7 → 1.0.8

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.
@@ -12980,119 +12980,119 @@ const createLucideIcon = (iconName, iconNode) => {
12980
12980
  * This source code is licensed under the ISC license.
12981
12981
  * See the LICENSE file in the root directory of this source tree.
12982
12982
  */
12983
- const __iconNode$F = [
12983
+ const __iconNode$G = [
12984
12984
  [
12985
12985
  "path",
12986
12986
  { d: "M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8", key: "mg9rjx" }
12987
12987
  ]
12988
12988
  ];
12989
- const Bold = createLucideIcon("bold", __iconNode$F);
12989
+ const Bold = createLucideIcon("bold", __iconNode$G);
12990
12990
  /**
12991
12991
  * @license lucide-react v0.544.0 - ISC
12992
12992
  *
12993
12993
  * This source code is licensed under the ISC license.
12994
12994
  * See the LICENSE file in the root directory of this source tree.
12995
12995
  */
12996
- const __iconNode$E = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
12997
- const Check = createLucideIcon("check", __iconNode$E);
12996
+ const __iconNode$F = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
12997
+ const Check = createLucideIcon("check", __iconNode$F);
12998
12998
  /**
12999
12999
  * @license lucide-react v0.544.0 - ISC
13000
13000
  *
13001
13001
  * This source code is licensed under the ISC license.
13002
13002
  * See the LICENSE file in the root directory of this source tree.
13003
13003
  */
13004
- const __iconNode$D = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
13005
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$D);
13004
+ const __iconNode$E = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
13005
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$E);
13006
13006
  /**
13007
13007
  * @license lucide-react v0.544.0 - ISC
13008
13008
  *
13009
13009
  * This source code is licensed under the ISC license.
13010
13010
  * See the LICENSE file in the root directory of this source tree.
13011
13011
  */
13012
- const __iconNode$C = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
13013
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$C);
13012
+ const __iconNode$D = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
13013
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$D);
13014
13014
  /**
13015
13015
  * @license lucide-react v0.544.0 - ISC
13016
13016
  *
13017
13017
  * This source code is licensed under the ISC license.
13018
13018
  * See the LICENSE file in the root directory of this source tree.
13019
13019
  */
13020
- const __iconNode$B = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
13021
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$B);
13020
+ const __iconNode$C = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
13021
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$C);
13022
13022
  /**
13023
13023
  * @license lucide-react v0.544.0 - ISC
13024
13024
  *
13025
13025
  * This source code is licensed under the ISC license.
13026
13026
  * See the LICENSE file in the root directory of this source tree.
13027
13027
  */
13028
- const __iconNode$A = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
13029
- const Circle = createLucideIcon("circle", __iconNode$A);
13028
+ const __iconNode$B = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
13029
+ const Circle = createLucideIcon("circle", __iconNode$B);
13030
13030
  /**
13031
13031
  * @license lucide-react v0.544.0 - ISC
13032
13032
  *
13033
13033
  * This source code is licensed under the ISC license.
13034
13034
  * See the LICENSE file in the root directory of this source tree.
13035
13035
  */
13036
- const __iconNode$z = [
13036
+ const __iconNode$A = [
13037
13037
  ["path", { d: "m16 18 6-6-6-6", key: "eg8j8" }],
13038
13038
  ["path", { d: "m8 6-6 6 6 6", key: "ppft3o" }]
13039
13039
  ];
13040
- const Code = createLucideIcon("code", __iconNode$z);
13040
+ const Code = createLucideIcon("code", __iconNode$A);
13041
13041
  /**
13042
13042
  * @license lucide-react v0.544.0 - ISC
13043
13043
  *
13044
13044
  * This source code is licensed under the ISC license.
13045
13045
  * See the LICENSE file in the root directory of this source tree.
13046
13046
  */
13047
- const __iconNode$y = [
13047
+ const __iconNode$z = [
13048
13048
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
13049
13049
  ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
13050
13050
  ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
13051
13051
  ];
13052
- const Ellipsis = createLucideIcon("ellipsis", __iconNode$y);
13052
+ const Ellipsis = createLucideIcon("ellipsis", __iconNode$z);
13053
13053
  /**
13054
13054
  * @license lucide-react v0.544.0 - ISC
13055
13055
  *
13056
13056
  * This source code is licensed under the ISC license.
13057
13057
  * See the LICENSE file in the root directory of this source tree.
13058
13058
  */
13059
- const __iconNode$x = [
13059
+ const __iconNode$y = [
13060
13060
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
13061
13061
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
13062
13062
  ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
13063
13063
  ];
13064
- const ExternalLink = createLucideIcon("external-link", __iconNode$x);
13064
+ const ExternalLink = createLucideIcon("external-link", __iconNode$y);
13065
13065
  /**
13066
13066
  * @license lucide-react v0.544.0 - ISC
13067
13067
  *
13068
13068
  * This source code is licensed under the ISC license.
13069
13069
  * See the LICENSE file in the root directory of this source tree.
13070
13070
  */
13071
- const __iconNode$w = [
13071
+ const __iconNode$x = [
13072
13072
  ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4", key: "1pf5j1" }],
13073
13073
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
13074
13074
  ["path", { d: "m5 12-3 3 3 3", key: "oke12k" }],
13075
13075
  ["path", { d: "m9 18 3-3-3-3", key: "112psh" }]
13076
13076
  ];
13077
- const FileCode2 = createLucideIcon("file-code-2", __iconNode$w);
13077
+ const FileCode2 = createLucideIcon("file-code-2", __iconNode$x);
13078
13078
  /**
13079
13079
  * @license lucide-react v0.544.0 - ISC
13080
13080
  *
13081
13081
  * This source code is licensed under the ISC license.
13082
13082
  * See the LICENSE file in the root directory of this source tree.
13083
13083
  */
13084
- const __iconNode$v = [
13084
+ const __iconNode$w = [
13085
13085
  ["path", { d: "m15 17 5-5-5-5", key: "nf172w" }],
13086
13086
  ["path", { d: "M4 18v-2a4 4 0 0 1 4-4h12", key: "jmiej9" }]
13087
13087
  ];
13088
- const Forward = createLucideIcon("forward", __iconNode$v);
13088
+ const Forward = createLucideIcon("forward", __iconNode$w);
13089
13089
  /**
13090
13090
  * @license lucide-react v0.544.0 - ISC
13091
13091
  *
13092
13092
  * This source code is licensed under the ISC license.
13093
13093
  * See the LICENSE file in the root directory of this source tree.
13094
13094
  */
13095
- const __iconNode$u = [
13095
+ const __iconNode$v = [
13096
13096
  ["circle", { cx: "9", cy: "12", r: "1", key: "1vctgf" }],
13097
13097
  ["circle", { cx: "9", cy: "5", r: "1", key: "hp0tcf" }],
13098
13098
  ["circle", { cx: "9", cy: "19", r: "1", key: "fkjjf6" }],
@@ -13100,68 +13100,68 @@ const __iconNode$u = [
13100
13100
  ["circle", { cx: "15", cy: "5", r: "1", key: "19l28e" }],
13101
13101
  ["circle", { cx: "15", cy: "19", r: "1", key: "f4zoj3" }]
13102
13102
  ];
13103
- const GripVertical = createLucideIcon("grip-vertical", __iconNode$u);
13103
+ const GripVertical = createLucideIcon("grip-vertical", __iconNode$v);
13104
13104
  /**
13105
13105
  * @license lucide-react v0.544.0 - ISC
13106
13106
  *
13107
13107
  * This source code is licensed under the ISC license.
13108
13108
  * See the LICENSE file in the root directory of this source tree.
13109
13109
  */
13110
- const __iconNode$t = [
13110
+ const __iconNode$u = [
13111
13111
  ["path", { d: "M4 12h8", key: "17cfdx" }],
13112
13112
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
13113
13113
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
13114
13114
  ["path", { d: "m17 12 3-2v8", key: "1hhhft" }]
13115
13115
  ];
13116
- const Heading1 = createLucideIcon("heading-1", __iconNode$t);
13116
+ const Heading1 = createLucideIcon("heading-1", __iconNode$u);
13117
13117
  /**
13118
13118
  * @license lucide-react v0.544.0 - ISC
13119
13119
  *
13120
13120
  * This source code is licensed under the ISC license.
13121
13121
  * See the LICENSE file in the root directory of this source tree.
13122
13122
  */
13123
- const __iconNode$s = [
13123
+ const __iconNode$t = [
13124
13124
  ["path", { d: "M4 12h8", key: "17cfdx" }],
13125
13125
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
13126
13126
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
13127
13127
  ["path", { d: "M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1", key: "9jr5yi" }]
13128
13128
  ];
13129
- const Heading2 = createLucideIcon("heading-2", __iconNode$s);
13129
+ const Heading2 = createLucideIcon("heading-2", __iconNode$t);
13130
13130
  /**
13131
13131
  * @license lucide-react v0.544.0 - ISC
13132
13132
  *
13133
13133
  * This source code is licensed under the ISC license.
13134
13134
  * See the LICENSE file in the root directory of this source tree.
13135
13135
  */
13136
- const __iconNode$r = [
13136
+ const __iconNode$s = [
13137
13137
  ["path", { d: "M4 12h8", key: "17cfdx" }],
13138
13138
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
13139
13139
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
13140
13140
  ["path", { d: "M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2", key: "68ncm8" }],
13141
13141
  ["path", { d: "M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2", key: "1ejuhz" }]
13142
13142
  ];
13143
- const Heading3 = createLucideIcon("heading-3", __iconNode$r);
13143
+ const Heading3 = createLucideIcon("heading-3", __iconNode$s);
13144
13144
  /**
13145
13145
  * @license lucide-react v0.544.0 - ISC
13146
13146
  *
13147
13147
  * This source code is licensed under the ISC license.
13148
13148
  * See the LICENSE file in the root directory of this source tree.
13149
13149
  */
13150
- const __iconNode$q = [
13150
+ const __iconNode$r = [
13151
13151
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
13152
13152
  ["path", { d: "M17 10v3a1 1 0 0 0 1 1h3", key: "tj5zdr" }],
13153
13153
  ["path", { d: "M21 10v8", key: "1kdml4" }],
13154
13154
  ["path", { d: "M4 12h8", key: "17cfdx" }],
13155
13155
  ["path", { d: "M4 18V6", key: "1rz3zl" }]
13156
13156
  ];
13157
- const Heading4 = createLucideIcon("heading-4", __iconNode$q);
13157
+ const Heading4 = createLucideIcon("heading-4", __iconNode$r);
13158
13158
  /**
13159
13159
  * @license lucide-react v0.544.0 - ISC
13160
13160
  *
13161
13161
  * This source code is licensed under the ISC license.
13162
13162
  * See the LICENSE file in the root directory of this source tree.
13163
13163
  */
13164
- const __iconNode$p = [
13164
+ const __iconNode$q = [
13165
13165
  ["path", { d: "M4 12h8", key: "17cfdx" }],
13166
13166
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
13167
13167
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
@@ -13171,28 +13171,28 @@ const __iconNode$p = [
13171
13171
  { d: "M17 17.7c.4.2.8.3 1.3.3 1.5 0 2.7-1.1 2.7-2.5S19.8 13 18.3 13H17", key: "2nebdn" }
13172
13172
  ]
13173
13173
  ];
13174
- const Heading5 = createLucideIcon("heading-5", __iconNode$p);
13174
+ const Heading5 = createLucideIcon("heading-5", __iconNode$q);
13175
13175
  /**
13176
13176
  * @license lucide-react v0.544.0 - ISC
13177
13177
  *
13178
13178
  * This source code is licensed under the ISC license.
13179
13179
  * See the LICENSE file in the root directory of this source tree.
13180
13180
  */
13181
- const __iconNode$o = [
13181
+ const __iconNode$p = [
13182
13182
  ["path", { d: "M4 12h8", key: "17cfdx" }],
13183
13183
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
13184
13184
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
13185
13185
  ["circle", { cx: "19", cy: "16", r: "2", key: "15mx69" }],
13186
13186
  ["path", { d: "M20 10c-2 2-3 3.5-3 6", key: "f35dl0" }]
13187
13187
  ];
13188
- const Heading6 = createLucideIcon("heading-6", __iconNode$o);
13188
+ const Heading6 = createLucideIcon("heading-6", __iconNode$p);
13189
13189
  /**
13190
13190
  * @license lucide-react v0.544.0 - ISC
13191
13191
  *
13192
13192
  * This source code is licensed under the ISC license.
13193
13193
  * See the LICENSE file in the root directory of this source tree.
13194
13194
  */
13195
- const __iconNode$n = [
13195
+ const __iconNode$o = [
13196
13196
  [
13197
13197
  "path",
13198
13198
  {
@@ -13204,63 +13204,63 @@ const __iconNode$n = [
13204
13204
  ["path", { d: "m6 21 5-5", key: "1wyjai" }],
13205
13205
  ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }]
13206
13206
  ];
13207
- const ImagePlay = createLucideIcon("image-play", __iconNode$n);
13207
+ const ImagePlay = createLucideIcon("image-play", __iconNode$o);
13208
13208
  /**
13209
13209
  * @license lucide-react v0.544.0 - ISC
13210
13210
  *
13211
13211
  * This source code is licensed under the ISC license.
13212
13212
  * See the LICENSE file in the root directory of this source tree.
13213
13213
  */
13214
- const __iconNode$m = [
13214
+ const __iconNode$n = [
13215
13215
  ["path", { d: "M16 5h6", key: "1vod17" }],
13216
13216
  ["path", { d: "M19 2v6", key: "4bpg5p" }],
13217
13217
  ["path", { d: "M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5", key: "1ue2ih" }],
13218
13218
  ["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }],
13219
13219
  ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }]
13220
13220
  ];
13221
- const ImagePlus = createLucideIcon("image-plus", __iconNode$m);
13221
+ const ImagePlus = createLucideIcon("image-plus", __iconNode$n);
13222
13222
  /**
13223
13223
  * @license lucide-react v0.544.0 - ISC
13224
13224
  *
13225
13225
  * This source code is licensed under the ISC license.
13226
13226
  * See the LICENSE file in the root directory of this source tree.
13227
13227
  */
13228
- const __iconNode$l = [
13228
+ const __iconNode$m = [
13229
13229
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
13230
13230
  ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }],
13231
13231
  ["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }]
13232
13232
  ];
13233
- const Image$1 = createLucideIcon("image", __iconNode$l);
13233
+ const Image$1 = createLucideIcon("image", __iconNode$m);
13234
13234
  /**
13235
13235
  * @license lucide-react v0.544.0 - ISC
13236
13236
  *
13237
13237
  * This source code is licensed under the ISC license.
13238
13238
  * See the LICENSE file in the root directory of this source tree.
13239
13239
  */
13240
- const __iconNode$k = [
13240
+ const __iconNode$l = [
13241
13241
  ["line", { x1: "19", x2: "10", y1: "4", y2: "4", key: "15jd3p" }],
13242
13242
  ["line", { x1: "14", x2: "5", y1: "20", y2: "20", key: "bu0au3" }],
13243
13243
  ["line", { x1: "15", x2: "9", y1: "4", y2: "20", key: "uljnxc" }]
13244
13244
  ];
13245
- const Italic = createLucideIcon("italic", __iconNode$k);
13245
+ const Italic = createLucideIcon("italic", __iconNode$l);
13246
13246
  /**
13247
13247
  * @license lucide-react v0.544.0 - ISC
13248
13248
  *
13249
13249
  * This source code is licensed under the ISC license.
13250
13250
  * See the LICENSE file in the root directory of this source tree.
13251
13251
  */
13252
- const __iconNode$j = [
13252
+ const __iconNode$k = [
13253
13253
  ["path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71", key: "1cjeqo" }],
13254
13254
  ["path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71", key: "19qd67" }]
13255
13255
  ];
13256
- const Link = createLucideIcon("link", __iconNode$j);
13256
+ const Link = createLucideIcon("link", __iconNode$k);
13257
13257
  /**
13258
13258
  * @license lucide-react v0.544.0 - ISC
13259
13259
  *
13260
13260
  * This source code is licensed under the ISC license.
13261
13261
  * See the LICENSE file in the root directory of this source tree.
13262
13262
  */
13263
- const __iconNode$i = [
13263
+ const __iconNode$j = [
13264
13264
  ["path", { d: "M11 5h10", key: "1cz7ny" }],
13265
13265
  ["path", { d: "M11 12h10", key: "1438ji" }],
13266
13266
  ["path", { d: "M11 19h10", key: "11t30w" }],
@@ -13268,14 +13268,14 @@ const __iconNode$i = [
13268
13268
  ["path", { d: "M4 9h2", key: "r1h2o0" }],
13269
13269
  ["path", { d: "M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02", key: "xtkcd5" }]
13270
13270
  ];
13271
- const ListOrdered = createLucideIcon("list-ordered", __iconNode$i);
13271
+ const ListOrdered = createLucideIcon("list-ordered", __iconNode$j);
13272
13272
  /**
13273
13273
  * @license lucide-react v0.544.0 - ISC
13274
13274
  *
13275
13275
  * This source code is licensed under the ISC license.
13276
13276
  * See the LICENSE file in the root directory of this source tree.
13277
13277
  */
13278
- const __iconNode$h = [
13278
+ const __iconNode$i = [
13279
13279
  ["path", { d: "M3 5h.01", key: "18ugdj" }],
13280
13280
  ["path", { d: "M3 12h.01", key: "nlz23k" }],
13281
13281
  ["path", { d: "M3 19h.01", key: "noohij" }],
@@ -13283,56 +13283,56 @@ const __iconNode$h = [
13283
13283
  ["path", { d: "M8 12h13", key: "1za7za" }],
13284
13284
  ["path", { d: "M8 19h13", key: "m83p4d" }]
13285
13285
  ];
13286
- const List = createLucideIcon("list", __iconNode$h);
13286
+ const List = createLucideIcon("list", __iconNode$i);
13287
13287
  /**
13288
13288
  * @license lucide-react v0.544.0 - ISC
13289
13289
  *
13290
13290
  * This source code is licensed under the ISC license.
13291
13291
  * See the LICENSE file in the root directory of this source tree.
13292
13292
  */
13293
- const __iconNode$g = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
13294
- const LoaderCircle = createLucideIcon("loader-circle", __iconNode$g);
13293
+ const __iconNode$h = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
13294
+ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$h);
13295
13295
  /**
13296
13296
  * @license lucide-react v0.544.0 - ISC
13297
13297
  *
13298
13298
  * This source code is licensed under the ISC license.
13299
13299
  * See the LICENSE file in the root directory of this source tree.
13300
13300
  */
13301
- const __iconNode$f = [
13301
+ const __iconNode$g = [
13302
13302
  ["path", { d: "M9 18V5l12-2v13", key: "1jmyc2" }],
13303
13303
  ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }],
13304
13304
  ["circle", { cx: "18", cy: "16", r: "3", key: "1hluhg" }]
13305
13305
  ];
13306
- const Music = createLucideIcon("music", __iconNode$f);
13306
+ const Music = createLucideIcon("music", __iconNode$g);
13307
13307
  /**
13308
13308
  * @license lucide-react v0.544.0 - ISC
13309
13309
  *
13310
13310
  * This source code is licensed under the ISC license.
13311
13311
  * See the LICENSE file in the root directory of this source tree.
13312
13312
  */
13313
- const __iconNode$e = [
13313
+ const __iconNode$f = [
13314
13314
  ["path", { d: "M21 7v6h-6", key: "3ptur4" }],
13315
13315
  ["path", { d: "M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7", key: "1kgawr" }]
13316
13316
  ];
13317
- const Redo = createLucideIcon("redo", __iconNode$e);
13317
+ const Redo = createLucideIcon("redo", __iconNode$f);
13318
13318
  /**
13319
13319
  * @license lucide-react v0.544.0 - ISC
13320
13320
  *
13321
13321
  * This source code is licensed under the ISC license.
13322
13322
  * See the LICENSE file in the root directory of this source tree.
13323
13323
  */
13324
- const __iconNode$d = [
13324
+ const __iconNode$e = [
13325
13325
  ["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
13326
13326
  ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
13327
13327
  ];
13328
- const Search = createLucideIcon("search", __iconNode$d);
13328
+ const Search = createLucideIcon("search", __iconNode$e);
13329
13329
  /**
13330
13330
  * @license lucide-react v0.544.0 - ISC
13331
13331
  *
13332
13332
  * This source code is licensed under the ISC license.
13333
13333
  * See the LICENSE file in the root directory of this source tree.
13334
13334
  */
13335
- const __iconNode$c = [
13335
+ const __iconNode$d = [
13336
13336
  [
13337
13337
  "path",
13338
13338
  {
@@ -13342,14 +13342,14 @@ const __iconNode$c = [
13342
13342
  ],
13343
13343
  ["path", { d: "M6 12h16", key: "s4cdu5" }]
13344
13344
  ];
13345
- const SendHorizontal = createLucideIcon("send-horizontal", __iconNode$c);
13345
+ const SendHorizontal = createLucideIcon("send-horizontal", __iconNode$d);
13346
13346
  /**
13347
13347
  * @license lucide-react v0.544.0 - ISC
13348
13348
  *
13349
13349
  * This source code is licensed under the ISC license.
13350
13350
  * See the LICENSE file in the root directory of this source tree.
13351
13351
  */
13352
- const __iconNode$b = [
13352
+ const __iconNode$c = [
13353
13353
  ["path", { d: "M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7", key: "1m0v6g" }],
13354
13354
  [
13355
13355
  "path",
@@ -13359,55 +13359,68 @@ const __iconNode$b = [
13359
13359
  }
13360
13360
  ]
13361
13361
  ];
13362
- const SquarePen = createLucideIcon("square-pen", __iconNode$b);
13362
+ const SquarePen = createLucideIcon("square-pen", __iconNode$c);
13363
13363
  /**
13364
13364
  * @license lucide-react v0.544.0 - ISC
13365
13365
  *
13366
13366
  * This source code is licensed under the ISC license.
13367
13367
  * See the LICENSE file in the root directory of this source tree.
13368
13368
  */
13369
- const __iconNode$a = [
13369
+ const __iconNode$b = [
13370
13370
  ["path", { d: "M16 4H9a3 3 0 0 0-2.83 4", key: "43sutm" }],
13371
13371
  ["path", { d: "M14 12a4 4 0 0 1 0 8H6", key: "nlfj13" }],
13372
13372
  ["line", { x1: "4", x2: "20", y1: "12", y2: "12", key: "1e0a9i" }]
13373
13373
  ];
13374
- const Strikethrough = createLucideIcon("strikethrough", __iconNode$a);
13374
+ const Strikethrough = createLucideIcon("strikethrough", __iconNode$b);
13375
13375
  /**
13376
13376
  * @license lucide-react v0.544.0 - ISC
13377
13377
  *
13378
13378
  * This source code is licensed under the ISC license.
13379
13379
  * See the LICENSE file in the root directory of this source tree.
13380
13380
  */
13381
- const __iconNode$9 = [
13381
+ const __iconNode$a = [
13382
13382
  ["path", { d: "M21 5H3", key: "1fi0y6" }],
13383
13383
  ["path", { d: "M17 12H7", key: "16if0g" }],
13384
13384
  ["path", { d: "M19 19H5", key: "vjpgq2" }]
13385
13385
  ];
13386
- const TextAlignCenter = createLucideIcon("text-align-center", __iconNode$9);
13386
+ const TextAlignCenter = createLucideIcon("text-align-center", __iconNode$a);
13387
13387
  /**
13388
13388
  * @license lucide-react v0.544.0 - ISC
13389
13389
  *
13390
13390
  * This source code is licensed under the ISC license.
13391
13391
  * See the LICENSE file in the root directory of this source tree.
13392
13392
  */
13393
- const __iconNode$8 = [
13393
+ const __iconNode$9 = [
13394
13394
  ["path", { d: "M21 5H3", key: "1fi0y6" }],
13395
13395
  ["path", { d: "M21 12H9", key: "dn1m92" }],
13396
13396
  ["path", { d: "M21 19H7", key: "4cu937" }]
13397
13397
  ];
13398
- const TextAlignEnd = createLucideIcon("text-align-end", __iconNode$8);
13398
+ const TextAlignEnd = createLucideIcon("text-align-end", __iconNode$9);
13399
13399
  /**
13400
13400
  * @license lucide-react v0.544.0 - ISC
13401
13401
  *
13402
13402
  * This source code is licensed under the ISC license.
13403
13403
  * See the LICENSE file in the root directory of this source tree.
13404
13404
  */
13405
- const __iconNode$7 = [
13405
+ const __iconNode$8 = [
13406
13406
  ["path", { d: "M21 5H3", key: "1fi0y6" }],
13407
13407
  ["path", { d: "M15 12H3", key: "6jk70r" }],
13408
13408
  ["path", { d: "M17 19H3", key: "z6ezky" }]
13409
13409
  ];
13410
- const TextAlignStart = createLucideIcon("text-align-start", __iconNode$7);
13410
+ const TextAlignStart = createLucideIcon("text-align-start", __iconNode$8);
13411
+ /**
13412
+ * @license lucide-react v0.544.0 - ISC
13413
+ *
13414
+ * This source code is licensed under the ISC license.
13415
+ * See the LICENSE file in the root directory of this source tree.
13416
+ */
13417
+ const __iconNode$7 = [
13418
+ ["path", { d: "M17 5H3", key: "1cn7zz" }],
13419
+ ["path", { d: "M21 12H8", key: "scolzb" }],
13420
+ ["path", { d: "M21 19H8", key: "13qgcb" }],
13421
+ ["path", { d: "M3 12v7", key: "1ri8j3" }]
13422
+ ];
13423
+ const TextQuote = createLucideIcon("text-quote", __iconNode$7);
13411
13424
  /**
13412
13425
  * @license lucide-react v0.544.0 - ISC
13413
13426
  *
@@ -13742,46 +13755,67 @@ function FieldError({
13742
13755
  }
13743
13756
  );
13744
13757
  }
13745
- function Input({ className, type, ...props }) {
13746
- return /* @__PURE__ */ jsxRuntime.jsx(
13747
- "input",
13748
- {
13749
- type,
13750
- "data-slot": "input",
13751
- className: cn(
13752
- "file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
13753
- "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
13754
- "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
13755
- className
13756
- ),
13757
- ...props
13758
- }
13759
- );
13760
- }
13761
- function InputGroup({ className, ...props }) {
13758
+ const Input = React.forwardRef(
13759
+ ({ className, type, ...props }, ref) => {
13760
+ return /* @__PURE__ */ jsxRuntime.jsx(
13761
+ "input",
13762
+ {
13763
+ ref,
13764
+ type,
13765
+ "data-slot": "input",
13766
+ className: cn(
13767
+ "file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
13768
+ "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
13769
+ "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
13770
+ className
13771
+ ),
13772
+ ...props
13773
+ }
13774
+ );
13775
+ }
13776
+ );
13777
+ Input.displayName = "Input";
13778
+ function Textarea({ className, ...props }) {
13762
13779
  return /* @__PURE__ */ jsxRuntime.jsx(
13763
- "div",
13780
+ "textarea",
13764
13781
  {
13765
- "data-slot": "input-group",
13766
- role: "group",
13782
+ "data-slot": "textarea",
13767
13783
  className: cn(
13768
- "group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none",
13769
- "h-9 min-w-0 has-[>textarea]:h-auto",
13770
- // Variants based on alignment.
13771
- "has-[>[data-align=inline-start]]:[&>input]:pl-2",
13772
- "has-[>[data-align=inline-end]]:[&>input]:pr-2",
13773
- "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3",
13774
- "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3",
13775
- // Focus state.
13776
- "has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]",
13777
- // Error state.
13778
- "has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40",
13784
+ "border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
13779
13785
  className
13780
13786
  ),
13781
13787
  ...props
13782
13788
  }
13783
13789
  );
13784
13790
  }
13791
+ const InputGroup = React.forwardRef(
13792
+ ({ className, ...props }, ref) => {
13793
+ return /* @__PURE__ */ jsxRuntime.jsx(
13794
+ "div",
13795
+ {
13796
+ ref,
13797
+ "data-slot": "input-group",
13798
+ role: "group",
13799
+ className: cn(
13800
+ "group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none",
13801
+ "h-9 min-w-0 has-[>textarea]:h-auto",
13802
+ // Variants based on alignment.
13803
+ "has-[>[data-align=inline-start]]:[&>input]:pl-2",
13804
+ "has-[>[data-align=inline-end]]:[&>input]:pr-2",
13805
+ "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3",
13806
+ "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3",
13807
+ // Focus state.
13808
+ "has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]",
13809
+ // Error state.
13810
+ "has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40",
13811
+ className
13812
+ ),
13813
+ ...props
13814
+ }
13815
+ );
13816
+ }
13817
+ );
13818
+ InputGroup.displayName = "InputGroup";
13785
13819
  const inputGroupAddonVariants = cva(
13786
13820
  "text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50",
13787
13821
  {
@@ -13798,14 +13832,11 @@ const inputGroupAddonVariants = cva(
13798
13832
  }
13799
13833
  }
13800
13834
  );
13801
- function InputGroupAddon({
13802
- className,
13803
- align = "inline-start",
13804
- ...props
13805
- }) {
13835
+ const InputGroupAddon = React.forwardRef(({ className, align = "inline-start", ...props }, ref) => {
13806
13836
  return /* @__PURE__ */ jsxRuntime.jsx(
13807
13837
  "div",
13808
13838
  {
13839
+ ref,
13809
13840
  role: "group",
13810
13841
  "data-slot": "input-group-addon",
13811
13842
  "data-align": align,
@@ -13819,20 +13850,86 @@ function InputGroupAddon({
13819
13850
  ...props
13820
13851
  }
13821
13852
  );
13822
- }
13823
- function InputGroupInput({ className, ...props }) {
13853
+ });
13854
+ InputGroupAddon.displayName = "InputGroupAddon";
13855
+ const inputGroupButtonVariants = cva("text-sm shadow-none flex gap-2 items-center", {
13856
+ variants: {
13857
+ size: {
13858
+ xs: "h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2",
13859
+ sm: "h-8 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2.5",
13860
+ "icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
13861
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0"
13862
+ }
13863
+ },
13864
+ defaultVariants: {
13865
+ size: "xs"
13866
+ }
13867
+ });
13868
+ const InputGroupButton = React.forwardRef(({ className, type = "button", variant = "ghost", size: size2 = "xs", ...props }, ref) => {
13824
13869
  return /* @__PURE__ */ jsxRuntime.jsx(
13825
- Input,
13870
+ Button,
13826
13871
  {
13827
- "data-slot": "input-group-control",
13828
- className: cn(
13829
- "flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent",
13830
- className
13831
- ),
13872
+ ref,
13873
+ type,
13874
+ "data-size": size2,
13875
+ variant,
13876
+ className: cn(inputGroupButtonVariants({ size: size2 }), className),
13832
13877
  ...props
13833
13878
  }
13834
13879
  );
13835
- }
13880
+ });
13881
+ InputGroupButton.displayName = "InputGroupButton";
13882
+ const InputGroupText = React.forwardRef(
13883
+ ({ className, ...props }, ref) => {
13884
+ return /* @__PURE__ */ jsxRuntime.jsx(
13885
+ "span",
13886
+ {
13887
+ ref,
13888
+ className: cn(
13889
+ "text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
13890
+ className
13891
+ ),
13892
+ ...props
13893
+ }
13894
+ );
13895
+ }
13896
+ );
13897
+ InputGroupText.displayName = "InputGroupText";
13898
+ const InputGroupInput = React.forwardRef(
13899
+ ({ className, ref: legacyRef, ...props }, ref) => {
13900
+ console.log({ legacyRef });
13901
+ return /* @__PURE__ */ jsxRuntime.jsx(
13902
+ Input,
13903
+ {
13904
+ ref,
13905
+ "data-slot": "input-group-control",
13906
+ className: cn(
13907
+ "flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent",
13908
+ className
13909
+ ),
13910
+ ...props
13911
+ }
13912
+ );
13913
+ }
13914
+ );
13915
+ InputGroupInput.displayName = "InputGroupInput";
13916
+ const InputGroupTextarea = React.forwardRef(
13917
+ ({ className, ...props }, ref) => {
13918
+ return /* @__PURE__ */ jsxRuntime.jsx(
13919
+ Textarea,
13920
+ {
13921
+ ref,
13922
+ "data-slot": "input-group-control",
13923
+ className: cn(
13924
+ "flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent",
13925
+ className
13926
+ ),
13927
+ ...props
13928
+ }
13929
+ );
13930
+ }
13931
+ );
13932
+ InputGroupTextarea.displayName = "InputGroupTextarea";
13836
13933
  const Spinner = React.forwardRef(({ className, ...props }, ref) => {
13837
13934
  return /* @__PURE__ */ jsxRuntime.jsx(
13838
13935
  LoaderCircle,
@@ -14520,6 +14617,7 @@ const LinkDecoratorModal = ({
14520
14617
  const [isValid, setIsValid] = React.useState(void 0);
14521
14618
  const [isUpdate, setIsUpdate] = React.useState(false);
14522
14619
  const [isLoading, setIsLoading] = React.useState(false);
14620
+ const textInputRef = React.useRef(null);
14523
14621
  const handleOpenChange = (open2) => {
14524
14622
  onOpenChange?.(open2);
14525
14623
  if (!open2 || !editor) return;
@@ -14562,7 +14660,11 @@ const LinkDecoratorModal = ({
14562
14660
  };
14563
14661
  const handleKeyDown = (e) => {
14564
14662
  if (e.key === "Enter") {
14565
- onOpenChange?.(false);
14663
+ e.preventDefault();
14664
+ const isTextInput = textInputRef.current === e.target;
14665
+ if (isTextInput || hideTextInput) return handleInsertLink(link, text2, uid ?? void 0);
14666
+ console.log("Enter", isTextInput);
14667
+ textInputRef?.current?.focus();
14566
14668
  }
14567
14669
  };
14568
14670
  React.useEffect(() => {
@@ -14577,7 +14679,7 @@ const LinkDecoratorModal = ({
14577
14679
  }, [defaultValues]);
14578
14680
  return /* @__PURE__ */ jsxRuntime.jsxs(Dialog, { open, onOpenChange: handleOpenChange, children: [
14579
14681
  children ? /* @__PURE__ */ jsxRuntime.jsx(DialogTrigger, { asChild: true, children }) : null,
14580
- /* @__PURE__ */ jsxRuntime.jsxs(DialogContent, { onKeyDown: handleKeyDown, className: "-translate-1/2", children: [
14682
+ /* @__PURE__ */ jsxRuntime.jsxs(DialogContent, { className: "-translate-1/2", children: [
14581
14683
  /* @__PURE__ */ jsxRuntime.jsx(DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { children: "Add Link" }) }),
14582
14684
  /* @__PURE__ */ jsxRuntime.jsx(FieldSet, { children: /* @__PURE__ */ jsxRuntime.jsxs(FieldGroup, { className: "gap-3", children: [
14583
14685
  /* @__PURE__ */ jsxRuntime.jsxs(Field, { className: "gap-1.5", children: [
@@ -14592,6 +14694,7 @@ const LinkDecoratorModal = ({
14592
14694
  value: link,
14593
14695
  onChange: handleChangeLink,
14594
14696
  onBlur: handleBlurLinkInput,
14697
+ onKeyDown: handleKeyDown,
14595
14698
  placeholder: "https://x.com/shadcn"
14596
14699
  }
14597
14700
  ),
@@ -14605,8 +14708,10 @@ const LinkDecoratorModal = ({
14605
14708
  /* @__PURE__ */ jsxRuntime.jsx(
14606
14709
  InputGroupInput,
14607
14710
  {
14711
+ ref: textInputRef,
14608
14712
  value: text2,
14609
14713
  onChange: handleChangeText,
14714
+ onKeyDown: handleKeyDown,
14610
14715
  placeholder: "Text to display"
14611
14716
  }
14612
14717
  ),
@@ -18348,42 +18453,60 @@ function findFirstByType(node, type, options = {}) {
18348
18453
  const results = findByType(node, type, { ...options, findAll: false });
18349
18454
  return results[0] || null;
18350
18455
  }
18351
- const truncateTextWithNodes = (json, maxLength = 200, mentionSuggestionChar = "@") => {
18456
+ const truncateTextWithNodes = (json, maxLength = 200) => {
18352
18457
  let charCount = 0;
18353
18458
  let result = "";
18354
18459
  let reachedLimit = false;
18355
- traverse(
18356
- json,
18357
- (node) => {
18358
- if (reachedLimit) return false;
18359
- if (node.type === "text") {
18360
- const text2 = node.text ?? "";
18361
- const hasLinkMark = node.marks?.some((m) => m.type === "customLink");
18362
- if (hasLinkMark) {
18460
+ const cloneWithTruncation = (node) => {
18461
+ if (reachedLimit) return null;
18462
+ if (node.type === "text") {
18463
+ const text2 = node.text ?? "";
18464
+ const hasLinkMark = node.marks?.some((m) => m.type === "customLink");
18465
+ if (hasLinkMark) {
18466
+ result += text2;
18467
+ charCount += text2.length;
18468
+ return node;
18469
+ } else {
18470
+ if (charCount + text2.length <= maxLength) {
18363
18471
  result += text2;
18364
18472
  charCount += text2.length;
18473
+ return node;
18365
18474
  } else {
18366
- if (charCount + text2.length <= maxLength) {
18367
- result += text2;
18368
- charCount += text2.length;
18369
- } else {
18370
- const remaining = maxLength - charCount;
18371
- result += text2.slice(0, remaining);
18372
- charCount += remaining;
18373
- reachedLimit = true;
18374
- return false;
18475
+ const remaining = maxLength - charCount;
18476
+ result += text2.slice(0, remaining);
18477
+ charCount += remaining;
18478
+ reachedLimit = true;
18479
+ return { ...node, text: text2.slice(0, remaining) };
18480
+ }
18481
+ }
18482
+ } else if (node.type === "mention") {
18483
+ const label = node.attrs?.label ?? "";
18484
+ const mentionText = `${node.attrs?.mentionSuggestionChar}${label}`;
18485
+ result += mentionText;
18486
+ charCount += mentionText.length;
18487
+ return node;
18488
+ } else {
18489
+ const clonedNode = { type: node.type };
18490
+ if (node.attrs) clonedNode.attrs = node.attrs;
18491
+ if (node.marks) clonedNode.marks = node.marks;
18492
+ if (node.content) {
18493
+ clonedNode.content = [];
18494
+ for (const child of node.content) {
18495
+ if (reachedLimit) break;
18496
+ const clonedChild = cloneWithTruncation(child);
18497
+ if (clonedChild) {
18498
+ clonedNode.content.push(clonedChild);
18375
18499
  }
18376
18500
  }
18377
- } else if (node.type === "mention") {
18378
- const label = node.attrs?.label ?? "";
18379
- const mentionText = `${mentionSuggestionChar}${label}`;
18380
- result += mentionText;
18381
- charCount += mentionText.length;
18382
18501
  }
18383
- },
18384
- { order: "depth-first", includeRoot: true }
18385
- );
18386
- return result.trim();
18502
+ return clonedNode;
18503
+ }
18504
+ };
18505
+ const truncatedJson = cloneWithTruncation(json);
18506
+ return {
18507
+ text: result.trim(),
18508
+ json: truncatedJson || { type: json.type }
18509
+ };
18387
18510
  };
18388
18511
  const TOOLBAR_FEATURES = {
18389
18512
  [EditorTypes.Text]: {
@@ -18710,6 +18833,16 @@ const Toolbar = ({
18710
18833
  ),
18711
18834
  /* @__PURE__ */ jsxRuntime.jsx(VerticalSeparator, {}),
18712
18835
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "hidden xl:flex flex-wrap items-center gap-2", children: [
18836
+ /* @__PURE__ */ jsxRuntime.jsx(
18837
+ ToolbarButton,
18838
+ {
18839
+ icon: TextQuote,
18840
+ tooltip: "BlockQuote",
18841
+ onClick: actions?.toggleBlockquote,
18842
+ active: editorState?.isBlockquote,
18843
+ disabled: !editorState?.canBlockquote
18844
+ }
18845
+ ),
18713
18846
  /* @__PURE__ */ jsxRuntime.jsx(
18714
18847
  ToolbarButton,
18715
18848
  {
@@ -18792,6 +18925,16 @@ const Toolbar = ({
18792
18925
  disabled: !editorState?.canStrike
18793
18926
  }
18794
18927
  ) }),
18928
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
18929
+ ToolbarButton,
18930
+ {
18931
+ icon: TextQuote,
18932
+ tooltip: "BlockQuote",
18933
+ onClick: actions?.toggleBlockquote,
18934
+ active: editorState?.isBlockquote,
18935
+ disabled: !editorState?.canBlockquote
18936
+ }
18937
+ ) }),
18795
18938
  /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
18796
18939
  ToolbarButton,
18797
18940
  {
@@ -20970,7 +21113,7 @@ const OPTION_COLORS = ["#0091d5", "#fcc600", "#ce50a0", "#139e6b"];
20970
21113
  const POLL_LIMITS = {
20971
21114
  MIN: 1,
20972
21115
  MAX: 4,
20973
- MAX_TEXT_LENGTH: 50
21116
+ MAX_TEXT_LENGTH: 40
20974
21117
  };
20975
21118
  const TextChoiceCard = ({ choice, index: index2, canRemove, onRemove }) => {
20976
21119
  const backgroundColor = OPTION_COLORS[index2 % OPTION_COLORS.length];
@@ -21157,10 +21300,16 @@ const PollHeader = ({ choiceCount, remainingSlots }) => /* @__PURE__ */ jsxRunti
21157
21300
  " left"
21158
21301
  ] })
21159
21302
  ] });
21160
- const EmptySlot = ({ slotNumber, disabled, onDrop }) => {
21303
+ const EmptySlot = ({
21304
+ slotNumber,
21305
+ disabled,
21306
+ onDrop,
21307
+ isLoading = false
21308
+ }) => {
21161
21309
  const ref = React.useRef(null);
21162
21310
  const [isDragging, setIsDragging] = React.useState(false);
21163
21311
  const handleDragOver = (e) => {
21312
+ if (disabled || isLoading) return;
21164
21313
  e.preventDefault();
21165
21314
  e.stopPropagation();
21166
21315
  setIsDragging(true);
@@ -21171,6 +21320,7 @@ const EmptySlot = ({ slotNumber, disabled, onDrop }) => {
21171
21320
  setIsDragging(false);
21172
21321
  };
21173
21322
  const handleDrop = (e) => {
21323
+ if (disabled || isLoading) return;
21174
21324
  e.preventDefault();
21175
21325
  e.stopPropagation();
21176
21326
  setIsDragging(false);
@@ -21188,6 +21338,10 @@ const EmptySlot = ({ slotNumber, disabled, onDrop }) => {
21188
21338
  void onDrop(files);
21189
21339
  e.target.value = "";
21190
21340
  };
21341
+ const handleClick = () => {
21342
+ if (disabled || isLoading) return;
21343
+ ref.current?.click();
21344
+ };
21191
21345
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
21192
21346
  /* @__PURE__ */ jsxRuntime.jsx(
21193
21347
  "input",
@@ -21198,35 +21352,41 @@ const EmptySlot = ({ slotNumber, disabled, onDrop }) => {
21198
21352
  multiple: true,
21199
21353
  className: "hidden",
21200
21354
  onChange: handleFileSelect,
21201
- disabled,
21355
+ disabled: disabled || isLoading,
21202
21356
  "aria-label": "Upload image or video for poll choice"
21203
21357
  }
21204
21358
  ),
21205
- /* @__PURE__ */ jsxRuntime.jsxs(
21359
+ /* @__PURE__ */ jsxRuntime.jsx(
21206
21360
  "div",
21207
21361
  {
21208
21362
  onDragOver: handleDragOver,
21209
21363
  onDragLeave: handleDragLeave,
21210
21364
  onDrop: handleDrop,
21211
- onClick: () => ref.current?.click(),
21365
+ onClick: handleClick,
21212
21366
  className: cn(
21213
- "cursor-pointer rounded-xl border-2 border-dashed min-h-16 lg:min-h-32 flex flex-col items-center justify-center text-sm lg:gap-2 transition-all duration-200",
21214
- isDragging ? "border-primary bg-primary/10 text-primary scale-[1.02] shadow-md" : "border-muted-foreground/20 text-muted-foreground/60 bg-muted/20"
21367
+ "rounded-xl border-2 border-dashed min-h-16 lg:min-h-32 flex flex-col items-center justify-center text-sm lg:gap-2 transition-all duration-200",
21368
+ isLoading && "cursor-not-allowed opacity-75",
21369
+ !isLoading && !disabled && "cursor-pointer",
21370
+ disabled && !isLoading && "cursor-not-allowed opacity-50",
21371
+ isDragging && !isLoading ? "border-primary bg-primary/10 text-primary scale-[1.02] shadow-md" : isLoading ? "border-primary/50 bg-primary/5 text-primary" : "border-muted-foreground/20 text-muted-foreground/60 bg-muted/20"
21215
21372
  ),
21216
- children: [
21373
+ children: isLoading ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
21374
+ /* @__PURE__ */ jsxRuntime.jsx(Spinner, {}),
21375
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-medium text-primary", children: "Uploading..." })
21376
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
21217
21377
  /* @__PURE__ */ jsxRuntime.jsx(
21218
21378
  "div",
21219
21379
  {
21220
21380
  className: cn(
21221
- "text-xl lg:text-2xl font-bold transition-colors",
21381
+ "text-xl lg:text-2xl font-bold transition-colors pointer-events-none",
21222
21382
  isDragging ? "text-primary/50" : "text-muted-foreground/30"
21223
21383
  ),
21224
21384
  children: slotNumber
21225
21385
  }
21226
21386
  ),
21227
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs", children: isDragging ? "Drop here" : "Drag & Drop" }),
21228
- isDragging && /* @__PURE__ */ jsxRuntime.jsx(Image$1, { className: "h-5 w-5 animate-bounce" })
21229
- ]
21387
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs pointer-events-none", children: isDragging ? "Drop here" : "Drag & Drop" }),
21388
+ isDragging && /* @__PURE__ */ jsxRuntime.jsx(Image$1, { className: "pointer-events-none h-5 w-5 animate-bounce" })
21389
+ ] })
21230
21390
  }
21231
21391
  )
21232
21392
  ] });
@@ -21282,58 +21442,146 @@ const createPollMediaOption = (uploadedFile, index2, searchFrom) => {
21282
21442
  option_id: v4()
21283
21443
  };
21284
21444
  };
21445
+ const isPlaceholder = (item) => {
21446
+ return "type" in item && item.type === "placeholder";
21447
+ };
21285
21448
  const PollCreator = ({ choices, onChange }) => {
21286
21449
  const { fileStore } = useApi();
21287
21450
  const [textValue, setTextValue] = React.useState("");
21288
- const remainingSlots = POLL_LIMITS.MAX - choices.length;
21289
- const canAddMore = choices.length < POLL_LIMITS.MAX;
21290
- const canRemoveChoices = choices.length > POLL_LIMITS.MIN;
21451
+ const [internalChoices, setInternalChoices] = React.useState(choices);
21452
+ const isInternalUpdate = React.useRef(false);
21453
+ React.useEffect(() => {
21454
+ if (!isInternalUpdate.current) {
21455
+ setInternalChoices(choices);
21456
+ }
21457
+ isInternalUpdate.current = false;
21458
+ }, [choices]);
21459
+ const remainingSlots = POLL_LIMITS.MAX - internalChoices.length;
21460
+ const canAddMore = internalChoices.length < POLL_LIMITS.MAX;
21461
+ const actualChoices = internalChoices.filter((c) => !isPlaceholder(c));
21462
+ const canRemoveChoices = actualChoices.length > POLL_LIMITS.MIN;
21463
+ const syncToParent = (items) => {
21464
+ const actual = items.filter((c) => !isPlaceholder(c));
21465
+ isInternalUpdate.current = true;
21466
+ onChange(actual);
21467
+ };
21468
+ const updateChoices = (items) => {
21469
+ setInternalChoices(items);
21470
+ setTimeout(() => {
21471
+ syncToParent(items);
21472
+ }, 0);
21473
+ };
21291
21474
  const handleAddText = () => {
21292
21475
  if (!textValue.trim() || !canAddMore) return;
21293
- const newItem = createTextOption(textValue, choices.length);
21294
- onChange([...choices, newItem]);
21476
+ const newItem = createTextOption(textValue, internalChoices.length);
21477
+ updateChoices([...internalChoices, newItem]);
21295
21478
  setTextValue("");
21296
21479
  };
21297
21480
  const handleFileUpload = async (files) => {
21298
21481
  if (!files || !canAddMore) return;
21299
21482
  const filesArray = files.slice(0, remainingSlots);
21300
- const uploadPromises = filesArray.map(async (file, index2) => {
21301
- try {
21302
- const result = await fileStore.uploadImage(file);
21303
- return createPollMediaOption(result, index2);
21304
- } catch (error) {
21305
- console.error("Upload failed for", file.name, error);
21306
- return null;
21307
- }
21308
- });
21309
- const results = await Promise.all(uploadPromises);
21310
- const successful = results.filter((item) => item !== null);
21311
- onChange([...choices, ...successful]);
21483
+ const startIndex = internalChoices.length;
21484
+ const placeholders = filesArray.map((_, i) => ({
21485
+ type: "placeholder",
21486
+ key: `placeholder-${Date.now()}-${i}`
21487
+ }));
21488
+ const withPlaceholders = [...internalChoices, ...placeholders];
21489
+ setInternalChoices(withPlaceholders);
21490
+ try {
21491
+ const uploadPromises = filesArray.map(async (file, index2) => {
21492
+ try {
21493
+ const result = await fileStore.uploadImage(file);
21494
+ return createPollMediaOption(result, startIndex + index2);
21495
+ } catch (error) {
21496
+ console.error("Upload failed for", file.name, error);
21497
+ return null;
21498
+ }
21499
+ });
21500
+ const results = await Promise.all(uploadPromises);
21501
+ setInternalChoices((current) => {
21502
+ const updated = [...current];
21503
+ results.forEach((result, index2) => {
21504
+ const placeholderIndex = startIndex + index2;
21505
+ if (result !== null && placeholderIndex < updated.length) {
21506
+ updated[placeholderIndex] = result;
21507
+ }
21508
+ });
21509
+ const final = updated.filter((item) => !isPlaceholder(item));
21510
+ setTimeout(() => {
21511
+ syncToParent(final);
21512
+ }, 0);
21513
+ return final;
21514
+ });
21515
+ } catch (error) {
21516
+ console.error("Unexpected error during file upload:", error);
21517
+ setInternalChoices((current) => {
21518
+ const withoutPlaceholders = current.filter((c) => !isPlaceholder(c));
21519
+ setTimeout(() => {
21520
+ syncToParent(withoutPlaceholders);
21521
+ }, 0);
21522
+ return withoutPlaceholders;
21523
+ });
21524
+ }
21312
21525
  };
21313
- const handleUrlUpload = (url, searchFrom) => {
21314
- const index2 = POLL_LIMITS.MAX - remainingSlots;
21315
- fileStore.uploadUrl(url).then((result) => {
21526
+ const handleUrlUpload = async (url, searchFrom) => {
21527
+ if (!canAddMore) return;
21528
+ const index2 = internalChoices.length;
21529
+ const placeholder = {
21530
+ type: "placeholder",
21531
+ key: `placeholder-${Date.now()}`
21532
+ };
21533
+ const withPlaceholder = [...internalChoices, placeholder];
21534
+ setInternalChoices(withPlaceholder);
21535
+ try {
21536
+ const result = await fileStore.uploadUrl(url);
21316
21537
  const choice = createPollMediaOption(result, index2, searchFrom);
21317
- onChange([...choices, choice]);
21318
- }).catch((err) => console.log(err));
21538
+ setInternalChoices((current) => {
21539
+ const updated = [...current];
21540
+ if (index2 < updated.length && isPlaceholder(updated[index2])) {
21541
+ updated[index2] = choice;
21542
+ }
21543
+ setTimeout(() => {
21544
+ syncToParent(updated);
21545
+ }, 0);
21546
+ return updated;
21547
+ });
21548
+ } catch (error) {
21549
+ console.error("URL upload failed:", error);
21550
+ setInternalChoices((current) => {
21551
+ const withoutPlaceholder = current.filter((c) => !isPlaceholder(c));
21552
+ setTimeout(() => {
21553
+ syncToParent(withoutPlaceholder);
21554
+ }, 0);
21555
+ return withoutPlaceholder;
21556
+ });
21557
+ }
21319
21558
  };
21320
21559
  const handleRemove = (index2) => {
21321
21560
  if (!canRemoveChoices) return;
21322
- const updated = choices.filter((_, i) => i !== index2);
21323
- onChange(updated);
21561
+ const updated = internalChoices.filter((_, i) => i !== index2);
21562
+ updateChoices(updated);
21324
21563
  };
21325
- console.log({ choices });
21326
21564
  return /* @__PURE__ */ jsxRuntime.jsxs(
21327
21565
  "div",
21328
21566
  {
21329
21567
  "data-type": "poll",
21330
21568
  className: "w-full border border-border rounded-xl bg-card shadow-sm overflow-hidden",
21331
21569
  children: [
21332
- /* @__PURE__ */ jsxRuntime.jsx(PollHeader, { choiceCount: choices.length, remainingSlots }),
21570
+ /* @__PURE__ */ jsxRuntime.jsx(PollHeader, { choiceCount: actualChoices.length, remainingSlots }),
21333
21571
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sm:p-4 p-2 space-y-6", children: [
21334
21572
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 lg:grid-cols-4 gap-3 sm:gap-4", children: [
21335
- choices.map(
21336
- (choice, index2) => isTextChoice(choice) ? /* @__PURE__ */ jsxRuntime.jsx(
21573
+ internalChoices.map(
21574
+ (choice, index2) => isPlaceholder(choice) ? /* @__PURE__ */ jsxRuntime.jsx(
21575
+ EmptySlot,
21576
+ {
21577
+ disabled: true,
21578
+ isLoading: true,
21579
+ onDrop: async () => {
21580
+ },
21581
+ slotNumber: index2 + 1
21582
+ },
21583
+ choice.key
21584
+ ) : isTextChoice(choice) ? /* @__PURE__ */ jsxRuntime.jsx(
21337
21585
  TextChoiceCard,
21338
21586
  {
21339
21587
  choice,
@@ -21357,8 +21605,9 @@ const PollCreator = ({ choices, onChange }) => {
21357
21605
  EmptySlot,
21358
21606
  {
21359
21607
  disabled: !canAddMore,
21608
+ isLoading: false,
21360
21609
  onDrop: handleFileUpload,
21361
- slotNumber: choices.length + i + 1
21610
+ slotNumber: internalChoices.length + i + 1
21362
21611
  },
21363
21612
  `empty-${i}`
21364
21613
  ))
@@ -21428,7 +21677,7 @@ const Poll = core.Node.create({
21428
21677
  const nodeTypeName = this.name;
21429
21678
  return [
21430
21679
  new Plugin({
21431
- key: new PluginKey("smartMediaUpload"),
21680
+ key: new PluginKey("pollKeyHandlerPlugin"),
21432
21681
  props: {
21433
21682
  /**
21434
21683
  * Prevent keyboard deletion when the poll node is selected
@@ -27559,7 +27808,7 @@ const configureMentionExtension = (api, mfs, store) => {
27559
27808
  `${char}${label}`
27560
27809
  ];
27561
27810
  }
27562
- const href = char === "@" ? `/user/${id}` : `/hashtag/${id}`;
27811
+ const href = char === "@" ? `/users/${id}` : `/groups/${id}`;
27563
27812
  return [
27564
27813
  "a",
27565
27814
  {
@@ -28285,7 +28534,17 @@ const getLinkExtensions = ({ api, store, user }) => {
28285
28534
  const getEditorProps = () => ({
28286
28535
  attributes: {
28287
28536
  class: cn(
28288
- "max-w-full prose prose-sm sm:prose-base px-4 py-2 prose-img:my-3 prose-figcaption:text-xs prose-code:text-sm prose-codeblock:text-sm prose-a:text-blue-500 focus:outline-none"
28537
+ `max-w-full prose prose-sm sm:prose-base px-4 py-2 prose-img:my-3
28538
+
28539
+ prose-blockquote:p-4 prose-blockquote:my-4 prose-blockquote:border-s-4
28540
+ prose-blockquote:border-gray-300 prose-blockquote:bg-gray-50
28541
+ prose-blockquote:dark:border-gray-500 prose-blockquote:dark:bg-gray-800
28542
+
28543
+ prose-blockquote:[&>p]:text-xl prose-blockquote:[&>p]:italic prose-blockquote:[&>p]:font-medium prose-blockquote:[&>p]:leading-relaxed prose-blockquote:[&>p]:text-gray-900 prose-blockquote:[&>p]:dark:text-white
28544
+
28545
+
28546
+ prose-figcaption:text-xs prose-code:text-sm
28547
+ prose-codeblock:text-sm prose-a:text-blue-500 focus:outline-none`
28289
28548
  )
28290
28549
  }
28291
28550
  });
@@ -28301,6 +28560,7 @@ const createEditorActions = (editor) => ({
28301
28560
  insertLink: (url) => editor?.chain().focus().setLink({ href: url }).run(),
28302
28561
  toggleBulletList: () => editor?.chain().focus().toggleBulletList().run(),
28303
28562
  toggleOrderedList: () => editor?.chain().focus().toggleOrderedList().run(),
28563
+ toggleBlockquote: () => editor?.chain().focus().toggleBlockquote().run(),
28304
28564
  toggleCode: () => editor?.chain().focus().toggleCode().run(),
28305
28565
  toggleCodeBlock: () => editor?.chain().focus().toggleCodeBlock().run(),
28306
28566
  toggleTextAlign: (align) => editor?.chain().focus().setTextAlign(align).run(),
@@ -30126,8 +30386,9 @@ const generateHtmlPostPayload = ({
30126
30386
  }) => {
30127
30387
  const { html: html2, json } = getEditorData(editor);
30128
30388
  const commons = getCommonPayload();
30129
- console.log({ json });
30130
- const body = truncateTextWithNodes(json, 200) ?? "";
30389
+ const { text: body, json: truncatedJson } = truncateTextWithNodes(json, 80) ?? "";
30390
+ const { mentionData } = getMentionDataPayload(truncatedJson);
30391
+ console.log({ body, truncatedJson, mentionData });
30131
30392
  const items = new Array(findFirstByType(json, "media")?.attrs?.payload).filter(
30132
30393
  Boolean
30133
30394
  );
@@ -30139,7 +30400,7 @@ const generateHtmlPostPayload = ({
30139
30400
  items,
30140
30401
  htmlBody,
30141
30402
  sendCrossMention,
30142
- mentionData: []
30403
+ mentionData
30143
30404
  };
30144
30405
  };
30145
30406
  const generateMediaPostPayload = ({
@@ -30188,8 +30449,8 @@ const generatePollPostPayload = ({
30188
30449
  const { items } = getPollItemsPayload(json);
30189
30450
  const polls = items.length === 1 ? items.concat(items).map((item, index2) => ({
30190
30451
  ...item,
30191
- key: index2 === 0 ? item.key : v4(),
30192
- option_id: index2 === 0 ? item.key : v4(),
30452
+ key: item?.key ?? v4(),
30453
+ option_id: index2 === 0 ? item.option_id : v4(),
30193
30454
  option_color: OPTION_COLORS[index2 % OPTION_COLORS.length]
30194
30455
  })) : items;
30195
30456
  console.log({ polls });
@@ -30256,7 +30517,7 @@ const PostBuilderEditor = ({
30256
30517
  /* @__PURE__ */ jsxRuntime.jsx(react.EditorContext.Provider, { value: providerValue, children: openModal ? /* @__PURE__ */ jsxRuntime.jsx(Dialog, { open: openModal, onOpenChange: onModalOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(
30257
30518
  DialogContent,
30258
30519
  {
30259
- className: "bg-transparent shadow-none border-0 p-3 lg:max-w-4xl shrink-0 !max-h-[calc(100dvh-7rem)] flex flex-col overflow-y-auto -translate-1/2",
30520
+ className: "bg-transparent shadow-none border-0 p-3 lg:max-w-4xl shrink-0 max-h-[calc(100dvh-7rem)]! flex flex-col overflow-y-auto -translate-1/2",
30260
30521
  showCloseButton: false,
30261
30522
  children: [
30262
30523
  /* @__PURE__ */ jsxRuntime.jsxs(DialogHeader, { children: [
@@ -30279,7 +30540,7 @@ const PostBuilderEditor = ({
30279
30540
  )
30280
30541
  ]
30281
30542
  }
30282
- ) }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 flex flex-col space-y-3 max-w-full max-h-[calc(100dvh-7rem)]", children: [
30543
+ ) }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "prose-blockquote: flex-1 flex flex-col space-y-3 max-w-full max-h-[calc(100dvh-7rem)]", children: [
30283
30544
  !hideGroupSelector && /* @__PURE__ */ jsxRuntime.jsx(GroupSelector, { user, store }),
30284
30545
  /* @__PURE__ */ jsxRuntime.jsx(
30285
30546
  PostBuilderEditorInstance,