legalesign-document-viewer 0.3.2 → 0.3.4

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 (215) hide show
  1. package/dist/cjs/{index-DruwRbfl.js → index-BpMnxZQ4.js} +14 -3
  2. package/dist/cjs/index-BpMnxZQ4.js.map +1 -0
  3. package/dist/cjs/loader.cjs.js +2 -2
  4. package/dist/cjs/{ls-document-options_39.cjs.entry.js → ls-document-options_40.cjs.entry.js} +1711 -190
  5. package/dist/cjs/ls-document-options_40.cjs.entry.js.map +1 -0
  6. package/dist/cjs/ls-document-viewer.cjs.js +2 -2
  7. package/dist/cjs/ls-field-properties-dropdown.cjs.entry.js +1 -1
  8. package/dist/cjs/ls-formfield.cjs.entry.js +1 -1
  9. package/dist/cjs/ls-number-input_5.cjs.entry.js +1 -1
  10. package/dist/collection/components/ls-document-options/ls-document-options.js +8 -2
  11. package/dist/collection/components/ls-document-options/ls-document-options.js.map +1 -1
  12. package/dist/collection/components/ls-document-viewer/editorCalculator.js +2 -0
  13. package/dist/collection/components/ls-document-viewer/editorCalculator.js.map +1 -1
  14. package/dist/collection/components/ls-document-viewer/editorUtils.js +8 -3
  15. package/dist/collection/components/ls-document-viewer/editorUtils.js.map +1 -1
  16. package/dist/collection/components/ls-document-viewer/ls-document-viewer.js +19 -12
  17. package/dist/collection/components/ls-document-viewer/ls-document-viewer.js.map +1 -1
  18. package/dist/collection/components/ls-document-viewer/validator.js +2 -2
  19. package/dist/collection/components/ls-document-viewer/validator.js.map +1 -1
  20. package/dist/collection/components/ls-field-content/ls-field-content.js +6 -2
  21. package/dist/collection/components/ls-field-content/ls-field-content.js.map +1 -1
  22. package/dist/collection/components/ls-tooltip/ls-tooltip.css +22 -5
  23. package/dist/collection/components/ls-tooltip/ls-tooltip.js +59 -34
  24. package/dist/collection/components/ls-tooltip/ls-tooltip.js.map +1 -1
  25. package/dist/collection/components/ls-validation-tag/ls-validation-tag.js +11 -2
  26. package/dist/collection/components/ls-validation-tag/ls-validation-tag.js.map +1 -1
  27. package/dist/components/index.js +1 -1
  28. package/dist/components/ls-document-options.js +1 -1
  29. package/dist/components/ls-document-viewer.js +150 -207
  30. package/dist/components/ls-document-viewer.js.map +1 -1
  31. package/dist/components/ls-editor-field.js +1 -1
  32. package/dist/components/ls-editor-table.js +1 -1
  33. package/dist/components/ls-feature-column.js +1 -1
  34. package/dist/components/ls-field-alignment.js +1 -1
  35. package/dist/components/ls-field-content.js +1 -1
  36. package/dist/components/ls-field-dimensions.js +1 -1
  37. package/dist/components/ls-field-distribute.js +1 -1
  38. package/dist/components/ls-field-footer.js +1 -1
  39. package/dist/components/ls-field-format.js +1 -1
  40. package/dist/components/ls-field-placement.js +1 -1
  41. package/dist/components/ls-field-properties-advanced.js +1 -1
  42. package/dist/components/ls-field-properties-autosign.js +1 -1
  43. package/dist/components/ls-field-properties-container.js +1 -1
  44. package/dist/components/ls-field-properties-date.js +1 -1
  45. package/dist/components/ls-field-properties-dropdown.js +12 -12
  46. package/dist/components/ls-field-properties-email.js +1 -1
  47. package/dist/components/ls-field-properties-file.js +1 -1
  48. package/dist/components/ls-field-properties-general.js +1 -1
  49. package/dist/components/ls-field-properties-image.js +1 -1
  50. package/dist/components/ls-field-properties-multiple.js +1 -1
  51. package/dist/components/ls-field-properties-number.js +1 -1
  52. package/dist/components/ls-field-properties-signature.js +1 -1
  53. package/dist/components/ls-field-properties-text.js +1 -1
  54. package/dist/components/ls-field-properties.js +1 -1
  55. package/dist/components/ls-field-size.js +1 -1
  56. package/dist/components/ls-field-type-display.js +1 -1
  57. package/dist/components/ls-formfield.js +7 -7
  58. package/dist/components/ls-icon.js +1 -1
  59. package/dist/components/ls-input-wrapper.js +1 -1
  60. package/dist/components/ls-number-input.js +1 -1
  61. package/dist/components/ls-page-loader.js +1 -1
  62. package/dist/components/ls-participant-card.js +1 -1
  63. package/dist/components/ls-participant-manager.js +1 -1
  64. package/dist/components/ls-participant-select.js +1 -1
  65. package/dist/components/ls-props-section.js +1 -1
  66. package/dist/components/ls-radio-input.js +1 -1
  67. package/dist/components/ls-select-input.js +1 -1
  68. package/dist/components/ls-statusbar.js +1 -1
  69. package/dist/components/ls-text-input.js +1 -1
  70. package/dist/components/ls-textarea-input.js +1 -1
  71. package/dist/components/ls-toggle.js +1 -1
  72. package/dist/components/ls-toolbar.js +1 -1
  73. package/dist/components/ls-toolbox-field.js +1 -1
  74. package/dist/components/ls-tooltip.js +1 -1587
  75. package/dist/components/ls-tooltip.js.map +1 -1
  76. package/dist/components/ls-validation-tag.js +1 -1
  77. package/dist/components/{p-CVxA0mrX.js → p-14owczyX.js} +8 -8
  78. package/dist/components/{p-CVxA0mrX.js.map → p-14owczyX.js.map} +1 -1
  79. package/dist/components/{p-Dhknldsv.js → p-1wdCYLqw.js} +12 -12
  80. package/dist/components/{p-Dhknldsv.js.map → p-1wdCYLqw.js.map} +1 -1
  81. package/dist/components/{p-D990IL5t.js → p-6LFAGg6D.js} +4 -4
  82. package/dist/components/{p-D990IL5t.js.map → p-6LFAGg6D.js.map} +1 -1
  83. package/dist/components/{p-CcUFZYwZ.js → p-9WKoGwO0.js} +4 -4
  84. package/dist/components/{p-CcUFZYwZ.js.map → p-9WKoGwO0.js.map} +1 -1
  85. package/dist/components/{p-BNMjQBPT.js → p-B0uVP8it.js} +14 -14
  86. package/dist/components/{p-BNMjQBPT.js.map → p-B0uVP8it.js.map} +1 -1
  87. package/dist/components/{p-Cfl2rRxL.js → p-B3lY01RV.js} +4 -4
  88. package/dist/components/{p-Cfl2rRxL.js.map → p-B3lY01RV.js.map} +1 -1
  89. package/dist/components/{p-HaIHVR-P.js → p-BArjC51C.js} +3 -3
  90. package/dist/components/{p-HaIHVR-P.js.map → p-BArjC51C.js.map} +1 -1
  91. package/dist/components/{p-DORxxjtg.js → p-BBuk6A32.js} +14 -14
  92. package/dist/components/{p-DORxxjtg.js.map → p-BBuk6A32.js.map} +1 -1
  93. package/dist/components/{p-BaMR8ksy.js → p-BLUUNyDx.js} +3 -3
  94. package/dist/components/{p-BaMR8ksy.js.map → p-BLUUNyDx.js.map} +1 -1
  95. package/dist/components/{p-Ovur85Of.js → p-BMpnAxqv.js} +114 -55
  96. package/dist/components/p-BMpnAxqv.js.map +1 -0
  97. package/dist/components/{p-_dj7MCcU.js → p-BOKGHQS9.js} +5 -5
  98. package/dist/components/{p-_dj7MCcU.js.map → p-BOKGHQS9.js.map} +1 -1
  99. package/dist/components/{p-wy6ar5D3.js → p-BOz4DYOB.js} +5 -5
  100. package/dist/components/{p-wy6ar5D3.js.map → p-BOz4DYOB.js.map} +1 -1
  101. package/dist/components/{p-7V9_3fXA.js → p-BXKYpxgM.js} +4 -4
  102. package/dist/components/{p-7V9_3fXA.js.map → p-BXKYpxgM.js.map} +1 -1
  103. package/dist/components/{p-DrWlEpVu.js → p-Ba_8GAK2.js} +4 -4
  104. package/dist/components/{p-DrWlEpVu.js.map → p-Ba_8GAK2.js.map} +1 -1
  105. package/dist/components/{p-ClYIDEKN.js → p-BcfP7mSQ.js} +6 -6
  106. package/dist/components/{p-ClYIDEKN.js.map → p-BcfP7mSQ.js.map} +1 -1
  107. package/dist/{esm/ls-tooltip.entry.js → components/p-Bt5gnPRz.js} +177 -216
  108. package/dist/components/p-Bt5gnPRz.js.map +1 -0
  109. package/dist/components/{p-BWLt02JN.js → p-BvHSBTD8.js} +14 -3
  110. package/dist/components/p-BvHSBTD8.js.map +1 -0
  111. package/dist/components/{p-Dp-vgKJq.js → p-Bxutt9rC.js} +4 -4
  112. package/dist/components/{p-Dp-vgKJq.js.map → p-Bxutt9rC.js.map} +1 -1
  113. package/dist/components/{p-CCMS_IvP.js → p-C0t7MuwE.js} +14 -14
  114. package/dist/components/{p-CCMS_IvP.js.map → p-C0t7MuwE.js.map} +1 -1
  115. package/dist/components/{p-CpiX4Tih.js → p-C6NnNmx5.js} +4 -4
  116. package/dist/components/{p-CpiX4Tih.js.map → p-C6NnNmx5.js.map} +1 -1
  117. package/dist/components/{p-h3hsXDzk.js → p-CTXoPKrw.js} +4 -4
  118. package/dist/components/{p-h3hsXDzk.js.map → p-CTXoPKrw.js.map} +1 -1
  119. package/dist/components/{p-C8kySYH4.js → p-CdGtJRZm.js} +3 -3
  120. package/dist/components/{p-C8kySYH4.js.map → p-CdGtJRZm.js.map} +1 -1
  121. package/dist/components/{p-Lx7PwjNC.js → p-CktqjOO6.js} +15 -11
  122. package/dist/components/p-CktqjOO6.js.map +1 -0
  123. package/dist/components/{p-Crkl9bKZ.js → p-Co6xLkEu.js} +4 -4
  124. package/dist/components/{p-Crkl9bKZ.js.map → p-Co6xLkEu.js.map} +1 -1
  125. package/dist/components/{p-DgMfXwXc.js → p-CpYbd6qt.js} +5 -5
  126. package/dist/components/{p-DgMfXwXc.js.map → p-CpYbd6qt.js.map} +1 -1
  127. package/dist/components/{p-Bg6wsr_z.js → p-Cv4qCy2p.js} +4 -4
  128. package/dist/components/{p-Bg6wsr_z.js.map → p-Cv4qCy2p.js.map} +1 -1
  129. package/dist/components/{p-GJYwAar9.js → p-CvqT5MA7.js} +14 -14
  130. package/dist/components/{p-GJYwAar9.js.map → p-CvqT5MA7.js.map} +1 -1
  131. package/dist/components/{p-gvEf2mjl.js → p-Cw8qsoOq.js} +4 -4
  132. package/dist/components/{p-gvEf2mjl.js.map → p-Cw8qsoOq.js.map} +1 -1
  133. package/dist/components/{p-DOCp-M5v.js → p-CzySwvIU.js} +5 -5
  134. package/dist/components/{p-DOCp-M5v.js.map → p-CzySwvIU.js.map} +1 -1
  135. package/dist/components/{p-C6cWElQ7.js → p-DDWmD8TQ.js} +14 -14
  136. package/dist/components/{p-C6cWElQ7.js.map → p-DDWmD8TQ.js.map} +1 -1
  137. package/dist/components/{p-BPayWH9u.js → p-DM3pnD5z.js} +3 -3
  138. package/dist/components/{p-BPayWH9u.js.map → p-DM3pnD5z.js.map} +1 -1
  139. package/dist/components/{p-D5cswwR_.js → p-DUVCAq-W.js} +4 -4
  140. package/dist/components/{p-D5cswwR_.js.map → p-DUVCAq-W.js.map} +1 -1
  141. package/dist/components/{p-5I9rEf1F.js → p-Dprl580c.js} +21 -9
  142. package/dist/components/p-Dprl580c.js.map +1 -0
  143. package/dist/components/{p-ChCIuJg0.js → p-DqEap43n.js} +3 -3
  144. package/dist/components/{p-ChCIuJg0.js.map → p-DqEap43n.js.map} +1 -1
  145. package/dist/components/{p-Bsc25fvn.js → p-DxGzQ3Lc.js} +4 -4
  146. package/dist/components/{p-Bsc25fvn.js.map → p-DxGzQ3Lc.js.map} +1 -1
  147. package/dist/components/{p-YrxZXlJ1.js → p-DyE9zKT7.js} +14 -6
  148. package/dist/components/p-DyE9zKT7.js.map +1 -0
  149. package/dist/components/{p-CwKpqq1h.js → p-JFkSKN19.js} +14 -14
  150. package/dist/components/{p-CwKpqq1h.js.map → p-JFkSKN19.js.map} +1 -1
  151. package/dist/components/{p-D0PX7hpQ.js → p-Yrg6B_xb.js} +4 -4
  152. package/dist/components/{p-D0PX7hpQ.js.map → p-Yrg6B_xb.js.map} +1 -1
  153. package/dist/components/{p-CjciOPPE.js → p-bNVYQ-ag.js} +14 -14
  154. package/dist/components/{p-CjciOPPE.js.map → p-bNVYQ-ag.js.map} +1 -1
  155. package/dist/components/{p-C0afavmo.js → p-hUeqWmAs.js} +27 -27
  156. package/dist/components/{p-C0afavmo.js.map → p-hUeqWmAs.js.map} +1 -1
  157. package/dist/components/{p-DmenFbeU.js → p-i5LoDKK3.js} +4 -4
  158. package/dist/components/{p-DmenFbeU.js.map → p-i5LoDKK3.js.map} +1 -1
  159. package/dist/components/{p-BpXqwLh3.js → p-iwXLSFLX.js} +4 -4
  160. package/dist/components/{p-BpXqwLh3.js.map → p-iwXLSFLX.js.map} +1 -1
  161. package/dist/components/{p-DEArdusa.js → p-ji6hTzlP.js} +14 -14
  162. package/dist/components/{p-DEArdusa.js.map → p-ji6hTzlP.js.map} +1 -1
  163. package/dist/components/{p-CozH0k34.js → p-o7kGA8FM.js} +5 -5
  164. package/dist/components/{p-CozH0k34.js.map → p-o7kGA8FM.js.map} +1 -1
  165. package/dist/components/{p-C4Go47Ak.js → p-ozlIyuZ1.js} +6 -6
  166. package/dist/components/{p-C4Go47Ak.js.map → p-ozlIyuZ1.js.map} +1 -1
  167. package/dist/components/{p-DWqgZCMh.js → p-vV0A8m2N.js} +3 -3
  168. package/dist/components/{p-DWqgZCMh.js.map → p-vV0A8m2N.js.map} +1 -1
  169. package/dist/esm/{index-CjW5NqdW.js → index-BzcAlD18.js} +14 -3
  170. package/dist/esm/index-BzcAlD18.js.map +1 -0
  171. package/dist/esm/loader.js +3 -3
  172. package/dist/esm/{ls-document-options_39.entry.js → ls-document-options_40.entry.js} +1711 -191
  173. package/dist/esm/ls-document-options_40.entry.js.map +1 -0
  174. package/dist/esm/ls-document-viewer.js +3 -3
  175. package/dist/esm/ls-field-properties-dropdown.entry.js +1 -1
  176. package/dist/esm/ls-formfield.entry.js +1 -1
  177. package/dist/esm/ls-number-input_5.entry.js +1 -1
  178. package/dist/ls-document-viewer/ls-document-viewer.esm.js +1 -1
  179. package/dist/ls-document-viewer/{p-646325ae.entry.js → p-0b9016eb.entry.js} +2 -2
  180. package/dist/ls-document-viewer/{p-d2df7881.entry.js → p-3dae15c9.entry.js} +2 -2
  181. package/dist/ls-document-viewer/{p-063541d8.entry.js → p-5c27684b.entry.js} +6 -6
  182. package/dist/ls-document-viewer/p-5c27684b.entry.js.map +1 -0
  183. package/dist/ls-document-viewer/p-BzcAlD18.js +3 -0
  184. package/dist/ls-document-viewer/p-BzcAlD18.js.map +1 -0
  185. package/dist/ls-document-viewer/{p-d7109cdd.entry.js → p-be7a03ca.entry.js} +2 -2
  186. package/dist/types/components/ls-document-options/ls-document-options.d.ts +1 -0
  187. package/dist/types/components/ls-document-viewer/ls-document-viewer.d.ts +1 -0
  188. package/dist/types/components/ls-document-viewer/validator.d.ts +2 -2
  189. package/dist/types/components/ls-field-content/ls-field-content.d.ts +1 -0
  190. package/dist/types/components/ls-tooltip/ls-tooltip.d.ts +2 -4
  191. package/dist/types/components/ls-validation-tag/ls-validation-tag.d.ts +1 -0
  192. package/dist/types/components.d.ts +2 -2
  193. package/package.json +1 -1
  194. package/dist/cjs/index-DruwRbfl.js.map +0 -1
  195. package/dist/cjs/ls-document-options_39.cjs.entry.js.map +0 -1
  196. package/dist/cjs/ls-tooltip.cjs.entry.js +0 -1575
  197. package/dist/cjs/ls-tooltip.cjs.entry.js.map +0 -1
  198. package/dist/cjs/ls-tooltip.entry.cjs.js.map +0 -1
  199. package/dist/components/p-5I9rEf1F.js.map +0 -1
  200. package/dist/components/p-BWLt02JN.js.map +0 -1
  201. package/dist/components/p-Lx7PwjNC.js.map +0 -1
  202. package/dist/components/p-Ovur85Of.js.map +0 -1
  203. package/dist/components/p-YrxZXlJ1.js.map +0 -1
  204. package/dist/esm/index-CjW5NqdW.js.map +0 -1
  205. package/dist/esm/ls-document-options_39.entry.js.map +0 -1
  206. package/dist/esm/ls-tooltip.entry.js.map +0 -1
  207. package/dist/ls-document-viewer/ls-tooltip.entry.esm.js.map +0 -1
  208. package/dist/ls-document-viewer/p-063541d8.entry.js.map +0 -1
  209. package/dist/ls-document-viewer/p-CjW5NqdW.js +0 -3
  210. package/dist/ls-document-viewer/p-CjW5NqdW.js.map +0 -1
  211. package/dist/ls-document-viewer/p-fee3434a.entry.js +0 -2
  212. package/dist/ls-document-viewer/p-fee3434a.entry.js.map +0 -1
  213. /package/dist/ls-document-viewer/{p-646325ae.entry.js.map → p-0b9016eb.entry.js.map} +0 -0
  214. /package/dist/ls-document-viewer/{p-d2df7881.entry.js.map → p-3dae15c9.entry.js.map} +0 -0
  215. /package/dist/ls-document-viewer/{p-d7109cdd.entry.js.map → p-be7a03ca.entry.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-DruwRbfl.js');
3
+ var index = require('./index-BpMnxZQ4.js');
4
4
 
5
5
  const lsDocumentOptionsCss = "*{box-sizing:border-box;margin:0;padding:0}:host{display:block}.ls-editor-infobox{padding:2px 8px 2px 8px}.toolbox-section-title{color:var(--gray-100, #45484d);font-size:1.125rem;font-style:normal;font-weight:500;line-height:1.75rem;}.toolbox-section-description{color:var(--gray-80, #5e6066);font-size:0.75rem;font-style:normal;font-weight:400;line-height:1rem}.template-details{display:flex;flex-direction:column;gap:0.75rem}.template-detail-section{position:relative;display:flex;padding:0.75rem;align-items:center;gap:0.5rem;border-radius:1rem;border:1px solid var(--gray-30, #e0e2e5);background:var(--white, #fff)}.template-detail-section-title{color:var(--gray-80, #6c6e73);font-size:0.875rem;font-style:normal;font-weight:500;line-height:1.25rem;width:100%}.template-detail-section-info{color:var(--gray-70);font-size:0.75rem;font-style:normal;font-weight:400;line-height:1rem;width:100%}.column{display:flex;flex-direction:column;align-items:flex-start}.editButton{position:absolute;top:0.75rem;right:0.75rem;margin:0px;padding:0px;max-height:1.25rem !important;max-width:1.25rem !important;background-color:transparent;border:none;cursor:pointer;color:var(--gray-70, #2134dc)}.editButton:hover{color:var(--gray-80)}p{color:var(--gray-80, #6c6e73);font-family:var(--font-family);font-size:var(--text-sm);font-style:normal;font-weight:400;line-height:var(--text-sm-line-height)}a{color:var(--primary-60, #4456f6);font-size:var(--text-sm);font-style:normal;font-weight:400;line-height:var(--text-sm-line-height);cursor:pointer}a:hover{text-decoration:underline;color:var(--primary-70, #2134dc)}.button-link,.button-link:hover{all:unset}select{appearance:none;height:36px}.input-wrapper{position:relative;width:fit-content}#selectorIcon{position:absolute;top:50%;right:0.675rem;transform:translateY(-50%);pointer-events:none;color:var(--gray-80, #6c6e73)}#selectLeadingIcon{position:absolute;top:50%;left:0.675rem;transform:translateY(-50%);pointer-events:none;color:var(--gray-80, #6c6e73)}.has-leading-icon{padding-left:2.5rem}input,select,textarea{border:1px solid var(--gray-40, #d8d9dc);box-shadow:0 1px 0.125rem rgba(0, 0, 0, 0.05);padding:0.5rem 0.75rem;font-family:var(--font-family);font-size:var(--text-sm);border-radius:0.5rem;color:var(--gray-100, #45484d);font-weight:400}input::placeholder,select::placeholder,textarea::placeholder{color:var(--gray-60, #afb0b2)}input:hover,select:hover,textarea:hover{border-color:var(--gray-50, #c8c9cc);background-color:var(--white, #fff)}input:focus,select:focus,textarea:focus{outline:none;box-shadow:0 0 0 0.25rem var(--primary-40, #79adfc);border-color:var(--primary-60, #4456f6);background-color:var(--white, #fff)}input:active,select:active,textarea:active{border-color:var(--primary-50, #5185ff)}input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;background-color:var(--gray-10, #f7f8fa)}input[type='checkbox']{appearance:none;position:relative;height:1rem;width:1rem;padding:0.25rem;border-radius:var(--radius-sm);border:1px solid #d1d5db;background-color:#ffffff;cursor:pointer}input[type='checkbox']:checked,input[type='checkbox'].indeterminate{background-color:var(--primary-60, #4456f6);border:none}input[type='checkbox']:checked::after{content:'';position:absolute;top:45%;left:50%;transform:translate(-50%, -50%) rotate(-45deg) scale(-1, 1);width:0.5rem;height:0.25rem;border-bottom:0.125rem solid white;border-right:0.125rem solid white}input[type='checkbox'].indeterminate::after{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:0.5rem;height:0.125rem;background-color:white}input[type='checkbox']:checked:hover,input[type='checkbox'].indeterminate:hover{background-color:var(--primary-70, #2134dc);border:none}input[type='checkbox']:hover{border:1px solid #9ca3af}input[type='checkbox']:focus,input[type='checkbox']:active{outline:none;box-shadow:0 0 0 0.25rem var(--primary-20, #c7ddff);background-color:#f0f4f8}input[type='checkbox']:disabled{background-color:#f3f4f6;outline:none;cursor:not-allowed}input[type='checkbox']:disabled:checked{background-color:#e5e7eb;border:none;outline:none;cursor:not-allowed}.checkbox-container{display:flex;gap:0.5rem;width:100%}.checkbox-label{color:var(--gray-100, #45484d);font-size:1rem;font-style:normal;font-weight:400;line-height:1rem}.form-label{color:var(--gray-100, #45484d);font-size:1rem;font-style:normal;font-weight:500;line-height:1.5rem}.form-field{display:flex;flex-direction:column;gap:0.25rem;width:100%}.loading-box{display:flex;justify-content:center;align-items:center;width:100%;height:100vh;color:var(--primary-60, #0c7cba)}button{border:0;appearance:button;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-lg);background-color:var(--primary-60, #4456f6);color:white;text-transform:capitalize;min-height:2.25rem;min-width:2.25rem}button.tertiaryGrey{border:1px solid var(--gray-40, #d8d9dc);background-color:white;color:var(--gray-80, #787a80)}button.tertiaryGrey:hover{border:1px solid var(--gray-50, #c8c9cc);background:var(--gray-10, #f7f8fa)}.button-group{display:flex;border-radius:0.5rem;border:1px solid var(--gray-30, #e0e2e5);background:var(--white, #ffffff);overflow:clip}.button-group button{display:flex;background:transparent;border-radius:unset;padding:0.25rem 0.75rem;min-width:2.156rem;min-height:unset;color:var(--gray-80, #6c6e73)}.button-group button:hover{background:var(--gray-10, #f7f8fa)}.button-group>:first-child{border-radius:0.5rem 0 0 0.5rem}.button-group>:last-child{border-radius:0 0.5rem 0.5rem 0}.button-group>:not(:first-child){border-left:1px solid var(--gray-30, #e0e2e5)}";
6
6
 
@@ -39,6 +39,7 @@ const LsDocumentOptions = class {
39
39
  this.mutate.emit(diffs);
40
40
  }, delay);
