1(function() { 2 try { 3 var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; 4 e.SENTRY_RELEASE = { id: "b96dc26" }; 5 var n = new e.Error().stack; 6 n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "5ea525a1-47ec-49e5-ab8d-48d9a728774b", e._sentryDebugIdIdentifier = "sentry-dbid-5ea525a1-47ec-49e5-ab8d-48d9a728774b"); 7 } catch (e) {} 8})(); 9import { n as __esmMin } from "./rolldown-runtime-sLwMD6dS.js"; 10import { Et as DropdownMenuTrigger, bt as DropdownMenuItem, ct as AlertTitle, ft as DropdownMenu, kt as init_dropdown_menu, lt as init_alert, mt as DropdownMenuContent, nt as Alert } from "./controllers-jdPQjaCB.js"; 11import { i as isFunction } from "./type-guards-DVyG5ljW.js"; 12import { i as require_compiler_runtime, t as require_jsx_runtime } from "./jsx-runtime-CHSMGLHp.js"; 13import { t as require_react } from "./react-CrLPhuc5.js"; 14import { n as init_icon, t as Icon } from "./icon-BNzYbsdJ.js"; 15import { r as init_button, t as Button } from "./button-DOiPZHfy.js"; 16import { i as init_popover, n as PopoverContent, r as PopoverTrigger, t as Popover } from "./popover-BGt3etf0.js"; 17import { r as init_separator, t as Separator } from "./separator-D5aQTBY-.js"; 18//#region app/frontend/react/components/signature_preview_content.tsx 19function SignaturePreviewContent(t0) { 20 const $ = (0, import_compiler_runtime.c)(3); 21 const { previewContent } = t0; 22 let t1; 23 if ($[0] === Symbol.for("react.memo_cache_sentinel")) { 24 t1 = /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("div", { 25 className: "signature-preview__skeleton", 26 children: /* @__PURE__ */ (0, import_jsx_runtime$1.jsxs)("svg", { 27 xmlns: "http://www.w3.org/2000/svg", 28 width: "228", 29 height: "85", 30 fill: "none", 31 children: [ 32 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 33 fill: "#DFE3E8", 34 d: "M184.438 80h6.016v4.8h-6.016V80Z" 35 }), 36 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 37 fill: "#DFE3E8", 38 d: "M175.281 80h10.592v4.8h-10.592V80Z" 39 }), 40 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 41 fill: "#DFE3E8", 42 d: "M170.703 80h6.016v4.8h-6.016V80Z" 43 }), 44 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 45 fill: "#DFE3E8", 46 d: "M161.547 80h10.592v4.8h-10.592V80Z" 47 }), 48 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 49 fill: "#DFE3E8", 50 d: "M156.969 80h6.016v4.8h-6.016V80Z" 51 }), 52 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 53 fill: "#DFE3E8", 54 d: "M147.812 80h10.592v4.8h-10.592V80Z" 55 }), 56 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 57 fill: "#DFE3E8", 58 d: "M138.656 80h10.592v4.8h-10.592V80Z" 59 }), 60 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 61 fill: "#DFE3E8", 62 d: "M129.5 80h10.592v4.8H129.5V80Z" 63 }), 64 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 65 fill: "#DFE3E8", 66 d: "M124.922 80h6.016v4.8h-6.016V80ZM106.172 80h10.592v4.8h-10.592V80Z" 67 }), 68 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 69 fill: "#DFE3E8", 70 d: "M97.016 80h10.592v4.8H97.016V80Z" 71 }), 72 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 73 fill: "#DFE3E8", 74 d: "M87.86 80H98.45v4.8H87.86V80ZM73.688 80h6.016v4.8h-6.016V80Z" 75 }), 76 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 77 fill: "#DFE3E8", 78 d: "M69.11 80h6.015v4.8H69.11V80Z" 79 }), 80 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 81 fill: "#DFE3E8", 82 d: "M59.953 80h10.592v4.8H59.953V80ZM45.781 80h6.016v4.8h-6.016V80Z" 83 }), 84 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 85 fill: "#DFE3E8", 86 d: "M36.625 80h10.592v4.8H36.625V80Z" 87 }), 88 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 89 fill: "#DFE3E8", 90 d: "M27.469 80H38.06v4.8H27.469V80Z" 91 }), 92 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 93 fill: "#DFE3E8", 94 d: "M22.89 80h6.017v4.8H22.89V80Z" 95 }),
96 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 97 fill: "#DFE3E8", 98 d: "M13.734 80h10.592v4.8H13.734V80Z" 99 }), 100 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 101 fill: "#DFE3E8", 102 d: "M4.578 80H15.17v4.8H4.578V80Z" 103 }), 104 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 105 fill: "#DFE3E8", 106 d: "M0 80h6.016v4.8H0V80ZM211.906 60h10.592v4.8h-10.592V60Z" 107 }), 108 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 109 fill: "#DFE3E8", 110 d: "M207.328 60h6.016v4.8h-6.016V60Z" 111 }), 112 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 113 fill: "#DFE3E8", 114 d: "M198.172 60h10.592v4.8h-10.592V60Z" 115 }), 116 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 117 fill: "#DFE3E8", 118 d: "M193.594 60h6.016v4.8h-6.016V60Z" 119 }), 120 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 121 fill: "#DFE3E8", 122 d: "M184.438 60h10.591v4.8h-10.591V60Z" 123 }), 124 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 125 fill: "#DFE3E8", 126 d: "M175.281 60h10.592v4.8h-10.592V60Z" 127 }), 128 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 129 fill: "#DFE3E8", 130 d: "M170.703 60h6.016v4.8h-6.016V60Z" 131 }), 132 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 133 fill: "#DFE3E8", 134 d: "M161.547 60h10.592v4.8h-10.592V60Z" 135 }), 136 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 137 fill: "#DFE3E8", 138 d: "M152.391 60h10.592v4.8h-10.592V60ZM133.641 60h10.592v4.8h-10.592V60Z" 139 }), 140 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 141 fill: "#DFE3E8", 142 d: "M124.484 60h10.592v4.8h-10.592V60Z" 143 }), 144 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 145 fill: "#DFE3E8", 146 d: "M115.328 60h10.592v4.8h-10.592V60Z" 147 }), 148 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 149 fill: "#DFE3E8", 150 d: "M106.172 60h10.592v4.8h-10.592V60Z" 151 }), 152 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 153 fill: "#DFE3E8", 154 d: "M101.594 60h6.016v4.8h-6.016V60ZM87.422 60h6.016v4.8h-6.016V60Z" 155 }), 156 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 157 fill: "#DFE3E8", 158 d: "M82.844 60h6.016v4.8h-6.016V60Z" 159 }), 160 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 161 fill: "#DFE3E8", 162 d: "M73.688 60h10.591v4.8H73.689V60Z" 163 }), 164 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 165 fill: "#DFE3E8", 166 d: "M69.11 60h6.015v4.8H69.11V60Z" 167 }), 168 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 169 fill: "#DFE3E8", 170 d: "M59.953 60h10.592v4.8H59.953V60ZM41.203 60h10.592v4.8H41.203V60Z" 171 }), 172 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 173 fill: "#DFE3E8", 174 d: "M32.047 60h10.592v4.8H32.047V60Z" 175 }), 176 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 177 fill: "#DFE3E8", 178 d: "M22.89 60h10.593v4.8H22.89V60Z" 179 }), 180 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 181 fill: "#DFE3E8", 182 d: "M18.313 60h6.015v4.8h-6.015V60Z" 183 }), 184 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 185 fill: "#DFE3E8", 186 d: "M9.156 60h10.592v4.8H9.156V60Z" 187 }), 188 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 189 fill: "#DFE3E8", 190 d: "M0 60h10.592v4.8H0V60ZM217.359 40h10.592v4.8h-10.592V40Z" 191 }), 192 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 193 fill: "#DFE3E8", 194 d: "M212.781 40h6.016v4.8h-6.016V40ZM198.609 40h6.016v4.8h-6.016V40Z" 195 }), 196 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 197 fill: "#DFE3E8", 198 d: "M189.453 40h10.592v4.8h-10.592V40Z" 199 }), 200 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 201 fill: "#DFE3E8", 202 d: "M184.875 40h6.016v4.8h-6.016V40Z" 203 }), 204 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 205 fill: "#DFE3E8", 206 d: "M175.719 40h10.592v4.8h-10.592V40Z" 207 }), 208 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 209 fill: "#DFE3E8", 210 d: "M166.562 40h10.592v4.8h-10.592V40ZM152.391 40h6.016v4.8h-6.016V40Z" 211 }),
212 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 213 fill: "#DFE3E8", 214 d: "M143.234 40h10.592v4.8h-10.592V40Z" 215 }), 216 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 217 fill: "#DFE3E8", 218 d: "M134.078 40h10.592v4.8h-10.592V40Z" 219 }), 220 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 221 fill: "#DFE3E8", 222 d: "M129.5 40h6.016v4.8H129.5V40Z" 223 }), 224 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 225 fill: "#DFE3E8", 226 d: "M120.344 40h10.592v4.8h-10.592V40Z" 227 }), 228 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 229 fill: "#DFE3E8", 230 d: "M115.766 40h6.016v4.8h-6.016V40Z" 231 }), 232 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 233 fill: "#DFE3E8", 234 d: "M106.609 40h10.592v4.8h-10.592V40Z" 235 }), 236 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 237 fill: "#DFE3E8", 238 d: "M97.453 40h10.592v4.8H97.453V40ZM69.11 40H79.7v4.8H69.11V40Z" 239 }), 240 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 241 fill: "#DFE3E8", 242 d: "M64.531 40h6.016v4.8h-6.016V40ZM45.781 40h10.592v4.8H45.781V40Z" 243 }), 244 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 245 fill: "#DFE3E8", 246 d: "M36.625 40h10.592v4.8H36.625V40Z" 247 }), 248 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 249 fill: "#DFE3E8", 250 d: "M27.469 40H38.06v4.8H27.469V40Z" 251 }), 252 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 253 fill: "#DFE3E8", 254 d: "M18.313 40h10.591v4.8H18.313V40Z" 255 }), 256 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 257 fill: "#DFE3E8", 258 d: "M13.734 40h6.016v4.8h-6.016V40Z" 259 }), 260 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 261 fill: "#DFE3E8", 262 d: "M9.156 40h6.016v4.8H9.156V40Z" 263 }), 264 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 265 fill: "#DFE3E8", 266 d: "M0 40h10.592v4.8H0V40ZM206.891 20h6.016v4.8h-6.016V20Z" 267 }), 268 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 269 fill: "#DFE3E8", 270 d: "M202.312 20h6.017v4.8h-6.017V20Z" 271 }), 272 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 273 fill: "#DFE3E8", 274 d: "M197.734 20h6.016v4.8h-6.016V20Z" 275 }), 276 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 277 fill: "#DFE3E8", 278 d: "M193.156 20h6.016v4.8h-6.016V20Z" 279 }), 280 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 281 fill: "#DFE3E8", 282 d: "M184 20h10.592v4.8H184V20ZM165.25 20h10.592v4.8H165.25V20Z" 283 }), 284 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 285 fill: "#DFE3E8", 286 d: "M156.094 20h10.592v4.8h-10.592V20Z" 287 }), 288 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 289 fill: "#DFE3E8", 290 d: "M151.516 20h6.016v4.8h-6.016V20Z" 291 }), 292 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 293 fill: "#DFE3E8", 294 d: "M142.359 20h10.592v4.8h-10.592V20Z" 295 }), 296 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 297 fill: "#DFE3E8", 298 d: "M133.203 20h10.592v4.8h-10.592V20Z" 299 }), 300 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 301 fill: "#DFE3E8", 302 d: "M128.625 20h6.016v4.8h-6.016V20Z" 303 }), 304 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 305 fill: "#DFE3E8", 306 d: "M119.469 20h10.592v4.8h-10.592V20Z" 307 }), 308 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 309 fill: "#DFE3E8", 310 d: "M114.891 20h6.016v4.8h-6.016V20Z" 311 }), 312 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 313 fill: "#DFE3E8", 314 d: "M105.734 20h10.592v4.8h-10.592V20Z" 315 }), 316 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 317 fill: "#DFE3E8", 318 d: "M96.578 20h10.592v4.8H96.578V20ZM82.406 20h6.016v4.8h-6.016V20Z" 319 }), 320 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 321 fill: "#DFE3E8", 322 d: "M73.25 20h10.592v4.8H73.25V20Z" 323 }), 324 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 325 fill: "#DFE3E8", 326 d: "M68.672 20h6.016v4.8h-6.016V20Z" 327 }),
328 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 329 fill: "#DFE3E8", 330 d: "M59.516 20h10.592v4.8H59.516V20Z" 331 }), 332 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 333 fill: "#DFE3E8", 334 d: "M54.938 20h6.015v4.8h-6.016V20Z" 335 }), 336 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 337 fill: "#DFE3E8", 338 d: "M45.781 20h10.592v4.8H45.781V20Z" 339 }), 340 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 341 fill: "#DFE3E8", 342 d: "M36.625 20h10.592v4.8H36.625V20Z" 343 }), 344 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 345 fill: "#DFE3E8", 346 d: "M27.469 20H38.06v4.8H27.469V20Z" 347 }), 348 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 349 fill: "#DFE3E8", 350 d: "M18.313 20h10.591v4.8H18.313V20Z" 351 }), 352 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 353 fill: "#DFE3E8", 354 d: "M9.156 20h10.592v4.8H9.156V20Z" 355 }), 356 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 357 fill: "#DFE3E8", 358 d: "M0 20h10.592v4.8H0V20ZM203.188 0h6.016v4.8h-6.016V0Z" 359 }), 360 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 361 fill: "#DFE3E8", 362 d: "M198.609 0h6.016v4.8h-6.016V0Z" 363 }), 364 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 365 fill: "#DFE3E8", 366 d: "M189.453 0h10.592v4.8h-10.592V0Z" 367 }), 368 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 369 fill: "#DFE3E8", 370 d: "M180.297 0h10.592v4.8h-10.592V0Z" 371 }), 372 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 373 fill: "#DFE3E8", 374 d: "M171.141 0h10.592v4.8h-10.592V0ZM156.969 0h6.016v4.8h-6.016V0Z" 375 }), 376 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 377 fill: "#DFE3E8", 378 d: "M152.391 0h6.016v4.8h-6.016V0Z" 379 }), 380 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 381 fill: "#DFE3E8", 382 d: "M143.234 0h10.592v4.8h-10.592V0ZM129.062 0h6.017v4.8h-6.017V0Z" 383 }), 384 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 385 fill: "#DFE3E8", 386 d: "M119.906 0h10.592v4.8h-10.592V0Z" 387 }), 388 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 389 fill: "#DFE3E8", 390 d: "M115.328 0h6.016v4.8h-6.016V0Z" 391 }), 392 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 393 fill: "#DFE3E8", 394 d: "M106.172 0h10.592v4.8h-10.592V0Z" 395 }), 396 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 397 fill: "#DFE3E8", 398 d: "M97.016 0h10.592v4.8H97.016V0ZM78.266 0h10.592v4.8H78.266V0Z" 399 }), 400 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 401 fill: "#DFE3E8", 402 d: "M69.11 0H79.7v4.8H69.11V0Z" 403 }), 404 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 405 fill: "#DFE3E8", 406 d: "M59.953 0h10.592v4.8H59.953V0Z" 407 }), 408 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 409 fill: "#DFE3E8", 410 d: "M50.797 0h10.592v4.8H50.797V0Z" 411 }), 412 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 413 fill: "#DFE3E8", 414 d: "M46.219 0h6.016v4.8h-6.016V0ZM27.469 0H38.06v4.8H27.469V0Z" 415 }), 416 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 417 fill: "#DFE3E8", 418 d: "M18.313 0h10.591v4.8H18.313V0Z" 419 }), 420 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 421 fill: "#DFE3E8", 422 d: "M13.734 0h6.016v4.8h-6.016V0Z" 423 }), 424 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 425 fill: "#DFE3E8", 426 d: "M4.578 0H15.17v4.8H4.578V0Z" 427 }), 428 /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("path", { 429 fill: "#DFE3E8", 430 d: "M0 0h6.016v4.8H0V0Z" 431 }) 432 ] 433 }) 434 }); 435 $[0] = t1; 436 } else t1 = $[0]; 437 let t2; 438 if ($[1] !== previewContent) { 439 t2 = /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("div", { 440 className: "signature-preview", 441 children: /* @__PURE__ */ (0, import_jsx_runtime$1.jsxs)("div", { 442 className: "signature-preview__content", 443 children: [t1, previewContent ? /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("div", { 444 className: "signature-preview__signature", 445 dangerouslySetInnerHTML: { __html: previewContent } 446 }) : /* @__PURE__ */ (0, import_jsx_runtime$1.jsx)("div", { 447 className: "signature-preview__signature signature-preview__signature--empty", 448 children: i18n.t("js.email_accounts.accounts.no_signature_preview") 449 })] 450 }) 451 }); 452 $[1] = previewContent; 453 $[2] = t2; 454 } else t2 = $[2]; 455 return t2; 456} 457var import_compiler_runtime, import_jsx_runtime$1; 458function init_signature_preview_content() { 459 return (init_signature_preview_content = __esmMin((() => { 460 import_compiler_runtime = require_compiler_runtime(); 461 import_jsx_runtime$1 = require_jsx_runtime(); 462 })))(); 463} 464//#endregion 465//#region app/frontend/react/helpers/replace_signature_variables.ts 466/** 467* Replaces signature template variables (e.g. {{first_name}}, {{email_address}}) 468* with actual sender values. Supports fallback syntax: {{variable:"fallback"}}. 469*/ 470function replaceSignatureVariables(html, firstName, lastName, email) { 471 if (!html) return ""; 472 const normalizedFirst = (firstName || "").trim(); 473 const normalizedLast = (lastName || "").trim();
474 const fullName = [normalizedFirst, normalizedLast].filter(Boolean).join(" ").trim(); 475 const normalizedEmail = (email || "").trim(); 476 let result = html.replace(/<code>(\s*{{[\s\S]*?}}\s*)<\/code>/gi, "$1").replace(/<\/?code>/gi, ""); 477 const replacements = [ 478 { 479 key: "firstname", 480 value: normalizedFirst 481 }, 482 { 483 key: "first_name", 484 value: normalizedFirst 485 }, 486 { 487 key: "lastname", 488 value: normalizedLast 489 }, 490 { 491 key: "last_name", 492 value: normalizedLast 493 }, 494 { 495 key: "fullname", 496 value: fullName || normalizedFirst || normalizedLast 497 }, 498 { 499 key: "full_name", 500 value: fullName || normalizedFirst || normalizedLast 501 }, 502 { 503 key: "sender_name", 504 value: fullName || normalizedFirst || normalizedLast 505 } 506 ]; 507 replacements.forEach(({ key, value: replacementValue }) => { 508 if (!replacementValue) return; 509 const regex = new RegExp(`\\{\\{\\s*${key}(?::\\s*[\u201C\u201D"']([^}]*?)[\u201C\u201D"'])?\\s*\\}\\}`, "gi"); 510 result = result.replace(regex, (_match, fallbackValue) => { 511 return replacementValue || (fallbackValue || "").trim() || ""; 512 }); 513 }); 514 replacements.forEach(({ key, value: replacementValue }) => { 515 if (replacementValue) return; 516 const regex = new RegExp(`\\{\\{\\s*${key}(?::\\s*[\u201C\u201D"']([^}]*?)[\u201C\u201D"'])?\\s*\\}\\}`, "gi"); 517 result = result.replace(regex, (_match, fallbackValue) => (fallbackValue || "").trim()); 518 }); 519 result = result.replace(/\{\{\s*(email|email_address)(?::\s*["']([^}]*?)["'])?\s*\}\}/gi, (_match, _key, fallbackValue) => { 520 return normalizedEmail || (fallbackValue || "").trim() || ""; 521 }); 522 return result; 523} 524function init_replace_signature_variables() { 525 return (init_replace_signature_variables = __esmMin((() => {})))(); 526} 527//#endregion 528//#region app/frontend/react/components/signature_editor.tsx 529function SignatureEditor({ id, value, onChange, className, previewSample, showVariables = false, disabled = false }) { 530 const hiddenRef = (0, import_react.useRef)(null); 531 const editorRef = (0, import_react.useRef)(null); 532 const imageInputRef = (0, import_react.useRef)(null); 533 const containerRef = (0, import_react.useRef)(null); 534 const baselineRef = (0, import_react.useRef)(null); 535 const [previewOpen, setPreviewOpen] = (0, import_react.useState)(false); 536 const hasContent = (0, import_react.useMemo)(() => { 537 if (!value) return false; 538 return value.replace(/<[^>]*>/g, " ").replace(/ /gi, " ").trim().length > 0; 539 }, [value]); 540 const hasHtmlFormatting = (0, import_react.useMemo)(() => { 541 if (!hasContent) return false; 542 const text_0 = value.trim(); 543 if (!text_0) return false; 544 const withoutStructuralTags = text_0.replace(/<\/?div[^>]*>/gi, "").replace(/<\/?p[^>]*>/gi, "").replace(/<br\s*\/?>/gi, ""); 545 return /<(strong|b|em|i|a|img|span|u|font|style|link|figure|figcaption|ul|ol|li|blockquote|table|thead|tbody|tr|td|th)/i.test(withoutStructuralTags); 546 }, [value, hasContent]); 547 const previewContent = (0, import_react.useMemo)(() => { 548 if (!hasContent) return ""; 549 return replaceSignatureVariables(value, previewSample?.firstName || "", previewSample?.lastName || "", "[email protected]"); 550 }, [ 551 value, 552 previewSample, 553 hasContent 554 ]); 555 (0, import_react.useEffect)(() => { 556 const el = editorRef.current; 557 const html = value || ""; 558 if (el && el.editor) { 559 if (normalizeForCompare(el.value || "") !== normalizeForCompare(html)) el.editor.loadHTML(html); 560 baselineRef.current = (el.value || "").trim(); 561 } 562 if (hiddenRef.current) hiddenRef.current.value = html; 563 }, [value]); 564 (0, import_react.useEffect)(() => { 565 const el_0 = editorRef.current; 566 if (!el_0) return; 567 const handler = () => { 568 setTimeout(() => { 569 const nextValue = hiddenRef.current?.value ?? ""; 570 const trimmed = nextValue.trim(); 571 if (baselineRef.current === null) { 572 baselineRef.current = trimmed; 573 return; 574 } 575 if (trimmed === baselineRef.current) return; 576 baselineRef.current = trimmed; 577 onChange(nextValue); 578 }, 0); 579 }; 580 el_0.addEventListener("trix-change", handler); 581 return () => el_0.removeEventListener("trix-change", handler); 582 }, [onChange]); 583 (0, import_react.useEffect)(() => { 584 const input = imageInputRef.current; 585 const editor = editorRef.current; 586 if (!input || !editor || !editor.editor) return; 587 const handler_0 = (event) => { 588 const target = event.target; 589 if (target.files && target.files.length > 0) { 590 editor.editor.insertFile(target.files[0]); 591 setTimeout(() => { 592 target.value = ""; 593 }, 100); 594 } 595 }; 596 input.addEventListener("change", handler_0); 597 return () => input.removeEventListener("change", handler_0); 598 }, []); 599 (0, import_react.useEffect)(() => { 600 if (!hasContent && previewOpen) setPreviewOpen(false); 601 }, [hasContent, previewOpen]); 602 const showPreviewButton = hasContent; 603 const insertAttribute = (attributeKey) => { 604 const editorElement = document.getElementById(`${id}-editor`); 605 if (!editorElement?.editor) return; 606 const attributeString = `{{${attributeKey}:""}}`; 607 const container = containerRef.current; 608 if (container) { 609 const application = window.Stimulus; 610 if (application) try { 611 const controller = application.getControllerForElementAndIdentifier(container, "trix-editor"); 612 if (controller?.verifyThenInsertAttribute) { 613 controller.verifyThenInsertAttribute(editorElement.editor, attributeString, { select: false }); 614 return; 615 } 616 } catch (e) {} 617 } 618 const editor_0 = editorElement.editor; 619 const startPosition = editor_0.getSelectedRange()[0]; 620 editor_0.insertString(attributeString); 621 const endPosition = startPosition + attributeString.length; 622 editor_0.setSelectedRange([startPosition, endPosition]); 623 editor_0.activateAttribute("customAttr"); 624 editor_0.setSelectedRange([endPosition, endPosition]); 625 if (isFunction(editor_0.deactivateAttribute)) editor_0.deactivateAttribute("customAttr"); 626 }; 627 return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 628 ref: containerRef, 629 className: `smtp-imap-signature${className ? ` ${className}` : ""}`, 630 "data-controller": "trix-editor", 631 "data-trix-editor-show-attributes-value": "true", 632 children: [
633 hasHtmlFormatting && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Alert, { 634 variant: "info", 635 size: "small", 636 className: "smtp-imap-signature__alert", 637 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AlertTitle, { children: i18n.t("js.email_accounts.accounts.formatted_signature_warning") }) 638 }), 639 /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { id: `${id}-toolbar` }), 640 /* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", { 641 type: "text", 642 className: "d-none", 643 "data-trix-editor-target": "subjectField" 644 }), 645 /* @__PURE__ */ (0, import_jsx_runtime.jsx)("data", { 646 "data-trix-editor-target": "bodyContent", 647 value 648 }), 649 /* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", { 650 id: `${id}-input`, 651 ref: hiddenRef, 652 type: "hidden", 653 defaultValue: value, 654 onChange: () => {} 655 }), 656 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TrixEditorElement, { 657 id: `${id}-editor`, 658 ref: editorRef, 659 input: `${id}-input`, 660 toolbar: `${id}-toolbar`, 661 "data-trix-editor-target": "editor", 662 onChange: () => {}, 663 contentEditable: !disabled, 664 className: disabled ? "pe-none" : void 0 665 }), 666 /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 667 className: "smtp-imap-signature__toolbar", 668 children: [ 669 showVariables && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DropdownMenu, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(DropdownMenuTrigger, { 670 asChild: true, 671 children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Button, { 672 variant: "ghost", 673 size: "xs", 674 type: "button", 675 disabled, 676 onClick: (e_0) => { 677 e_0.preventDefault(); 678 e_0.stopPropagation(); 679 document.getElementById(`${id}-editor`)?.focus(); 680 }, 681 children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { 682 icon: "brackets-curly", 683 size: "sm" 684 }), i18n.t("js.email_accounts.accounts.insert_attribute").replace("{} ", "")] 685 }) 686 }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DropdownMenuContent, { children: [ 687 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DropdownMenuItem, { 688 closeOnClick: true, 689 onClick: (e_1) => { 690 e_1.preventDefault(); 691 e_1.stopPropagation(); 692 insertAttribute("first_name"); 693 }, 694 children: i18n.t("js.email_accounts.accounts.first_name") 695 }), 696 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DropdownMenuItem, { 697 closeOnClick: true, 698 onClick: (e_2) => { 699 e_2.preventDefault(); 700 e_2.stopPropagation(); 701 insertAttribute("last_name"); 702 }, 703 children: i18n.t("js.email_accounts.accounts.last_name") 704 }), 705 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DropdownMenuItem, { 706 closeOnClick: true, 707 onClick: (e_3) => { 708 e_3.preventDefault(); 709 e_3.stopPropagation(); 710 insertAttribute("email_address"); 711 }, 712 children: i18n.t("js.email_accounts.accounts.email") 713 }) 714 ] })] }
714), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Separator, { 715 orientation: "vertical", 716 className: "mx-1" 717 })] }), 718 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, { 719 variant: "ghost", 720 size: "xs", 721 ...!disabled && { "data-action": "mousedown->trix-editor#toggleFormat" }, 722 "data-format": "bold", 723 type: "button", 724 "aria-label": "Bold", 725 iconOnly: true, 726 disabled, 727 onClick: (e_4) => { 728 if (disabled) { 729 e_4.preventDefault(); 730 e_4.stopPropagation(); 731 } 732 }, 733 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { 734 icon: "bold", 735 size: "sm" 736 }) 737 }), 738 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, { 739 variant: "ghost", 740 size: "xs", 741 ...!disabled && { "data-action": "mousedown->trix-editor#toggleFormat" }, 742 "data-format": "italic", 743 type: "button", 744 "aria-label": "Italic", 745 iconOnly: true, 746 disabled, 747 onClick: (e_5) => { 748 if (disabled) { 749 e_5.preventDefault(); 750 e_5.stopPropagation(); 751 } 752 }, 753 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { 754 icon: "italic", 755 size: "sm" 756 }) 757 }), 758 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, { 759 variant: "ghost", 760 size: "xs", 761 ...!disabled && { "data-action": "mousedown->trix-editor#createLinkAction" }, 762 "data-trix-editor-target": "linkButton", 763 type: "button", 764 "aria-label": "Insert link", 765 iconOnly: true, 766 disabled, 767 onClick: (e_6) => { 768 if (disabled) { 769 e_6.preventDefault(); 770 e_6.stopPropagation(); 771 } 772 }, 773 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { 774 icon: "link", 775 size: "sm" 776 }) 777 }), 778 /* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", { 779 ref: imageInputRef, 780 type: "file", 781 accept: "image/*", 782 style: { display: "none" }, 783 "data-trix-editor-target": "imageAttachmentInput", 784 disabled 785 }), 786 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, { 787 variant: "ghost", 788 size: "xs", 789 ...!disabled && { "data-action": "mousedown->trix-editor#addImageAttachment" }, 790 type: "button", 791 "aria-label": "Insert image", 792 iconOnly: true, 793 disabled, 794 onClick: (e_7) => { 795 if (disabled) { 796 e_7.preventDefault(); 797 e_7.stopPropagation(); 798 } 799 }, 800 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { 801 icon: "image", 802 size: "sm" 803 }) 804 }),
805 showPreviewButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { 806 className: "ml-auto", 807 children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Popover, { 808 open: previewOpen, 809 onOpenChange: setPreviewOpen, 810 children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopoverTrigger, { 811 asChild: true, 812 children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Button, { 813 variant: "ghost", 814 size: "xs", 815 type: "button", 816 "aria-label": i18n.t("js.email_accounts.accounts.preview_signature"), 817 onMouseEnter: () => setPreviewOpen(true), 818 onMouseLeave: () => setPreviewOpen(false), 819 children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { 820 icon: "eye", 821 "aria-hidden": "true", 822 size: "sm" 823 }), i18n.t("js.email_accounts.accounts.preview")] 824 }) 825 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopoverContent, { 826 align: "center", 827 side: "left", 828 className: "signature-preview-popover", 829 onMouseEnter: () => setPreviewOpen(true), 830 onMouseLeave: () => setPreviewOpen(false), 831 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SignaturePreviewContent, { previewContent }) 832 })] 833 }) 834 }) 835 ] 836 }) 837 ] 838 }); 839} 840var import_react, import_jsx_runtime, TrixEditorElement, normalizeForCompare; 841function init_signature_editor() { 842 return (init_signature_editor = __esmMin((() => { 843 import_react = require_react(); 844 init_button(); 845 init_popover(); 846 init_icon(); 847 init_alert(); 848 init_separator(); 849 init_dropdown_menu(); 850 init_signature_preview_content(); 851 import_jsx_runtime = require_jsx_runtime(); 852 TrixEditorElement = "trix-editor"; 853 normalizeForCompare = (html) => html.replace(/[\r\n]/g, "").trim(); 854 })))(); 855} 856//#endregion 857//#region app/frontend/react/components/email_accounts/constants.ts 858var INBOX_PROTECTION_YEARLY_PRICE_CENTS, INBOX_PROTECTION_DISCOUNTED_MONTHLY_PRICE_CENTS, INBOX_PROTECTION_DISCOUNTED_YEARLY_PRICE_CENTS, INBOX_PROTECTION_HELP_CENTER_URL; 859function init_constants() { 860 return (init_constants = __esmMin((() => { 861 INBOX_PROTECTION_YEARLY_PRICE_CENTS = 7200; 862 INBOX_PROTECTION_DISCOUNTED_MONTHLY_PRICE_CENTS = Math.round(675); 863 INBOX_PROTECTION_DISCOUNTED_YEARLY_PRICE_CENTS = Math.round(INBOX_PROTECTION_YEARLY_PRICE_CENTS - INBOX_PROTECTION_YEARLY_PRICE_CENTS / 12 * (30 / 100)); 864 INBOX_PROTECTION_HELP_CENTER_URL = "https://help.hunter.io/en/articles/14183519-inbox-protection-warm-up-and-protect-your-sender-reputation"; 865 })))(); 866} 867//#endregion 868export { init_constants as a, init_replace_signature_variables as c, INBOX_PROTECTION_YEARLY_PRICE_CENTS as i, replaceSignatureVariables as l, INBOX_PROTECTION_DISCOUNTED_YEARLY_PRICE_CENTS as n, SignatureEditor as o, INBOX_PROTECTION_HELP_CENTER_URL as r, init_signature_editor as s, INBOX_PROTECTION_DISCOUNTED_MONTHLY_PRICE_CENTS as t };
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.