41
41
  }
42
+ editNameBtn;
42
43
  render() {
43
44
  function formatDate(isoString) {
44
45
  const date = new Date(isoString);
@@ -51,7 +52,11 @@ const LsDocumentOptions = class {
51
52
  }
52
53
  return (index.h(index.Host, null, index.h("div", { class: "ls-editor-infobox" }, index.h("h2", { class: "toolbox-section-title" }, "Template Details"), index.h("p", { class: "toolbox-section-description" }, "Details and insights about the Template.")), index.h("div", { class: 'template-details' }, index.h("div", { class: 'template-detail-section column' }, index.h("p", { class: "template-detail-section-title" }, "Name"), index.h("div", { class: "editButton", onClick: () => {
53
54
  this.editTitle = !this.editTitle;
54
- } }, index.h("ls-icon", { name: this.editTitle ? 'check' : 'pencil-alt', size: "18" })), this.editTitle ? (index.h("input", { value: this.template?.title, style: { width: '100%' }, onInput: e => {
55
+ } }, index.h("ls-icon", { name: this.editTitle ? 'check' : 'pencil-alt', size: "18", id: "edit-name-btn", ref: el => {
56
+ if (el && el !== this.editNameBtn) {
57
+ this.editNameBtn = el;
58
+ }
59
+ } }), index.h("ls-tooltip", { referenceElement: this.editNameBtn }, this.editTitle ? 'Save' : 'Edit Name')), this.editTitle ? (index.h("input", { value: this.template?.title, style: { width: '100%' }, onInput: e => {
55
60
  e.preventDefault();
56
61
  this.alter({ title: e.target.value });
57
62
  }, onKeyUp: e => {
@@ -19881,6 +19886,8 @@ const findIn = (fields, selector, restyle = false, additive = false) => {
19881
19886
  };
19882
19887
  // Used to append new fields (dropped or loaded from template data)
19883
19888
  function addField(frame, data) {
19889
+ const fields = this._template.elementConnection.templateElements;
19890
+ this._template = { ...this._template, elementConnection: { ...this._template.elementConnection, templateElements: [...fields, data] } };
19884
19891
  const node = document.createElement('ls-editor-field');
19885
19892
  node.setAttribute('type', data.formElementType);
19886
19893
  node.setAttribute('id', 'ls-field-' + data.id);
@@ -19953,60 +19960,40 @@ const recalculateCoordinates = (d) => {
19953
19960
  };
19954
19961
 
19955
19962
  // Add a role
19956
- const createRole = (role) => {
19957
- const newParent = role?.signerParent ? `"${role.signerParent}"` : 'null';
19958
- return `
19959
- mutation LDVAddRole {
19960
- createTemplateRole(input: {
19961
- templateId: "${role.templateId}"
19962
- signerIndex: ${role.signerIndex}
19963
- signerParent: ${newParent}
19964
- name: ${JSON.stringify(role.name)}
19965
- ordinal: ${role.ordinal}
19966
- roleType: ${role.roleType}
19967
- experience: "${role.experience}"
19968
- })
19969
- }`;
19970
- };
19971
- // Remove a role
19972
- const deleteRole = (role) => {
19973
- return `
19974
- mutation LDVremoveRole {
19975
- deleteTemplateRole(input: {
19976
- templateRoleId: "${role.id}"
19977
- })
19978
- }`;
19979
- };
19980
- // Save any changes to an role
19981
- const updateRole = (role) => {
19982
- const newParent = role?.signerParent ? `"${role.signerParent}"` : 'null';
19983
- return `
19984
- mutation LDVupdateRole {
19985
- updateTemplateRole(input: {
19986
- templateRoleId: "${role.id}"
19987
- signerIndex: ${role.signerIndex}
19988
- ordinal: ${role.ordinal}
19989
- signerParent: ${newParent}
19990
- name: ${JSON.stringify(role.name)}
19991
- roleType: ${role.roleType}
19992
- experience: "${role.experience}"
19993
- })
19994
- }`;
19995
- };
19996
- // swap two adjacent roles
19997
- const swapRoles = (roleId1, roleId2) => {
19963
+ const updateTemplate = template => {
19998
19964
  return `
19999
- mutation LDVswapRole {
20000
- swapRoles(input: {
20001
- roleId1: "${roleId1.id}"
20002
- roleId2: "${roleId2.id}"
20003
- })
20004
- }`;
19965
+ mutation LDVupdateTemplate {
19966
+ updateTemplate(input: {
19967
+ templateId: "${template.id}",
19968
+ title: "${template.title}",
19969
+ locked: ${template.locked},
19970
+ autoArchive: ${template.autoArchive},
19971
+ fixSignatureScale: ${template.fixSignatureScale ? template.fixSignatureScale : false}
19972
+ })
19973
+ }
19974
+ `;
20005
19975
  };
20006
- const getTemplateRoles = (id) => {
19976
+ const getTemplate = (id) => {
20007
19977
  return `
20008
19978
  query LDVGetTemplate {
20009
- template(id: "${id}") {
19979
+ template(id: "${id}") {
19980
+ id
19981
+ title
19982
+ fileName
19983
+ pageDimensions
19984
+ pageCount
19985
+ modified
19986
+ link
19987
+ valid
19988
+ locked
19989
+ autoArchive
19990
+ archived
19991
+ tags
19992
+ created
19993
+ createdBy
19994
+ lastSent
19995
+ fixSignatureScale
19996
+ groupId
20010
19997
  roles{
20011
19998
  id
20012
19999
  name
@@ -20016,11 +20003,86 @@ const getTemplateRoles = (id) => {
20016
20003
  signerParent
20017
20004
  experience
20018
20005
  }
20006
+ elementConnection {
20007
+ templateElements {
20008
+ align
20009
+ ax
20010
+ ay
20011
+ bx
20012
+ by
20013
+ elementType
20014
+ formElementType
20015
+ fieldOrder
20016
+ fontName
20017
+ fontSize
20018
+ helpText
20019
+ hideBorder
20020
+ id
20021
+ label
20022
+ labelExtra
20023
+ logicAction
20024
+ logicGroup
20025
+ mapTo
20026
+ options
20027
+ optional
20028
+ page
20029
+ role
20030
+ signer
20031
+ substantive
20032
+ validation
20033
+ value
20034
+ }
20035
+ totalCount
20036
+ }
20037
+ userSignatureConnection {
20038
+ userSignatureElements {
20039
+ id
20040
+ userId
20041
+ ax
20042
+ ay
20043
+ bx
20044
+ by
20045
+ page
20046
+ link
20047
+ }
20048
+ }
20019
20049
  }
20020
20050
  }
20021
20051
  `;
20022
20052
  };
20023
20053
 
20054
+ /**
20055
+ * This module contains all the rules required to mark a template
20056
+ * as valid.
20057
+ *
20058
+ */
20059
+ function validate(t) {
20060
+ var errors = [];
20061
+ // Check for missing signatures
20062
+ t.roles.forEach(tr => {
20063
+ if (t.elementConnection.templateElements.filter(e => e.formElementType === 'signature' && e.signer === tr.signerIndex && tr.roleType !== 'APPROVER').length === 0) {
20064
+ errors.push({
20065
+ id: tr.id,
20066
+ title: 'Missing signature.',
20067
+ description: `{tr.name} is missing a signature.`,
20068
+ role: tr,
20069
+ });
20070
+ }
20071
+ });
20072
+ // Check for missing multi-select options
20073
+ t.elementConnection.templateElements.forEach(element => {
20074
+ if (element.validation === 20 && (!element.options || element.options.length === 0)) {
20075
+ errors.push({
20076
+ id: element.id,
20077
+ title: 'Missing options',
20078
+ description: `Drop down field "${element.label}" is missing options.`,
20079
+ element: element,
20080
+ });
20081
+ }
20082
+ });
20083
+ return errors;
20084
+ }
20085
+
20024
20086
  /**
20025
20087
  * These utils are used to make document-viewer more readable
20026
20088
  * but they must be called using the bind() function so that
@@ -20066,19 +20128,23 @@ function matchData(data) {
20066
20128
  fi.setAttribute('id', 'ls-field-' + id);
20067
20129
  fi.dataItem = { ...data.obj, id };
20068
20130
  }
20131
+ this.validationErrors = validate.bind(this)(this._template);
20069
20132
  }
20070
20133
  if (prefix === 'rol') {
20071
20134
  syncRoles.bind(this)();
20072
20135
  }
20073
20136
  if (prefix === 'tpl') {
20074
20137
  this._template = { ...this._template, ...data.obj };
20138
+ this.validationErrors = validate.bind(this)(this._template);
20075
20139
  }
20076
20140
  }
20077
20141
  async function syncRoles() {
20078
20142
  var participantManager = this.component.shadowRoot.getElementById('ls-participant-manager');
20079
- const result = await this.adapter.execute(this.token, getTemplateRoles(this._template.id));
20080
- this._template = { ...this._template, roles: result.template.roles };
20143
+ const tresult = (await this.adapter.execute(this.token, getTemplate(this.templateid)));
20144
+ this.parseTemplate(JSON.stringify(tresult.template));
20081
20145
  participantManager.template = this._template;
20146
+ this.generateFields();
20147
+ this.validationErrors = validate.bind(this)(this._template);
20082
20148
  }
20083
20149
  // Utility function which extracts the type from any API id
20084
20150
  function getApiType(obj) {
@@ -24479,95 +24545,55 @@ const deleteElement = obj => {
24479
24545
  };
24480
24546
 
24481
24547
  // Add a role
24482
- const updateTemplate = template => {
24548
+ const createRole = (role) => {
24549
+ const newParent = role?.signerParent ? `"${role.signerParent}"` : 'null';
24483
24550
  return `
24484
- mutation LDVupdateTemplate {
24485
- updateTemplate(input: {
24486
- templateId: "${template.id}",
24487
- title: "${template.title}",
24488
- locked: ${template.locked},
24489
- autoArchive: ${template.autoArchive},
24490
- fixSignatureScale: ${template.fixSignatureScale ? template.fixSignatureScale : false}
24491
- })
24492
- }
24493
- `;
24551
+ mutation LDVAddRole {
24552
+ createTemplateRole(input: {
24553
+ templateId: "${role.templateId}"
24554
+ signerIndex: ${role.signerIndex}
24555
+ signerParent: ${newParent}
24556
+ name: ${JSON.stringify(role.name)}
24557
+ ordinal: ${role.ordinal}
24558
+ roleType: ${role.roleType}
24559
+ experience: "${role.experience}"
24560
+ })
24561
+ }`;
24494
24562
  };
24495
- const getTemplate = (id) => {
24563
+ // Remove a role
24564
+ const deleteRole = (role) => {
24496
24565
  return `
24497
- query LDVGetTemplate {
24498
- template(id: "${id}") {
24499
- id
24500
- title
24501
- fileName
24502
- pageDimensions
24503
- pageCount
24504
- modified
24505
- link
24506
- valid
24507
- locked
24508
- autoArchive
24509
- archived
24510
- tags
24511
- created
24512
- createdBy
24513
- lastSent
24514
- fixSignatureScale
24515
- groupId
24516
- roles{
24517
- id
24518
- name
24519
- roleType
24520
- signerIndex
24521
- ordinal
24522
- signerParent
24523
- experience
24524
- }
24525
- elementConnection {
24526
- templateElements {
24527
- align
24528
- ax
24529
- ay
24530
- bx
24531
- by
24532
- elementType
24533
- formElementType
24534
- fieldOrder
24535
- fontName
24536
- fontSize
24537
- helpText
24538
- hideBorder
24539
- id
24540
- label
24541
- labelExtra
24542
- logicAction
24543
- logicGroup
24544
- mapTo
24545
- options
24546
- optional
24547
- page
24548
- role
24549
- signer
24550
- substantive
24551
- validation
24552
- value
24553
- }
24554
- totalCount
24555
- }
24556
- userSignatureConnection {
24557
- userSignatureElements {
24558
- id
24559
- userId
24560
- ax
24561
- ay
24562
- bx
24563
- by
24564
- page
24565
- link
24566
- }
24567
- }
24568
- }
24569
- }
24570
- `;
24566
+ mutation LDVremoveRole {
24567
+ deleteTemplateRole(input: {
24568
+ templateRoleId: "${role.id}"
24569
+ })
24570
+ }`;
24571
+ };
24572
+ // Save any changes to an role
24573
+ const updateRole = (role) => {
24574
+ const newParent = role?.signerParent ? `"${role.signerParent}"` : 'null';
24575
+ return `
24576
+ mutation LDVupdateRole {
24577
+ updateTemplateRole(input: {
24578
+ templateRoleId: "${role.id}"
24579
+ signerIndex: ${role.signerIndex}
24580
+ ordinal: ${role.ordinal}
24581
+ signerParent: ${newParent}
24582
+ name: ${JSON.stringify(role.name)}
24583
+ roleType: ${role.roleType}
24584
+ experience: "${role.experience}"
24585
+ })
24586
+ }`;
24587
+ };
24588
+ // swap two adjacent roles
24589
+ const swapRoles = (roleId1, roleId2) => {
24590
+ return `
24591
+ mutation LDVswapRole {
24592
+ swapRoles(input: {
24593
+ roleId1: "${roleId1.id}"
24594
+ roleId2: "${roleId2.id}"
24595
+ })
24596
+ }`;
24571
24597
  };
24572
24598
 
24573
24599
  class LsDocumentAdapter {
@@ -24748,38 +24774,6 @@ const getGroupData = (id) => {
24748
24774
  `;
24749
24775
  };
24750
24776
 
24751
- /**
24752
- * This module contains all the rules required to mark a template
24753
- * as valid.
24754
- *
24755
- */
24756
- function validate(t) {
24757
- var errors = [];
24758
- // Check for missing signatures
24759
- t.roles.forEach(tr => {
24760
- if (t.elementConnection.templateElements.filter(e => e.formElementType === 'signature' && e.signer === tr.signerIndex && tr.roleType !== 'APPROVER').length === 0) {
24761
- errors.push({
24762
- id: tr.id,
24763
- title: 'Missing signature.',
24764
- description: `{tr.name} is missing a signature.`,
24765
- role: tr
24766
- });
24767
- }
24768
- });
24769
- // Check for missing multi-select options
24770
- t.elementConnection.templateElements.forEach(element => {
24771
- if (element.validation === 20 && (!element.options || element.options.length === 0)) {
24772
- errors.push({
24773
- id: element.id,
24774
- title: 'Missing options',
24775
- description: `Drop down field "${element.label}" is missing options.`,
24776
- element: element
24777
- });
24778
- }
24779
- });
24780
- return errors;
24781
- }
24782
-
24783
24777
  const lsDocumentViewerCss = "*,*::before,*::after{box-sizing:border-box}*{margin:0}@media (prefers-reduced-motion: no-preference){html{interpolate-size:allow-keywords}}body{line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}p{text-wrap:pretty}h1,h2,h3,h4,h5,h6{text-wrap:balance}#root,#__next{isolation:isolate}:host{display:flex;flex-direction:row;width:100vw;height:100vh;margin:0px;padding:0px}.validation-tag-wrapper{position:fixed;top:0.375rem;right:0.375rem;z-index:2000}#my-field-panel{position:relative;height:calc(100% - 4.313rem)}.leftBox{position:relative;border-radius:16px;border:1px solid var(--gray-30, #edeff2);background:var(--white, #fff);box-shadow:0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);width:21.25rem;margin:1rem;min-width:21.25rem;max-height:100%;z-index:1000;left:0;top:0}.left-box-inner{position:relative;display:flex;height:100%;padding:0.75rem;gap:0.75rem}.rightBox{width:200px;border:1px gray solid;width:470px;min-width:390px;padding:4px;font-family:inherit}.toolbox{display:flex;flex-direction:column;width:100%;height:100%;border-radius:8px;border:1px solid var(--gray-30, #e0e2e5);background:var(--gray-10, #f7f8fa);padding:0.75rem;gap:1rem;overflow-y:auto}.ls-editor-infobox{padding:2px 8px 2px 8px}#pdf-canvas{top:0px;left:0px;width:100px;height:100px;box-shadow:0 8px 32px 0 rgba(0, 0, 0, 0.12)}#ls-mid-area{position:absolute;top:0;left:0;display:flex;flex-direction:column;align-items:center;width:100vw;height:100%}.document-frame-wrapper{display:flex;flex-direction:column;justify-content:start;align-items:start;overflow:visible;max-height:100%;width:100vw;overflow:scroll;padding:5rem 380px 2rem 380px}#ls-document-frame{position:relative;height:98vh;margin-right:auto;margin-left:auto}.prevButton{position:relative;bottom:30px}.nextButton{position:relative;bottom:30px}.fieldBox{z-index:1000}#ls-box-selector{position:absolute;visibility:hidden;background-color:transparent;border:1px rgba(71, 71, 71, 0.716) dashed}#ls-editor-form{display:flex;width:100vw;height:calc(100vh - 2.25rem);position:relative;background:var(--gray-10, #f7f8fa);box-shadow:0 2px 6px 0 rgba(0, 0, 0, 0.04) inset, 0 10px 15px 0 rgba(0, 0, 0, 0.04) inset}.hidden{visibility:hidden;display:none;width:0px}.toolbox-section-title{color:var(--gray-100, #45484d);font-size:1.125rem;font-style:normal;font-weight:500;line-height:1.75rem;}.toolbox-section-description{color:var(--gray-80, #5e6066);font-size:0.75rem;font-style:normal;font-weight:400;line-height:1rem}.fields-box{display:flex;flex-direction:column;gap:0.75rem}.page-header{display:flex;height:2.25rem;gap:0.5rem;padding:0.25rem 0.75rem;justify-content:center;align-items:center}.header-text-1{color:var(--gray-100, #45484d);font-size:0.875rem;font-style:normal;font-weight:500;line-height:1.25rem}.header-text-2{color:var(--gray-100, #45484d);font-size:0.875rem;font-style:normal;font-weight:400;line-height:1.25rem}.properties-header{display:flex;padding:1rem;gap:0.75rem;align-items:center;border-bottom:1px solid var(--gray-20, #edeff2)}.properties-header-title{color:var(--gray-100, #45484d);width:100%;font-size:1.5rem;font-style:normal;font-weight:500;line-height:2rem;}.properties-header-icon{display:flex;padding:0.5rem;border-radius:0.625rem;background:var(--primary-10, #eff4ff);color:var(--primary-60, #4456f6)}.expand-fields-row{display:flex;align-items:center;gap:0.5rem;padding:0.5rem;cursor:pointer;color:var(--gray-80, #6c6e73);font-size:0.875rem;font-style:normal;font-weight:500;line-height:1.25rem;}.expand-fields-row p{color:var(--gray-100, #45484d);font-size:1rem;font-style:normal;font-weight:500;line-height:1.5rem;}p{color:var(--gray-80, #6c6e73);font-family:var(--font-family);font-size:var(--text-sm);font-style:normal;font-weight:400;line-height:var(--text-sm-line-height)}a{color:var(--primary-60, #4456f6);font-size:var(--text-sm);font-style:normal;font-weight:400;line-height:var(--text-sm-line-height);cursor:pointer}a:hover{text-decoration:underline;color:var(--primary-70, #2134dc)}.button-link,.button-link:hover{all:unset}select{appearance:none;height:36px}.input-wrapper{position:relative;width:fit-content}#selectorIcon{position:absolute;top:50%;right:0.675rem;transform:translateY(-50%);pointer-events:none;color:var(--gray-80, #6c6e73)}#selectLeadingIcon{position:absolute;top:50%;left:0.675rem;transform:translateY(-50%);pointer-events:none;color:var(--gray-80, #6c6e73)}.has-leading-icon{padding-left:2.5rem}input,select,textarea{border:1px solid var(--gray-40, #d8d9dc);box-shadow:0 1px 0.125rem rgba(0, 0, 0, 0.05);padding:0.5rem 0.75rem;font-family:var(--font-family);font-size:var(--text-sm);border-radius:0.5rem;color:var(--gray-100, #45484d);font-weight:400}input::placeholder,select::placeholder,textarea::placeholder{color:var(--gray-60, #afb0b2)}input:hover,select:hover,textarea:hover{border-color:var(--gray-50, #c8c9cc);background-color:var(--white, #fff)}input:focus,select:focus,textarea:focus{outline:none;box-shadow:0 0 0 0.25rem var(--primary-40, #79adfc);border-color:var(--primary-60, #4456f6);background-color:var(--white, #fff)}input:active,select:active,textarea:active{border-color:var(--primary-50, #5185ff)}input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;background-color:var(--gray-10, #f7f8fa)}input[type='checkbox']{appearance:none;position:relative;height:1rem;width:1rem;padding:0.25rem;border-radius:var(--radius-sm);border:1px solid #d1d5db;background-color:#ffffff;cursor:pointer}input[type='checkbox']:checked,input[type='checkbox'].indeterminate{background-color:var(--primary-60, #4456f6);border:none}input[type='checkbox']:checked::after{content:'';position:absolute;top:45%;left:50%;transform:translate(-50%, -50%) rotate(-45deg) scale(-1, 1);width:0.5rem;height:0.25rem;border-bottom:0.125rem solid white;border-right:0.125rem solid white}input[type='checkbox'].indeterminate::after{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:0.5rem;height:0.125rem;background-color:white}input[type='checkbox']:checked:hover,input[type='checkbox'].indeterminate:hover{background-color:var(--primary-70, #2134dc);border:none}input[type='checkbox']:hover{border:1px solid #9ca3af}input[type='checkbox']:focus,input[type='checkbox']:active{outline:none;box-shadow:0 0 0 0.25rem var(--primary-20, #c7ddff);background-color:#f0f4f8}input[type='checkbox']:disabled{background-color:#f3f4f6;outline:none;cursor:not-allowed}input[type='checkbox']:disabled:checked{background-color:#e5e7eb;border:none;outline:none;cursor:not-allowed}.checkbox-container{display:flex;gap:0.5rem;width:100%}.checkbox-label{color:var(--gray-100, #45484d);font-size:1rem;font-style:normal;font-weight:400;line-height:1rem}.form-label{color:var(--gray-100, #45484d);font-size:1rem;font-style:normal;font-weight:500;line-height:1.5rem}.form-field{display:flex;flex-direction:column;gap:0.25rem;width:100%}.field-properties-outer{position:relative;height:100%}.loading-box{display:flex;justify-content:center;align-items:center;width:100%;height:100vh;color:var(--primary-60, #0c7cba)}button{border:0;appearance:button;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-lg);background-color:var(--primary-60, #4456f6);color:white;text-transform:capitalize;min-height:2.25rem;min-width:2.25rem}button.tertiaryGrey{border:1px solid var(--gray-40, #d8d9dc);background-color:white;color:var(--gray-80, #787a80)}button.tertiaryGrey:hover{border:1px solid var(--gray-50, #c8c9cc);background:var(--gray-10, #f7f8fa)}.button-group{display:flex;border-radius:0.5rem;border:1px solid var(--gray-30, #e0e2e5);background:var(--white, #ffffff);overflow:clip}.button-group button{display:flex;background:transparent;border-radius:unset;padding:0.25rem 0.75rem;min-width:2.156rem;min-height:unset;color:var(--gray-80, #6c6e73)}.button-group button:hover{background:var(--gray-10, #f7f8fa)}.button-group>:first-child{border-radius:0.5rem 0 0 0.5rem}.button-group>:last-child{border-radius:0 0.5rem 0.5rem 0}.button-group>:not(:first-child){border-left:1px solid var(--gray-30, #e0e2e5)}";
24784
24778
 
24785
24779
  pdfExports.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.5.207/pdf.worker.min.js';
@@ -24956,13 +24950,11 @@ const LsDocumentViewer = class {
24956
24950
  mutateHandler(event) {
24957
24951
  if (this.token && this.adapter)
24958
24952
  event.detail.forEach(me => this.adapter.handleEvent(me, this.token).then(result => matchData.bind(this)(result)));
24959
- this.validationErrors = validate.bind(this)(this._template);
24960
24953
  }
24961
24954
  // Updates are internal event between LS controls not to be confused with mutate
24962
24955
  updateHandler(event) {
24963
24956
  if (event.detail)
24964
24957
  event.detail.forEach(fx => this.syncChange(fx));
24965
- this.validationErrors = validate.bind(this)(this._template);
24966
24958
  }
24967
24959
  // Updates are internal event between LS controls not to be confused with mutate
24968
24960
  addParticpantHandler(event) {
@@ -25109,7 +25101,6 @@ const LsDocumentViewer = class {
25109
25101
  elementConnection: { ...newTemplate.elementConnection, templateElements: fields },
25110
25102
  roles: preparedRoles,
25111
25103
  };
25112
- console.log(this._template);
25113
25104
  }
25114
25105
  /**
25115
25106
  * Render the page based on pageNumber
@@ -25195,6 +25186,8 @@ const LsDocumentViewer = class {
25195
25186
  }
25196
25187
  else if (update.action === 'delete') {
25197
25188
  const fi = this.component.shadowRoot.getElementById('ls-field-' + update.data.id);
25189
+ const fields = this._template.elementConnection.templateElements;
25190
+ this._template = { ...this._template, elementConnection: { ...this._template.elementConnection, templateElements: fields.filter(f => f.id !== update.data.id) } };
25198
25191
  this.component.shadowRoot.getElementById('ls-document-frame').removeChild(fi);
25199
25192
  this.selected = [];
25200
25193
  }
@@ -25202,6 +25195,7 @@ const LsDocumentViewer = class {
25202
25195
  console.warn('Unrecognised action, check Legalesign documentation. `create`, `update` and `delete` allowed.');
25203
25196
  }
25204
25197
  }
25198
+ this.validationErrors = validate.bind(this)(this._template);
25205
25199
  }
25206
25200
  initViewer() {
25207
25201
  // Generate a canvas to draw the background PDF on.
@@ -25225,7 +25219,14 @@ const LsDocumentViewer = class {
25225
25219
  event.preventDefault();
25226
25220
  });
25227
25221
  dropTarget.addEventListener('drop', mouseDrop.bind(this));
25228
- // Generate all the field HTML elements that are required (for every page)
25222
+ this.generateFields();
25223
+ }
25224
+ // Generate all the field HTML elements that are required (for every page)
25225
+ generateFields(clearExisting = true) {
25226
+ if (clearExisting) {
25227
+ const fields = this.component.shadowRoot.querySelectorAll('ls-editor-field');
25228
+ fields.forEach(fi => this.component.shadowRoot.getElementById('ls-document-frame').removeChild(fi));
25229
+ }
25229
25230
  this._template.elementConnection.templateElements.forEach(te => {
25230
25231
  addField.bind(this)(this.component.shadowRoot.getElementById('ls-document-frame'), this.prepareElement(te));
25231
25232
  });
@@ -25268,7 +25269,7 @@ const LsDocumentViewer = class {
25268
25269
  });
25269
25270
  }
25270
25271
  render() {
25271
- return (index.h(index.Host, { key: '8406b3185fb442e9cc8db99f2e41d12a4fb86e32' }, index.h(index.h.Fragment, null, this.isLoading && index.h("ls-page-loader", { key: 'c9ec4715fbf17ab0fa3e83aa95eef13d805e26d1' }), index.h("div", { key: '3489b169eefc455c24de83364fae56edf9402559', class: 'validation-tag-wrapper' }, index.h("ls-validation-tag", { key: '8dbacf34cd6429887f6ab38338a6d414a9687d26', validationErrors: this.validationErrors })), index.h("div", { key: '8733e49ee8d0cc505685ebbf2d7958a0d23e6418', class: "page-header" }, index.h("p", { key: 'a2c76cc30525f0f50276584f6056eb4f2b2e8c4b', class: "header-text-1" }, "Template Creation"), index.h("p", { key: '2dc05f7b78d33a23360175e6eda7d54c72432164' }, "/"), index.h("p", { key: '5b359ea0c34af996ef03f9b4efdb0ffd1e0cf2c8', class: "header-text-2" }, this._template?.title)), index.h("form", { key: 'b6e6156c94b8e61e297f2ccfe6668e035b758293', id: "ls-editor-form" }, this.showtoolbox === true ? (index.h("div", { id: "ls-left-box", class: "leftBox" }, index.h("div", { class: !this.selected || this.selected.length === 0 ? 'left-box-inner' : 'hidden' }, index.h("ls-feature-column", { onManage: manager => {
25272
+ return (index.h(index.Host, { key: '81fb162f62eee08b7e9608ab01a662b8692ced19' }, index.h(index.h.Fragment, null, this.isLoading && index.h("ls-page-loader", { key: '8d72275abac9bf7b7c60dc0f3bf359b61da2bfa8' }), index.h("div", { key: '9403504084bfeee0569896524971a8b0b1e7a227', class: 'validation-tag-wrapper' }, index.h("ls-validation-tag", { key: '989610b8316de91ccbde6ad01c13e8159edc584c', validationErrors: this.validationErrors })), index.h("div", { key: 'f22196cecc91276d4df7c632b5c4a9412f2a53eb', class: "page-header" }, index.h("p", { key: '5bda0c223072135232f648d28e59bd79145fe349', class: "header-text-1" }, "Template Creation"), index.h("p", { key: '129f5a82ea8e5afb4a992687e121bde326908b97' }, "/"), index.h("p", { key: 'e1f00b84543a3e8a9baee098742c6519d7d2bcde', class: "header-text-2" }, this._template?.title)), index.h("form", { key: '38f0cbd650c8f45a4b415ee20b5fc2dd73345442', id: "ls-editor-form" }, this.showtoolbox === true ? (index.h("div", { id: "ls-left-box", class: "leftBox" }, index.h("div", { class: !this.selected || this.selected.length === 0 ? 'left-box-inner' : 'hidden' }, index.h("ls-feature-column", { onManage: manager => {
25272
25273
  if (manager.detail === 'document') {
25273
25274
  var documentManager = this.component.shadowRoot.getElementById('ls-document-options');
25274
25275
  documentManager.template = this._template;
@@ -25282,17 +25283,17 @@ const LsDocumentViewer = class {
25282
25283
  this.handleSelectedField.bind(this)(event);
25283
25284
  } })) : (index.h("ls-toolbox-field", { elementType: "auto sign", formElementType: "auto sign", label: "Auto Sign", defaultHeight: 27, defaultWidth: 120, validation: 3000, icon: "auto-sign", signer: this.signer, onSelected: event => {
25284
25285
  this.handleSelectedField.bind(this)(event);
25285
- } })), index.h("ls-toolbox-field", { elementType: "initials", formElementType: "initials", label: "Initials", defaultHeight: 27, defaultWidth: 120, validation: 2000, icon: "initials", signer: this.signer, onSelected: event => {
25286
- this.handleSelectedField.bind(this)(event);
25287
- } }), index.h("ls-toolbox-field", { elementType: "date", formElementType: "date", label: "Date", defaultHeight: 27, defaultWidth: 80, validation: 2, icon: "calender", signer: this.signer, onSelected: event => {
25286
+ } })), index.h("ls-toolbox-field", { elementType: "text", formElementType: "text", label: "Text", defaultHeight: 27, defaultWidth: 100, validation: 0, icon: "text", signer: this.signer, onSelected: event => {
25288
25287
  this.handleSelectedField.bind(this)(event);
25289
25288
  } }), index.h("ls-toolbox-field", { elementType: "signing date", formElementType: "signing date", label: "Signing Date", defaultHeight: 27, defaultWidth: 120, validation: 30, icon: "auto-date", signer: this.signer, onSelected: event => {
25290
25289
  this.handleSelectedField.bind(this)(event);
25290
+ } }), index.h("ls-toolbox-field", { elementType: "date", formElementType: "date", label: "Date", defaultHeight: 27, defaultWidth: 80, validation: 2, icon: "calender", signer: this.signer, onSelected: event => {
25291
+ this.handleSelectedField.bind(this)(event);
25291
25292
  } }), index.h("ls-toolbox-field", { elementType: "email", formElementType: "email", label: "Email", defaultHeight: 27, defaultWidth: 120, validation: 1, icon: "at-symbol", signer: this.signer, onSelected: event => {
25292
25293
  this.handleSelectedField.bind(this)(event);
25293
- } }), index.h("ls-toolbox-field", { elementType: "text", formElementType: "text", label: "Text", defaultHeight: 27, defaultWidth: 100, validation: 0, icon: "text", signer: this.signer, onSelected: event => {
25294
+ } }), index.h("ls-toolbox-field", { elementType: "initials", formElementType: "initials", label: "Initials", defaultHeight: 27, defaultWidth: 120, validation: 2000, icon: "initials", signer: this.signer, onSelected: event => {
25294
25295
  this.handleSelectedField.bind(this)(event);
25295
- } }), index.h("div", { class: 'expand-fields-row', onClick: () => (this.expandfields = !this.expandfields) }, index.h("ls-icon", { name: this.expandfields ? 'expand' : 'collapse', size: "20", solid: true }), index.h("p", null, "More Field Types")), this.expandfields && (index.h("div", { class: "fields-box" }, index.h("ls-toolbox-field", { elementType: "number", formElementType: "number", label: "Number", defaultHeight: 27, defaultWidth: 80, validation: 50, icon: "hashtag", signer: this.signer, onSelected: event => {
25296
+ } }), index.h("div", { class: "fields-box" }, index.h("ls-toolbox-field", { elementType: "number", formElementType: "number", label: "Number", defaultHeight: 27, defaultWidth: 80, validation: 50, icon: "hashtag", signer: this.signer, onSelected: event => {
25296
25297
  this.handleSelectedField.bind(this)(event);
25297
25298
  } }), index.h("ls-toolbox-field", { elementType: "dropdown", formElementType: "dropdown", label: "Dropdown", defaultHeight: 27, defaultWidth: 80, validation: 20, icon: "hashtag", signer: this.signer, onSelected: event => {
25298
25299
  this.handleSelectedField.bind(this)(event);
@@ -25304,10 +25305,10 @@ const LsDocumentViewer = class {
25304
25305
  this.handleSelectedField.bind(this)(event);
25305
25306
  } }), index.h("ls-toolbox-field", { elementType: "file", formElementType: "file", label: "File", defaultHeight: 27, defaultWidth: 120, validation: 74, icon: "upload", signer: this.signer, onSelected: event => {
25306
25307
  this.handleSelectedField.bind(this)(event);
25307
- } }))))), index.h("ls-participant-manager", { id: "ls-participant-manager", class: this.manager === 'participant' ? 'toolbox' : 'hidden', editor: this }), index.h("ls-document-options", { id: "ls-document-options", class: this.manager === 'document' ? 'toolbox' : 'hidden' })), !this.displayTable && (index.h("div", { class: this.selected.length > 0 ? 'field-properties-outer' : 'hidden' }, index.h("div", { class: 'properties-header' }, index.h("div", { class: 'properties-header-icon' }, index.h("ls-icon", { name: "pre-filled-content" })), index.h("h1", { class: 'properties-header-title' }, "Field Properties"), index.h("button", { class: 'tertiaryGrey', onClick: e => {
25308
+ } })))), index.h("ls-participant-manager", { id: "ls-participant-manager", class: this.manager === 'participant' ? 'toolbox' : 'hidden', editor: this }), index.h("ls-document-options", { id: "ls-document-options", class: this.manager === 'document' ? 'toolbox' : 'hidden' })), !this.displayTable && (index.h("div", { class: this.selected.length > 0 ? 'field-properties-outer' : 'hidden' }, index.h("div", { class: 'properties-header' }, index.h("div", { class: 'properties-header-icon' }, index.h("ls-icon", { name: "pre-filled-content" })), index.h("h1", { class: 'properties-header-title' }, "Field Properties"), index.h("button", { class: 'tertiaryGrey', onClick: e => {
25308
25309
  this.selected = [];
25309
25310
  e.preventDefault();
25310
- } }, index.h("ls-icon", { name: "x", size: "20" }))), index.h("ls-field-properties", { id: "my-field-panel" }), index.h("slot", null))))) : (index.h(index.h.Fragment, null)), index.h("ls-toolbar", { key: '0c393716919e6d4bb9c23bd0195ce7323945a173', id: "ls-toolbar", template: this._template, editor: this, groupInfo: this.groupInfo }), index.h("div", { key: 'dd628626d6f640fec02ecb23cf4a11071f7d1758', id: "ls-mid-area" }, index.h("div", { key: '74242aaf4fb4c793597fc68fb95a654c5b0ff06d', class: 'document-frame-wrapper', id: "document-frame-wrapper" }, index.h("div", { key: '596c3ef95c0160d1ca2a5e582b5b0acf452c4111', id: "ls-document-frame" }, index.h("canvas", { key: 'e4d63148c79927790a45a08731c5d2be6f011b95', id: "pdf-canvas", class: this.displayTable || this.isLoading ? 'hidden' : '' }), index.h("ls-editor-table", { key: 'ce85606c532a9c71d4323e81b8d7838d763aef03', editor: this, class: this.displayTable ? '' : 'hidden' }), index.h("div", { key: 'fd1f97abbc0513ae59d9d57544ea40dc195f8768', id: "ls-box-selector" }))), index.h("ls-statusbar", { key: '0667e2279abbe34dbabc8beaf62cfc0161e06893', editor: this }))))));
25311
+ } }, index.h("ls-icon", { name: "x", size: "20" }))), index.h("ls-field-properties", { id: "my-field-panel" }), index.h("slot", null))))) : (index.h(index.h.Fragment, null)), index.h("ls-toolbar", { key: 'f64bad623489b4f7b56c08d7c1e1fbd2264df854', id: "ls-toolbar", template: this._template, editor: this, groupInfo: this.groupInfo }), index.h("div", { key: 'b1d691f755d4ea7a913ab5bf3b6d22bcc02e9464', id: "ls-mid-area" }, index.h("div", { key: '985b96b3b721d206a0e099ffef062f502d633b32', class: 'document-frame-wrapper', id: "document-frame-wrapper" }, index.h("div", { key: '85db5a30105e084d55e962c1a9d74b267d2a332f', id: "ls-document-frame" }, index.h("canvas", { key: '39041d335b556218f7fb2718e26d018ec596afe7', id: "pdf-canvas", class: this.displayTable || this.isLoading ? 'hidden' : '' }), index.h("ls-editor-table", { key: '1580ed3da6d3fd5a5ca81b0da0fb733e6a6ced1f', editor: this, class: this.displayTable ? '' : 'hidden' }), index.h("div", { key: '6282c570b3d0051adcf46642999516694f3f7996', id: "ls-box-selector" }))), index.h("ls-statusbar", { key: '236c388bea733eb6eef71e3ae0f8e97e20822261', editor: this }))))));
25311
25312
  }
25312
25313
  static get watchers() { return {
25313
25314
  "mode": ["modeHandler"],
@@ -25895,10 +25896,14 @@ const LsFieldContent = class {
25895
25896
  this.update.emit(diffs);
25896
25897
  }, delay);
25897
25898
  }
25899
+ supportsValue() {
25900
+ const typesWithValue = ["signature", "intials", "image", "file", "signing", "date", "autosign", "regex"];
25901
+ return !typesWithValue.includes(this.dataItem?.elementType);
25902
+ }
25898
25903
  render() {
25899
- return (index.h(index.Host, { key: '480b4e4a16a11270f16c1fbd52a9cfc06319c003' }, index.h("ls-props-section", { key: '9f01dda37d313b6e0b37374cd6b7b03c50552ed5', sectionTitle: "Field Type", sectionDescription: "The Field you currently have selected" }, index.h("ls-field-type-display", { key: '901f4bd65d8dfb70369e80b83d438c716a728e57', fieldType: this.dataItem?.elementType, assignee: this.dataItem?.signer })), index.h("ls-props-section", { key: 'df0d5739a95f1385d652bdc306aa35184ff87623', sectionTitle: "Required Field", row: true }, index.h("ls-toggle", { key: '4802d31dbe2e6e4d3c1819fe8d11949ad57040ed', id: "toggle-required", checked: !this.dataItem?.optional, onValueChange: (ev) => this.alter({ optional: !ev.detail }) })), index.h("ls-props-section", { key: '29dda3f847d0686b45ead2c3f94d639ff4f53665', sectionTitle: "Field Label", sectionDescription: "Add a label to clarify the information required from the Recipient." }, index.h("input", { key: '84b7878c52b8b2675345d6d6c7b924ee1ed29ad7', value: this.dataItem?.label, placeholder: "eg. Sign Here", onInput: (e) => this.alter({ label: e.target.value }) })), index.h("ls-props-section", { key: '8ed642c24e6ade9785eedc5782c3ec4162d7f1dc', sectionTitle: "Value", sectionDescription: "A prefilled value that can be altered by the signer." }, index.h("input", { key: '17397cbc23640df646451a8fa5a2f0bc35f4e4af', value: this.dataItem?.value, placeholder: "e.g. Gordon Smith", onInput: (e) => this.alter({ value: e.target.value }) })), this.dataItem.validation === 20 && (index.h("ls-props-section", { key: '327c7c2cd68d130fafbe3622b8e3cadfd85dc79c', sectionTitle: "Options", sectionDescription: "Define the options available in the dropdown. One option per line." }, index.h("textarea", { key: '682ab1b9c40c35f82fabf75ea716495355001a76', value: this.dataItem?.options, placeholder: "Option 1\nOption 2\nOption 3", onInput: (e) => this.alter({ options: e.target.value }) }))), this.showValidationTypes && (index.h("ls-props-section", { key: '3df0258a1d0ceb8139b905c8341c5273138dad10', sectionTitle: "Content Format", sectionDescription: "Select the specific format you want the Recipient to enter." }, index.h("ls-input-wrapper", { key: 'd404f6fd35d413afd4db73e66844a08b5231663b', select: true }, index.h("select", { key: '71bb83a0f36b694012c1da60ef0c346822dc7d92', onChange: (ev) => this.alter({ validation: parseInt(ev.target.value) }) }, validationTypes
25904
+ return (index.h(index.Host, { key: '20ce159dc4152f65e0b0210eccb2eab973af8241' }, index.h("ls-props-section", { key: 'c9d8025b354e166b16699ac10a7699d6a3780c03', sectionTitle: "Field Type", sectionDescription: "The Field you currently have selected" }, index.h("ls-field-type-display", { key: 'ff03c5571b4b19a22059d34eeea633568635bb9f', fieldType: this.dataItem?.elementType, assignee: this.dataItem?.signer })), index.h("ls-props-section", { key: '1dc8dd9b52e20ca794b8a326250ddf81b6bf9355', sectionTitle: "Required Field", row: true }, index.h("ls-toggle", { key: '1406c81a96e437b9f4757f6bd1654f7508387b61', id: "toggle-required", checked: !this.dataItem?.optional, onValueChange: (ev) => this.alter({ optional: !ev.detail }) })), index.h("ls-props-section", { key: 'e247625d206cf48ce9903f213bc3568d333e7b98', sectionTitle: "Field Label", sectionDescription: "Add a label to clarify the information required from the Recipient." }, index.h("input", { key: '8e94c624afc3af83fc448aed69af434cb9c43e35', value: this.dataItem?.label, placeholder: "eg. Sign Here", onInput: (e) => this.alter({ label: e.target.value }) })), this.supportsValue() && (index.h("ls-props-section", { key: 'b729f4eea9b1a6097f7efbb62178d8684c4fbca4', sectionTitle: "Value", sectionDescription: "A prefilled value that can be altered by the signer." }, index.h("input", { key: 'ac48703e8da2d666c6804ba050483255432bdb7c', value: this.dataItem?.value, placeholder: "e.g. Gordon Smith", onInput: (e) => this.alter({ value: e.target.value }) }))), this.dataItem.validation === 20 && (index.h("ls-props-section", { key: '9226d7ebef28ee13f365eb8d6e756a783550898e', sectionTitle: "Options", sectionDescription: "Define the options available in the dropdown. One option per line." }, index.h("textarea", { key: '0238600016c642bc0b9e3a44c083086bab56c063', value: this.dataItem?.options, placeholder: "Option 1\nOption 2\nOption 3", onInput: (e) => this.alter({ options: e.target.value }) }))), this.showValidationTypes && (index.h("ls-props-section", { key: '4651e3e667c092921f227badbb4286ff1b3c54ef', sectionTitle: "Content Format", sectionDescription: "Select the specific format you want the Recipient to enter." }, index.h("ls-input-wrapper", { key: 'b66ae98ebd1a27180c6099346fad20aafe677e5e', select: true }, index.h("select", { key: 'fec14e36d47672718cf656542c2447abd9358967', onChange: (ev) => this.alter({ validation: parseInt(ev.target.value) }) }, validationTypes
25900
25905
  .filter(type => type.formType === this.dataItem?.elementType)
25901
- .map(type => (index.h("option", { selected: this.dataItem?.validation === type.id, value: type.id }, type.description))))))), index.h("slot", { key: '2316014e98eb0ae99884f42b1c37f22e2a4f1732' })));
25906
+ .map(type => (index.h("option", { selected: this.dataItem?.validation === type.id, value: type.id }, type.description))))))), index.h("slot", { key: '8b96944ac071c6b4041d3389cefe8e4712c984fb' })));
25902
25907
  }
25903
25908
  };
25904
25909
  LsFieldContent.style = lsFieldContentCss;
@@ -34277,6 +34282,1515 @@ const LsToolboxField = class {
34277
34282
  };
34278
34283
  LsToolboxField.style = lsToolboxFieldCss;
34279
34284
 
34285
+ /**
34286
+ * Custom positioning reference element.
34287
+ * @see https://floating-ui.com/docs/virtual-elements
34288
+ */
34289
+
34290
+ const min = Math.min;
34291
+ const max = Math.max;
34292
+ const round = Math.round;
34293
+ const createCoords = v => ({
34294
+ x: v,
34295
+ y: v
34296
+ });
34297
+ const oppositeSideMap = {
34298
+ left: 'right',
34299
+ right: 'left',
34300
+ bottom: 'top',
34301
+ top: 'bottom'
34302
+ };
34303
+ const oppositeAlignmentMap = {
34304
+ start: 'end',
34305
+ end: 'start'
34306
+ };
34307
+ function clamp(start, value, end) {
34308
+ return max(start, min(value, end));
34309
+ }
34310
+ function evaluate(value, param) {
34311
+ return typeof value === 'function' ? value(param) : value;
34312
+ }
34313
+ function getSide(placement) {
34314
+ return placement.split('-')[0];
34315
+ }
34316
+ function getAlignment(placement) {
34317
+ return placement.split('-')[1];
34318
+ }
34319
+ function getOppositeAxis(axis) {
34320
+ return axis === 'x' ? 'y' : 'x';
34321
+ }
34322
+ function getAxisLength(axis) {
34323
+ return axis === 'y' ? 'height' : 'width';
34324
+ }
34325
+ const yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);
34326
+ function getSideAxis(placement) {
34327
+ return yAxisSides.has(getSide(placement)) ? 'y' : 'x';
34328
+ }
34329
+ function getAlignmentAxis(placement) {
34330
+ return getOppositeAxis(getSideAxis(placement));
34331
+ }
34332
+ function getAlignmentSides(placement, rects, rtl) {
34333
+ if (rtl === void 0) {
34334
+ rtl = false;
34335
+ }
34336
+ const alignment = getAlignment(placement);
34337
+ const alignmentAxis = getAlignmentAxis(placement);
34338
+ const length = getAxisLength(alignmentAxis);
34339
+ let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';
34340
+ if (rects.reference[length] > rects.floating[length]) {
34341
+ mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
34342
+ }
34343
+ return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];
34344
+ }
34345
+ function getExpandedPlacements(placement) {
34346
+ const oppositePlacement = getOppositePlacement(placement);
34347
+ return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
34348
+ }
34349
+ function getOppositeAlignmentPlacement(placement) {
34350
+ return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);
34351
+ }
34352
+ const lrPlacement = ['left', 'right'];
34353
+ const rlPlacement = ['right', 'left'];
34354
+ const tbPlacement = ['top', 'bottom'];
34355
+ const btPlacement = ['bottom', 'top'];
34356
+ function getSideList(side, isStart, rtl) {
34357
+ switch (side) {
34358
+ case 'top':
34359
+ case 'bottom':
34360
+ if (rtl) return isStart ? rlPlacement : lrPlacement;
34361
+ return isStart ? lrPlacement : rlPlacement;
34362
+ case 'left':
34363
+ case 'right':
34364
+ return isStart ? tbPlacement : btPlacement;
34365
+ default:
34366
+ return [];
34367
+ }
34368
+ }
34369
+ function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
34370
+ const alignment = getAlignment(placement);
34371
+ let list = getSideList(getSide(placement), direction === 'start', rtl);
34372
+ if (alignment) {
34373
+ list = list.map(side => side + "-" + alignment);
34374
+ if (flipAlignment) {
34375
+ list = list.concat(list.map(getOppositeAlignmentPlacement));
34376
+ }
34377
+ }
34378
+ return list;
34379
+ }
34380
+ function getOppositePlacement(placement) {
34381
+ return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);
34382
+ }
34383
+ function expandPaddingObject(padding) {
34384
+ return {
34385
+ top: 0,
34386
+ right: 0,
34387
+ bottom: 0,
34388
+ left: 0,
34389
+ ...padding
34390
+ };
34391
+ }
34392
+ function getPaddingObject(padding) {
34393
+ return typeof padding !== 'number' ? expandPaddingObject(padding) : {
34394
+ top: padding,
34395
+ right: padding,
34396
+ bottom: padding,
34397
+ left: padding
34398
+ };
34399
+ }
34400
+ function rectToClientRect(rect) {
34401
+ const {
34402
+ x,
34403
+ y,
34404
+ width,
34405
+ height
34406
+ } = rect;
34407
+ return {
34408
+ width,
34409
+ height,
34410
+ top: y,
34411
+ left: x,
34412
+ right: x + width,
34413
+ bottom: y + height,
34414
+ x,
34415
+ y
34416
+ };
34417
+ }
34418
+
34419
+ function computeCoordsFromPlacement(_ref, placement, rtl) {
34420
+ let {
34421
+ reference,
34422
+ floating
34423
+ } = _ref;
34424
+ const sideAxis = getSideAxis(placement);
34425
+ const alignmentAxis = getAlignmentAxis(placement);
34426
+ const alignLength = getAxisLength(alignmentAxis);
34427
+ const side = getSide(placement);
34428
+ const isVertical = sideAxis === 'y';
34429
+ const commonX = reference.x + reference.width / 2 - floating.width / 2;
34430
+ const commonY = reference.y + reference.height / 2 - floating.height / 2;
34431
+ const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;
34432
+ let coords;
34433
+ switch (side) {
34434
+ case 'top':
34435
+ coords = {
34436
+ x: commonX,
34437
+ y: reference.y - floating.height
34438
+ };
34439
+ break;
34440
+ case 'bottom':
34441
+ coords = {
34442
+ x: commonX,
34443
+ y: reference.y + reference.height
34444
+ };
34445
+ break;
34446
+ case 'right':
34447
+ coords = {
34448
+ x: reference.x + reference.width,
34449
+ y: commonY
34450
+ };
34451
+ break;
34452
+ case 'left':
34453
+ coords = {
34454
+ x: reference.x - floating.width,
34455
+ y: commonY
34456
+ };
34457
+ break;
34458
+ default:
34459
+ coords = {
34460
+ x: reference.x,
34461
+ y: reference.y
34462
+ };
34463
+ }
34464
+ switch (getAlignment(placement)) {
34465
+ case 'start':
34466
+ coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
34467
+ break;
34468
+ case 'end':
34469
+ coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
34470
+ break;
34471
+ }
34472
+ return coords;
34473
+ }
34474
+
34475
+ /**
34476
+ * Computes the `x` and `y` coordinates that will place the floating element
34477
+ * next to a given reference element.
34478
+ *
34479
+ * This export does not have any `platform` interface logic. You will need to
34480
+ * write one for the platform you are using Floating UI with.
34481
+ */
34482
+ const computePosition$1 = async (reference, floating, config) => {
34483
+ const {
34484
+ placement = 'bottom',
34485
+ strategy = 'absolute',
34486
+ middleware = [],
34487
+ platform
34488
+ } = config;
34489
+ const validMiddleware = middleware.filter(Boolean);
34490
+ const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));
34491
+ let rects = await platform.getElementRects({
34492
+ reference,
34493
+ floating,
34494
+ strategy
34495
+ });
34496
+ let {
34497
+ x,
34498
+ y
34499
+ } = computeCoordsFromPlacement(rects, placement, rtl);
34500
+ let statefulPlacement = placement;
34501
+ let middlewareData = {};
34502
+ let resetCount = 0;
34503
+ for (let i = 0; i < validMiddleware.length; i++) {
34504
+ const {
34505
+ name,
34506
+ fn
34507
+ } = validMiddleware[i];
34508
+ const {
34509
+ x: nextX,
34510
+ y: nextY,
34511
+ data,
34512
+ reset
34513
+ } = await fn({
34514
+ x,
34515
+ y,
34516
+ initialPlacement: placement,
34517
+ placement: statefulPlacement,
34518
+ strategy,
34519
+ middlewareData,
34520
+ rects,
34521
+ platform,
34522
+ elements: {
34523
+ reference,
34524
+ floating
34525
+ }
34526
+ });
34527
+ x = nextX != null ? nextX : x;
34528
+ y = nextY != null ? nextY : y;
34529
+ middlewareData = {
34530
+ ...middlewareData,
34531
+ [name]: {
34532
+ ...middlewareData[name],
34533
+ ...data
34534
+ }
34535
+ };
34536
+ if (reset && resetCount <= 50) {
34537
+ resetCount++;
34538
+ if (typeof reset === 'object') {
34539
+ if (reset.placement) {
34540
+ statefulPlacement = reset.placement;
34541
+ }
34542
+ if (reset.rects) {
34543
+ rects = reset.rects === true ? await platform.getElementRects({
34544
+ reference,
34545
+ floating,
34546
+ strategy
34547
+ }) : reset.rects;
34548
+ }
34549
+ ({
34550
+ x,
34551
+ y
34552
+ } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));
34553
+ }
34554
+ i = -1;
34555
+ }
34556
+ }
34557
+ return {
34558
+ x,
34559
+ y,
34560
+ placement: statefulPlacement,
34561
+ strategy,
34562
+ middlewareData
34563
+ };
34564
+ };
34565
+
34566
+ /**
34567
+ * Resolves with an object of overflow side offsets that determine how much the
34568
+ * element is overflowing a given clipping boundary on each side.
34569
+ * - positive = overflowing the boundary by that number of pixels
34570
+ * - negative = how many pixels left before it will overflow
34571
+ * - 0 = lies flush with the boundary
34572
+ * @see https://floating-ui.com/docs/detectOverflow
34573
+ */
34574
+ async function detectOverflow(state, options) {
34575
+ var _await$platform$isEle;
34576
+ if (options === void 0) {
34577
+ options = {};
34578
+ }
34579
+ const {
34580
+ x,
34581
+ y,
34582
+ platform,
34583
+ rects,
34584
+ elements,
34585
+ strategy
34586
+ } = state;
34587
+ const {
34588
+ boundary = 'clippingAncestors',
34589
+ rootBoundary = 'viewport',
34590
+ elementContext = 'floating',
34591
+ altBoundary = false,
34592
+ padding = 0
34593
+ } = evaluate(options, state);
34594
+ const paddingObject = getPaddingObject(padding);
34595
+ const altContext = elementContext === 'floating' ? 'reference' : 'floating';
34596
+ const element = elements[altBoundary ? altContext : elementContext];
34597
+ const clippingClientRect = rectToClientRect(await platform.getClippingRect({
34598
+ element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
34599
+ boundary,
34600
+ rootBoundary,
34601
+ strategy
34602
+ }));
34603
+ const rect = elementContext === 'floating' ? {
34604
+ x,
34605
+ y,
34606
+ width: rects.floating.width,
34607
+ height: rects.floating.height
34608
+ } : rects.reference;
34609
+ const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
34610
+ const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
34611
+ x: 1,
34612
+ y: 1
34613
+ } : {
34614
+ x: 1,
34615
+ y: 1
34616
+ };
34617
+ const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
34618
+ elements,
34619
+ rect,
34620
+ offsetParent,
34621
+ strategy
34622
+ }) : rect);
34623
+ return {
34624
+ top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
34625
+ bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
34626
+ left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
34627
+ right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
34628
+ };
34629
+ }
34630
+
34631
+ /**
34632
+ * Provides data to position an inner element of the floating element so that it
34633
+ * appears centered to the reference element.
34634
+ * @see https://floating-ui.com/docs/arrow
34635
+ */
34636
+ const arrow$1 = options => ({
34637
+ name: 'arrow',
34638
+ options,
34639
+ async fn(state) {
34640
+ const {
34641
+ x,
34642
+ y,
34643
+ placement,
34644
+ rects,
34645
+ platform,
34646
+ elements,
34647
+ middlewareData
34648
+ } = state;
34649
+ // Since `element` is required, we don't Partial<> the type.
34650
+ const {
34651
+ element,
34652
+ padding = 0
34653
+ } = evaluate(options, state) || {};
34654
+ if (element == null) {
34655
+ return {};
34656
+ }
34657
+ const paddingObject = getPaddingObject(padding);
34658
+ const coords = {
34659
+ x,
34660
+ y
34661
+ };
34662
+ const axis = getAlignmentAxis(placement);
34663
+ const length = getAxisLength(axis);
34664
+ const arrowDimensions = await platform.getDimensions(element);
34665
+ const isYAxis = axis === 'y';
34666
+ const minProp = isYAxis ? 'top' : 'left';
34667
+ const maxProp = isYAxis ? 'bottom' : 'right';
34668
+ const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';
34669
+ const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];
34670
+ const startDiff = coords[axis] - rects.reference[axis];
34671
+ const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));
34672
+ let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;
34673
+
34674
+ // DOM platform can return `window` as the `offsetParent`.
34675
+ if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {
34676
+ clientSize = elements.floating[clientProp] || rects.floating[length];
34677
+ }
34678
+ const centerToReference = endDiff / 2 - startDiff / 2;
34679
+
34680
+ // If the padding is large enough that it causes the arrow to no longer be
34681
+ // centered, modify the padding so that it is centered.
34682
+ const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;
34683
+ const minPadding = min(paddingObject[minProp], largestPossiblePadding);
34684
+ const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);
34685
+
34686
+ // Make sure the arrow doesn't overflow the floating element if the center
34687
+ // point is outside the floating element's bounds.
34688
+ const min$1 = minPadding;
34689
+ const max = clientSize - arrowDimensions[length] - maxPadding;
34690
+ const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
34691
+ const offset = clamp(min$1, center, max);
34692
+
34693
+ // If the reference is small enough that the arrow's padding causes it to
34694
+ // to point to nothing for an aligned placement, adjust the offset of the
34695
+ // floating element itself. To ensure `shift()` continues to take action,
34696
+ // a single reset is performed when this is true.
34697
+ const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
34698
+ const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;
34699
+ return {
34700
+ [axis]: coords[axis] + alignmentOffset,
34701
+ data: {
34702
+ [axis]: offset,
34703
+ centerOffset: center - offset - alignmentOffset,
34704
+ ...(shouldAddOffset && {
34705
+ alignmentOffset
34706
+ })
34707
+ },
34708
+ reset: shouldAddOffset
34709
+ };
34710
+ }
34711
+ });
34712
+
34713
+ /**
34714
+ * Optimizes the visibility of the floating element by flipping the `placement`
34715
+ * in order to keep it in view when the preferred placement(s) will overflow the
34716
+ * clipping boundary. Alternative to `autoPlacement`.
34717
+ * @see https://floating-ui.com/docs/flip
34718
+ */
34719
+ const flip$1 = function (options) {
34720
+ if (options === void 0) {
34721
+ options = {};
34722
+ }
34723
+ return {
34724
+ name: 'flip',
34725
+ options,
34726
+ async fn(state) {
34727
+ var _middlewareData$arrow, _middlewareData$flip;
34728
+ const {
34729
+ placement,
34730
+ middlewareData,
34731
+ rects,
34732
+ initialPlacement,
34733
+ platform,
34734
+ elements
34735
+ } = state;
34736
+ const {
34737
+ mainAxis: checkMainAxis = true,
34738
+ crossAxis: checkCrossAxis = true,
34739
+ fallbackPlacements: specifiedFallbackPlacements,
34740
+ fallbackStrategy = 'bestFit',
34741
+ fallbackAxisSideDirection = 'none',
34742
+ flipAlignment = true,
34743
+ ...detectOverflowOptions
34744
+ } = evaluate(options, state);
34745
+
34746
+ // If a reset by the arrow was caused due to an alignment offset being
34747
+ // added, we should skip any logic now since `flip()` has already done its
34748
+ // work.
34749
+ // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643
34750
+ if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
34751
+ return {};
34752
+ }
34753
+ const side = getSide(placement);
34754
+ const initialSideAxis = getSideAxis(initialPlacement);
34755
+ const isBasePlacement = getSide(initialPlacement) === initialPlacement;
34756
+ const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
34757
+ const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));
34758
+ const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';
34759
+ if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {
34760
+ fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
34761
+ }
34762
+ const placements = [initialPlacement, ...fallbackPlacements];
34763
+ const overflow = await detectOverflow(state, detectOverflowOptions);
34764
+ const overflows = [];
34765
+ let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
34766
+ if (checkMainAxis) {
34767
+ overflows.push(overflow[side]);
34768
+ }
34769
+ if (checkCrossAxis) {
34770
+ const sides = getAlignmentSides(placement, rects, rtl);
34771
+ overflows.push(overflow[sides[0]], overflow[sides[1]]);
34772
+ }
34773
+ overflowsData = [...overflowsData, {
34774
+ placement,
34775
+ overflows
34776
+ }];
34777
+
34778
+ // One or more sides is overflowing.
34779
+ if (!overflows.every(side => side <= 0)) {
34780
+ var _middlewareData$flip2, _overflowsData$filter;
34781
+ const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
34782
+ const nextPlacement = placements[nextIndex];
34783
+ if (nextPlacement) {
34784
+ const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;
34785
+ if (!ignoreCrossAxisOverflow ||
34786
+ // We leave the current main axis only if every placement on that axis
34787
+ // overflows the main axis.
34788
+ overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {
34789
+ // Try next placement and re-run the lifecycle.
34790
+ return {
34791
+ data: {
34792
+ index: nextIndex,
34793
+ overflows: overflowsData
34794
+ },
34795
+ reset: {
34796
+ placement: nextPlacement
34797
+ }
34798
+ };
34799
+ }
34800
+ }
34801
+
34802
+ // First, find the candidates that fit on the mainAxis side of overflow,
34803
+ // then find the placement that fits the best on the main crossAxis side.
34804
+ let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;
34805
+
34806
+ // Otherwise fallback.
34807
+ if (!resetPlacement) {
34808
+ switch (fallbackStrategy) {
34809
+ case 'bestFit':
34810
+ {
34811
+ var _overflowsData$filter2;
34812
+ const placement = (_overflowsData$filter2 = overflowsData.filter(d => {
34813
+ if (hasFallbackAxisSideDirection) {
34814
+ const currentSideAxis = getSideAxis(d.placement);
34815
+ return currentSideAxis === initialSideAxis ||
34816
+ // Create a bias to the `y` side axis due to horizontal
34817
+ // reading directions favoring greater width.
34818
+ currentSideAxis === 'y';
34819
+ }
34820
+ return true;
34821
+ }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];
34822
+ if (placement) {
34823
+ resetPlacement = placement;
34824
+ }
34825
+ break;
34826
+ }
34827
+ case 'initialPlacement':
34828
+ resetPlacement = initialPlacement;
34829
+ break;
34830
+ }
34831
+ }
34832
+ if (placement !== resetPlacement) {
34833
+ return {
34834
+ reset: {
34835
+ placement: resetPlacement
34836
+ }
34837
+ };
34838
+ }
34839
+ }
34840
+ return {};
34841
+ }
34842
+ };
34843
+ };
34844
+
34845
+ const originSides = /*#__PURE__*/new Set(['left', 'top']);
34846
+
34847
+ // For type backwards-compatibility, the `OffsetOptions` type was also
34848
+ // Derivable.
34849
+
34850
+ async function convertValueToCoords(state, options) {
34851
+ const {
34852
+ placement,
34853
+ platform,
34854
+ elements
34855
+ } = state;
34856
+ const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
34857
+ const side = getSide(placement);
34858
+ const alignment = getAlignment(placement);
34859
+ const isVertical = getSideAxis(placement) === 'y';
34860
+ const mainAxisMulti = originSides.has(side) ? -1 : 1;
34861
+ const crossAxisMulti = rtl && isVertical ? -1 : 1;
34862
+ const rawValue = evaluate(options, state);
34863
+
34864
+ // eslint-disable-next-line prefer-const
34865
+ let {
34866
+ mainAxis,
34867
+ crossAxis,
34868
+ alignmentAxis
34869
+ } = typeof rawValue === 'number' ? {
34870
+ mainAxis: rawValue,
34871
+ crossAxis: 0,
34872
+ alignmentAxis: null
34873
+ } : {
34874
+ mainAxis: rawValue.mainAxis || 0,
34875
+ crossAxis: rawValue.crossAxis || 0,
34876
+ alignmentAxis: rawValue.alignmentAxis
34877
+ };
34878
+ if (alignment && typeof alignmentAxis === 'number') {
34879
+ crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;
34880
+ }
34881
+ return isVertical ? {
34882
+ x: crossAxis * crossAxisMulti,
34883
+ y: mainAxis * mainAxisMulti
34884
+ } : {
34885
+ x: mainAxis * mainAxisMulti,
34886
+ y: crossAxis * crossAxisMulti
34887
+ };
34888
+ }
34889
+
34890
+ /**
34891
+ * Modifies the placement by translating the floating element along the
34892
+ * specified axes.
34893
+ * A number (shorthand for `mainAxis` or distance), or an axes configuration
34894
+ * object may be passed.
34895
+ * @see https://floating-ui.com/docs/offset
34896
+ */
34897
+ const offset$1 = function (options) {
34898
+ if (options === void 0) {
34899
+ options = 0;
34900
+ }
34901
+ return {
34902
+ name: 'offset',
34903
+ options,
34904
+ async fn(state) {
34905
+ var _middlewareData$offse, _middlewareData$arrow;
34906
+ const {
34907
+ x,
34908
+ y,
34909
+ placement,
34910
+ middlewareData
34911
+ } = state;
34912
+ const diffCoords = await convertValueToCoords(state, options);
34913
+
34914
+ // If the placement is the same and the arrow caused an alignment offset
34915
+ // then we don't need to change the positioning coordinates.
34916
+ if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
34917
+ return {};
34918
+ }
34919
+ return {
34920
+ x: x + diffCoords.x,
34921
+ y: y + diffCoords.y,
34922
+ data: {
34923
+ ...diffCoords,
34924
+ placement
34925
+ }
34926
+ };
34927
+ }
34928
+ };
34929
+ };
34930
+
34931
+ /**
34932
+ * Optimizes the visibility of the floating element by shifting it in order to
34933
+ * keep it in view when it will overflow the clipping boundary.
34934
+ * @see https://floating-ui.com/docs/shift
34935
+ */
34936
+ const shift$1 = function (options) {
34937
+ if (options === void 0) {
34938
+ options = {};
34939
+ }
34940
+ return {
34941
+ name: 'shift',
34942
+ options,
34943
+ async fn(state) {
34944
+ const {
34945
+ x,
34946
+ y,
34947
+ placement
34948
+ } = state;
34949
+ const {
34950
+ mainAxis: checkMainAxis = true,
34951
+ crossAxis: checkCrossAxis = false,
34952
+ limiter = {
34953
+ fn: _ref => {
34954
+ let {
34955
+ x,
34956
+ y
34957
+ } = _ref;
34958
+ return {
34959
+ x,
34960
+ y
34961
+ };
34962
+ }
34963
+ },
34964
+ ...detectOverflowOptions
34965
+ } = evaluate(options, state);
34966
+ const coords = {
34967
+ x,
34968
+ y
34969
+ };
34970
+ const overflow = await detectOverflow(state, detectOverflowOptions);
34971
+ const crossAxis = getSideAxis(getSide(placement));
34972
+ const mainAxis = getOppositeAxis(crossAxis);
34973
+ let mainAxisCoord = coords[mainAxis];
34974
+ let crossAxisCoord = coords[crossAxis];
34975
+ if (checkMainAxis) {
34976
+ const minSide = mainAxis === 'y' ? 'top' : 'left';
34977
+ const maxSide = mainAxis === 'y' ? 'bottom' : 'right';
34978
+ const min = mainAxisCoord + overflow[minSide];
34979
+ const max = mainAxisCoord - overflow[maxSide];
34980
+ mainAxisCoord = clamp(min, mainAxisCoord, max);
34981
+ }
34982
+ if (checkCrossAxis) {
34983
+ const minSide = crossAxis === 'y' ? 'top' : 'left';
34984
+ const maxSide = crossAxis === 'y' ? 'bottom' : 'right';
34985
+ const min = crossAxisCoord + overflow[minSide];
34986
+ const max = crossAxisCoord - overflow[maxSide];
34987
+ crossAxisCoord = clamp(min, crossAxisCoord, max);
34988
+ }
34989
+ const limitedCoords = limiter.fn({
34990
+ ...state,
34991
+ [mainAxis]: mainAxisCoord,
34992
+ [crossAxis]: crossAxisCoord
34993
+ });
34994
+ return {
34995
+ ...limitedCoords,
34996
+ data: {
34997
+ x: limitedCoords.x - x,
34998
+ y: limitedCoords.y - y,
34999
+ enabled: {
35000
+ [mainAxis]: checkMainAxis,
35001
+ [crossAxis]: checkCrossAxis
35002
+ }
35003
+ }
35004
+ };
35005
+ }
35006
+ };
35007
+ };
35008
+
35009
+ function hasWindow() {
35010
+ return typeof window !== 'undefined';
35011
+ }
35012
+ function getNodeName(node) {
35013
+ if (isNode(node)) {
35014
+ return (node.nodeName || '').toLowerCase();
35015
+ }
35016
+ // Mocked nodes in testing environments may not be instances of Node. By
35017
+ // returning `#document` an infinite loop won't occur.
35018
+ // https://github.com/floating-ui/floating-ui/issues/2317
35019
+ return '#document';
35020
+ }
35021
+ function getWindow(node) {
35022
+ var _node$ownerDocument;
35023
+ return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;
35024
+ }
35025
+ function getDocumentElement(node) {
35026
+ var _ref;
35027
+ return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;
35028
+ }
35029
+ function isNode(value) {
35030
+ if (!hasWindow()) {
35031
+ return false;
35032
+ }
35033
+ return value instanceof Node || value instanceof getWindow(value).Node;
35034
+ }
35035
+ function isElement(value) {
35036
+ if (!hasWindow()) {
35037
+ return false;
35038
+ }
35039
+ return value instanceof Element || value instanceof getWindow(value).Element;
35040
+ }
35041
+ function isHTMLElement(value) {
35042
+ if (!hasWindow()) {
35043
+ return false;
35044
+ }
35045
+ return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;
35046
+ }
35047
+ function isShadowRoot(value) {
35048
+ if (!hasWindow() || typeof ShadowRoot === 'undefined') {
35049
+ return false;
35050
+ }
35051
+ return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
35052
+ }
35053
+ const invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);
35054
+ function isOverflowElement(element) {
35055
+ const {
35056
+ overflow,
35057
+ overflowX,
35058
+ overflowY,
35059
+ display
35060
+ } = getComputedStyle$1(element);
35061
+ return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);
35062
+ }
35063
+ const tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);
35064
+ function isTableElement(element) {
35065
+ return tableElements.has(getNodeName(element));
35066
+ }
35067
+ const topLayerSelectors = [':popover-open', ':modal'];
35068
+ function isTopLayer(element) {
35069
+ return topLayerSelectors.some(selector => {
35070
+ try {
35071
+ return element.matches(selector);
35072
+ } catch (_e) {
35073
+ return false;
35074
+ }
35075
+ });
35076
+ }
35077
+ const transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];
35078
+ const willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];
35079
+ const containValues = ['paint', 'layout', 'strict', 'content'];
35080
+ function isContainingBlock(elementOrCss) {
35081
+ const webkit = isWebKit();
35082
+ const css = isElement(elementOrCss) ? getComputedStyle$1(elementOrCss) : elementOrCss;
35083
+
35084
+ // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
35085
+ // https://drafts.csswg.org/css-transforms-2/#individual-transforms
35086
+ return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));
35087
+ }
35088
+ function getContainingBlock(element) {
35089
+ let currentNode = getParentNode(element);
35090
+ while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {
35091
+ if (isContainingBlock(currentNode)) {
35092
+ return currentNode;
35093
+ } else if (isTopLayer(currentNode)) {
35094
+ return null;
35095
+ }
35096
+ currentNode = getParentNode(currentNode);
35097
+ }
35098
+ return null;
35099
+ }
35100
+ function isWebKit() {
35101
+ if (typeof CSS === 'undefined' || !CSS.supports) return false;
35102
+ return CSS.supports('-webkit-backdrop-filter', 'none');
35103
+ }
35104
+ const lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);
35105
+ function isLastTraversableNode(node) {
35106
+ return lastTraversableNodeNames.has(getNodeName(node));
35107
+ }
35108
+ function getComputedStyle$1(element) {
35109
+ return getWindow(element).getComputedStyle(element);
35110
+ }
35111
+ function getNodeScroll(element) {
35112
+ if (isElement(element)) {
35113
+ return {
35114
+ scrollLeft: element.scrollLeft,
35115
+ scrollTop: element.scrollTop
35116
+ };
35117
+ }
35118
+ return {
35119
+ scrollLeft: element.scrollX,
35120
+ scrollTop: element.scrollY
35121
+ };
35122
+ }
35123
+ function getParentNode(node) {
35124
+ if (getNodeName(node) === 'html') {
35125
+ return node;
35126
+ }
35127
+ const result =
35128
+ // Step into the shadow DOM of the parent of a slotted node.
35129
+ node.assignedSlot ||
35130
+ // DOM Element detected.
35131
+ node.parentNode ||
35132
+ // ShadowRoot detected.
35133
+ isShadowRoot(node) && node.host ||
35134
+ // Fallback.
35135
+ getDocumentElement(node);
35136
+ return isShadowRoot(result) ? result.host : result;
35137
+ }
35138
+ function getNearestOverflowAncestor(node) {
35139
+ const parentNode = getParentNode(node);
35140
+ if (isLastTraversableNode(parentNode)) {
35141
+ return node.ownerDocument ? node.ownerDocument.body : node.body;
35142
+ }
35143
+ if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
35144
+ return parentNode;
35145
+ }
35146
+ return getNearestOverflowAncestor(parentNode);
35147
+ }
35148
+ function getOverflowAncestors(node, list, traverseIframes) {
35149
+ var _node$ownerDocument2;
35150
+ if (list === void 0) {
35151
+ list = [];
35152
+ }
35153
+ const scrollableAncestor = getNearestOverflowAncestor(node);
35154
+ const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);
35155
+ const win = getWindow(scrollableAncestor);
35156
+ if (isBody) {
35157
+ return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], []);
35158
+ }
35159
+ return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));
35160
+ }
35161
+ function getFrameElement(win) {
35162
+ return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
35163
+ }
35164
+
35165
+ function getCssDimensions(element) {
35166
+ const css = getComputedStyle$1(element);
35167
+ // In testing environments, the `width` and `height` properties are empty
35168
+ // strings for SVG elements, returning NaN. Fallback to `0` in this case.
35169
+ let width = parseFloat(css.width) || 0;
35170
+ let height = parseFloat(css.height) || 0;
35171
+ const hasOffset = isHTMLElement(element);
35172
+ const offsetWidth = hasOffset ? element.offsetWidth : width;
35173
+ const offsetHeight = hasOffset ? element.offsetHeight : height;
35174
+ const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;
35175
+ if (shouldFallback) {
35176
+ width = offsetWidth;
35177
+ height = offsetHeight;
35178
+ }
35179
+ return {
35180
+ width,
35181
+ height,
35182
+ $: shouldFallback
35183
+ };
35184
+ }
35185
+
35186
+ function unwrapElement(element) {
35187
+ return !isElement(element) ? element.contextElement : element;
35188
+ }
35189
+
35190
+ function getScale(element) {
35191
+ const domElement = unwrapElement(element);
35192
+ if (!isHTMLElement(domElement)) {
35193
+ return createCoords(1);
35194
+ }
35195
+ const rect = domElement.getBoundingClientRect();
35196
+ const {
35197
+ width,
35198
+ height,
35199
+ $
35200
+ } = getCssDimensions(domElement);
35201
+ let x = ($ ? round(rect.width) : rect.width) / width;
35202
+ let y = ($ ? round(rect.height) : rect.height) / height;
35203
+
35204
+ // 0, NaN, or Infinity should always fallback to 1.
35205
+
35206
+ if (!x || !Number.isFinite(x)) {
35207
+ x = 1;
35208
+ }
35209
+ if (!y || !Number.isFinite(y)) {
35210
+ y = 1;
35211
+ }
35212
+ return {
35213
+ x,
35214
+ y
35215
+ };
35216
+ }
35217
+
35218
+ const noOffsets = /*#__PURE__*/createCoords(0);
35219
+ function getVisualOffsets(element) {
35220
+ const win = getWindow(element);
35221
+ if (!isWebKit() || !win.visualViewport) {
35222
+ return noOffsets;
35223
+ }
35224
+ return {
35225
+ x: win.visualViewport.offsetLeft,
35226
+ y: win.visualViewport.offsetTop
35227
+ };
35228
+ }
35229
+ function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {
35230
+ if (isFixed === void 0) {
35231
+ isFixed = false;
35232
+ }
35233
+ if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {
35234
+ return false;
35235
+ }
35236
+ return isFixed;
35237
+ }
35238
+
35239
+ function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {
35240
+ if (includeScale === void 0) {
35241
+ includeScale = false;
35242
+ }
35243
+ if (isFixedStrategy === void 0) {
35244
+ isFixedStrategy = false;
35245
+ }
35246
+ const clientRect = element.getBoundingClientRect();
35247
+ const domElement = unwrapElement(element);
35248
+ let scale = createCoords(1);
35249
+ if (includeScale) {
35250
+ if (offsetParent) {
35251
+ if (isElement(offsetParent)) {
35252
+ scale = getScale(offsetParent);
35253
+ }
35254
+ } else {
35255
+ scale = getScale(element);
35256
+ }
35257
+ }
35258
+ const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);
35259
+ let x = (clientRect.left + visualOffsets.x) / scale.x;
35260
+ let y = (clientRect.top + visualOffsets.y) / scale.y;
35261
+ let width = clientRect.width / scale.x;
35262
+ let height = clientRect.height / scale.y;
35263
+ if (domElement) {
35264
+ const win = getWindow(domElement);
35265
+ const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
35266
+ let currentWin = win;
35267
+ let currentIFrame = getFrameElement(currentWin);
35268
+ while (currentIFrame && offsetParent && offsetWin !== currentWin) {
35269
+ const iframeScale = getScale(currentIFrame);
35270
+ const iframeRect = currentIFrame.getBoundingClientRect();
35271
+ const css = getComputedStyle$1(currentIFrame);
35272
+ const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;
35273
+ const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;
35274
+ x *= iframeScale.x;
35275
+ y *= iframeScale.y;
35276
+ width *= iframeScale.x;
35277
+ height *= iframeScale.y;
35278
+ x += left;
35279
+ y += top;
35280
+ currentWin = getWindow(currentIFrame);
35281
+ currentIFrame = getFrameElement(currentWin);
35282
+ }
35283
+ }
35284
+ return rectToClientRect({
35285
+ width,
35286
+ height,
35287
+ x,
35288
+ y
35289
+ });
35290
+ }
35291
+
35292
+ // If <html> has a CSS width greater than the viewport, then this will be
35293
+ // incorrect for RTL.
35294
+ function getWindowScrollBarX(element, rect) {
35295
+ const leftScroll = getNodeScroll(element).scrollLeft;
35296
+ if (!rect) {
35297
+ return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;
35298
+ }
35299
+ return rect.left + leftScroll;
35300
+ }
35301
+
35302
+ function getHTMLOffset(documentElement, scroll) {
35303
+ const htmlRect = documentElement.getBoundingClientRect();
35304
+ const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);
35305
+ const y = htmlRect.top + scroll.scrollTop;
35306
+ return {
35307
+ x,
35308
+ y
35309
+ };
35310
+ }
35311
+
35312
+ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
35313
+ let {
35314
+ elements,
35315
+ rect,
35316
+ offsetParent,
35317
+ strategy
35318
+ } = _ref;
35319
+ const isFixed = strategy === 'fixed';
35320
+ const documentElement = getDocumentElement(offsetParent);
35321
+ const topLayer = elements ? isTopLayer(elements.floating) : false;
35322
+ if (offsetParent === documentElement || topLayer && isFixed) {
35323
+ return rect;
35324
+ }
35325
+ let scroll = {
35326
+ scrollLeft: 0,
35327
+ scrollTop: 0
35328
+ };
35329
+ let scale = createCoords(1);
35330
+ const offsets = createCoords(0);
35331
+ const isOffsetParentAnElement = isHTMLElement(offsetParent);
35332
+ if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
35333
+ if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
35334
+ scroll = getNodeScroll(offsetParent);
35335
+ }
35336
+ if (isHTMLElement(offsetParent)) {
35337
+ const offsetRect = getBoundingClientRect(offsetParent);
35338
+ scale = getScale(offsetParent);
35339
+ offsets.x = offsetRect.x + offsetParent.clientLeft;
35340
+ offsets.y = offsetRect.y + offsetParent.clientTop;
35341
+ }
35342
+ }
35343
+ const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
35344
+ return {
35345
+ width: rect.width * scale.x,
35346
+ height: rect.height * scale.y,
35347
+ x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,
35348
+ y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y
35349
+ };
35350
+ }
35351
+
35352
+ function getClientRects(element) {
35353
+ return Array.from(element.getClientRects());
35354
+ }
35355
+
35356
+ // Gets the entire size of the scrollable document area, even extending outside
35357
+ // of the `<html>` and `<body>` rect bounds if horizontally scrollable.
35358
+ function getDocumentRect(element) {
35359
+ const html = getDocumentElement(element);
35360
+ const scroll = getNodeScroll(element);
35361
+ const body = element.ownerDocument.body;
35362
+ const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);
35363
+ const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);
35364
+ let x = -scroll.scrollLeft + getWindowScrollBarX(element);
35365
+ const y = -scroll.scrollTop;
35366
+ if (getComputedStyle$1(body).direction === 'rtl') {
35367
+ x += max(html.clientWidth, body.clientWidth) - width;
35368
+ }
35369
+ return {
35370
+ width,
35371
+ height,
35372
+ x,
35373
+ y
35374
+ };
35375
+ }
35376
+
35377
+ // Safety check: ensure the scrollbar space is reasonable in case this
35378
+ // calculation is affected by unusual styles.
35379
+ // Most scrollbars leave 15-18px of space.
35380
+ const SCROLLBAR_MAX = 25;
35381
+ function getViewportRect(element, strategy) {
35382
+ const win = getWindow(element);
35383
+ const html = getDocumentElement(element);
35384
+ const visualViewport = win.visualViewport;
35385
+ let width = html.clientWidth;
35386
+ let height = html.clientHeight;
35387
+ let x = 0;
35388
+ let y = 0;
35389
+ if (visualViewport) {
35390
+ width = visualViewport.width;
35391
+ height = visualViewport.height;
35392
+ const visualViewportBased = isWebKit();
35393
+ if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {
35394
+ x = visualViewport.offsetLeft;
35395
+ y = visualViewport.offsetTop;
35396
+ }
35397
+ }
35398
+ const windowScrollbarX = getWindowScrollBarX(html);
35399
+ // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the
35400
+ // visual width of the <html> but this is not considered in the size
35401
+ // of `html.clientWidth`.
35402
+ if (windowScrollbarX <= 0) {
35403
+ const doc = html.ownerDocument;
35404
+ const body = doc.body;
35405
+ const bodyStyles = getComputedStyle(body);
35406
+ const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;
35407
+ const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
35408
+ if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {
35409
+ width -= clippingStableScrollbarWidth;
35410
+ }
35411
+ } else if (windowScrollbarX <= SCROLLBAR_MAX) {
35412
+ // If the <body> scrollbar is on the left, the width needs to be extended
35413
+ // by the scrollbar amount so there isn't extra space on the right.
35414
+ width += windowScrollbarX;
35415
+ }
35416
+ return {
35417
+ width,
35418
+ height,
35419
+ x,
35420
+ y
35421
+ };
35422
+ }
35423
+
35424
+ const absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);
35425
+ // Returns the inner client rect, subtracting scrollbars if present.
35426
+ function getInnerBoundingClientRect(element, strategy) {
35427
+ const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');
35428
+ const top = clientRect.top + element.clientTop;
35429
+ const left = clientRect.left + element.clientLeft;
35430
+ const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);
35431
+ const width = element.clientWidth * scale.x;
35432
+ const height = element.clientHeight * scale.y;
35433
+ const x = left * scale.x;
35434
+ const y = top * scale.y;
35435
+ return {
35436
+ width,
35437
+ height,
35438
+ x,
35439
+ y
35440
+ };
35441
+ }
35442
+ function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {
35443
+ let rect;
35444
+ if (clippingAncestor === 'viewport') {
35445
+ rect = getViewportRect(element, strategy);
35446
+ } else if (clippingAncestor === 'document') {
35447
+ rect = getDocumentRect(getDocumentElement(element));
35448
+ } else if (isElement(clippingAncestor)) {
35449
+ rect = getInnerBoundingClientRect(clippingAncestor, strategy);
35450
+ } else {
35451
+ const visualOffsets = getVisualOffsets(element);
35452
+ rect = {
35453
+ x: clippingAncestor.x - visualOffsets.x,
35454
+ y: clippingAncestor.y - visualOffsets.y,
35455
+ width: clippingAncestor.width,
35456
+ height: clippingAncestor.height
35457
+ };
35458
+ }
35459
+ return rectToClientRect(rect);
35460
+ }
35461
+ function hasFixedPositionAncestor(element, stopNode) {
35462
+ const parentNode = getParentNode(element);
35463
+ if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {
35464
+ return false;
35465
+ }
35466
+ return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);
35467
+ }
35468
+
35469
+ // A "clipping ancestor" is an `overflow` element with the characteristic of
35470
+ // clipping (or hiding) child elements. This returns all clipping ancestors
35471
+ // of the given element up the tree.
35472
+ function getClippingElementAncestors(element, cache) {
35473
+ const cachedResult = cache.get(element);
35474
+ if (cachedResult) {
35475
+ return cachedResult;
35476
+ }
35477
+ let result = getOverflowAncestors(element, []).filter(el => isElement(el) && getNodeName(el) !== 'body');
35478
+ let currentContainingBlockComputedStyle = null;
35479
+ const elementIsFixed = getComputedStyle$1(element).position === 'fixed';
35480
+ let currentNode = elementIsFixed ? getParentNode(element) : element;
35481
+
35482
+ // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
35483
+ while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {
35484
+ const computedStyle = getComputedStyle$1(currentNode);
35485
+ const currentNodeIsContaining = isContainingBlock(currentNode);
35486
+ if (!currentNodeIsContaining && computedStyle.position === 'fixed') {
35487
+ currentContainingBlockComputedStyle = null;
35488
+ }
35489
+ const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
35490
+ if (shouldDropCurrentNode) {
35491
+ // Drop non-containing blocks.
35492
+ result = result.filter(ancestor => ancestor !== currentNode);
35493
+ } else {
35494
+ // Record last containing block for next iteration.
35495
+ currentContainingBlockComputedStyle = computedStyle;
35496
+ }
35497
+ currentNode = getParentNode(currentNode);
35498
+ }
35499
+ cache.set(element, result);
35500
+ return result;
35501
+ }
35502
+
35503
+ // Gets the maximum area that the element is visible in due to any number of
35504
+ // clipping ancestors.
35505
+ function getClippingRect(_ref) {
35506
+ let {
35507
+ element,
35508
+ boundary,
35509
+ rootBoundary,
35510
+ strategy
35511
+ } = _ref;
35512
+ const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);
35513
+ const clippingAncestors = [...elementClippingAncestors, rootBoundary];
35514
+ const firstClippingAncestor = clippingAncestors[0];
35515
+ const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
35516
+ const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
35517
+ accRect.top = max(rect.top, accRect.top);
35518
+ accRect.right = min(rect.right, accRect.right);
35519
+ accRect.bottom = min(rect.bottom, accRect.bottom);
35520
+ accRect.left = max(rect.left, accRect.left);
35521
+ return accRect;
35522
+ }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
35523
+ return {
35524
+ width: clippingRect.right - clippingRect.left,
35525
+ height: clippingRect.bottom - clippingRect.top,
35526
+ x: clippingRect.left,
35527
+ y: clippingRect.top
35528
+ };
35529
+ }
35530
+
35531
+ function getDimensions(element) {
35532
+ const {
35533
+ width,
35534
+ height
35535
+ } = getCssDimensions(element);
35536
+ return {
35537
+ width,
35538
+ height
35539
+ };
35540
+ }
35541
+
35542
+ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
35543
+ const isOffsetParentAnElement = isHTMLElement(offsetParent);
35544
+ const documentElement = getDocumentElement(offsetParent);
35545
+ const isFixed = strategy === 'fixed';
35546
+ const rect = getBoundingClientRect(element, true, isFixed, offsetParent);
35547
+ let scroll = {
35548
+ scrollLeft: 0,
35549
+ scrollTop: 0
35550
+ };
35551
+ const offsets = createCoords(0);
35552
+
35553
+ // If the <body> scrollbar appears on the left (e.g. RTL systems). Use
35554
+ // Firefox with layout.scrollbar.side = 3 in about:config to test this.
35555
+ function setLeftRTLScrollbarOffset() {
35556
+ offsets.x = getWindowScrollBarX(documentElement);
35557
+ }
35558
+ if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
35559
+ if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
35560
+ scroll = getNodeScroll(offsetParent);
35561
+ }
35562
+ if (isOffsetParentAnElement) {
35563
+ const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);
35564
+ offsets.x = offsetRect.x + offsetParent.clientLeft;
35565
+ offsets.y = offsetRect.y + offsetParent.clientTop;
35566
+ } else if (documentElement) {
35567
+ setLeftRTLScrollbarOffset();
35568
+ }
35569
+ }
35570
+ if (isFixed && !isOffsetParentAnElement && documentElement) {
35571
+ setLeftRTLScrollbarOffset();
35572
+ }
35573
+ const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
35574
+ const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;
35575
+ const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;
35576
+ return {
35577
+ x,
35578
+ y,
35579
+ width: rect.width,
35580
+ height: rect.height
35581
+ };
35582
+ }
35583
+
35584
+ function isStaticPositioned(element) {
35585
+ return getComputedStyle$1(element).position === 'static';
35586
+ }
35587
+
35588
+ function getTrueOffsetParent(element, polyfill) {
35589
+ if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {
35590
+ return null;
35591
+ }
35592
+ if (polyfill) {
35593
+ return polyfill(element);
35594
+ }
35595
+ let rawOffsetParent = element.offsetParent;
35596
+
35597
+ // Firefox returns the <html> element as the offsetParent if it's non-static,
35598
+ // while Chrome and Safari return the <body> element. The <body> element must
35599
+ // be used to perform the correct calculations even if the <html> element is
35600
+ // non-static.
35601
+ if (getDocumentElement(element) === rawOffsetParent) {
35602
+ rawOffsetParent = rawOffsetParent.ownerDocument.body;
35603
+ }
35604
+ return rawOffsetParent;
35605
+ }
35606
+
35607
+ // Gets the closest ancestor positioned element. Handles some edge cases,
35608
+ // such as table ancestors and cross browser bugs.
35609
+ function getOffsetParent(element, polyfill) {
35610
+ const win = getWindow(element);
35611
+ if (isTopLayer(element)) {
35612
+ return win;
35613
+ }
35614
+ if (!isHTMLElement(element)) {
35615
+ let svgOffsetParent = getParentNode(element);
35616
+ while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {
35617
+ if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {
35618
+ return svgOffsetParent;
35619
+ }
35620
+ svgOffsetParent = getParentNode(svgOffsetParent);
35621
+ }
35622
+ return win;
35623
+ }
35624
+ let offsetParent = getTrueOffsetParent(element, polyfill);
35625
+ while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {
35626
+ offsetParent = getTrueOffsetParent(offsetParent, polyfill);
35627
+ }
35628
+ if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {
35629
+ return win;
35630
+ }
35631
+ return offsetParent || getContainingBlock(element) || win;
35632
+ }
35633
+
35634
+ const getElementRects = async function (data) {
35635
+ const getOffsetParentFn = this.getOffsetParent || getOffsetParent;
35636
+ const getDimensionsFn = this.getDimensions;
35637
+ const floatingDimensions = await getDimensionsFn(data.floating);
35638
+ return {
35639
+ reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),
35640
+ floating: {
35641
+ x: 0,
35642
+ y: 0,
35643
+ width: floatingDimensions.width,
35644
+ height: floatingDimensions.height
35645
+ }
35646
+ };
35647
+ };
35648
+
35649
+ function isRTL(element) {
35650
+ return getComputedStyle$1(element).direction === 'rtl';
35651
+ }
35652
+
35653
+ const platform = {
35654
+ convertOffsetParentRelativeRectToViewportRelativeRect,
35655
+ getDocumentElement,
35656
+ getClippingRect,
35657
+ getOffsetParent,
35658
+ getElementRects,
35659
+ getClientRects,
35660
+ getDimensions,
35661
+ getScale,
35662
+ isElement,
35663
+ isRTL
35664
+ };
35665
+
35666
+ /**
35667
+ * Modifies the placement by translating the floating element along the
35668
+ * specified axes.
35669
+ * A number (shorthand for `mainAxis` or distance), or an axes configuration
35670
+ * object may be passed.
35671
+ * @see https://floating-ui.com/docs/offset
35672
+ */
35673
+ const offset = offset$1;
35674
+
35675
+ /**
35676
+ * Optimizes the visibility of the floating element by shifting it in order to
35677
+ * keep it in view when it will overflow the clipping boundary.
35678
+ * @see https://floating-ui.com/docs/shift
35679
+ */
35680
+ const shift = shift$1;
35681
+
35682
+ /**
35683
+ * Optimizes the visibility of the floating element by flipping the `placement`
35684
+ * in order to keep it in view when the preferred placement(s) will overflow the
35685
+ * clipping boundary. Alternative to `autoPlacement`.
35686
+ * @see https://floating-ui.com/docs/flip
35687
+ */
35688
+ const flip = flip$1;
35689
+
35690
+ /**
35691
+ * Provides data to position an inner element of the floating element so that it
35692
+ * appears centered to the reference element.
35693
+ * @see https://floating-ui.com/docs/arrow
35694
+ */
35695
+ const arrow = arrow$1;
35696
+
35697
+ /**
35698
+ * Computes the `x` and `y` coordinates that will place the floating element
35699
+ * next to a given reference element.
35700
+ */
35701
+ const computePosition = (reference, floating, options) => {
35702
+ // This caches the expensive `getClippingElementAncestors` function so that
35703
+ // multiple lifecycle resets re-use the same result. It only lives for a
35704
+ // single call. If other functions become expensive, we can add them as well.
35705
+ const cache = new Map();
35706
+ const mergedOptions = {
35707
+ platform,
35708
+ ...options
35709
+ };
35710
+ const platformWithCache = {
35711
+ ...mergedOptions.platform,
35712
+ _c: cache
35713
+ };
35714
+ return computePosition$1(reference, floating, {
35715
+ ...mergedOptions,
35716
+ platform: platformWithCache
35717
+ });
35718
+ };
35719
+
35720
+ const lsTooltipCss = ".tooltip{display:none;position:absolute;border-radius:0.5rem;background:var(--gray-100, #45484d);color:var(--white, #fff);font-size:0.75rem;font-style:normal;font-weight:400;line-height:1rem;padding:0.5rem 0.75rem;max-width:300px;width:max-content;z-index:1000;box-shadow:0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 -1px 15px -3px rgba(0, 0, 0, 0.05), 0 4px 6px -2px rgba(0, 0, 0, 0.03);transition:all 0.2s ease}#arrow{position:absolute;background:var(--gray-100, #45484d);width:0.625rem;height:0.625rem;transform:rotate(45deg);border-radius:0.125rem}";
35721
+
35722
+ const LsTooltip = class {
35723
+ constructor(hostRef) {
35724
+ index.registerInstance(this, hostRef);
35725
+ }
35726
+ get el() { return index.getElement(this); }
35727
+ referenceElement;
35728
+ placement = 'top';
35729
+ tooltipEl;
35730
+ tooltipLocked = false;
35731
+ componentDidLoad() {
35732
+ this.tooltipEl = this.el.shadowRoot.querySelector('.tooltip');
35733
+ const arrowElement = this.el.shadowRoot.querySelector('#arrow'); // use shadowRoot for internal elements
35734
+ if (!this.tooltipEl || !this.referenceElement)
35735
+ return;
35736
+ const update = () => {
35737
+ computePosition(this.referenceElement, this.tooltipEl, {
35738
+ placement: this.placement,
35739
+ middleware: [offset(6), flip(), shift({ padding: 5 }), arrow({ element: arrowElement })],
35740
+ }).then(({ x, y, placement, middlewareData }) => {
35741
+ Object.assign(this.tooltipEl.style, {
35742
+ left: `${x}px`,
35743
+ top: `${y}px`,
35744
+ });
35745
+ const { x: arrowX, y: arrowY } = middlewareData.arrow || {};
35746
+ const staticSide = {
35747
+ top: 'bottom',
35748
+ right: 'left',
35749
+ bottom: 'top',
35750
+ left: 'right',
35751
+ }[placement.split('-')[0]];
35752
+ Object.assign(arrowElement.style, {
35753
+ left: arrowX != null ? `${arrowX}px` : '',
35754
+ top: arrowY != null ? `${arrowY}px` : '',
35755
+ right: '',
35756
+ bottom: '',
35757
+ [staticSide]: '-4px',
35758
+ });
35759
+ });
35760
+ };
35761
+ const showTooltip = () => {
35762
+ if (this.tooltipLocked)
35763
+ return;
35764
+ this.tooltipEl.style.display = 'block';
35765
+ update();
35766
+ };
35767
+ const hideTooltip = () => {
35768
+ if (this.tooltipLocked)
35769
+ return;
35770
+ this.tooltipEl.style.display = 'none';
35771
+ };
35772
+ [
35773
+ ['mouseenter', showTooltip],
35774
+ ['mouseleave', hideTooltip],
35775
+ ['focus', showTooltip],
35776
+ ['blur', hideTooltip],
35777
+ ].forEach(([event, listener]) => {
35778
+ this.referenceElement.addEventListener(event, listener);
35779
+ });
35780
+ this.referenceElement.addEventListener('click', () => {
35781
+ hideTooltip();
35782
+ this.tooltipLocked = true;
35783
+ setTimeout(() => {
35784
+ this.tooltipLocked = false;
35785
+ }, 500);
35786
+ });
35787
+ }
35788
+ render() {
35789
+ return (index.h("div", { key: '9daf5991d54ab56094ae8a28203d7b896ce2dd81', class: "tooltip", role: "tooltip" }, index.h("div", { key: 'e483907ce2f3ca0ee927f9b1fc116c3d957a575e', id: "arrow" }), index.h("slot", { key: '176202c5c2d38da7236e6b4519f93cf1d7cc1e87' })));
35790
+ }
35791
+ };
35792
+ LsTooltip.style = lsTooltipCss;
35793
+
34280
35794
  const lsValidationTagCss = ":host{position:relative}*{box-sizing:border-box;margin:0}.valid-label{display:flex;padding:2px 0.5rem;justify-content:center;align-items:center;gap:0.25rem;border-radius:1rem;font-size:0.75rem;font-style:normal;font-weight:500;line-height:1.25rem;width:fit-content}.valid{background-color:var(--green-30, #9df5d4);color:var(--green-100, #125241)}.invalid{background:var(--yellow-20, #fff3c2);color:var(--yellow-90, #8a3f0e)}.field-counter{display:flex;padding:0.125rem;justify-content:center;align-items:center;border-radius:1rem;font-size:0.625rem;line-height:0.75rem;font-style:normal;font-weight:500;color:var(--yellow-20, #fff3c2);background:#e17100;min-width:1rem}.field-dropdown{position:absolute;top:2rem;right:0;background:white;display:flex;flex-direction:column;gap:0.75rem;width:20rem;padding:1rem;border-radius:1rem;border:1px solid #e5e7eb;background:#fff;box-shadow:0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);max-height:20rem;overflow-y:auto;flex-direction:column;align-items:flex-start;z-index:1000}.required-field{position:relative;display:flex;width:100%;justify-content:space-between;align-items:center;gap:0.5rem;border-radius:0.75rem;padding:0.5rem 0.5rem 0.5rem 1rem;background:var(--field-background);color:var(--field-text-color);border:1px solid var(--field-border-color);transition:all 0.1s ease-in-out}.required-field:hover{background:var(--field-background-hover);color:var(--field-text-color-hover);border:1px solid var(--field-border-color-hover);box-shadow:0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)}.required-field-items-left{display:flex;gap:0.5rem;align-items:center;width:100%}.required-field-items-left p{font-size:0.875rem;font-style:normal;font-weight:500;line-height:0.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dot{height:0.5rem;width:0.5rem;border-radius:50%}.role-label{display:flex;padding:2px 3px;justify-content:center;align-items:center;border-radius:0.25rem;font-size:0.75rem;font-style:normal;font-weight:400;line-height:1rem;text-transform:capitalize}.dropdown-header h2{color:var(--gray-100, #45484d);font-size:0.875rem;font-style:normal;font-weight:500;line-height:1.25rem;margin-bottom:0.125rem}.dropdown-header p{color:var(--gray-80, #6c6e73);font-size:0.75rem;font-style:normal;font-weight:400;line-height:1rem;}";
34281
35795
 
34282
35796
  const LsValidationTag = class {
@@ -34286,8 +35800,11 @@ const LsValidationTag = class {
34286
35800
  status = 'Invalid';
34287
35801
  validationErrors = [];
34288
35802
  isExpanded = false;
35803
+ validateChange(newValue) {
35804
+ console.log(newValue);
35805
+ }
34289
35806
  render() {
34290
- return (index.h(index.Host, { key: 'c6bdded8043e03b185383f12a1f4732f94fc1d0b' }, index.h("div", { key: '75e388c633e4c0f02a597b975f018aeb88cbe30e', class: `valid-label ${this.validationErrors.length === 0 ? 'valid' : 'invalid'}`, onClick: this.validationErrors.length && (() => (this.isExpanded = !this.isExpanded)) }, this.validationErrors.length === 0 ? 'Ready to Send' : `Requires Fields`, this.validationErrors.length > 0 && index.h("div", { key: '0f0034a85c407a98cd72caedb7719d57cbbe6419', class: 'field-counter' }, this.validationErrors.length), this.validationErrors.length > 0 && (index.h("ls-icon", { key: '5f6dadde5dee6d6539531d3e49c5af14e60926ff', name: this.isExpanded ? 'chevron-up' : 'chevron-down', style: { cursor: 'pointer', scale: '0.60', margin: '0 -0.25rem' } }))), this.isExpanded && this.validationErrors.length !== 0 && (index.h("div", { key: 'f69f5c8f2dcd583bfa6472806e1b15f88143e165', class: 'field-dropdown' }, index.h("div", { key: '86cc44f470f99e329ca950be1cca4af86389620b', class: 'dropdown-header' }, index.h("h2", { key: 'ec2c565524f20d85432dfbc7d218cd2c23809a36' }, "Signature Fields Required"), index.h("p", { key: '272cc03365c6a95ad68aa4d3857d0004187ca9da' }, this.validationErrors.length, " ", this.validationErrors.length === 1 ? 'Recipient needs a Signature Field' : 'Recipients need Signature Fields', " placed for them")), this.validationErrors.map((field, idx) => {
35807
+ return (index.h(index.Host, { key: '81f7243eb9ac2099bac672ce98f26e4da6bb8fed' }, index.h("div", { key: '33e7174b2032cc6282f84b26a4f943e1baac6dd9', class: `valid-label ${this.validationErrors.length === 0 ? 'valid' : 'invalid'}`, onClick: this.validationErrors.length && (() => (this.isExpanded = !this.isExpanded)) }, this.validationErrors.length === 0 ? 'Ready to Send' : `Requires Fields`, this.validationErrors.length > 0 && index.h("div", { key: '6b820c6a30a090d656c5a6a06b66c8c3cda8fa2c', class: 'field-counter' }, this.validationErrors.length), this.validationErrors.length > 0 && (index.h("ls-icon", { key: 'b4404382dea2c84c042dd1b330b2f0be823b643e', name: this.isExpanded ? 'chevron-up' : 'chevron-down', style: { cursor: 'pointer', scale: '0.60', margin: '0 -0.25rem' } }))), this.isExpanded && this.validationErrors.length !== 0 && (index.h("div", { key: 'eca209963d0acadbef0764909f15bb4a0350f4c6', class: 'field-dropdown' }, index.h("div", { key: '5a57240e85f7826049b12bda0f2cbfc72599c6b9', class: 'dropdown-header' }, index.h("h2", { key: '34bb3c2fac8a092cc424a4ebdce49137d6dcd384' }, "Signature Fields Required"), index.h("p", { key: 'cedda6d0383cd029efdd33fa7edfcd22c0cf65e2' }, this.validationErrors.length, " ", this.validationErrors.length === 1 ? 'Recipient needs a Signature Field' : 'Recipients need Signature Fields', " placed for them")), this.validationErrors.map((field, idx) => {
34291
35808
  const signerIndex = field?.role?.signerIndex ? field?.role?.signerIndex % 100 : null;
34292
35809
  const pallette = defaultRolePalette[signerIndex || field?.element?.signer || 0];
34293
35810
  return (index.h("div", { key: idx, class: 'required-field', style: {
@@ -34297,9 +35814,12 @@ const LsValidationTag = class {
34297
35814
  '--field-text-color': pallette.s70,
34298
35815
  '--field-text-color-hover': pallette.s80,
34299
35816
  '--field-border-color-hover': pallette.s60,
34300
- } }, index.h("div", { class: 'required-field-items-left' }, index.h("div", { class: 'dot', style: { background: pallette.s60 } }), field?.role && (index.h("div", { class: 'required-field-items-left' }, index.h("p", { style: { color: pallette.s80 } }, field.role?.name || `Signer ${field?.role?.signerIndex + 1}`), index.h("div", { class: 'role-label', style: { background: pallette.s30, color: pallette.s70 } }, field.role?.roleType.toLowerCase() || `Signer ${field.role?.signerIndex + 1}`))), field?.element && (index.h(index.h.Fragment, null, index.h("p", { style: { color: pallette.s80 } }, field.role?.name || `${field.element.formElementType} ${field?.element?.label + 1}`), index.h("div", { class: 'role-label', style: { background: pallette.s30, color: pallette.s70 } }, field.description)))), index.h("ls-icon", { name: "chevron-right" })));
35817
+ } }, index.h("div", { class: 'required-field-items-left' }, index.h("div", { class: 'dot', style: { background: pallette.s60 } }), field?.role && (index.h("div", { class: 'required-field-items-left' }, index.h("p", { style: { color: pallette.s80 } }, field.role?.name || `Signer ${field?.role?.signerIndex + 1}`), index.h("div", { class: 'role-label', style: { background: pallette.s30, color: pallette.s70 } }, field.role?.roleType.toLowerCase() || `Signer ${field.role?.signerIndex + 1}`))), field?.element && (index.h(index.h.Fragment, null, index.h("p", { style: { color: pallette.s80 } }, field.role?.name || `${field.element.formElementType} ${field?.element?.label + 1}`), index.h("div", { class: 'role-label', style: { background: pallette.s30, color: pallette.s70 } }, field.description))))));
34301
35818
  })))));
34302
35819
  }
35820
+ static get watchers() { return {
35821
+ "validationErrors": ["validateChange"]
35822
+ }; }
34303
35823
  };
34304
35824
  LsValidationTag.style = lsValidationTagCss;
34305
35825
 
@@ -34341,7 +35861,8 @@ exports.ls_statusbar = LsStatusbar;
34341
35861
  exports.ls_toggle = LsToggle;
34342
35862
  exports.ls_toolbar = LsToolbar;
34343
35863
  exports.ls_toolbox_field = LsToolboxField;
35864
+ exports.ls_tooltip = LsTooltip;
34344
35865
  exports.ls_validation_tag = LsValidationTag;
34345
- //# sourceMappingURL=ls-document-options.ls-document-viewer.ls-editor-field.ls-editor-table.ls-feature-column.ls-field-alignment.ls-field-content.ls-field-dimensions.ls-field-distribute.ls-field-footer.ls-field-format.ls-field-placement.ls-field-properties.ls-field-properties-advanced.ls-field-properties-autosign.ls-field-properties-container.ls-field-properties-date.ls-field-properties-email.ls-field-properties-file.ls-field-properties-general.ls-field-properties-image.ls-field-properties-multiple.ls-field-properties-number.ls-field-properties-signature.ls-field-properties-text.ls-field-size.ls-field-type-display.ls-icon.ls-input-wrapper.ls-page-loader.ls-participant-card.ls-participant-manager.ls-participant-select.ls-props-section.ls-statusbar.ls-toggle.ls-toolbar.ls-toolbox-field.ls-validation-tag.entry.cjs.js.map
35866
+ //# sourceMappingURL=ls-document-options.ls-document-viewer.ls-editor-field.ls-editor-table.ls-feature-column.ls-field-alignment.ls-field-content.ls-field-dimensions.ls-field-distribute.ls-field-footer.ls-field-format.ls-field-placement.ls-field-properties.ls-field-properties-advanced.ls-field-properties-autosign.ls-field-properties-container.ls-field-properties-date.ls-field-properties-email.ls-field-properties-file.ls-field-properties-general.ls-field-properties-image.ls-field-properties-multiple.ls-field-properties-number.ls-field-properties-signature.ls-field-properties-text.ls-field-size.ls-field-type-display.ls-icon.ls-input-wrapper.ls-page-loader.ls-participant-card.ls-participant-manager.ls-participant-select.ls-props-section.ls-statusbar.ls-toggle.ls-toolbar.ls-toolbox-field.ls-tooltip.ls-validation-tag.entry.cjs.js.map
34346
35867
 
34347
- //# sourceMappingURL=ls-document-options_39.cjs.entry.js.map
35868
+ //# sourceMappingURL=ls-document-options_40.cjs.entry.js.map