@pie-element/ebsr 9.0.2-next.16 → 9.0.2-next.17

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 (2103) hide show
  1. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/CHANGELOG.json +1 -0
  2. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/CHANGELOG.md +71 -0
  3. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/LICENSE.md +5 -0
  4. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/categorize.js +127 -0
  5. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/categorize.js.map +1 -0
  6. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/charting.js +35 -0
  7. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/charting.js.map +1 -0
  8. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/categorize/index.js +545 -0
  9. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/categorize/index.js.map +1 -0
  10. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/categorize/scoring.js +130 -0
  11. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/categorize/scoring.js.map +1 -0
  12. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/axes.js +538 -0
  13. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/axes.js.map +1 -0
  14. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/bars/bar.js +60 -0
  15. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/bars/bar.js.map +1 -0
  16. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/bars/common/bars.js +222 -0
  17. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/bars/common/bars.js.map +1 -0
  18. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/bars/histogram.js +61 -0
  19. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/bars/histogram.js.map +1 -0
  20. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/chart-setup.js +402 -0
  21. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/chart-setup.js.map +1 -0
  22. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/chart-type.js +61 -0
  23. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/chart-type.js.map +1 -0
  24. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/chart-types.js +22 -0
  25. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/chart-types.js.map +1 -0
  26. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/chart.js +370 -0
  27. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/chart.js.map +1 -0
  28. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/common/drag-handle.js +148 -0
  29. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/common/drag-handle.js.map +1 -0
  30. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/common/drag-icon.js +62 -0
  31. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/common/drag-icon.js.map +1 -0
  32. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/common/styles.js +22 -0
  33. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/common/styles.js.map +1 -0
  34. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/grid.js +76 -0
  35. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/grid.js.map +1 -0
  36. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/index.js +35 -0
  37. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/index.js.map +1 -0
  38. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/line/common/drag-handle.js +124 -0
  39. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/line/common/drag-handle.js.map +1 -0
  40. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/line/common/line.js +211 -0
  41. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/line/common/line.js.map +1 -0
  42. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/line/line-cross.js +124 -0
  43. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/line/line-cross.js.map +1 -0
  44. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/line/line-dot.js +92 -0
  45. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/line/line-dot.js.map +1 -0
  46. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/mark-label.js +201 -0
  47. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/mark-label.js.map +1 -0
  48. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/plot/common/plot.js +232 -0
  49. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/plot/common/plot.js.map +1 -0
  50. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/plot/dot.js +94 -0
  51. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/plot/dot.js.map +1 -0
  52. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/plot/line.js +122 -0
  53. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/plot/line.js.map +1 -0
  54. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/tool-menu.js +119 -0
  55. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/tool-menu.js.map +1 -0
  56. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/utils.js +187 -0
  57. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/charting/utils.js.map +1 -0
  58. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/alert-dialog.js +45 -0
  59. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/alert-dialog.js.map +1 -0
  60. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/checkbox.js +78 -0
  61. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/checkbox.js.map +1 -0
  62. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/choice-configuration/feedback-menu.js +129 -0
  63. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/choice-configuration/feedback-menu.js.map +1 -0
  64. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/choice-configuration/index.js +392 -0
  65. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/choice-configuration/index.js.map +1 -0
  66. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/choice-utils.js +42 -0
  67. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/choice-utils.js.map +1 -0
  68. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/feedback-config/feedback-selector.js +160 -0
  69. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/feedback-config/feedback-selector.js.map +1 -0
  70. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/feedback-config/group.js +63 -0
  71. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/feedback-config/group.js.map +1 -0
  72. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/feedback-config/index.js +146 -0
  73. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/feedback-config/index.js.map +1 -0
  74. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/form-section.js +37 -0
  75. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/form-section.js.map +1 -0
  76. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/help.js +113 -0
  77. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/help.js.map +1 -0
  78. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/index.js +187 -0
  79. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/index.js.map +1 -0
  80. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/input.js +110 -0
  81. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/input.js.map +1 -0
  82. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/inputs.js +111 -0
  83. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/inputs.js.map +1 -0
  84. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/langs.js +147 -0
  85. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/langs.js.map +1 -0
  86. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/layout/config-layout.js +97 -0
  87. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/layout/config-layout.js.map +1 -0
  88. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/layout/index.js +21 -0
  89. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/layout/index.js.map +1 -0
  90. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/layout/layout-contents.js +160 -0
  91. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/layout/layout-contents.js.map +1 -0
  92. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/layout/settings-box.js +63 -0
  93. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/layout/settings-box.js.map +1 -0
  94. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/mui-box/index.js +71 -0
  95. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/mui-box/index.js.map +1 -0
  96. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/number-text-field-custom.js +312 -0
  97. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/number-text-field-custom.js.map +1 -0
  98. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/number-text-field.js +220 -0
  99. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/number-text-field.js.map +1 -0
  100. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/radio-with-label.js +33 -0
  101. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/radio-with-label.js.map +1 -0
  102. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/settings/display-size.js +64 -0
  103. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/settings/display-size.js.map +1 -0
  104. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/settings/index.js +108 -0
  105. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/settings/index.js.map +1 -0
  106. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/settings/panel.js +392 -0
  107. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/settings/panel.js.map +1 -0
  108. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/settings/settings-radio-label.js +37 -0
  109. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/settings/settings-radio-label.js.map +1 -0
  110. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/settings/toggle.js +48 -0
  111. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/settings/toggle.js.map +1 -0
  112. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/tabs/index.js +85 -0
  113. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/tabs/index.js.map +1 -0
  114. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/tags-input/index.js +159 -0
  115. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/tags-input/index.js.map +1 -0
  116. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/two-choice.js +144 -0
  117. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/two-choice.js.map +1 -0
  118. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/with-stateful-model.js +64 -0
  119. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/config-ui/with-stateful-model.js.map +1 -0
  120. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/controller-utils/index.js +25 -0
  121. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/controller-utils/index.js.map +1 -0
  122. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/controller-utils/partial-scoring.js +25 -0
  123. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/controller-utils/partial-scoring.js.map +1 -0
  124. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/controller-utils/persistence.js +113 -0
  125. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/controller-utils/persistence.js.map +1 -0
  126. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/correct-answer-toggle/expander.js +73 -0
  127. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/correct-answer-toggle/expander.js.map +1 -0
  128. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/correct-answer-toggle/index.js +140 -0
  129. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/correct-answer-toggle/index.js.map +1 -0
  130. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/correct-answer-toggle/styles.js +62 -0
  131. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/correct-answer-toggle/styles.js.map +1 -0
  132. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/choice.js +99 -0
  133. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/choice.js.map +1 -0
  134. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/drag-in-the-blank-dp.js +28 -0
  135. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/drag-in-the-blank-dp.js.map +1 -0
  136. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/drag-type.js +14 -0
  137. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/drag-type.js.map +1 -0
  138. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/droppable-placeholder.js +63 -0
  139. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/droppable-placeholder.js.map +1 -0
  140. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/ica-dp.js +29 -0
  141. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/ica-dp.js.map +1 -0
  142. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/index.js +75 -0
  143. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/index.js.map +1 -0
  144. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/match-list-dp.js +29 -0
  145. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/match-list-dp.js.map +1 -0
  146. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/placeholder.js +88 -0
  147. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/placeholder.js.map +1 -0
  148. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/preview-component.js +116 -0
  149. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/preview-component.js.map +1 -0
  150. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/swap.js +19 -0
  151. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/swap.js.map +1 -0
  152. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/uid-context.js +26 -0
  153. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/uid-context.js.map +1 -0
  154. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/with-drag-context.js +40 -0
  155. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/drag/with-drag-context.js.map +1 -0
  156. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/components.js +85 -0
  157. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/components.js.map +1 -0
  158. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/editor.js +1177 -0
  159. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/editor.js.map +1 -0
  160. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/index.js +164 -0
  161. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/index.js.map +1 -0
  162. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/new-serialization.js +273 -0
  163. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/new-serialization.js.map +1 -0
  164. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/parse-html.js +16 -0
  165. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/parse-html.js.map +1 -0
  166. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/characters/custom-popper.js +62 -0
  167. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/characters/custom-popper.js.map +1 -0
  168. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/characters/index.js +247 -0
  169. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/characters/index.js.map +1 -0
  170. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/characters/utils.js +378 -0
  171. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/characters/utils.js.map +1 -0
  172. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/hotKeys/index.js +60 -0
  173. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/hotKeys/index.js.map +1 -0
  174. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/html/icons/index.js +30 -0
  175. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/html/icons/index.js.map +1 -0
  176. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/html/index.js +89 -0
  177. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/html/index.js.map +1 -0
  178. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/image/alt-dialog.js +101 -0
  179. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/image/alt-dialog.js.map +1 -0
  180. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/image/component.js +398 -0
  181. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/image/component.js.map +1 -0
  182. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/image/image-toolbar.js +136 -0
  183. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/image/image-toolbar.js.map +1 -0
  184. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/image/index.js +342 -0
  185. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/image/index.js.map +1 -0
  186. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/image/insert-image-handler.js +153 -0
  187. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/image/insert-image-handler.js.map +1 -0
  188. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/index.js +101 -0
  189. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/index.js.map +1 -0
  190. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/list/index.js +131 -0
  191. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/list/index.js.map +1 -0
  192. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/math/index.js +381 -0
  193. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/math/index.js.map +1 -0
  194. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/media/index.js +364 -0
  195. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/media/index.js.map +1 -0
  196. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/media/media-dialog.js +573 -0
  197. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/media/media-dialog.js.map +1 -0
  198. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/media/media-toolbar.js +80 -0
  199. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/media/media-toolbar.js.map +1 -0
  200. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/media/media-wrapper.js +50 -0
  201. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/media/media-wrapper.js.map +1 -0
  202. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/respArea/drag-in-the-blank/choice.js +209 -0
  203. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/respArea/drag-in-the-blank/choice.js.map +1 -0
  204. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/respArea/drag-in-the-blank/index.js +117 -0
  205. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/respArea/drag-in-the-blank/index.js.map +1 -0
  206. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/respArea/explicit-constructed-response/index.js +49 -0
  207. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/respArea/explicit-constructed-response/index.js.map +1 -0
  208. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/respArea/icons/index.js +75 -0
  209. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/respArea/icons/index.js.map +1 -0
  210. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/respArea/index.js +281 -0
  211. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/respArea/index.js.map +1 -0
  212. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/respArea/inline-dropdown/index.js +63 -0
  213. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/respArea/inline-dropdown/index.js.map +1 -0
  214. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/respArea/utils.js +86 -0
  215. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/respArea/utils.js.map +1 -0
  216. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/table/icons/index.js +57 -0
  217. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/table/icons/index.js.map +1 -0
  218. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/table/index.js +606 -0
  219. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/table/index.js.map +1 -0
  220. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/table/table-toolbar.js +123 -0
  221. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/table/table-toolbar.js.map +1 -0
  222. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/toolbar/default-toolbar.js +166 -0
  223. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/toolbar/default-toolbar.js.map +1 -0
  224. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/toolbar/done-button.js +40 -0
  225. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/toolbar/done-button.js.map +1 -0
  226. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/toolbar/editor-and-toolbar.js +227 -0
  227. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/toolbar/editor-and-toolbar.js.map +1 -0
  228. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/toolbar/index.js +29 -0
  229. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/toolbar/index.js.map +1 -0
  230. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/toolbar/toolbar-buttons.js +125 -0
  231. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/toolbar/toolbar-buttons.js.map +1 -0
  232. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/toolbar/toolbar.js +300 -0
  233. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/toolbar/toolbar.js.map +1 -0
  234. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/utils.js +59 -0
  235. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/utils.js.map +1 -0
  236. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/serialization.js +413 -0
  237. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/serialization.js.map +1 -0
  238. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/test-serializer.js +137 -0
  239. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/test-serializer.js.map +1 -0
  240. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/theme.js +8 -0
  241. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/editable-html/theme.js.map +1 -0
  242. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/feedback/index.js +88 -0
  243. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/feedback/index.js.map +1 -0
  244. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/axis/arrow.js +86 -0
  245. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/axis/arrow.js.map +1 -0
  246. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/axis/axes.js +346 -0
  247. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/axis/axes.js.map +1 -0
  248. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/axis/index.js +22 -0
  249. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/axis/index.js.map +1 -0
  250. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/bg.js +114 -0
  251. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/bg.js.map +1 -0
  252. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/container/actions.js +18 -0
  253. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/container/actions.js.map +1 -0
  254. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/container/index.js +123 -0
  255. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/container/index.js.map +1 -0
  256. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/container/marks.js +22 -0
  257. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/container/marks.js.map +1 -0
  258. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/container/middleware.js +19 -0
  259. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/container/middleware.js.map +1 -0
  260. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/container/reducer.js +18 -0
  261. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/container/reducer.js.map +1 -0
  262. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/coordinates-label.js +82 -0
  263. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/coordinates-label.js.map +1 -0
  264. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/graph-with-controls.js +309 -0
  265. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/graph-with-controls.js.map +1 -0
  266. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/graph.js +302 -0
  267. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/graph.js.map +1 -0
  268. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/grid-setup.js +423 -0
  269. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/grid-setup.js.map +1 -0
  270. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/grid.js +145 -0
  271. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/grid.js.map +1 -0
  272. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/index.js +41 -0
  273. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/index.js.map +1 -0
  274. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/labels.js +248 -0
  275. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/labels.js.map +1 -0
  276. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/mark-label.js +169 -0
  277. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/mark-label.js.map +1 -0
  278. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/toggle-bar.js +281 -0
  279. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/toggle-bar.js.map +1 -0
  280. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tool-menu.js +102 -0
  281. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tool-menu.js.map +1 -0
  282. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/circle/bg-circle.js +135 -0
  283. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/circle/bg-circle.js.map +1 -0
  284. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/circle/component.js +329 -0
  285. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/circle/component.js.map +1 -0
  286. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/circle/index.js +41 -0
  287. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/circle/index.js.map +1 -0
  288. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/index.js +67 -0
  289. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/index.js.map +1 -0
  290. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/line/component.js +81 -0
  291. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/line/component.js.map +1 -0
  292. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/line/index.js +11 -0
  293. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/line/index.js.map +1 -0
  294. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/parabola/component.js +27 -0
  295. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/parabola/component.js.map +1 -0
  296. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/parabola/index.js +50 -0
  297. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/parabola/index.js.map +1 -0
  298. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/point/component.js +139 -0
  299. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/point/component.js.map +1 -0
  300. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/point/index.js +24 -0
  301. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/point/index.js.map +1 -0
  302. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/polygon/component.js +417 -0
  303. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/polygon/component.js.map +1 -0
  304. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/polygon/index.js +89 -0
  305. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/polygon/index.js.map +1 -0
  306. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/polygon/line.js +117 -0
  307. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/polygon/line.js.map +1 -0
  308. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/polygon/polygon.js +123 -0
  309. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/polygon/polygon.js.map +1 -0
  310. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/ray/component.js +80 -0
  311. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/ray/component.js.map +1 -0
  312. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/ray/index.js +11 -0
  313. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/ray/index.js.map +1 -0
  314. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/segment/component.js +59 -0
  315. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/segment/component.js.map +1 -0
  316. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/segment/index.js +11 -0
  317. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/segment/index.js.map +1 -0
  318. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/arrow-head.js +58 -0
  319. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/arrow-head.js.map +1 -0
  320. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/line/index.js +481 -0
  321. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/line/index.js.map +1 -0
  322. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/line/line-path.js +111 -0
  323. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/line/line-path.js.map +1 -0
  324. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/line/with-root-edge.js +111 -0
  325. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/line/with-root-edge.js.map +1 -0
  326. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/point/arrow-point.js +88 -0
  327. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/point/arrow-point.js.map +1 -0
  328. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/point/arrow.js +72 -0
  329. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/point/arrow.js.map +1 -0
  330. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/point/base-point.js +112 -0
  331. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/point/base-point.js.map +1 -0
  332. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/point/index.js +73 -0
  333. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/point/index.js.map +1 -0
  334. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/styles.js +26 -0
  335. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/styles.js.map +1 -0
  336. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/types.js +16 -0
  337. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/shared/types.js.map +1 -0
  338. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/sine/component.js +34 -0
  339. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/sine/component.js.map +1 -0
  340. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/sine/index.js +50 -0
  341. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/sine/index.js.map +1 -0
  342. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/vector/component.js +70 -0
  343. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/vector/component.js.map +1 -0
  344. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/vector/index.js +11 -0
  345. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/tools/vector/index.js.map +1 -0
  346. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/undo-redo.js +97 -0
  347. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/undo-redo.js.map +1 -0
  348. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/use-debounce.js +25 -0
  349. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/use-debounce.js.map +1 -0
  350. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/utils.js +230 -0
  351. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing/utils.js.map +1 -0
  352. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing-utils/index.js +153 -0
  353. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/graphing-utils/index.js.map +1 -0
  354. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/correct-icon.js +74 -0
  355. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/correct-icon.js.map +1 -0
  356. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/correct-response-icon.js +139 -0
  357. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/correct-response-icon.js.map +1 -0
  358. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/icon-base.js +186 -0
  359. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/icon-base.js.map +1 -0
  360. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/icon-root.js +102 -0
  361. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/icon-root.js.map +1 -0
  362. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/image-konva.js +112 -0
  363. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/image-konva.js.map +1 -0
  364. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/incorrect-icon.js +78 -0
  365. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/incorrect-icon.js.map +1 -0
  366. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/index.js +70 -0
  367. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/index.js.map +1 -0
  368. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/instructions-icon.js +207 -0
  369. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/instructions-icon.js.map +1 -0
  370. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/learn-more-icon.js +120 -0
  371. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/learn-more-icon.js.map +1 -0
  372. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/nothing-submitted-icon.js +156 -0
  373. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/nothing-submitted-icon.js.map +1 -0
  374. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/partially-correct-icon.js +68 -0
  375. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/partially-correct-icon.js.map +1 -0
  376. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/show-rationale-icon.js +174 -0
  377. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/show-rationale-icon.js.map +1 -0
  378. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/sized.js +32 -0
  379. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/icons/sized.js.map +1 -0
  380. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/choices/choice.js +132 -0
  381. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/choices/choice.js.map +1 -0
  382. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/choices/index.js +98 -0
  383. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/choices/index.js.map +1 -0
  384. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/componentize.js +21 -0
  385. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/componentize.js.map +1 -0
  386. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/components/blank.js +259 -0
  387. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/components/blank.js.map +1 -0
  388. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/components/correct-input.js +95 -0
  389. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/components/correct-input.js.map +1 -0
  390. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/components/dropdown.js +189 -0
  391. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/components/dropdown.js.map +1 -0
  392. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/components/input.js +50 -0
  393. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/components/input.js.map +1 -0
  394. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/constructed-response.js +45 -0
  395. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/constructed-response.js.map +1 -0
  396. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/drag-in-the-blank.js +158 -0
  397. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/drag-in-the-blank.js.map +1 -0
  398. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/index.js +48 -0
  399. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/index.js.map +1 -0
  400. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/inline-dropdown.js +38 -0
  401. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/inline-dropdown.js.map +1 -0
  402. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/mask.js +161 -0
  403. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/mask.js.map +1 -0
  404. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/new-serialization.js +261 -0
  405. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/new-serialization.js.map +1 -0
  406. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/parse-html.js +16 -0
  407. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/parse-html.js.map +1 -0
  408. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/serialization.js +175 -0
  409. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/serialization.js.map +1 -0
  410. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/test-serializer.js +163 -0
  411. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/test-serializer.js.map +1 -0
  412. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/with-mask.js +67 -0
  413. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/mask-markup/with-mask.js.map +1 -0
  414. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-evaluator/index.js +157 -0
  415. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-evaluator/index.js.map +1 -0
  416. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/horizontal-keypad.js +93 -0
  417. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/horizontal-keypad.js.map +1 -0
  418. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/index.js +58 -0
  419. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/index.js.map +1 -0
  420. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keypad/index.js +381 -0
  421. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keypad/index.js.map +1 -0
  422. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keypad/keys-layout.js +25 -0
  423. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keypad/keys-layout.js.map +1 -0
  424. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/basic-operators.js +33 -0
  425. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/basic-operators.js.map +1 -0
  426. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/chars.js +12 -0
  427. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/chars.js.map +1 -0
  428. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/comparison.js +39 -0
  429. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/comparison.js.map +1 -0
  430. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/constants.js +37 -0
  431. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/constants.js.map +1 -0
  432. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/digits.js +47 -0
  433. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/digits.js.map +1 -0
  434. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/edit.js +14 -0
  435. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/edit.js.map +1 -0
  436. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/exponent.js +30 -0
  437. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/exponent.js.map +1 -0
  438. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/fractions.js +29 -0
  439. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/fractions.js.map +1 -0
  440. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/geometry.js +138 -0
  441. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/geometry.js.map +1 -0
  442. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/grades.js +247 -0
  443. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/grades.js.map +1 -0
  444. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/index.js +36 -0
  445. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/index.js.map +1 -0
  446. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/log.js +27 -0
  447. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/log.js.map +1 -0
  448. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/logic.js +19 -0
  449. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/logic.js.map +1 -0
  450. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/matrices.js +19 -0
  451. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/matrices.js.map +1 -0
  452. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/misc.js +62 -0
  453. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/misc.js.map +1 -0
  454. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/navigation.js +20 -0
  455. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/navigation.js.map +1 -0
  456. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/operators.js +15 -0
  457. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/operators.js.map +1 -0
  458. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/statistics.js +40 -0
  459. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/statistics.js.map +1 -0
  460. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/sub-sup.js +19 -0
  461. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/sub-sup.js.map +1 -0
  462. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/trigonometry.js +45 -0
  463. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/trigonometry.js.map +1 -0
  464. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/utils.js +87 -0
  465. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/utils.js.map +1 -0
  466. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/vars.js +24 -0
  467. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/keys/vars.js.map +1 -0
  468. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/math-input.js +155 -0
  469. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/math-input.js.map +1 -0
  470. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/mq/custom-elements.js +20 -0
  471. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/mq/custom-elements.js.map +1 -0
  472. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/mq/index.js +21 -0
  473. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/mq/index.js.map +1 -0
  474. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/mq/input.js +199 -0
  475. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/mq/input.js.map +1 -0
  476. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/mq/static.js +193 -0
  477. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-input/mq/static.js.map +1 -0
  478. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-rendering/index.js +34 -0
  479. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-rendering/index.js.map +1 -0
  480. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-rendering/mml-to-latex.js +12 -0
  481. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-rendering/mml-to-latex.js.map +1 -0
  482. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-rendering/mstack/chtml.js +235 -0
  483. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-rendering/mstack/chtml.js.map +1 -0
  484. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-rendering/mstack/index.js +18 -0
  485. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-rendering/mstack/index.js.map +1 -0
  486. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-rendering/mstack/mml.js +76 -0
  487. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-rendering/mstack/mml.js.map +1 -0
  488. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-rendering/normalization.js +68 -0
  489. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-rendering/normalization.js.map +1 -0
  490. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-rendering/render-math.js +304 -0
  491. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-rendering/render-math.js.map +1 -0
  492. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-toolbar/done-button.js +54 -0
  493. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-toolbar/done-button.js.map +1 -0
  494. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-toolbar/editor-and-pad.js +589 -0
  495. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-toolbar/editor-and-pad.js.map +1 -0
  496. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-toolbar/index.js +242 -0
  497. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-toolbar/index.js.map +1 -0
  498. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-toolbar/math-preview.js +211 -0
  499. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/math-toolbar/math-preview.js.map +1 -0
  500. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/draggable.js +46 -0
  501. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/draggable.js.map +1 -0
  502. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/graph-props.js +46 -0
  503. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/graph-props.js.map +1 -0
  504. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/grid-draggable.js +273 -0
  505. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/grid-draggable.js.map +1 -0
  506. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/index.js +45 -0
  507. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/index.js.map +1 -0
  508. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/label.js +143 -0
  509. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/label.js.map +1 -0
  510. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/root.js +339 -0
  511. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/root.js.map +1 -0
  512. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/trig.js +149 -0
  513. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/trig.js.map +1 -0
  514. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/types.js +40 -0
  515. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/types.js.map +1 -0
  516. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/utils.js +156 -0
  517. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/plot/utils.js.map +1 -0
  518. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/collapsible/index.js +106 -0
  519. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/collapsible/index.js.map +1 -0
  520. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/color.js +94 -0
  521. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/color.js.map +1 -0
  522. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/feedback.js +123 -0
  523. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/feedback.js.map +1 -0
  524. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/has-text.js +19 -0
  525. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/has-text.js.map +1 -0
  526. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/html-and-math.js +71 -0
  527. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/html-and-math.js.map +1 -0
  528. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/index.js +86 -0
  529. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/index.js.map +1 -0
  530. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/input-container.js +48 -0
  531. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/input-container.js.map +1 -0
  532. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/preview-layout.js +110 -0
  533. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/preview-layout.js.map +1 -0
  534. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/preview-prompt.js +168 -0
  535. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/preview-prompt.js.map +1 -0
  536. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/purpose.js +22 -0
  537. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/purpose.js.map +1 -0
  538. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/readable.js +22 -0
  539. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/readable.js.map +1 -0
  540. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/response-indicators.js +116 -0
  541. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/response-indicators.js.map +1 -0
  542. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/withUndoReset.js +149 -0
  543. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/render-ui/withUndoReset.js.map +1 -0
  544. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/rubric/authoring.js +400 -0
  545. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/rubric/authoring.js.map +1 -0
  546. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/rubric/index.js +19 -0
  547. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/rubric/index.js.map +1 -0
  548. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/rubric/point-menu.js +138 -0
  549. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/rubric/point-menu.js.map +1 -0
  550. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/scoring-config/index.js +78 -0
  551. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/scoring-config/index.js.map +1 -0
  552. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/style-utils/index.js +19 -0
  553. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/style-utils/index.js.map +1 -0
  554. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/test-utils/index.js +29 -0
  555. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/test-utils/index.js.map +1 -0
  556. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/index.js +58 -0
  557. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/index.js.map +1 -0
  558. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/legend.js +89 -0
  559. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/legend.js.map +1 -0
  560. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/text-select.js +108 -0
  561. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/text-select.js.map +1 -0
  562. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/token-select/index.js +199 -0
  563. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/token-select/index.js.map +1 -0
  564. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/token-select/token.js +203 -0
  565. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/token-select/token.js.map +1 -0
  566. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/tokenizer/builder.js +267 -0
  567. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/tokenizer/builder.js.map +1 -0
  568. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/tokenizer/controls.js +99 -0
  569. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/tokenizer/controls.js.map +1 -0
  570. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/tokenizer/index.js +161 -0
  571. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/tokenizer/index.js.map +1 -0
  572. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/tokenizer/selection-utils.js +55 -0
  573. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/tokenizer/selection-utils.js.map +1 -0
  574. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/tokenizer/token-text.js +171 -0
  575. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/tokenizer/token-text.js.map +1 -0
  576. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/utils.js +51 -0
  577. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/text-select/utils.js.map +1 -0
  578. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/anchor-utils.js +193 -0
  579. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/anchor-utils.js.map +1 -0
  580. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/anchor.js +35 -0
  581. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/anchor.js.map +1 -0
  582. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/index.js +34 -0
  583. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/index.js.map +1 -0
  584. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/protractor/graphic.js +158 -0
  585. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/protractor/graphic.js.map +1 -0
  586. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/protractor/index.js +95 -0
  587. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/protractor/index.js.map +1 -0
  588. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/rotatable.js +348 -0
  589. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/rotatable.js.map +1 -0
  590. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/ruler/graphic.js +98 -0
  591. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/ruler/graphic.js.map +1 -0
  592. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/ruler/index.js +120 -0
  593. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/ruler/index.js.map +1 -0
  594. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/ruler/unit-type.js +58 -0
  595. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/ruler/unit-type.js.map +1 -0
  596. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/ruler/unit.js +133 -0
  597. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/ruler/unit.js.map +1 -0
  598. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/style-utils.js +21 -0
  599. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/style-utils.js.map +1 -0
  600. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/transform-origin.js +71 -0
  601. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/tools/transform-origin.js.map +1 -0
  602. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/translator/en.js +78 -0
  603. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/translator/en.js.map +1 -0
  604. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/translator/es.js +78 -0
  605. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/translator/es.js.map +1 -0
  606. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/translator/index.js +55 -0
  607. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/code/translator/index.js.map +1 -0
  608. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/config-ui.js +175 -0
  609. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/config-ui.js.map +1 -0
  610. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/controller-utils.js +25 -0
  611. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/controller-utils.js.map +1 -0
  612. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/correct-answer-toggle.js +10 -0
  613. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/correct-answer-toggle.js.map +1 -0
  614. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/drag.js +67 -0
  615. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/drag.js.map +1 -0
  616. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/editable-html.js +42 -0
  617. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/editable-html.js.map +1 -0
  618. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/feedback.js +25 -0
  619. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/feedback.js.map +1 -0
  620. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/graphing-utils.js +61 -0
  621. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/graphing-utils.js.map +1 -0
  622. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/graphing.js +41 -0
  623. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/graphing.js.map +1 -0
  624. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/icons.js +61 -0
  625. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/icons.js.map +1 -0
  626. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/mask-markup.js +43 -0
  627. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/mask-markup.js.map +1 -0
  628. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/math-evaluator.js +10 -0
  629. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/math-evaluator.js.map +1 -0
  630. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/math-input.js +49 -0
  631. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/math-input.js.map +1 -0
  632. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/math-rendering.js +31 -0
  633. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/math-rendering.js.map +1 -0
  634. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/math-toolbar.js +31 -0
  635. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/math-toolbar.js.map +1 -0
  636. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/package.json +90 -0
  637. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/plot.js +49 -0
  638. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/plot.js.map +1 -0
  639. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/render-ui.js +79 -0
  640. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/render-ui.js.map +1 -0
  641. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/rubric.js +19 -0
  642. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/rubric.js.map +1 -0
  643. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/scoring-config.js +10 -0
  644. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/scoring-config.js.map +1 -0
  645. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/categorize.js +45 -0
  646. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/charting.js +6 -0
  647. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/categorize/index.js +573 -0
  648. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/categorize/scoring.js +118 -0
  649. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/axes.jsx +488 -0
  650. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/bars/bar.js +28 -0
  651. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/bars/common/bars.jsx +207 -0
  652. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/bars/histogram.js +28 -0
  653. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/chart-setup.jsx +372 -0
  654. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/chart-type.js +35 -0
  655. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/chart-types.js +8 -0
  656. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/chart.jsx +340 -0
  657. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/common/drag-handle.jsx +133 -0
  658. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/common/drag-icon.jsx +44 -0
  659. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/common/styles.js +19 -0
  660. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/grid.jsx +47 -0
  661. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/index.js +6 -0
  662. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/line/common/drag-handle.jsx +95 -0
  663. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/line/common/line.jsx +163 -0
  664. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/line/line-cross.js +73 -0
  665. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/line/line-dot.js +52 -0
  666. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/mark-label.jsx +198 -0
  667. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/plot/common/plot.jsx +194 -0
  668. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/plot/dot.js +51 -0
  669. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/plot/line.js +76 -0
  670. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/tool-menu.jsx +93 -0
  671. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/charting/utils.js +198 -0
  672. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/alert-dialog.jsx +43 -0
  673. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/checkbox.jsx +66 -0
  674. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/choice-configuration/feedback-menu.jsx +90 -0
  675. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/choice-configuration/index.jsx +360 -0
  676. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/choice-utils.js +30 -0
  677. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/feedback-config/feedback-selector.jsx +122 -0
  678. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/feedback-config/group.jsx +52 -0
  679. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/feedback-config/index.jsx +112 -0
  680. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/form-section.jsx +23 -0
  681. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/help.jsx +87 -0
  682. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/index.js +55 -0
  683. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/input.jsx +72 -0
  684. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/inputs.jsx +91 -0
  685. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/langs.jsx +111 -0
  686. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/layout/config-layout.jsx +67 -0
  687. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/layout/index.js +4 -0
  688. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/layout/layout-contents.jsx +118 -0
  689. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/layout/settings-box.jsx +35 -0
  690. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/mui-box/index.jsx +64 -0
  691. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/number-text-field-custom.jsx +279 -0
  692. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/number-text-field.jsx +201 -0
  693. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/radio-with-label.jsx +18 -0
  694. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/settings/display-size.jsx +52 -0
  695. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/settings/index.js +82 -0
  696. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/settings/panel.jsx +325 -0
  697. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/settings/settings-radio-label.jsx +20 -0
  698. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/settings/toggle.jsx +31 -0
  699. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/tabs/index.jsx +47 -0
  700. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/tags-input/index.jsx +119 -0
  701. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/two-choice.jsx +94 -0
  702. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/config-ui/with-stateful-model.jsx +36 -0
  703. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/controller-utils/index.js +4 -0
  704. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/controller-utils/partial-scoring.js +21 -0
  705. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/controller-utils/persistence.js +105 -0
  706. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/correct-answer-toggle/expander.jsx +59 -0
  707. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/correct-answer-toggle/index.jsx +94 -0
  708. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/correct-answer-toggle/styles.js +61 -0
  709. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/drag/choice.jsx +76 -0
  710. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/drag/drag-in-the-blank-dp.jsx +19 -0
  711. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/drag/drag-type.js +7 -0
  712. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/drag/droppable-placeholder.jsx +35 -0
  713. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/drag/ica-dp.jsx +23 -0
  714. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/drag/index.js +23 -0
  715. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/drag/match-list-dp.jsx +23 -0
  716. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/drag/placeholder.jsx +86 -0
  717. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/drag/preview-component.jsx +113 -0
  718. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/drag/swap.js +14 -0
  719. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/drag/uid-context.js +13 -0
  720. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/drag/with-drag-context.js +25 -0
  721. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/components.js +135 -0
  722. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/editor.jsx +1248 -0
  723. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/index.jsx +131 -0
  724. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/new-serialization.jsx +310 -0
  725. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/parse-html.js +8 -0
  726. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/README.md +27 -0
  727. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/characters/custom-popper.js +48 -0
  728. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/characters/index.jsx +271 -0
  729. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/characters/utils.js +447 -0
  730. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/hotKeys/index.js +54 -0
  731. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/html/icons/index.jsx +19 -0
  732. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/html/index.jsx +81 -0
  733. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/image/alt-dialog.jsx +82 -0
  734. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/image/component.jsx +375 -0
  735. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/image/image-toolbar.jsx +100 -0
  736. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/image/index.jsx +327 -0
  737. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/image/insert-image-handler.js +128 -0
  738. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/index.jsx +104 -0
  739. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/list/index.jsx +147 -0
  740. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/math/index.jsx +362 -0
  741. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/media/index.jsx +353 -0
  742. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/media/media-dialog.js +576 -0
  743. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/media/media-toolbar.jsx +56 -0
  744. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/media/media-wrapper.jsx +45 -0
  745. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/respArea/drag-in-the-blank/choice.jsx +187 -0
  746. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/respArea/drag-in-the-blank/index.jsx +109 -0
  747. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/respArea/explicit-constructed-response/index.jsx +47 -0
  748. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/respArea/icons/index.jsx +71 -0
  749. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/respArea/index.jsx +283 -0
  750. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/respArea/inline-dropdown/index.jsx +64 -0
  751. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/respArea/utils.jsx +74 -0
  752. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/table/icons/index.jsx +53 -0
  753. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/table/index.jsx +560 -0
  754. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/table/table-toolbar.jsx +98 -0
  755. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/toolbar/default-toolbar.jsx +173 -0
  756. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/toolbar/done-button.jsx +36 -0
  757. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/toolbar/editor-and-toolbar.jsx +252 -0
  758. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/toolbar/index.jsx +23 -0
  759. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/toolbar/toolbar-buttons.jsx +97 -0
  760. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/toolbar/toolbar.jsx +332 -0
  761. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/utils.js +47 -0
  762. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/serialization.jsx +446 -0
  763. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/test-serializer.js +132 -0
  764. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/theme.js +1 -0
  765. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/feedback/index.js +61 -0
  766. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/axis/arrow.jsx +62 -0
  767. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/axis/axes.jsx +307 -0
  768. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/axis/index.js +2 -0
  769. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/bg.jsx +96 -0
  770. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/container/actions.js +8 -0
  771. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/container/index.jsx +86 -0
  772. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/container/marks.js +14 -0
  773. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/container/middleware.js +7 -0
  774. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/container/reducer.js +5 -0
  775. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/coordinates-label.jsx +72 -0
  776. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/graph-with-controls.jsx +246 -0
  777. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/graph.jsx +275 -0
  778. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/grid-setup.jsx +424 -0
  779. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/grid.jsx +137 -0
  780. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/index.js +7 -0
  781. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/labels.jsx +213 -0
  782. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/mark-label.jsx +144 -0
  783. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/toggle-bar.jsx +243 -0
  784. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tool-menu.jsx +72 -0
  785. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/circle/bg-circle.jsx +88 -0
  786. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/circle/component.jsx +283 -0
  787. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/circle/index.js +25 -0
  788. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/index.js +15 -0
  789. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/line/component.jsx +70 -0
  790. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/line/index.js +4 -0
  791. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/parabola/component.jsx +22 -0
  792. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/parabola/index.js +31 -0
  793. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/point/component.jsx +114 -0
  794. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/point/index.js +11 -0
  795. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/polygon/component.jsx +373 -0
  796. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/polygon/index.js +52 -0
  797. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/polygon/line.jsx +78 -0
  798. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/polygon/polygon.jsx +98 -0
  799. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/ray/component.jsx +69 -0
  800. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/ray/index.js +4 -0
  801. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/segment/component.jsx +48 -0
  802. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/segment/index.js +4 -0
  803. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/shared/arrow-head.jsx +44 -0
  804. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/shared/line/index.jsx +408 -0
  805. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/shared/line/line-path.jsx +88 -0
  806. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/shared/line/with-root-edge.jsx +90 -0
  807. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/shared/point/arrow-point.jsx +60 -0
  808. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/shared/point/arrow.jsx +40 -0
  809. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/shared/point/base-point.jsx +73 -0
  810. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/shared/point/index.jsx +60 -0
  811. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/shared/styles.js +20 -0
  812. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/shared/types.js +10 -0
  813. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/sine/component.jsx +32 -0
  814. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/sine/index.js +33 -0
  815. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/vector/component.jsx +60 -0
  816. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/tools/vector/index.js +4 -0
  817. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/undo-redo.jsx +51 -0
  818. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/use-debounce.js +13 -0
  819. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing/utils.js +226 -0
  820. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/graphing-utils/index.js +119 -0
  821. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/icons/correct-icon.jsx +64 -0
  822. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/icons/correct-response-icon.jsx +121 -0
  823. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/icons/icon-base.jsx +158 -0
  824. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/icons/icon-root.jsx +76 -0
  825. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/icons/image-konva.jsx +76 -0
  826. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/icons/incorrect-icon.jsx +61 -0
  827. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/icons/index.js +21 -0
  828. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/icons/instructions-icon.jsx +189 -0
  829. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/icons/learn-more-icon.jsx +107 -0
  830. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/icons/nothing-submitted-icon.jsx +130 -0
  831. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/icons/partially-correct-icon.jsx +49 -0
  832. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/icons/show-rationale-icon.jsx +152 -0
  833. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/icons/sized.jsx +25 -0
  834. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/mask-markup/choices/choice.jsx +110 -0
  835. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/mask-markup/choices/index.jsx +63 -0
  836. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/mask-markup/componentize.js +13 -0
  837. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/mask-markup/components/blank.jsx +249 -0
  838. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/mask-markup/components/correct-input.jsx +93 -0
  839. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/mask-markup/components/dropdown.jsx +160 -0
  840. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/mask-markup/components/input.jsx +48 -0
  841. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/mask-markup/constructed-response.jsx +34 -0
  842. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/mask-markup/drag-in-the-blank.jsx +124 -0
  843. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/mask-markup/index.js +7 -0
  844. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/mask-markup/inline-dropdown.jsx +27 -0
  845. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/mask-markup/mask.jsx +125 -0
  846. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/mask-markup/new-serialization.jsx +291 -0
  847. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/mask-markup/parse-html.js +8 -0
  848. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/mask-markup/serialization.js +182 -0
  849. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/mask-markup/test-serializer.js +163 -0
  850. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/mask-markup/with-mask.jsx +35 -0
  851. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-evaluator/index.js +169 -0
  852. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/horizontal-keypad.jsx +56 -0
  853. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/index.jsx +27 -0
  854. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keypad/index.jsx +366 -0
  855. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keypad/keys-layout.js +17 -0
  856. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/basic-operators.js +32 -0
  857. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/chars.js +5 -0
  858. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/comparison.js +28 -0
  859. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/constants.js +35 -0
  860. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/digits.js +40 -0
  861. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/edit.js +3 -0
  862. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/exponent.js +28 -0
  863. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/fractions.js +26 -0
  864. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/geometry.js +140 -0
  865. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/grades.js +356 -0
  866. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/index.js +21 -0
  867. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/log.js +22 -0
  868. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/logic.js +15 -0
  869. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/matrices.js +15 -0
  870. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/misc.js +65 -0
  871. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/navigation.js +8 -0
  872. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/operators.js +10 -0
  873. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/statistics.js +38 -0
  874. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/sub-sup.js +15 -0
  875. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/trigonometry.js +15 -0
  876. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/utils.js +71 -0
  877. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/keys/vars.js +19 -0
  878. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/math-input.jsx +128 -0
  879. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/mq/custom-elements.js +11 -0
  880. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/mq/index.js +4 -0
  881. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/mq/input.jsx +163 -0
  882. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-input/mq/static.jsx +156 -0
  883. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-rendering/index.js +5 -0
  884. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-rendering/mml-to-latex.js +2 -0
  885. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-rendering/mstack/chtml.js +220 -0
  886. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-rendering/mstack/index.js +13 -0
  887. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-rendering/mstack/mml.js +24 -0
  888. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-rendering/normalization.js +69 -0
  889. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-rendering/render-math.js +339 -0
  890. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-toolbar/done-button.jsx +47 -0
  891. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-toolbar/editor-and-pad.jsx +597 -0
  892. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-toolbar/index.jsx +213 -0
  893. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/math-toolbar/math-preview.jsx +205 -0
  894. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/plot/draggable.jsx +11 -0
  895. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/plot/graph-props.js +38 -0
  896. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/plot/grid-draggable.jsx +228 -0
  897. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/plot/index.js +9 -0
  898. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/plot/label.jsx +151 -0
  899. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/plot/root.jsx +336 -0
  900. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/plot/trig.js +150 -0
  901. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/plot/types.js +41 -0
  902. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/plot/utils.js +156 -0
  903. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/render-ui/collapsible/index.jsx +63 -0
  904. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/render-ui/color.js +55 -0
  905. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/render-ui/feedback.jsx +100 -0
  906. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/render-ui/has-text.js +14 -0
  907. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/render-ui/html-and-math.js +34 -0
  908. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/render-ui/index.js +27 -0
  909. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/render-ui/input-container.jsx +41 -0
  910. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/render-ui/preview-layout.jsx +84 -0
  911. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/render-ui/preview-prompt.jsx +130 -0
  912. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/render-ui/purpose.jsx +17 -0
  913. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/render-ui/readable.jsx +19 -0
  914. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/render-ui/response-indicators.jsx +89 -0
  915. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/render-ui/withUndoReset.jsx +116 -0
  916. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/rubric/authoring.jsx +359 -0
  917. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/rubric/index.js +8 -0
  918. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/rubric/point-menu.jsx +94 -0
  919. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/scoring-config/index.jsx +57 -0
  920. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/style-utils/index.js +10 -0
  921. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/test-utils/index.js +18 -0
  922. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/text-select/index.js +8 -0
  923. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/text-select/legend.js +78 -0
  924. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/text-select/text-select.jsx +79 -0
  925. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/text-select/token-select/index.jsx +162 -0
  926. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/text-select/token-select/token.jsx +199 -0
  927. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/text-select/tokenizer/builder.js +259 -0
  928. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/text-select/tokenizer/controls.jsx +69 -0
  929. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/text-select/tokenizer/index.jsx +149 -0
  930. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/text-select/tokenizer/selection-utils.js +49 -0
  931. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/text-select/tokenizer/token-text.jsx +124 -0
  932. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/text-select/utils.js +56 -0
  933. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/tools/anchor-utils.js +152 -0
  934. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/tools/anchor.jsx +21 -0
  935. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/tools/index.js +6 -0
  936. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/tools/protractor/graphic.jsx +87 -0
  937. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/tools/protractor/index.jsx +65 -0
  938. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/tools/rotatable.jsx +295 -0
  939. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/tools/ruler/graphic.jsx +51 -0
  940. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/tools/ruler/index.jsx +81 -0
  941. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/tools/ruler/unit-type.jsx +45 -0
  942. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/tools/ruler/unit.jsx +87 -0
  943. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/tools/style-utils.js +7 -0
  944. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/tools/transform-origin.jsx +60 -0
  945. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/translator/en.js +75 -0
  946. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/translator/es.js +75 -0
  947. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/code/translator/index.js +45 -0
  948. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/config-ui.js +62 -0
  949. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/controller-utils.js +3 -0
  950. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/correct-answer-toggle.js +3 -0
  951. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/drag.js +25 -0
  952. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/editable-html.js +4 -0
  953. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/feedback.js +11 -0
  954. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/graphing-utils.js +23 -0
  955. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/graphing.js +7 -0
  956. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/icons.js +23 -0
  957. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/mask-markup.js +3 -0
  958. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/math-evaluator.js +3 -0
  959. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/math-input.js +3 -0
  960. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/math-rendering.js +3 -0
  961. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/math-toolbar.js +13 -0
  962. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/plot.js +3 -0
  963. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/render-ui.js +29 -0
  964. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/rubric.js +3 -0
  965. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/scoring-config.js +3 -0
  966. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/style-utils.js +3 -0
  967. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/test-utils.js +3 -0
  968. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/text-select.js +3 -0
  969. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/tools.js +3 -0
  970. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/src/translator.js +3 -0
  971. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/style-utils.js +13 -0
  972. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/style-utils.js.map +1 -0
  973. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/test-utils.js +13 -0
  974. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/test-utils.js.map +1 -0
  975. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/text-select.js +49 -0
  976. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/text-select.js.map +1 -0
  977. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/tools.js +31 -0
  978. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/tools.js.map +1 -0
  979. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/translator.js +10 -0
  980. package/configure/node_modules/@pie-element/multiple-choice/node_modules/@pie-lib/pie-toolbox/translator.js.map +1 -0
  981. package/configure/node_modules/@types/lodash/LICENSE +21 -0
  982. package/configure/node_modules/@types/lodash/README.md +15 -0
  983. package/configure/node_modules/@types/lodash/add.d.ts +2 -0
  984. package/configure/node_modules/@types/lodash/after.d.ts +2 -0
  985. package/configure/node_modules/@types/lodash/ary.d.ts +2 -0
  986. package/configure/node_modules/@types/lodash/assign.d.ts +2 -0
  987. package/configure/node_modules/@types/lodash/assignIn.d.ts +2 -0
  988. package/configure/node_modules/@types/lodash/assignInWith.d.ts +2 -0
  989. package/configure/node_modules/@types/lodash/assignWith.d.ts +2 -0
  990. package/configure/node_modules/@types/lodash/at.d.ts +2 -0
  991. package/configure/node_modules/@types/lodash/attempt.d.ts +2 -0
  992. package/configure/node_modules/@types/lodash/before.d.ts +2 -0
  993. package/configure/node_modules/@types/lodash/bind.d.ts +2 -0
  994. package/configure/node_modules/@types/lodash/bindAll.d.ts +2 -0
  995. package/configure/node_modules/@types/lodash/bindKey.d.ts +2 -0
  996. package/configure/node_modules/@types/lodash/camelCase.d.ts +2 -0
  997. package/configure/node_modules/@types/lodash/capitalize.d.ts +2 -0
  998. package/configure/node_modules/@types/lodash/castArray.d.ts +2 -0
  999. package/configure/node_modules/@types/lodash/ceil.d.ts +2 -0
  1000. package/configure/node_modules/@types/lodash/chain.d.ts +2 -0
  1001. package/configure/node_modules/@types/lodash/chunk.d.ts +2 -0
  1002. package/configure/node_modules/@types/lodash/clamp.d.ts +2 -0
  1003. package/configure/node_modules/@types/lodash/clone.d.ts +2 -0
  1004. package/configure/node_modules/@types/lodash/cloneDeep.d.ts +2 -0
  1005. package/configure/node_modules/@types/lodash/cloneDeepWith.d.ts +2 -0
  1006. package/configure/node_modules/@types/lodash/cloneWith.d.ts +2 -0
  1007. package/configure/node_modules/@types/lodash/common/array.d.ts +2127 -0
  1008. package/configure/node_modules/@types/lodash/common/collection.d.ts +1934 -0
  1009. package/configure/node_modules/@types/lodash/common/common.d.ts +280 -0
  1010. package/configure/node_modules/@types/lodash/common/date.d.ts +23 -0
  1011. package/configure/node_modules/@types/lodash/common/function.d.ts +1446 -0
  1012. package/configure/node_modules/@types/lodash/common/lang.d.ts +1700 -0
  1013. package/configure/node_modules/@types/lodash/common/math.d.ts +405 -0
  1014. package/configure/node_modules/@types/lodash/common/number.d.ts +131 -0
  1015. package/configure/node_modules/@types/lodash/common/object.d.ts +2580 -0
  1016. package/configure/node_modules/@types/lodash/common/seq.d.ts +210 -0
  1017. package/configure/node_modules/@types/lodash/common/string.d.ts +788 -0
  1018. package/configure/node_modules/@types/lodash/common/util.d.ts +1220 -0
  1019. package/configure/node_modules/@types/lodash/compact.d.ts +2 -0
  1020. package/configure/node_modules/@types/lodash/concat.d.ts +2 -0
  1021. package/configure/node_modules/@types/lodash/cond.d.ts +2 -0
  1022. package/configure/node_modules/@types/lodash/conformsTo.d.ts +2 -0
  1023. package/configure/node_modules/@types/lodash/constant.d.ts +2 -0
  1024. package/configure/node_modules/@types/lodash/countBy.d.ts +2 -0
  1025. package/configure/node_modules/@types/lodash/create.d.ts +2 -0
  1026. package/configure/node_modules/@types/lodash/curry.d.ts +2 -0
  1027. package/configure/node_modules/@types/lodash/curryRight.d.ts +2 -0
  1028. package/configure/node_modules/@types/lodash/debounce.d.ts +2 -0
  1029. package/configure/node_modules/@types/lodash/deburr.d.ts +2 -0
  1030. package/configure/node_modules/@types/lodash/defaultTo.d.ts +2 -0
  1031. package/configure/node_modules/@types/lodash/defaults.d.ts +2 -0
  1032. package/configure/node_modules/@types/lodash/defaultsDeep.d.ts +2 -0
  1033. package/configure/node_modules/@types/lodash/defer.d.ts +2 -0
  1034. package/configure/node_modules/@types/lodash/delay.d.ts +2 -0
  1035. package/configure/node_modules/@types/lodash/difference.d.ts +2 -0
  1036. package/configure/node_modules/@types/lodash/differenceBy.d.ts +2 -0
  1037. package/configure/node_modules/@types/lodash/differenceWith.d.ts +2 -0
  1038. package/configure/node_modules/@types/lodash/divide.d.ts +2 -0
  1039. package/configure/node_modules/@types/lodash/drop.d.ts +2 -0
  1040. package/configure/node_modules/@types/lodash/dropRight.d.ts +2 -0
  1041. package/configure/node_modules/@types/lodash/dropRightWhile.d.ts +2 -0
  1042. package/configure/node_modules/@types/lodash/dropWhile.d.ts +2 -0
  1043. package/configure/node_modules/@types/lodash/each.d.ts +2 -0
  1044. package/configure/node_modules/@types/lodash/eachRight.d.ts +2 -0
  1045. package/configure/node_modules/@types/lodash/endsWith.d.ts +2 -0
  1046. package/configure/node_modules/@types/lodash/entries.d.ts +2 -0
  1047. package/configure/node_modules/@types/lodash/entriesIn.d.ts +2 -0
  1048. package/configure/node_modules/@types/lodash/eq.d.ts +2 -0
  1049. package/configure/node_modules/@types/lodash/escape.d.ts +2 -0
  1050. package/configure/node_modules/@types/lodash/escapeRegExp.d.ts +2 -0
  1051. package/configure/node_modules/@types/lodash/every.d.ts +2 -0
  1052. package/configure/node_modules/@types/lodash/extend.d.ts +2 -0
  1053. package/configure/node_modules/@types/lodash/extendWith.d.ts +2 -0
  1054. package/configure/node_modules/@types/lodash/fill.d.ts +2 -0
  1055. package/configure/node_modules/@types/lodash/filter.d.ts +2 -0
  1056. package/configure/node_modules/@types/lodash/find.d.ts +2 -0
  1057. package/configure/node_modules/@types/lodash/findIndex.d.ts +2 -0
  1058. package/configure/node_modules/@types/lodash/findKey.d.ts +2 -0
  1059. package/configure/node_modules/@types/lodash/findLast.d.ts +2 -0
  1060. package/configure/node_modules/@types/lodash/findLastIndex.d.ts +2 -0
  1061. package/configure/node_modules/@types/lodash/findLastKey.d.ts +2 -0
  1062. package/configure/node_modules/@types/lodash/first.d.ts +2 -0
  1063. package/configure/node_modules/@types/lodash/flatMap.d.ts +2 -0
  1064. package/configure/node_modules/@types/lodash/flatMapDeep.d.ts +2 -0
  1065. package/configure/node_modules/@types/lodash/flatMapDepth.d.ts +2 -0
  1066. package/configure/node_modules/@types/lodash/flatten.d.ts +2 -0
  1067. package/configure/node_modules/@types/lodash/flattenDeep.d.ts +2 -0
  1068. package/configure/node_modules/@types/lodash/flattenDepth.d.ts +2 -0
  1069. package/configure/node_modules/@types/lodash/flip.d.ts +2 -0
  1070. package/configure/node_modules/@types/lodash/floor.d.ts +2 -0
  1071. package/configure/node_modules/@types/lodash/flow.d.ts +2 -0
  1072. package/configure/node_modules/@types/lodash/flowRight.d.ts +2 -0
  1073. package/configure/node_modules/@types/lodash/forEach.d.ts +2 -0
  1074. package/configure/node_modules/@types/lodash/forEachRight.d.ts +2 -0
  1075. package/configure/node_modules/@types/lodash/forIn.d.ts +2 -0
  1076. package/configure/node_modules/@types/lodash/forInRight.d.ts +2 -0
  1077. package/configure/node_modules/@types/lodash/forOwn.d.ts +2 -0
  1078. package/configure/node_modules/@types/lodash/forOwnRight.d.ts +2 -0
  1079. package/configure/node_modules/@types/lodash/fp/F.d.ts +2 -0
  1080. package/configure/node_modules/@types/lodash/fp/T.d.ts +2 -0
  1081. package/configure/node_modules/@types/lodash/fp/__.d.ts +3 -0
  1082. package/configure/node_modules/@types/lodash/fp/add.d.ts +2 -0
  1083. package/configure/node_modules/@types/lodash/fp/after.d.ts +2 -0
  1084. package/configure/node_modules/@types/lodash/fp/all.d.ts +2 -0
  1085. package/configure/node_modules/@types/lodash/fp/allPass.d.ts +2 -0
  1086. package/configure/node_modules/@types/lodash/fp/always.d.ts +2 -0
  1087. package/configure/node_modules/@types/lodash/fp/any.d.ts +2 -0
  1088. package/configure/node_modules/@types/lodash/fp/anyPass.d.ts +2 -0
  1089. package/configure/node_modules/@types/lodash/fp/apply.d.ts +2 -0
  1090. package/configure/node_modules/@types/lodash/fp/ary.d.ts +2 -0
  1091. package/configure/node_modules/@types/lodash/fp/assign.d.ts +2 -0
  1092. package/configure/node_modules/@types/lodash/fp/assignAll.d.ts +2 -0
  1093. package/configure/node_modules/@types/lodash/fp/assignAllWith.d.ts +2 -0
  1094. package/configure/node_modules/@types/lodash/fp/assignIn.d.ts +2 -0
  1095. package/configure/node_modules/@types/lodash/fp/assignInAll.d.ts +2 -0
  1096. package/configure/node_modules/@types/lodash/fp/assignInAllWith.d.ts +2 -0
  1097. package/configure/node_modules/@types/lodash/fp/assignInWith.d.ts +2 -0
  1098. package/configure/node_modules/@types/lodash/fp/assignWith.d.ts +2 -0
  1099. package/configure/node_modules/@types/lodash/fp/assoc.d.ts +2 -0
  1100. package/configure/node_modules/@types/lodash/fp/assocPath.d.ts +2 -0
  1101. package/configure/node_modules/@types/lodash/fp/at.d.ts +2 -0
  1102. package/configure/node_modules/@types/lodash/fp/attempt.d.ts +2 -0
  1103. package/configure/node_modules/@types/lodash/fp/before.d.ts +2 -0
  1104. package/configure/node_modules/@types/lodash/fp/bind.d.ts +2 -0
  1105. package/configure/node_modules/@types/lodash/fp/bindAll.d.ts +2 -0
  1106. package/configure/node_modules/@types/lodash/fp/bindKey.d.ts +2 -0
  1107. package/configure/node_modules/@types/lodash/fp/camelCase.d.ts +2 -0
  1108. package/configure/node_modules/@types/lodash/fp/capitalize.d.ts +2 -0
  1109. package/configure/node_modules/@types/lodash/fp/castArray.d.ts +2 -0
  1110. package/configure/node_modules/@types/lodash/fp/ceil.d.ts +2 -0
  1111. package/configure/node_modules/@types/lodash/fp/chunk.d.ts +2 -0
  1112. package/configure/node_modules/@types/lodash/fp/clamp.d.ts +2 -0
  1113. package/configure/node_modules/@types/lodash/fp/clone.d.ts +2 -0
  1114. package/configure/node_modules/@types/lodash/fp/cloneDeep.d.ts +2 -0
  1115. package/configure/node_modules/@types/lodash/fp/cloneDeepWith.d.ts +2 -0
  1116. package/configure/node_modules/@types/lodash/fp/cloneWith.d.ts +2 -0
  1117. package/configure/node_modules/@types/lodash/fp/compact.d.ts +2 -0
  1118. package/configure/node_modules/@types/lodash/fp/complement.d.ts +2 -0
  1119. package/configure/node_modules/@types/lodash/fp/compose.d.ts +2 -0
  1120. package/configure/node_modules/@types/lodash/fp/concat.d.ts +2 -0
  1121. package/configure/node_modules/@types/lodash/fp/cond.d.ts +2 -0
  1122. package/configure/node_modules/@types/lodash/fp/conforms.d.ts +2 -0
  1123. package/configure/node_modules/@types/lodash/fp/conformsTo.d.ts +2 -0
  1124. package/configure/node_modules/@types/lodash/fp/constant.d.ts +2 -0
  1125. package/configure/node_modules/@types/lodash/fp/contains.d.ts +2 -0
  1126. package/configure/node_modules/@types/lodash/fp/convert.d.ts +15 -0
  1127. package/configure/node_modules/@types/lodash/fp/countBy.d.ts +2 -0
  1128. package/configure/node_modules/@types/lodash/fp/create.d.ts +2 -0
  1129. package/configure/node_modules/@types/lodash/fp/curry.d.ts +2 -0
  1130. package/configure/node_modules/@types/lodash/fp/curryN.d.ts +2 -0
  1131. package/configure/node_modules/@types/lodash/fp/curryRight.d.ts +2 -0
  1132. package/configure/node_modules/@types/lodash/fp/curryRightN.d.ts +2 -0
  1133. package/configure/node_modules/@types/lodash/fp/debounce.d.ts +2 -0
  1134. package/configure/node_modules/@types/lodash/fp/deburr.d.ts +2 -0
  1135. package/configure/node_modules/@types/lodash/fp/defaultTo.d.ts +2 -0
  1136. package/configure/node_modules/@types/lodash/fp/defaults.d.ts +2 -0
  1137. package/configure/node_modules/@types/lodash/fp/defaultsAll.d.ts +2 -0
  1138. package/configure/node_modules/@types/lodash/fp/defaultsDeep.d.ts +2 -0
  1139. package/configure/node_modules/@types/lodash/fp/defaultsDeepAll.d.ts +2 -0
  1140. package/configure/node_modules/@types/lodash/fp/defer.d.ts +2 -0
  1141. package/configure/node_modules/@types/lodash/fp/delay.d.ts +2 -0
  1142. package/configure/node_modules/@types/lodash/fp/difference.d.ts +2 -0
  1143. package/configure/node_modules/@types/lodash/fp/differenceBy.d.ts +2 -0
  1144. package/configure/node_modules/@types/lodash/fp/differenceWith.d.ts +2 -0
  1145. package/configure/node_modules/@types/lodash/fp/dissoc.d.ts +2 -0
  1146. package/configure/node_modules/@types/lodash/fp/dissocPath.d.ts +2 -0
  1147. package/configure/node_modules/@types/lodash/fp/divide.d.ts +2 -0
  1148. package/configure/node_modules/@types/lodash/fp/drop.d.ts +2 -0
  1149. package/configure/node_modules/@types/lodash/fp/dropLast.d.ts +2 -0
  1150. package/configure/node_modules/@types/lodash/fp/dropLastWhile.d.ts +2 -0
  1151. package/configure/node_modules/@types/lodash/fp/dropRight.d.ts +2 -0
  1152. package/configure/node_modules/@types/lodash/fp/dropRightWhile.d.ts +2 -0
  1153. package/configure/node_modules/@types/lodash/fp/dropWhile.d.ts +2 -0
  1154. package/configure/node_modules/@types/lodash/fp/each.d.ts +2 -0
  1155. package/configure/node_modules/@types/lodash/fp/eachRight.d.ts +2 -0
  1156. package/configure/node_modules/@types/lodash/fp/endsWith.d.ts +2 -0
  1157. package/configure/node_modules/@types/lodash/fp/entries.d.ts +2 -0
  1158. package/configure/node_modules/@types/lodash/fp/entriesIn.d.ts +2 -0
  1159. package/configure/node_modules/@types/lodash/fp/eq.d.ts +2 -0
  1160. package/configure/node_modules/@types/lodash/fp/equals.d.ts +2 -0
  1161. package/configure/node_modules/@types/lodash/fp/escape.d.ts +2 -0
  1162. package/configure/node_modules/@types/lodash/fp/escapeRegExp.d.ts +2 -0
  1163. package/configure/node_modules/@types/lodash/fp/every.d.ts +2 -0
  1164. package/configure/node_modules/@types/lodash/fp/extend.d.ts +2 -0
  1165. package/configure/node_modules/@types/lodash/fp/extendAll.d.ts +2 -0
  1166. package/configure/node_modules/@types/lodash/fp/extendAllWith.d.ts +2 -0
  1167. package/configure/node_modules/@types/lodash/fp/extendWith.d.ts +2 -0
  1168. package/configure/node_modules/@types/lodash/fp/fill.d.ts +2 -0
  1169. package/configure/node_modules/@types/lodash/fp/filter.d.ts +2 -0
  1170. package/configure/node_modules/@types/lodash/fp/find.d.ts +2 -0
  1171. package/configure/node_modules/@types/lodash/fp/findFrom.d.ts +2 -0
  1172. package/configure/node_modules/@types/lodash/fp/findIndex.d.ts +2 -0
  1173. package/configure/node_modules/@types/lodash/fp/findIndexFrom.d.ts +2 -0
  1174. package/configure/node_modules/@types/lodash/fp/findKey.d.ts +2 -0
  1175. package/configure/node_modules/@types/lodash/fp/findLast.d.ts +2 -0
  1176. package/configure/node_modules/@types/lodash/fp/findLastFrom.d.ts +2 -0
  1177. package/configure/node_modules/@types/lodash/fp/findLastIndex.d.ts +2 -0
  1178. package/configure/node_modules/@types/lodash/fp/findLastIndexFrom.d.ts +2 -0
  1179. package/configure/node_modules/@types/lodash/fp/findLastKey.d.ts +2 -0
  1180. package/configure/node_modules/@types/lodash/fp/first.d.ts +2 -0
  1181. package/configure/node_modules/@types/lodash/fp/flatMap.d.ts +2 -0
  1182. package/configure/node_modules/@types/lodash/fp/flatMapDeep.d.ts +2 -0
  1183. package/configure/node_modules/@types/lodash/fp/flatMapDepth.d.ts +2 -0
  1184. package/configure/node_modules/@types/lodash/fp/flatten.d.ts +2 -0
  1185. package/configure/node_modules/@types/lodash/fp/flattenDeep.d.ts +2 -0
  1186. package/configure/node_modules/@types/lodash/fp/flattenDepth.d.ts +2 -0
  1187. package/configure/node_modules/@types/lodash/fp/flip.d.ts +2 -0
  1188. package/configure/node_modules/@types/lodash/fp/floor.d.ts +2 -0
  1189. package/configure/node_modules/@types/lodash/fp/flow.d.ts +2 -0
  1190. package/configure/node_modules/@types/lodash/fp/flowRight.d.ts +2 -0
  1191. package/configure/node_modules/@types/lodash/fp/forEach.d.ts +2 -0
  1192. package/configure/node_modules/@types/lodash/fp/forEachRight.d.ts +2 -0
  1193. package/configure/node_modules/@types/lodash/fp/forIn.d.ts +2 -0
  1194. package/configure/node_modules/@types/lodash/fp/forInRight.d.ts +2 -0
  1195. package/configure/node_modules/@types/lodash/fp/forOwn.d.ts +2 -0
  1196. package/configure/node_modules/@types/lodash/fp/forOwnRight.d.ts +2 -0
  1197. package/configure/node_modules/@types/lodash/fp/fromPairs.d.ts +2 -0
  1198. package/configure/node_modules/@types/lodash/fp/functions.d.ts +2 -0
  1199. package/configure/node_modules/@types/lodash/fp/functionsIn.d.ts +2 -0
  1200. package/configure/node_modules/@types/lodash/fp/get.d.ts +2 -0
  1201. package/configure/node_modules/@types/lodash/fp/getOr.d.ts +2 -0
  1202. package/configure/node_modules/@types/lodash/fp/groupBy.d.ts +2 -0
  1203. package/configure/node_modules/@types/lodash/fp/gt.d.ts +2 -0
  1204. package/configure/node_modules/@types/lodash/fp/gte.d.ts +2 -0
  1205. package/configure/node_modules/@types/lodash/fp/has.d.ts +2 -0
  1206. package/configure/node_modules/@types/lodash/fp/hasIn.d.ts +2 -0
  1207. package/configure/node_modules/@types/lodash/fp/head.d.ts +2 -0
  1208. package/configure/node_modules/@types/lodash/fp/identical.d.ts +2 -0
  1209. package/configure/node_modules/@types/lodash/fp/identity.d.ts +2 -0
  1210. package/configure/node_modules/@types/lodash/fp/inRange.d.ts +2 -0
  1211. package/configure/node_modules/@types/lodash/fp/includes.d.ts +2 -0
  1212. package/configure/node_modules/@types/lodash/fp/includesFrom.d.ts +2 -0
  1213. package/configure/node_modules/@types/lodash/fp/indexBy.d.ts +2 -0
  1214. package/configure/node_modules/@types/lodash/fp/indexOf.d.ts +2 -0
  1215. package/configure/node_modules/@types/lodash/fp/indexOfFrom.d.ts +2 -0
  1216. package/configure/node_modules/@types/lodash/fp/init.d.ts +2 -0
  1217. package/configure/node_modules/@types/lodash/fp/initial.d.ts +2 -0
  1218. package/configure/node_modules/@types/lodash/fp/intersection.d.ts +2 -0
  1219. package/configure/node_modules/@types/lodash/fp/intersectionBy.d.ts +2 -0
  1220. package/configure/node_modules/@types/lodash/fp/intersectionWith.d.ts +2 -0
  1221. package/configure/node_modules/@types/lodash/fp/invert.d.ts +2 -0
  1222. package/configure/node_modules/@types/lodash/fp/invertBy.d.ts +2 -0
  1223. package/configure/node_modules/@types/lodash/fp/invertObj.d.ts +2 -0
  1224. package/configure/node_modules/@types/lodash/fp/invoke.d.ts +2 -0
  1225. package/configure/node_modules/@types/lodash/fp/invokeArgs.d.ts +2 -0
  1226. package/configure/node_modules/@types/lodash/fp/invokeArgsMap.d.ts +2 -0
  1227. package/configure/node_modules/@types/lodash/fp/invokeMap.d.ts +2 -0
  1228. package/configure/node_modules/@types/lodash/fp/isArguments.d.ts +2 -0
  1229. package/configure/node_modules/@types/lodash/fp/isArray.d.ts +2 -0
  1230. package/configure/node_modules/@types/lodash/fp/isArrayBuffer.d.ts +2 -0
  1231. package/configure/node_modules/@types/lodash/fp/isArrayLike.d.ts +2 -0
  1232. package/configure/node_modules/@types/lodash/fp/isArrayLikeObject.d.ts +2 -0
  1233. package/configure/node_modules/@types/lodash/fp/isBoolean.d.ts +2 -0
  1234. package/configure/node_modules/@types/lodash/fp/isBuffer.d.ts +2 -0
  1235. package/configure/node_modules/@types/lodash/fp/isDate.d.ts +2 -0
  1236. package/configure/node_modules/@types/lodash/fp/isElement.d.ts +2 -0
  1237. package/configure/node_modules/@types/lodash/fp/isEmpty.d.ts +2 -0
  1238. package/configure/node_modules/@types/lodash/fp/isEqual.d.ts +2 -0
  1239. package/configure/node_modules/@types/lodash/fp/isEqualWith.d.ts +2 -0
  1240. package/configure/node_modules/@types/lodash/fp/isError.d.ts +2 -0
  1241. package/configure/node_modules/@types/lodash/fp/isFinite.d.ts +2 -0
  1242. package/configure/node_modules/@types/lodash/fp/isFunction.d.ts +2 -0
  1243. package/configure/node_modules/@types/lodash/fp/isInteger.d.ts +2 -0
  1244. package/configure/node_modules/@types/lodash/fp/isLength.d.ts +2 -0
  1245. package/configure/node_modules/@types/lodash/fp/isMap.d.ts +2 -0
  1246. package/configure/node_modules/@types/lodash/fp/isMatch.d.ts +2 -0
  1247. package/configure/node_modules/@types/lodash/fp/isMatchWith.d.ts +2 -0
  1248. package/configure/node_modules/@types/lodash/fp/isNaN.d.ts +2 -0
  1249. package/configure/node_modules/@types/lodash/fp/isNative.d.ts +2 -0
  1250. package/configure/node_modules/@types/lodash/fp/isNil.d.ts +2 -0
  1251. package/configure/node_modules/@types/lodash/fp/isNull.d.ts +2 -0
  1252. package/configure/node_modules/@types/lodash/fp/isNumber.d.ts +2 -0
  1253. package/configure/node_modules/@types/lodash/fp/isObject.d.ts +2 -0
  1254. package/configure/node_modules/@types/lodash/fp/isObjectLike.d.ts +2 -0
  1255. package/configure/node_modules/@types/lodash/fp/isPlainObject.d.ts +2 -0
  1256. package/configure/node_modules/@types/lodash/fp/isRegExp.d.ts +2 -0
  1257. package/configure/node_modules/@types/lodash/fp/isSafeInteger.d.ts +2 -0
  1258. package/configure/node_modules/@types/lodash/fp/isSet.d.ts +2 -0
  1259. package/configure/node_modules/@types/lodash/fp/isString.d.ts +2 -0
  1260. package/configure/node_modules/@types/lodash/fp/isSymbol.d.ts +2 -0
  1261. package/configure/node_modules/@types/lodash/fp/isTypedArray.d.ts +2 -0
  1262. package/configure/node_modules/@types/lodash/fp/isUndefined.d.ts +2 -0
  1263. package/configure/node_modules/@types/lodash/fp/isWeakMap.d.ts +2 -0
  1264. package/configure/node_modules/@types/lodash/fp/isWeakSet.d.ts +2 -0
  1265. package/configure/node_modules/@types/lodash/fp/iteratee.d.ts +2 -0
  1266. package/configure/node_modules/@types/lodash/fp/join.d.ts +2 -0
  1267. package/configure/node_modules/@types/lodash/fp/juxt.d.ts +2 -0
  1268. package/configure/node_modules/@types/lodash/fp/kebabCase.d.ts +2 -0
  1269. package/configure/node_modules/@types/lodash/fp/keyBy.d.ts +2 -0
  1270. package/configure/node_modules/@types/lodash/fp/keys.d.ts +2 -0
  1271. package/configure/node_modules/@types/lodash/fp/keysIn.d.ts +2 -0
  1272. package/configure/node_modules/@types/lodash/fp/last.d.ts +2 -0
  1273. package/configure/node_modules/@types/lodash/fp/lastIndexOf.d.ts +2 -0
  1274. package/configure/node_modules/@types/lodash/fp/lastIndexOfFrom.d.ts +2 -0
  1275. package/configure/node_modules/@types/lodash/fp/lowerCase.d.ts +2 -0
  1276. package/configure/node_modules/@types/lodash/fp/lowerFirst.d.ts +2 -0
  1277. package/configure/node_modules/@types/lodash/fp/lt.d.ts +2 -0
  1278. package/configure/node_modules/@types/lodash/fp/lte.d.ts +2 -0
  1279. package/configure/node_modules/@types/lodash/fp/map.d.ts +2 -0
  1280. package/configure/node_modules/@types/lodash/fp/mapKeys.d.ts +2 -0
  1281. package/configure/node_modules/@types/lodash/fp/mapValues.d.ts +2 -0
  1282. package/configure/node_modules/@types/lodash/fp/matches.d.ts +2 -0
  1283. package/configure/node_modules/@types/lodash/fp/matchesProperty.d.ts +2 -0
  1284. package/configure/node_modules/@types/lodash/fp/max.d.ts +2 -0
  1285. package/configure/node_modules/@types/lodash/fp/maxBy.d.ts +2 -0
  1286. package/configure/node_modules/@types/lodash/fp/mean.d.ts +2 -0
  1287. package/configure/node_modules/@types/lodash/fp/meanBy.d.ts +2 -0
  1288. package/configure/node_modules/@types/lodash/fp/memoize.d.ts +2 -0
  1289. package/configure/node_modules/@types/lodash/fp/merge.d.ts +2 -0
  1290. package/configure/node_modules/@types/lodash/fp/mergeAll.d.ts +2 -0
  1291. package/configure/node_modules/@types/lodash/fp/mergeAllWith.d.ts +2 -0
  1292. package/configure/node_modules/@types/lodash/fp/mergeWith.d.ts +2 -0
  1293. package/configure/node_modules/@types/lodash/fp/method.d.ts +2 -0
  1294. package/configure/node_modules/@types/lodash/fp/methodOf.d.ts +2 -0
  1295. package/configure/node_modules/@types/lodash/fp/min.d.ts +2 -0
  1296. package/configure/node_modules/@types/lodash/fp/minBy.d.ts +2 -0
  1297. package/configure/node_modules/@types/lodash/fp/multiply.d.ts +2 -0
  1298. package/configure/node_modules/@types/lodash/fp/nAry.d.ts +2 -0
  1299. package/configure/node_modules/@types/lodash/fp/negate.d.ts +2 -0
  1300. package/configure/node_modules/@types/lodash/fp/noConflict.d.ts +2 -0
  1301. package/configure/node_modules/@types/lodash/fp/noop.d.ts +2 -0
  1302. package/configure/node_modules/@types/lodash/fp/now.d.ts +2 -0
  1303. package/configure/node_modules/@types/lodash/fp/nth.d.ts +2 -0
  1304. package/configure/node_modules/@types/lodash/fp/nthArg.d.ts +2 -0
  1305. package/configure/node_modules/@types/lodash/fp/omit.d.ts +2 -0
  1306. package/configure/node_modules/@types/lodash/fp/omitAll.d.ts +2 -0
  1307. package/configure/node_modules/@types/lodash/fp/omitBy.d.ts +2 -0
  1308. package/configure/node_modules/@types/lodash/fp/once.d.ts +2 -0
  1309. package/configure/node_modules/@types/lodash/fp/orderBy.d.ts +2 -0
  1310. package/configure/node_modules/@types/lodash/fp/over.d.ts +2 -0
  1311. package/configure/node_modules/@types/lodash/fp/overArgs.d.ts +2 -0
  1312. package/configure/node_modules/@types/lodash/fp/overEvery.d.ts +2 -0
  1313. package/configure/node_modules/@types/lodash/fp/overSome.d.ts +2 -0
  1314. package/configure/node_modules/@types/lodash/fp/pad.d.ts +2 -0
  1315. package/configure/node_modules/@types/lodash/fp/padChars.d.ts +2 -0
  1316. package/configure/node_modules/@types/lodash/fp/padCharsEnd.d.ts +2 -0
  1317. package/configure/node_modules/@types/lodash/fp/padCharsStart.d.ts +2 -0
  1318. package/configure/node_modules/@types/lodash/fp/padEnd.d.ts +2 -0
  1319. package/configure/node_modules/@types/lodash/fp/padStart.d.ts +2 -0
  1320. package/configure/node_modules/@types/lodash/fp/parseInt.d.ts +2 -0
  1321. package/configure/node_modules/@types/lodash/fp/partial.d.ts +2 -0
  1322. package/configure/node_modules/@types/lodash/fp/partialRight.d.ts +2 -0
  1323. package/configure/node_modules/@types/lodash/fp/partition.d.ts +2 -0
  1324. package/configure/node_modules/@types/lodash/fp/path.d.ts +2 -0
  1325. package/configure/node_modules/@types/lodash/fp/pathEq.d.ts +2 -0
  1326. package/configure/node_modules/@types/lodash/fp/pathOr.d.ts +2 -0
  1327. package/configure/node_modules/@types/lodash/fp/paths.d.ts +2 -0
  1328. package/configure/node_modules/@types/lodash/fp/pick.d.ts +2 -0
  1329. package/configure/node_modules/@types/lodash/fp/pickAll.d.ts +2 -0
  1330. package/configure/node_modules/@types/lodash/fp/pickBy.d.ts +2 -0
  1331. package/configure/node_modules/@types/lodash/fp/pipe.d.ts +2 -0
  1332. package/configure/node_modules/@types/lodash/fp/placeholder.d.ts +3 -0
  1333. package/configure/node_modules/@types/lodash/fp/pluck.d.ts +2 -0
  1334. package/configure/node_modules/@types/lodash/fp/prop.d.ts +2 -0
  1335. package/configure/node_modules/@types/lodash/fp/propEq.d.ts +2 -0
  1336. package/configure/node_modules/@types/lodash/fp/propOr.d.ts +2 -0
  1337. package/configure/node_modules/@types/lodash/fp/property.d.ts +2 -0
  1338. package/configure/node_modules/@types/lodash/fp/propertyOf.d.ts +2 -0
  1339. package/configure/node_modules/@types/lodash/fp/props.d.ts +2 -0
  1340. package/configure/node_modules/@types/lodash/fp/pull.d.ts +2 -0
  1341. package/configure/node_modules/@types/lodash/fp/pullAll.d.ts +2 -0
  1342. package/configure/node_modules/@types/lodash/fp/pullAllBy.d.ts +2 -0
  1343. package/configure/node_modules/@types/lodash/fp/pullAllWith.d.ts +2 -0
  1344. package/configure/node_modules/@types/lodash/fp/pullAt.d.ts +2 -0
  1345. package/configure/node_modules/@types/lodash/fp/random.d.ts +2 -0
  1346. package/configure/node_modules/@types/lodash/fp/range.d.ts +2 -0
  1347. package/configure/node_modules/@types/lodash/fp/rangeRight.d.ts +2 -0
  1348. package/configure/node_modules/@types/lodash/fp/rangeStep.d.ts +2 -0
  1349. package/configure/node_modules/@types/lodash/fp/rangeStepRight.d.ts +2 -0
  1350. package/configure/node_modules/@types/lodash/fp/rearg.d.ts +2 -0
  1351. package/configure/node_modules/@types/lodash/fp/reduce.d.ts +2 -0
  1352. package/configure/node_modules/@types/lodash/fp/reduceRight.d.ts +2 -0
  1353. package/configure/node_modules/@types/lodash/fp/reject.d.ts +2 -0
  1354. package/configure/node_modules/@types/lodash/fp/remove.d.ts +2 -0
  1355. package/configure/node_modules/@types/lodash/fp/repeat.d.ts +2 -0
  1356. package/configure/node_modules/@types/lodash/fp/replace.d.ts +2 -0
  1357. package/configure/node_modules/@types/lodash/fp/rest.d.ts +2 -0
  1358. package/configure/node_modules/@types/lodash/fp/restFrom.d.ts +2 -0
  1359. package/configure/node_modules/@types/lodash/fp/result.d.ts +2 -0
  1360. package/configure/node_modules/@types/lodash/fp/reverse.d.ts +2 -0
  1361. package/configure/node_modules/@types/lodash/fp/round.d.ts +2 -0
  1362. package/configure/node_modules/@types/lodash/fp/runInContext.d.ts +2 -0
  1363. package/configure/node_modules/@types/lodash/fp/sample.d.ts +2 -0
  1364. package/configure/node_modules/@types/lodash/fp/sampleSize.d.ts +2 -0
  1365. package/configure/node_modules/@types/lodash/fp/set.d.ts +2 -0
  1366. package/configure/node_modules/@types/lodash/fp/setWith.d.ts +2 -0
  1367. package/configure/node_modules/@types/lodash/fp/shuffle.d.ts +2 -0
  1368. package/configure/node_modules/@types/lodash/fp/size.d.ts +2 -0
  1369. package/configure/node_modules/@types/lodash/fp/slice.d.ts +2 -0
  1370. package/configure/node_modules/@types/lodash/fp/snakeCase.d.ts +2 -0
  1371. package/configure/node_modules/@types/lodash/fp/some.d.ts +2 -0
  1372. package/configure/node_modules/@types/lodash/fp/sortBy.d.ts +2 -0
  1373. package/configure/node_modules/@types/lodash/fp/sortedIndex.d.ts +2 -0
  1374. package/configure/node_modules/@types/lodash/fp/sortedIndexBy.d.ts +2 -0
  1375. package/configure/node_modules/@types/lodash/fp/sortedIndexOf.d.ts +2 -0
  1376. package/configure/node_modules/@types/lodash/fp/sortedLastIndex.d.ts +2 -0
  1377. package/configure/node_modules/@types/lodash/fp/sortedLastIndexBy.d.ts +2 -0
  1378. package/configure/node_modules/@types/lodash/fp/sortedLastIndexOf.d.ts +2 -0
  1379. package/configure/node_modules/@types/lodash/fp/sortedUniq.d.ts +2 -0
  1380. package/configure/node_modules/@types/lodash/fp/sortedUniqBy.d.ts +2 -0
  1381. package/configure/node_modules/@types/lodash/fp/split.d.ts +2 -0
  1382. package/configure/node_modules/@types/lodash/fp/spread.d.ts +2 -0
  1383. package/configure/node_modules/@types/lodash/fp/spreadFrom.d.ts +2 -0
  1384. package/configure/node_modules/@types/lodash/fp/startCase.d.ts +2 -0
  1385. package/configure/node_modules/@types/lodash/fp/startsWith.d.ts +2 -0
  1386. package/configure/node_modules/@types/lodash/fp/stubArray.d.ts +2 -0
  1387. package/configure/node_modules/@types/lodash/fp/stubFalse.d.ts +2 -0
  1388. package/configure/node_modules/@types/lodash/fp/stubObject.d.ts +2 -0
  1389. package/configure/node_modules/@types/lodash/fp/stubString.d.ts +2 -0
  1390. package/configure/node_modules/@types/lodash/fp/stubTrue.d.ts +2 -0
  1391. package/configure/node_modules/@types/lodash/fp/subtract.d.ts +2 -0
  1392. package/configure/node_modules/@types/lodash/fp/sum.d.ts +2 -0
  1393. package/configure/node_modules/@types/lodash/fp/sumBy.d.ts +2 -0
  1394. package/configure/node_modules/@types/lodash/fp/symmetricDifference.d.ts +2 -0
  1395. package/configure/node_modules/@types/lodash/fp/symmetricDifferenceBy.d.ts +2 -0
  1396. package/configure/node_modules/@types/lodash/fp/symmetricDifferenceWith.d.ts +2 -0
  1397. package/configure/node_modules/@types/lodash/fp/tail.d.ts +2 -0
  1398. package/configure/node_modules/@types/lodash/fp/take.d.ts +2 -0
  1399. package/configure/node_modules/@types/lodash/fp/takeLast.d.ts +2 -0
  1400. package/configure/node_modules/@types/lodash/fp/takeLastWhile.d.ts +2 -0
  1401. package/configure/node_modules/@types/lodash/fp/takeRight.d.ts +2 -0
  1402. package/configure/node_modules/@types/lodash/fp/takeRightWhile.d.ts +2 -0
  1403. package/configure/node_modules/@types/lodash/fp/takeWhile.d.ts +2 -0
  1404. package/configure/node_modules/@types/lodash/fp/tap.d.ts +2 -0
  1405. package/configure/node_modules/@types/lodash/fp/template.d.ts +2 -0
  1406. package/configure/node_modules/@types/lodash/fp/throttle.d.ts +2 -0
  1407. package/configure/node_modules/@types/lodash/fp/thru.d.ts +2 -0
  1408. package/configure/node_modules/@types/lodash/fp/times.d.ts +2 -0
  1409. package/configure/node_modules/@types/lodash/fp/toArray.d.ts +2 -0
  1410. package/configure/node_modules/@types/lodash/fp/toFinite.d.ts +2 -0
  1411. package/configure/node_modules/@types/lodash/fp/toInteger.d.ts +2 -0
  1412. package/configure/node_modules/@types/lodash/fp/toLength.d.ts +2 -0
  1413. package/configure/node_modules/@types/lodash/fp/toLower.d.ts +2 -0
  1414. package/configure/node_modules/@types/lodash/fp/toNumber.d.ts +2 -0
  1415. package/configure/node_modules/@types/lodash/fp/toPairs.d.ts +2 -0
  1416. package/configure/node_modules/@types/lodash/fp/toPairsIn.d.ts +2 -0
  1417. package/configure/node_modules/@types/lodash/fp/toPath.d.ts +2 -0
  1418. package/configure/node_modules/@types/lodash/fp/toPlainObject.d.ts +2 -0
  1419. package/configure/node_modules/@types/lodash/fp/toSafeInteger.d.ts +2 -0
  1420. package/configure/node_modules/@types/lodash/fp/toString.d.ts +2 -0
  1421. package/configure/node_modules/@types/lodash/fp/toUpper.d.ts +2 -0
  1422. package/configure/node_modules/@types/lodash/fp/transform.d.ts +2 -0
  1423. package/configure/node_modules/@types/lodash/fp/trim.d.ts +2 -0
  1424. package/configure/node_modules/@types/lodash/fp/trimChars.d.ts +2 -0
  1425. package/configure/node_modules/@types/lodash/fp/trimCharsEnd.d.ts +2 -0
  1426. package/configure/node_modules/@types/lodash/fp/trimCharsStart.d.ts +2 -0
  1427. package/configure/node_modules/@types/lodash/fp/trimEnd.d.ts +2 -0
  1428. package/configure/node_modules/@types/lodash/fp/trimStart.d.ts +2 -0
  1429. package/configure/node_modules/@types/lodash/fp/truncate.d.ts +2 -0
  1430. package/configure/node_modules/@types/lodash/fp/unapply.d.ts +2 -0
  1431. package/configure/node_modules/@types/lodash/fp/unary.d.ts +2 -0
  1432. package/configure/node_modules/@types/lodash/fp/unescape.d.ts +2 -0
  1433. package/configure/node_modules/@types/lodash/fp/union.d.ts +2 -0
  1434. package/configure/node_modules/@types/lodash/fp/unionBy.d.ts +2 -0
  1435. package/configure/node_modules/@types/lodash/fp/unionWith.d.ts +2 -0
  1436. package/configure/node_modules/@types/lodash/fp/uniq.d.ts +2 -0
  1437. package/configure/node_modules/@types/lodash/fp/uniqBy.d.ts +2 -0
  1438. package/configure/node_modules/@types/lodash/fp/uniqWith.d.ts +2 -0
  1439. package/configure/node_modules/@types/lodash/fp/uniqueId.d.ts +2 -0
  1440. package/configure/node_modules/@types/lodash/fp/unnest.d.ts +2 -0
  1441. package/configure/node_modules/@types/lodash/fp/unset.d.ts +2 -0
  1442. package/configure/node_modules/@types/lodash/fp/unzip.d.ts +2 -0
  1443. package/configure/node_modules/@types/lodash/fp/unzipWith.d.ts +2 -0
  1444. package/configure/node_modules/@types/lodash/fp/update.d.ts +2 -0
  1445. package/configure/node_modules/@types/lodash/fp/updateWith.d.ts +2 -0
  1446. package/configure/node_modules/@types/lodash/fp/upperCase.d.ts +2 -0
  1447. package/configure/node_modules/@types/lodash/fp/upperFirst.d.ts +2 -0
  1448. package/configure/node_modules/@types/lodash/fp/useWith.d.ts +2 -0
  1449. package/configure/node_modules/@types/lodash/fp/values.d.ts +2 -0
  1450. package/configure/node_modules/@types/lodash/fp/valuesIn.d.ts +2 -0
  1451. package/configure/node_modules/@types/lodash/fp/where.d.ts +2 -0
  1452. package/configure/node_modules/@types/lodash/fp/whereEq.d.ts +2 -0
  1453. package/configure/node_modules/@types/lodash/fp/without.d.ts +2 -0
  1454. package/configure/node_modules/@types/lodash/fp/words.d.ts +2 -0
  1455. package/configure/node_modules/@types/lodash/fp/wrap.d.ts +2 -0
  1456. package/configure/node_modules/@types/lodash/fp/xor.d.ts +2 -0
  1457. package/configure/node_modules/@types/lodash/fp/xorBy.d.ts +2 -0
  1458. package/configure/node_modules/@types/lodash/fp/xorWith.d.ts +2 -0
  1459. package/configure/node_modules/@types/lodash/fp/zip.d.ts +2 -0
  1460. package/configure/node_modules/@types/lodash/fp/zipAll.d.ts +2 -0
  1461. package/configure/node_modules/@types/lodash/fp/zipObj.d.ts +2 -0
  1462. package/configure/node_modules/@types/lodash/fp/zipObject.d.ts +2 -0
  1463. package/configure/node_modules/@types/lodash/fp/zipObjectDeep.d.ts +2 -0
  1464. package/configure/node_modules/@types/lodash/fp/zipWith.d.ts +2 -0
  1465. package/configure/node_modules/@types/lodash/fp.d.ts +4950 -0
  1466. package/configure/node_modules/@types/lodash/fromPairs.d.ts +2 -0
  1467. package/configure/node_modules/@types/lodash/functions.d.ts +2 -0
  1468. package/configure/node_modules/@types/lodash/functionsIn.d.ts +2 -0
  1469. package/configure/node_modules/@types/lodash/get.d.ts +2 -0
  1470. package/configure/node_modules/@types/lodash/groupBy.d.ts +2 -0
  1471. package/configure/node_modules/@types/lodash/gt.d.ts +2 -0
  1472. package/configure/node_modules/@types/lodash/gte.d.ts +2 -0
  1473. package/configure/node_modules/@types/lodash/has.d.ts +2 -0
  1474. package/configure/node_modules/@types/lodash/hasIn.d.ts +2 -0
  1475. package/configure/node_modules/@types/lodash/head.d.ts +2 -0
  1476. package/configure/node_modules/@types/lodash/identity.d.ts +2 -0
  1477. package/configure/node_modules/@types/lodash/inRange.d.ts +2 -0
  1478. package/configure/node_modules/@types/lodash/includes.d.ts +2 -0
  1479. package/configure/node_modules/@types/lodash/index.d.ts +21 -0
  1480. package/configure/node_modules/@types/lodash/indexOf.d.ts +2 -0
  1481. package/configure/node_modules/@types/lodash/initial.d.ts +2 -0
  1482. package/configure/node_modules/@types/lodash/intersection.d.ts +2 -0
  1483. package/configure/node_modules/@types/lodash/intersectionBy.d.ts +2 -0
  1484. package/configure/node_modules/@types/lodash/intersectionWith.d.ts +2 -0
  1485. package/configure/node_modules/@types/lodash/invert.d.ts +2 -0
  1486. package/configure/node_modules/@types/lodash/invertBy.d.ts +2 -0
  1487. package/configure/node_modules/@types/lodash/invoke.d.ts +2 -0
  1488. package/configure/node_modules/@types/lodash/invokeMap.d.ts +2 -0
  1489. package/configure/node_modules/@types/lodash/isArguments.d.ts +2 -0
  1490. package/configure/node_modules/@types/lodash/isArray.d.ts +2 -0
  1491. package/configure/node_modules/@types/lodash/isArrayBuffer.d.ts +2 -0
  1492. package/configure/node_modules/@types/lodash/isArrayLike.d.ts +2 -0
  1493. package/configure/node_modules/@types/lodash/isArrayLikeObject.d.ts +2 -0
  1494. package/configure/node_modules/@types/lodash/isBoolean.d.ts +2 -0
  1495. package/configure/node_modules/@types/lodash/isBuffer.d.ts +2 -0
  1496. package/configure/node_modules/@types/lodash/isDate.d.ts +2 -0
  1497. package/configure/node_modules/@types/lodash/isElement.d.ts +2 -0
  1498. package/configure/node_modules/@types/lodash/isEmpty.d.ts +2 -0
  1499. package/configure/node_modules/@types/lodash/isEqual.d.ts +2 -0
  1500. package/configure/node_modules/@types/lodash/isEqualWith.d.ts +2 -0
  1501. package/configure/node_modules/@types/lodash/isError.d.ts +2 -0
  1502. package/configure/node_modules/@types/lodash/isFinite.d.ts +2 -0
  1503. package/configure/node_modules/@types/lodash/isFunction.d.ts +2 -0
  1504. package/configure/node_modules/@types/lodash/isInteger.d.ts +2 -0
  1505. package/configure/node_modules/@types/lodash/isLength.d.ts +2 -0
  1506. package/configure/node_modules/@types/lodash/isMap.d.ts +2 -0
  1507. package/configure/node_modules/@types/lodash/isMatch.d.ts +2 -0
  1508. package/configure/node_modules/@types/lodash/isMatchWith.d.ts +2 -0
  1509. package/configure/node_modules/@types/lodash/isNaN.d.ts +2 -0
  1510. package/configure/node_modules/@types/lodash/isNative.d.ts +2 -0
  1511. package/configure/node_modules/@types/lodash/isNil.d.ts +2 -0
  1512. package/configure/node_modules/@types/lodash/isNull.d.ts +2 -0
  1513. package/configure/node_modules/@types/lodash/isNumber.d.ts +2 -0
  1514. package/configure/node_modules/@types/lodash/isObject.d.ts +2 -0
  1515. package/configure/node_modules/@types/lodash/isObjectLike.d.ts +2 -0
  1516. package/configure/node_modules/@types/lodash/isPlainObject.d.ts +2 -0
  1517. package/configure/node_modules/@types/lodash/isRegExp.d.ts +2 -0
  1518. package/configure/node_modules/@types/lodash/isSafeInteger.d.ts +2 -0
  1519. package/configure/node_modules/@types/lodash/isSet.d.ts +2 -0
  1520. package/configure/node_modules/@types/lodash/isString.d.ts +2 -0
  1521. package/configure/node_modules/@types/lodash/isSymbol.d.ts +2 -0
  1522. package/configure/node_modules/@types/lodash/isTypedArray.d.ts +2 -0
  1523. package/configure/node_modules/@types/lodash/isUndefined.d.ts +2 -0
  1524. package/configure/node_modules/@types/lodash/isWeakMap.d.ts +2 -0
  1525. package/configure/node_modules/@types/lodash/isWeakSet.d.ts +2 -0
  1526. package/configure/node_modules/@types/lodash/iteratee.d.ts +2 -0
  1527. package/configure/node_modules/@types/lodash/join.d.ts +2 -0
  1528. package/configure/node_modules/@types/lodash/kebabCase.d.ts +2 -0
  1529. package/configure/node_modules/@types/lodash/keyBy.d.ts +2 -0
  1530. package/configure/node_modules/@types/lodash/keys.d.ts +2 -0
  1531. package/configure/node_modules/@types/lodash/keysIn.d.ts +2 -0
  1532. package/configure/node_modules/@types/lodash/last.d.ts +2 -0
  1533. package/configure/node_modules/@types/lodash/lastIndexOf.d.ts +2 -0
  1534. package/configure/node_modules/@types/lodash/lowerCase.d.ts +2 -0
  1535. package/configure/node_modules/@types/lodash/lowerFirst.d.ts +2 -0
  1536. package/configure/node_modules/@types/lodash/lt.d.ts +2 -0
  1537. package/configure/node_modules/@types/lodash/lte.d.ts +2 -0
  1538. package/configure/node_modules/@types/lodash/map.d.ts +2 -0
  1539. package/configure/node_modules/@types/lodash/mapKeys.d.ts +2 -0
  1540. package/configure/node_modules/@types/lodash/mapValues.d.ts +2 -0
  1541. package/configure/node_modules/@types/lodash/matches.d.ts +2 -0
  1542. package/configure/node_modules/@types/lodash/matchesProperty.d.ts +2 -0
  1543. package/configure/node_modules/@types/lodash/max.d.ts +2 -0
  1544. package/configure/node_modules/@types/lodash/maxBy.d.ts +2 -0
  1545. package/configure/node_modules/@types/lodash/mean.d.ts +2 -0
  1546. package/configure/node_modules/@types/lodash/meanBy.d.ts +2 -0
  1547. package/configure/node_modules/@types/lodash/memoize.d.ts +2 -0
  1548. package/configure/node_modules/@types/lodash/merge.d.ts +2 -0
  1549. package/configure/node_modules/@types/lodash/mergeWith.d.ts +2 -0
  1550. package/configure/node_modules/@types/lodash/method.d.ts +2 -0
  1551. package/configure/node_modules/@types/lodash/methodOf.d.ts +2 -0
  1552. package/configure/node_modules/@types/lodash/min.d.ts +2 -0
  1553. package/configure/node_modules/@types/lodash/minBy.d.ts +2 -0
  1554. package/configure/node_modules/@types/lodash/mixin.d.ts +2 -0
  1555. package/configure/node_modules/@types/lodash/multiply.d.ts +2 -0
  1556. package/configure/node_modules/@types/lodash/negate.d.ts +2 -0
  1557. package/configure/node_modules/@types/lodash/noConflict.d.ts +2 -0
  1558. package/configure/node_modules/@types/lodash/noop.d.ts +2 -0
  1559. package/configure/node_modules/@types/lodash/now.d.ts +2 -0
  1560. package/configure/node_modules/@types/lodash/nth.d.ts +2 -0
  1561. package/configure/node_modules/@types/lodash/nthArg.d.ts +2 -0
  1562. package/configure/node_modules/@types/lodash/omit.d.ts +2 -0
  1563. package/configure/node_modules/@types/lodash/omitBy.d.ts +2 -0
  1564. package/configure/node_modules/@types/lodash/once.d.ts +2 -0
  1565. package/configure/node_modules/@types/lodash/orderBy.d.ts +2 -0
  1566. package/configure/node_modules/@types/lodash/over.d.ts +2 -0
  1567. package/configure/node_modules/@types/lodash/overArgs.d.ts +2 -0
  1568. package/configure/node_modules/@types/lodash/overEvery.d.ts +2 -0
  1569. package/configure/node_modules/@types/lodash/overSome.d.ts +2 -0
  1570. package/configure/node_modules/@types/lodash/package.json +60 -0
  1571. package/configure/node_modules/@types/lodash/pad.d.ts +2 -0
  1572. package/configure/node_modules/@types/lodash/padEnd.d.ts +2 -0
  1573. package/configure/node_modules/@types/lodash/padStart.d.ts +2 -0
  1574. package/configure/node_modules/@types/lodash/parseInt.d.ts +2 -0
  1575. package/configure/node_modules/@types/lodash/partial.d.ts +2 -0
  1576. package/configure/node_modules/@types/lodash/partialRight.d.ts +2 -0
  1577. package/configure/node_modules/@types/lodash/partition.d.ts +2 -0
  1578. package/configure/node_modules/@types/lodash/pick.d.ts +2 -0
  1579. package/configure/node_modules/@types/lodash/pickBy.d.ts +2 -0
  1580. package/configure/node_modules/@types/lodash/property.d.ts +2 -0
  1581. package/configure/node_modules/@types/lodash/propertyOf.d.ts +2 -0
  1582. package/configure/node_modules/@types/lodash/pull.d.ts +2 -0
  1583. package/configure/node_modules/@types/lodash/pullAll.d.ts +2 -0
  1584. package/configure/node_modules/@types/lodash/pullAllBy.d.ts +2 -0
  1585. package/configure/node_modules/@types/lodash/pullAllWith.d.ts +2 -0
  1586. package/configure/node_modules/@types/lodash/pullAt.d.ts +2 -0
  1587. package/configure/node_modules/@types/lodash/random.d.ts +2 -0
  1588. package/configure/node_modules/@types/lodash/range.d.ts +2 -0
  1589. package/configure/node_modules/@types/lodash/rangeRight.d.ts +2 -0
  1590. package/configure/node_modules/@types/lodash/rearg.d.ts +2 -0
  1591. package/configure/node_modules/@types/lodash/reduce.d.ts +2 -0
  1592. package/configure/node_modules/@types/lodash/reduceRight.d.ts +2 -0
  1593. package/configure/node_modules/@types/lodash/reject.d.ts +2 -0
  1594. package/configure/node_modules/@types/lodash/remove.d.ts +2 -0
  1595. package/configure/node_modules/@types/lodash/repeat.d.ts +2 -0
  1596. package/configure/node_modules/@types/lodash/replace.d.ts +2 -0
  1597. package/configure/node_modules/@types/lodash/rest.d.ts +2 -0
  1598. package/configure/node_modules/@types/lodash/result.d.ts +2 -0
  1599. package/configure/node_modules/@types/lodash/reverse.d.ts +2 -0
  1600. package/configure/node_modules/@types/lodash/round.d.ts +2 -0
  1601. package/configure/node_modules/@types/lodash/runInContext.d.ts +2 -0
  1602. package/configure/node_modules/@types/lodash/sample.d.ts +2 -0
  1603. package/configure/node_modules/@types/lodash/sampleSize.d.ts +2 -0
  1604. package/configure/node_modules/@types/lodash/set.d.ts +2 -0
  1605. package/configure/node_modules/@types/lodash/setWith.d.ts +2 -0
  1606. package/configure/node_modules/@types/lodash/shuffle.d.ts +2 -0
  1607. package/configure/node_modules/@types/lodash/size.d.ts +2 -0
  1608. package/configure/node_modules/@types/lodash/slice.d.ts +2 -0
  1609. package/configure/node_modules/@types/lodash/snakeCase.d.ts +2 -0
  1610. package/configure/node_modules/@types/lodash/some.d.ts +2 -0
  1611. package/configure/node_modules/@types/lodash/sortBy.d.ts +2 -0
  1612. package/configure/node_modules/@types/lodash/sortedIndex.d.ts +2 -0
  1613. package/configure/node_modules/@types/lodash/sortedIndexBy.d.ts +2 -0
  1614. package/configure/node_modules/@types/lodash/sortedIndexOf.d.ts +2 -0
  1615. package/configure/node_modules/@types/lodash/sortedLastIndex.d.ts +2 -0
  1616. package/configure/node_modules/@types/lodash/sortedLastIndexBy.d.ts +2 -0
  1617. package/configure/node_modules/@types/lodash/sortedLastIndexOf.d.ts +2 -0
  1618. package/configure/node_modules/@types/lodash/sortedUniq.d.ts +2 -0
  1619. package/configure/node_modules/@types/lodash/sortedUniqBy.d.ts +2 -0
  1620. package/configure/node_modules/@types/lodash/split.d.ts +2 -0
  1621. package/configure/node_modules/@types/lodash/spread.d.ts +2 -0
  1622. package/configure/node_modules/@types/lodash/startCase.d.ts +2 -0
  1623. package/configure/node_modules/@types/lodash/startsWith.d.ts +2 -0
  1624. package/configure/node_modules/@types/lodash/stubFalse.d.ts +2 -0
  1625. package/configure/node_modules/@types/lodash/stubTrue.d.ts +2 -0
  1626. package/configure/node_modules/@types/lodash/subtract.d.ts +2 -0
  1627. package/configure/node_modules/@types/lodash/sum.d.ts +2 -0
  1628. package/configure/node_modules/@types/lodash/sumBy.d.ts +2 -0
  1629. package/configure/node_modules/@types/lodash/tail.d.ts +2 -0
  1630. package/configure/node_modules/@types/lodash/take.d.ts +2 -0
  1631. package/configure/node_modules/@types/lodash/takeRight.d.ts +2 -0
  1632. package/configure/node_modules/@types/lodash/takeRightWhile.d.ts +2 -0
  1633. package/configure/node_modules/@types/lodash/takeWhile.d.ts +2 -0
  1634. package/configure/node_modules/@types/lodash/tap.d.ts +2 -0
  1635. package/configure/node_modules/@types/lodash/template.d.ts +2 -0
  1636. package/configure/node_modules/@types/lodash/throttle.d.ts +2 -0
  1637. package/configure/node_modules/@types/lodash/thru.d.ts +2 -0
  1638. package/configure/node_modules/@types/lodash/times.d.ts +2 -0
  1639. package/configure/node_modules/@types/lodash/toArray.d.ts +2 -0
  1640. package/configure/node_modules/@types/lodash/toFinite.d.ts +2 -0
  1641. package/configure/node_modules/@types/lodash/toInteger.d.ts +2 -0
  1642. package/configure/node_modules/@types/lodash/toLength.d.ts +2 -0
  1643. package/configure/node_modules/@types/lodash/toLower.d.ts +2 -0
  1644. package/configure/node_modules/@types/lodash/toNumber.d.ts +2 -0
  1645. package/configure/node_modules/@types/lodash/toPairs.d.ts +2 -0
  1646. package/configure/node_modules/@types/lodash/toPairsIn.d.ts +2 -0
  1647. package/configure/node_modules/@types/lodash/toPath.d.ts +2 -0
  1648. package/configure/node_modules/@types/lodash/toPlainObject.d.ts +2 -0
  1649. package/configure/node_modules/@types/lodash/toSafeInteger.d.ts +2 -0
  1650. package/configure/node_modules/@types/lodash/toString.d.ts +2 -0
  1651. package/configure/node_modules/@types/lodash/toUpper.d.ts +2 -0
  1652. package/configure/node_modules/@types/lodash/transform.d.ts +2 -0
  1653. package/configure/node_modules/@types/lodash/trim.d.ts +2 -0
  1654. package/configure/node_modules/@types/lodash/trimEnd.d.ts +2 -0
  1655. package/configure/node_modules/@types/lodash/trimStart.d.ts +2 -0
  1656. package/configure/node_modules/@types/lodash/truncate.d.ts +2 -0
  1657. package/configure/node_modules/@types/lodash/unary.d.ts +2 -0
  1658. package/configure/node_modules/@types/lodash/unescape.d.ts +2 -0
  1659. package/configure/node_modules/@types/lodash/union.d.ts +2 -0
  1660. package/configure/node_modules/@types/lodash/unionBy.d.ts +2 -0
  1661. package/configure/node_modules/@types/lodash/unionWith.d.ts +2 -0
  1662. package/configure/node_modules/@types/lodash/uniq.d.ts +2 -0
  1663. package/configure/node_modules/@types/lodash/uniqBy.d.ts +2 -0
  1664. package/configure/node_modules/@types/lodash/uniqWith.d.ts +2 -0
  1665. package/configure/node_modules/@types/lodash/uniqueId.d.ts +2 -0
  1666. package/configure/node_modules/@types/lodash/unset.d.ts +2 -0
  1667. package/configure/node_modules/@types/lodash/unzip.d.ts +2 -0
  1668. package/configure/node_modules/@types/lodash/unzipWith.d.ts +2 -0
  1669. package/configure/node_modules/@types/lodash/update.d.ts +2 -0
  1670. package/configure/node_modules/@types/lodash/updateWith.d.ts +2 -0
  1671. package/configure/node_modules/@types/lodash/upperCase.d.ts +2 -0
  1672. package/configure/node_modules/@types/lodash/upperFirst.d.ts +2 -0
  1673. package/configure/node_modules/@types/lodash/values.d.ts +2 -0
  1674. package/configure/node_modules/@types/lodash/valuesIn.d.ts +2 -0
  1675. package/configure/node_modules/@types/lodash/without.d.ts +2 -0
  1676. package/configure/node_modules/@types/lodash/words.d.ts +2 -0
  1677. package/configure/node_modules/@types/lodash/wrap.d.ts +2 -0
  1678. package/configure/node_modules/@types/lodash/xor.d.ts +2 -0
  1679. package/configure/node_modules/@types/lodash/xorBy.d.ts +2 -0
  1680. package/configure/node_modules/@types/lodash/xorWith.d.ts +2 -0
  1681. package/configure/node_modules/@types/lodash/zip.d.ts +2 -0
  1682. package/configure/node_modules/@types/lodash/zipObject.d.ts +2 -0
  1683. package/configure/node_modules/@types/lodash/zipObjectDeep.d.ts +2 -0
  1684. package/configure/node_modules/@types/lodash/zipWith.d.ts +2 -0
  1685. package/configure/node_modules/direction/cli.js +46 -0
  1686. package/configure/node_modules/direction/index.js +26 -0
  1687. package/configure/node_modules/direction/license +22 -0
  1688. package/configure/node_modules/direction/package.json +80 -0
  1689. package/configure/node_modules/direction/readme.md +84 -0
  1690. package/configure/node_modules/is-hotkey/.babelrc +3 -0
  1691. package/configure/node_modules/is-hotkey/.github/workflows/actions.yml +11 -0
  1692. package/configure/node_modules/is-hotkey/.travis.yml +6 -0
  1693. package/configure/node_modules/is-hotkey/License.md +9 -0
  1694. package/configure/node_modules/is-hotkey/Readme.md +122 -0
  1695. package/configure/node_modules/is-hotkey/lib/index.js +249 -0
  1696. package/configure/node_modules/is-hotkey/lib/is-hotkey.umd.js +263 -0
  1697. package/configure/node_modules/is-hotkey/package.json +38 -0
  1698. package/configure/node_modules/is-hotkey/src/index.js +222 -0
  1699. package/configure/node_modules/is-plain-object/LICENSE +21 -0
  1700. package/configure/node_modules/is-plain-object/README.md +125 -0
  1701. package/configure/node_modules/is-plain-object/dist/is-plain-object.js +38 -0
  1702. package/configure/node_modules/is-plain-object/dist/is-plain-object.mjs +34 -0
  1703. package/configure/node_modules/is-plain-object/is-plain-object.d.ts +1 -0
  1704. package/configure/node_modules/is-plain-object/package.json +85 -0
  1705. package/configure/node_modules/slate/Readme.md +3 -0
  1706. package/configure/node_modules/slate/dist/core/apply.d.ts +4 -0
  1707. package/configure/node_modules/slate/dist/core/apply.d.ts.map +1 -0
  1708. package/configure/node_modules/slate/dist/core/get-dirty-paths.d.ts +7 -0
  1709. package/configure/node_modules/slate/dist/core/get-dirty-paths.d.ts.map +1 -0
  1710. package/configure/node_modules/slate/dist/core/get-fragment.d.ts +4 -0
  1711. package/configure/node_modules/slate/dist/core/get-fragment.d.ts.map +1 -0
  1712. package/configure/node_modules/slate/dist/core/index.d.ts +6 -0
  1713. package/configure/node_modules/slate/dist/core/index.d.ts.map +1 -0
  1714. package/configure/node_modules/slate/dist/core/normalize-node.d.ts +4 -0
  1715. package/configure/node_modules/slate/dist/core/normalize-node.d.ts.map +1 -0
  1716. package/configure/node_modules/slate/dist/core/should-normalize.d.ts +4 -0
  1717. package/configure/node_modules/slate/dist/core/should-normalize.d.ts.map +1 -0
  1718. package/configure/node_modules/slate/dist/create-editor.d.ts +6 -0
  1719. package/configure/node_modules/slate/dist/create-editor.d.ts.map +1 -0
  1720. package/configure/node_modules/slate/dist/editor/above.d.ts +3 -0
  1721. package/configure/node_modules/slate/dist/editor/above.d.ts.map +1 -0
  1722. package/configure/node_modules/slate/dist/editor/add-mark.d.ts +3 -0
  1723. package/configure/node_modules/slate/dist/editor/add-mark.d.ts.map +1 -0
  1724. package/configure/node_modules/slate/dist/editor/after.d.ts +3 -0
  1725. package/configure/node_modules/slate/dist/editor/after.d.ts.map +1 -0
  1726. package/configure/node_modules/slate/dist/editor/before.d.ts +3 -0
  1727. package/configure/node_modules/slate/dist/editor/before.d.ts.map +1 -0
  1728. package/configure/node_modules/slate/dist/editor/delete-backward.d.ts +4 -0
  1729. package/configure/node_modules/slate/dist/editor/delete-backward.d.ts.map +1 -0
  1730. package/configure/node_modules/slate/dist/editor/delete-forward.d.ts +4 -0
  1731. package/configure/node_modules/slate/dist/editor/delete-forward.d.ts.map +1 -0
  1732. package/configure/node_modules/slate/dist/editor/delete-fragment.d.ts +3 -0
  1733. package/configure/node_modules/slate/dist/editor/delete-fragment.d.ts.map +1 -0
  1734. package/configure/node_modules/slate/dist/editor/edges.d.ts +3 -0
  1735. package/configure/node_modules/slate/dist/editor/edges.d.ts.map +1 -0
  1736. package/configure/node_modules/slate/dist/editor/element-read-only.d.ts +3 -0
  1737. package/configure/node_modules/slate/dist/editor/element-read-only.d.ts.map +1 -0
  1738. package/configure/node_modules/slate/dist/editor/end.d.ts +3 -0
  1739. package/configure/node_modules/slate/dist/editor/end.d.ts.map +1 -0
  1740. package/configure/node_modules/slate/dist/editor/first.d.ts +3 -0
  1741. package/configure/node_modules/slate/dist/editor/first.d.ts.map +1 -0
  1742. package/configure/node_modules/slate/dist/editor/fragment.d.ts +3 -0
  1743. package/configure/node_modules/slate/dist/editor/fragment.d.ts.map +1 -0
  1744. package/configure/node_modules/slate/dist/editor/get-void.d.ts +3 -0
  1745. package/configure/node_modules/slate/dist/editor/get-void.d.ts.map +1 -0
  1746. package/configure/node_modules/slate/dist/editor/has-blocks.d.ts +3 -0
  1747. package/configure/node_modules/slate/dist/editor/has-blocks.d.ts.map +1 -0
  1748. package/configure/node_modules/slate/dist/editor/has-inlines.d.ts +3 -0
  1749. package/configure/node_modules/slate/dist/editor/has-inlines.d.ts.map +1 -0
  1750. package/configure/node_modules/slate/dist/editor/has-path.d.ts +3 -0
  1751. package/configure/node_modules/slate/dist/editor/has-path.d.ts.map +1 -0
  1752. package/configure/node_modules/slate/dist/editor/has-texts.d.ts +3 -0
  1753. package/configure/node_modules/slate/dist/editor/has-texts.d.ts.map +1 -0
  1754. package/configure/node_modules/slate/dist/editor/index.d.ts +55 -0
  1755. package/configure/node_modules/slate/dist/editor/index.d.ts.map +1 -0
  1756. package/configure/node_modules/slate/dist/editor/insert-break.d.ts +3 -0
  1757. package/configure/node_modules/slate/dist/editor/insert-break.d.ts.map +1 -0
  1758. package/configure/node_modules/slate/dist/editor/insert-node.d.ts +3 -0
  1759. package/configure/node_modules/slate/dist/editor/insert-node.d.ts.map +1 -0
  1760. package/configure/node_modules/slate/dist/editor/insert-soft-break.d.ts +3 -0
  1761. package/configure/node_modules/slate/dist/editor/insert-soft-break.d.ts.map +1 -0
  1762. package/configure/node_modules/slate/dist/editor/insert-text.d.ts +3 -0
  1763. package/configure/node_modules/slate/dist/editor/insert-text.d.ts.map +1 -0
  1764. package/configure/node_modules/slate/dist/editor/is-block.d.ts +3 -0
  1765. package/configure/node_modules/slate/dist/editor/is-block.d.ts.map +1 -0
  1766. package/configure/node_modules/slate/dist/editor/is-edge.d.ts +3 -0
  1767. package/configure/node_modules/slate/dist/editor/is-edge.d.ts.map +1 -0
  1768. package/configure/node_modules/slate/dist/editor/is-editor.d.ts +3 -0
  1769. package/configure/node_modules/slate/dist/editor/is-editor.d.ts.map +1 -0
  1770. package/configure/node_modules/slate/dist/editor/is-empty.d.ts +3 -0
  1771. package/configure/node_modules/slate/dist/editor/is-empty.d.ts.map +1 -0
  1772. package/configure/node_modules/slate/dist/editor/is-end.d.ts +3 -0
  1773. package/configure/node_modules/slate/dist/editor/is-end.d.ts.map +1 -0
  1774. package/configure/node_modules/slate/dist/editor/is-normalizing.d.ts +3 -0
  1775. package/configure/node_modules/slate/dist/editor/is-normalizing.d.ts.map +1 -0
  1776. package/configure/node_modules/slate/dist/editor/is-start.d.ts +3 -0
  1777. package/configure/node_modules/slate/dist/editor/is-start.d.ts.map +1 -0
  1778. package/configure/node_modules/slate/dist/editor/last.d.ts +3 -0
  1779. package/configure/node_modules/slate/dist/editor/last.d.ts.map +1 -0
  1780. package/configure/node_modules/slate/dist/editor/leaf.d.ts +3 -0
  1781. package/configure/node_modules/slate/dist/editor/leaf.d.ts.map +1 -0
  1782. package/configure/node_modules/slate/dist/editor/levels.d.ts +4 -0
  1783. package/configure/node_modules/slate/dist/editor/levels.d.ts.map +1 -0
  1784. package/configure/node_modules/slate/dist/editor/marks.d.ts +3 -0
  1785. package/configure/node_modules/slate/dist/editor/marks.d.ts.map +1 -0
  1786. package/configure/node_modules/slate/dist/editor/next.d.ts +3 -0
  1787. package/configure/node_modules/slate/dist/editor/next.d.ts.map +1 -0
  1788. package/configure/node_modules/slate/dist/editor/node.d.ts +3 -0
  1789. package/configure/node_modules/slate/dist/editor/node.d.ts.map +1 -0
  1790. package/configure/node_modules/slate/dist/editor/nodes.d.ts +4 -0
  1791. package/configure/node_modules/slate/dist/editor/nodes.d.ts.map +1 -0
  1792. package/configure/node_modules/slate/dist/editor/normalize.d.ts +3 -0
  1793. package/configure/node_modules/slate/dist/editor/normalize.d.ts.map +1 -0
  1794. package/configure/node_modules/slate/dist/editor/parent.d.ts +3 -0
  1795. package/configure/node_modules/slate/dist/editor/parent.d.ts.map +1 -0
  1796. package/configure/node_modules/slate/dist/editor/path-ref.d.ts +3 -0
  1797. package/configure/node_modules/slate/dist/editor/path-ref.d.ts.map +1 -0
  1798. package/configure/node_modules/slate/dist/editor/path-refs.d.ts +3 -0
  1799. package/configure/node_modules/slate/dist/editor/path-refs.d.ts.map +1 -0
  1800. package/configure/node_modules/slate/dist/editor/path.d.ts +3 -0
  1801. package/configure/node_modules/slate/dist/editor/path.d.ts.map +1 -0
  1802. package/configure/node_modules/slate/dist/editor/point-ref.d.ts +3 -0
  1803. package/configure/node_modules/slate/dist/editor/point-ref.d.ts.map +1 -0
  1804. package/configure/node_modules/slate/dist/editor/point-refs.d.ts +3 -0
  1805. package/configure/node_modules/slate/dist/editor/point-refs.d.ts.map +1 -0
  1806. package/configure/node_modules/slate/dist/editor/point.d.ts +3 -0
  1807. package/configure/node_modules/slate/dist/editor/point.d.ts.map +1 -0
  1808. package/configure/node_modules/slate/dist/editor/positions.d.ts +4 -0
  1809. package/configure/node_modules/slate/dist/editor/positions.d.ts.map +1 -0
  1810. package/configure/node_modules/slate/dist/editor/previous.d.ts +3 -0
  1811. package/configure/node_modules/slate/dist/editor/previous.d.ts.map +1 -0
  1812. package/configure/node_modules/slate/dist/editor/range-ref.d.ts +3 -0
  1813. package/configure/node_modules/slate/dist/editor/range-ref.d.ts.map +1 -0
  1814. package/configure/node_modules/slate/dist/editor/range-refs.d.ts +3 -0
  1815. package/configure/node_modules/slate/dist/editor/range-refs.d.ts.map +1 -0
  1816. package/configure/node_modules/slate/dist/editor/range.d.ts +3 -0
  1817. package/configure/node_modules/slate/dist/editor/range.d.ts.map +1 -0
  1818. package/configure/node_modules/slate/dist/editor/remove-mark.d.ts +3 -0
  1819. package/configure/node_modules/slate/dist/editor/remove-mark.d.ts.map +1 -0
  1820. package/configure/node_modules/slate/dist/editor/set-normalizing.d.ts +3 -0
  1821. package/configure/node_modules/slate/dist/editor/set-normalizing.d.ts.map +1 -0
  1822. package/configure/node_modules/slate/dist/editor/start.d.ts +3 -0
  1823. package/configure/node_modules/slate/dist/editor/start.d.ts.map +1 -0
  1824. package/configure/node_modules/slate/dist/editor/string.d.ts +3 -0
  1825. package/configure/node_modules/slate/dist/editor/string.d.ts.map +1 -0
  1826. package/configure/node_modules/slate/dist/editor/unhang-range.d.ts +3 -0
  1827. package/configure/node_modules/slate/dist/editor/unhang-range.d.ts.map +1 -0
  1828. package/configure/node_modules/slate/dist/editor/without-normalizing.d.ts +3 -0
  1829. package/configure/node_modules/slate/dist/editor/without-normalizing.d.ts.map +1 -0
  1830. package/configure/node_modules/slate/dist/index.d.ts +9 -0
  1831. package/configure/node_modules/slate/dist/index.d.ts.map +1 -0
  1832. package/configure/node_modules/slate/dist/index.es.js +6357 -0
  1833. package/configure/node_modules/slate/dist/index.es.js.map +1 -0
  1834. package/configure/node_modules/slate/dist/index.js +7299 -0
  1835. package/configure/node_modules/slate/dist/index.js.map +1 -0
  1836. package/configure/node_modules/slate/dist/interfaces/editor.d.ts +498 -0
  1837. package/configure/node_modules/slate/dist/interfaces/editor.d.ts.map +1 -0
  1838. package/configure/node_modules/slate/dist/interfaces/element.d.ts +47 -0
  1839. package/configure/node_modules/slate/dist/interfaces/element.d.ts.map +1 -0
  1840. package/configure/node_modules/slate/dist/interfaces/index.d.ts +15 -0
  1841. package/configure/node_modules/slate/dist/interfaces/index.d.ts.map +1 -0
  1842. package/configure/node_modules/slate/dist/interfaces/location.d.ts +30 -0
  1843. package/configure/node_modules/slate/dist/interfaces/location.d.ts.map +1 -0
  1844. package/configure/node_modules/slate/dist/interfaces/node.d.ts +174 -0
  1845. package/configure/node_modules/slate/dist/interfaces/node.d.ts.map +1 -0
  1846. package/configure/node_modules/slate/dist/interfaces/operation.d.ts +108 -0
  1847. package/configure/node_modules/slate/dist/interfaces/operation.d.ts.map +1 -0
  1848. package/configure/node_modules/slate/dist/interfaces/path-ref.d.ts +19 -0
  1849. package/configure/node_modules/slate/dist/interfaces/path-ref.d.ts.map +1 -0
  1850. package/configure/node_modules/slate/dist/interfaces/path.d.ts +133 -0
  1851. package/configure/node_modules/slate/dist/interfaces/path.d.ts.map +1 -0
  1852. package/configure/node_modules/slate/dist/interfaces/point-ref.d.ts +20 -0
  1853. package/configure/node_modules/slate/dist/interfaces/point-ref.d.ts.map +1 -0
  1854. package/configure/node_modules/slate/dist/interfaces/point.d.ts +50 -0
  1855. package/configure/node_modules/slate/dist/interfaces/point.d.ts.map +1 -0
  1856. package/configure/node_modules/slate/dist/interfaces/range-ref.d.ts +19 -0
  1857. package/configure/node_modules/slate/dist/interfaces/range-ref.d.ts.map +1 -0
  1858. package/configure/node_modules/slate/dist/interfaces/range.d.ts +81 -0
  1859. package/configure/node_modules/slate/dist/interfaces/range.d.ts.map +1 -0
  1860. package/configure/node_modules/slate/dist/interfaces/scrubber.d.ts +22 -0
  1861. package/configure/node_modules/slate/dist/interfaces/scrubber.d.ts.map +1 -0
  1862. package/configure/node_modules/slate/dist/interfaces/text.d.ts +48 -0
  1863. package/configure/node_modules/slate/dist/interfaces/text.d.ts.map +1 -0
  1864. package/configure/node_modules/slate/dist/interfaces/transforms/general.d.ts +9 -0
  1865. package/configure/node_modules/slate/dist/interfaces/transforms/general.d.ts.map +1 -0
  1866. package/configure/node_modules/slate/dist/interfaces/transforms/index.d.ts +6 -0
  1867. package/configure/node_modules/slate/dist/interfaces/transforms/index.d.ts.map +1 -0
  1868. package/configure/node_modules/slate/dist/interfaces/transforms/node.d.ts +118 -0
  1869. package/configure/node_modules/slate/dist/interfaces/transforms/node.d.ts.map +1 -0
  1870. package/configure/node_modules/slate/dist/interfaces/transforms/selection.d.ts +42 -0
  1871. package/configure/node_modules/slate/dist/interfaces/transforms/selection.d.ts.map +1 -0
  1872. package/configure/node_modules/slate/dist/interfaces/transforms/text.d.ts +37 -0
  1873. package/configure/node_modules/slate/dist/interfaces/transforms/text.d.ts.map +1 -0
  1874. package/configure/node_modules/slate/dist/slate.js +8640 -0
  1875. package/configure/node_modules/slate/dist/slate.min.js +8 -0
  1876. package/configure/node_modules/slate/dist/transforms-node/index.d.ts +11 -0
  1877. package/configure/node_modules/slate/dist/transforms-node/index.d.ts.map +1 -0
  1878. package/configure/node_modules/slate/dist/transforms-node/insert-nodes.d.ts +3 -0
  1879. package/configure/node_modules/slate/dist/transforms-node/insert-nodes.d.ts.map +1 -0
  1880. package/configure/node_modules/slate/dist/transforms-node/lift-nodes.d.ts +3 -0
  1881. package/configure/node_modules/slate/dist/transforms-node/lift-nodes.d.ts.map +1 -0
  1882. package/configure/node_modules/slate/dist/transforms-node/merge-nodes.d.ts +3 -0
  1883. package/configure/node_modules/slate/dist/transforms-node/merge-nodes.d.ts.map +1 -0
  1884. package/configure/node_modules/slate/dist/transforms-node/move-nodes.d.ts +3 -0
  1885. package/configure/node_modules/slate/dist/transforms-node/move-nodes.d.ts.map +1 -0
  1886. package/configure/node_modules/slate/dist/transforms-node/remove-nodes.d.ts +3 -0
  1887. package/configure/node_modules/slate/dist/transforms-node/remove-nodes.d.ts.map +1 -0
  1888. package/configure/node_modules/slate/dist/transforms-node/set-nodes.d.ts +3 -0
  1889. package/configure/node_modules/slate/dist/transforms-node/set-nodes.d.ts.map +1 -0
  1890. package/configure/node_modules/slate/dist/transforms-node/split-nodes.d.ts +3 -0
  1891. package/configure/node_modules/slate/dist/transforms-node/split-nodes.d.ts.map +1 -0
  1892. package/configure/node_modules/slate/dist/transforms-node/unset-nodes.d.ts +3 -0
  1893. package/configure/node_modules/slate/dist/transforms-node/unset-nodes.d.ts.map +1 -0
  1894. package/configure/node_modules/slate/dist/transforms-node/unwrap-nodes.d.ts +3 -0
  1895. package/configure/node_modules/slate/dist/transforms-node/unwrap-nodes.d.ts.map +1 -0
  1896. package/configure/node_modules/slate/dist/transforms-node/wrap-nodes.d.ts +3 -0
  1897. package/configure/node_modules/slate/dist/transforms-node/wrap-nodes.d.ts.map +1 -0
  1898. package/configure/node_modules/slate/dist/transforms-selection/collapse.d.ts +3 -0
  1899. package/configure/node_modules/slate/dist/transforms-selection/collapse.d.ts.map +1 -0
  1900. package/configure/node_modules/slate/dist/transforms-selection/deselect.d.ts +3 -0
  1901. package/configure/node_modules/slate/dist/transforms-selection/deselect.d.ts.map +1 -0
  1902. package/configure/node_modules/slate/dist/transforms-selection/index.d.ts +7 -0
  1903. package/configure/node_modules/slate/dist/transforms-selection/index.d.ts.map +1 -0
  1904. package/configure/node_modules/slate/dist/transforms-selection/move.d.ts +3 -0
  1905. package/configure/node_modules/slate/dist/transforms-selection/move.d.ts.map +1 -0
  1906. package/configure/node_modules/slate/dist/transforms-selection/select.d.ts +3 -0
  1907. package/configure/node_modules/slate/dist/transforms-selection/select.d.ts.map +1 -0
  1908. package/configure/node_modules/slate/dist/transforms-selection/set-point.d.ts +3 -0
  1909. package/configure/node_modules/slate/dist/transforms-selection/set-point.d.ts.map +1 -0
  1910. package/configure/node_modules/slate/dist/transforms-selection/set-selection.d.ts +3 -0
  1911. package/configure/node_modules/slate/dist/transforms-selection/set-selection.d.ts.map +1 -0
  1912. package/configure/node_modules/slate/dist/transforms-text/delete-text.d.ts +3 -0
  1913. package/configure/node_modules/slate/dist/transforms-text/delete-text.d.ts.map +1 -0
  1914. package/configure/node_modules/slate/dist/transforms-text/index.d.ts +3 -0
  1915. package/configure/node_modules/slate/dist/transforms-text/index.d.ts.map +1 -0
  1916. package/configure/node_modules/slate/dist/transforms-text/insert-fragment.d.ts +3 -0
  1917. package/configure/node_modules/slate/dist/transforms-text/insert-fragment.d.ts.map +1 -0
  1918. package/configure/node_modules/slate/dist/types/custom-types.d.ts +10 -0
  1919. package/configure/node_modules/slate/dist/types/custom-types.d.ts.map +1 -0
  1920. package/configure/node_modules/slate/dist/types/index.d.ts +3 -0
  1921. package/configure/node_modules/slate/dist/types/index.d.ts.map +1 -0
  1922. package/configure/node_modules/slate/dist/types/types.d.ts +11 -0
  1923. package/configure/node_modules/slate/dist/types/types.d.ts.map +1 -0
  1924. package/configure/node_modules/slate/dist/utils/deep-equal.d.ts +2 -0
  1925. package/configure/node_modules/slate/dist/utils/deep-equal.d.ts.map +1 -0
  1926. package/configure/node_modules/slate/dist/utils/get-default-insert-location.d.ts +9 -0
  1927. package/configure/node_modules/slate/dist/utils/get-default-insert-location.d.ts.map +1 -0
  1928. package/configure/node_modules/slate/dist/utils/index.d.ts +7 -0
  1929. package/configure/node_modules/slate/dist/utils/index.d.ts.map +1 -0
  1930. package/configure/node_modules/slate/dist/utils/match-path.d.ts +5 -0
  1931. package/configure/node_modules/slate/dist/utils/match-path.d.ts.map +1 -0
  1932. package/configure/node_modules/slate/dist/utils/string.d.ts +18 -0
  1933. package/configure/node_modules/slate/dist/utils/string.d.ts.map +1 -0
  1934. package/configure/node_modules/slate/dist/utils/types.d.ts +5 -0
  1935. package/configure/node_modules/slate/dist/utils/types.d.ts.map +1 -0
  1936. package/configure/node_modules/slate/dist/utils/weak-maps.d.ts +9 -0
  1937. package/configure/node_modules/slate/dist/utils/weak-maps.d.ts.map +1 -0
  1938. package/configure/node_modules/slate/package.json +48 -0
  1939. package/configure/node_modules/slate-history/Readme.md +1 -0
  1940. package/configure/node_modules/slate-history/dist/history-editor.d.ts +50 -0
  1941. package/configure/node_modules/slate-history/dist/history-editor.d.ts.map +1 -0
  1942. package/configure/node_modules/slate-history/dist/history.d.ts +21 -0
  1943. package/configure/node_modules/slate-history/dist/history.d.ts.map +1 -0
  1944. package/configure/node_modules/slate-history/dist/index.d.ts +4 -0
  1945. package/configure/node_modules/slate-history/dist/index.d.ts.map +1 -0
  1946. package/configure/node_modules/slate-history/dist/index.es.js +208 -0
  1947. package/configure/node_modules/slate-history/dist/index.es.js.map +1 -0
  1948. package/configure/node_modules/slate-history/dist/index.js +222 -0
  1949. package/configure/node_modules/slate-history/dist/index.js.map +1 -0
  1950. package/configure/node_modules/slate-history/dist/slate-history.js +257 -0
  1951. package/configure/node_modules/slate-history/dist/slate-history.min.js +7 -0
  1952. package/configure/node_modules/slate-history/dist/with-history.d.ts +12 -0
  1953. package/configure/node_modules/slate-history/dist/with-history.d.ts.map +1 -0
  1954. package/configure/node_modules/slate-history/package.json +42 -0
  1955. package/configure/node_modules/slate-html-serializer/Changelog.md +67 -0
  1956. package/configure/node_modules/slate-html-serializer/Readme.md +1 -0
  1957. package/configure/node_modules/slate-html-serializer/dist/slate-html-serializer.js +548 -0
  1958. package/configure/node_modules/slate-html-serializer/dist/slate-html-serializer.min.js +1 -0
  1959. package/configure/node_modules/slate-html-serializer/lib/slate-html-serializer.es.js +513 -0
  1960. package/configure/node_modules/slate-html-serializer/lib/slate-html-serializer.es.js.map +1 -0
  1961. package/configure/node_modules/slate-html-serializer/lib/slate-html-serializer.js +519 -0
  1962. package/configure/node_modules/slate-html-serializer/lib/slate-html-serializer.js.map +1 -0
  1963. package/configure/node_modules/slate-html-serializer/package.json +48 -0
  1964. package/configure/node_modules/slate-hyperscript/Readme.md +1 -0
  1965. package/configure/node_modules/slate-hyperscript/dist/creators.d.ts +51 -0
  1966. package/configure/node_modules/slate-hyperscript/dist/creators.d.ts.map +1 -0
  1967. package/configure/node_modules/slate-hyperscript/dist/hyperscript.d.ts +34 -0
  1968. package/configure/node_modules/slate-hyperscript/dist/hyperscript.d.ts.map +1 -0
  1969. package/configure/node_modules/slate-hyperscript/dist/index.d.ts +19 -0
  1970. package/configure/node_modules/slate-hyperscript/dist/index.d.ts.map +1 -0
  1971. package/configure/node_modules/slate-hyperscript/dist/index.es.js +379 -0
  1972. package/configure/node_modules/slate-hyperscript/dist/index.es.js.map +1 -0
  1973. package/configure/node_modules/slate-hyperscript/dist/index.js +663 -0
  1974. package/configure/node_modules/slate-hyperscript/dist/index.js.map +1 -0
  1975. package/configure/node_modules/slate-hyperscript/dist/slate-hyperscript.js +698 -0
  1976. package/configure/node_modules/slate-hyperscript/dist/slate-hyperscript.min.js +8 -0
  1977. package/configure/node_modules/slate-hyperscript/dist/tokens.d.ts +45 -0
  1978. package/configure/node_modules/slate-hyperscript/dist/tokens.d.ts.map +1 -0
  1979. package/configure/node_modules/slate-hyperscript/package.json +40 -0
  1980. package/configure/node_modules/slate-plain-serializer/Changelog.md +57 -0
  1981. package/configure/node_modules/slate-plain-serializer/Readme.md +1 -0
  1982. package/configure/node_modules/slate-plain-serializer/dist/slate-plain-serializer.js +122 -0
  1983. package/configure/node_modules/slate-plain-serializer/dist/slate-plain-serializer.min.js +1 -0
  1984. package/configure/node_modules/slate-plain-serializer/lib/slate-plain-serializer.es.js +116 -0
  1985. package/configure/node_modules/slate-plain-serializer/lib/slate-plain-serializer.es.js.map +1 -0
  1986. package/configure/node_modules/slate-plain-serializer/lib/slate-plain-serializer.js +120 -0
  1987. package/configure/node_modules/slate-plain-serializer/lib/slate-plain-serializer.js.map +1 -0
  1988. package/configure/node_modules/slate-plain-serializer/package.json +43 -0
  1989. package/configure/node_modules/slate-prop-types/Changelog.md +45 -0
  1990. package/configure/node_modules/slate-prop-types/Readme.md +1 -0
  1991. package/configure/node_modules/slate-prop-types/dist/slate-prop-types.js +130 -0
  1992. package/configure/node_modules/slate-prop-types/dist/slate-prop-types.min.js +1 -0
  1993. package/configure/node_modules/slate-prop-types/lib/slate-prop-types.es.js +123 -0
  1994. package/configure/node_modules/slate-prop-types/lib/slate-prop-types.es.js.map +1 -0
  1995. package/configure/node_modules/slate-prop-types/lib/slate-prop-types.js +127 -0
  1996. package/configure/node_modules/slate-prop-types/lib/slate-prop-types.js.map +1 -0
  1997. package/configure/node_modules/slate-prop-types/package.json +38 -0
  1998. package/configure/node_modules/slate-react/Readme.md +8 -0
  1999. package/configure/node_modules/slate-react/dist/components/editable.d.ts +84 -0
  2000. package/configure/node_modules/slate-react/dist/components/editable.d.ts.map +1 -0
  2001. package/configure/node_modules/slate-react/dist/components/element.d.ts +28 -0
  2002. package/configure/node_modules/slate-react/dist/components/element.d.ts.map +1 -0
  2003. package/configure/node_modules/slate-react/dist/components/leaf.d.ts +14 -0
  2004. package/configure/node_modules/slate-react/dist/components/leaf.d.ts.map +1 -0
  2005. package/configure/node_modules/slate-react/dist/components/restore-dom/restore-dom-manager.d.ts +9 -0
  2006. package/configure/node_modules/slate-react/dist/components/restore-dom/restore-dom-manager.d.ts.map +1 -0
  2007. package/configure/node_modules/slate-react/dist/components/restore-dom/restore-dom.d.ts +8 -0
  2008. package/configure/node_modules/slate-react/dist/components/restore-dom/restore-dom.d.ts.map +1 -0
  2009. package/configure/node_modules/slate-react/dist/components/slate.d.ts +14 -0
  2010. package/configure/node_modules/slate-react/dist/components/slate.d.ts.map +1 -0
  2011. package/configure/node_modules/slate-react/dist/components/string.d.ts +21 -0
  2012. package/configure/node_modules/slate-react/dist/components/string.d.ts.map +1 -0
  2013. package/configure/node_modules/slate-react/dist/components/text.d.ts +13 -0
  2014. package/configure/node_modules/slate-react/dist/components/text.d.ts.map +1 -0
  2015. package/configure/node_modules/slate-react/dist/custom-types.d.ts +16 -0
  2016. package/configure/node_modules/slate-react/dist/custom-types.d.ts.map +1 -0
  2017. package/configure/node_modules/slate-react/dist/hooks/android-input-manager/android-input-manager.d.ts +30 -0
  2018. package/configure/node_modules/slate-react/dist/hooks/android-input-manager/android-input-manager.d.ts.map +1 -0
  2019. package/configure/node_modules/slate-react/dist/hooks/android-input-manager/use-android-input-manager.d.ts +8 -0
  2020. package/configure/node_modules/slate-react/dist/hooks/android-input-manager/use-android-input-manager.d.ts.map +1 -0
  2021. package/configure/node_modules/slate-react/dist/hooks/use-children.d.ts +16 -0
  2022. package/configure/node_modules/slate-react/dist/hooks/use-children.d.ts.map +1 -0
  2023. package/configure/node_modules/slate-react/dist/hooks/use-decorate.d.ts +11 -0
  2024. package/configure/node_modules/slate-react/dist/hooks/use-decorate.d.ts.map +1 -0
  2025. package/configure/node_modules/slate-react/dist/hooks/use-editor.d.ts +6 -0
  2026. package/configure/node_modules/slate-react/dist/hooks/use-editor.d.ts.map +1 -0
  2027. package/configure/node_modules/slate-react/dist/hooks/use-focused.d.ts +10 -0
  2028. package/configure/node_modules/slate-react/dist/hooks/use-focused.d.ts.map +1 -0
  2029. package/configure/node_modules/slate-react/dist/hooks/use-is-mounted.d.ts +2 -0
  2030. package/configure/node_modules/slate-react/dist/hooks/use-is-mounted.d.ts.map +1 -0
  2031. package/configure/node_modules/slate-react/dist/hooks/use-isomorphic-layout-effect.d.ts +6 -0
  2032. package/configure/node_modules/slate-react/dist/hooks/use-isomorphic-layout-effect.d.ts.map +1 -0
  2033. package/configure/node_modules/slate-react/dist/hooks/use-mutation-observer.d.ts +3 -0
  2034. package/configure/node_modules/slate-react/dist/hooks/use-mutation-observer.d.ts.map +1 -0
  2035. package/configure/node_modules/slate-react/dist/hooks/use-read-only.d.ts +10 -0
  2036. package/configure/node_modules/slate-react/dist/hooks/use-read-only.d.ts.map +1 -0
  2037. package/configure/node_modules/slate-react/dist/hooks/use-selected.d.ts +10 -0
  2038. package/configure/node_modules/slate-react/dist/hooks/use-selected.d.ts.map +1 -0
  2039. package/configure/node_modules/slate-react/dist/hooks/use-slate-selection.d.ts +7 -0
  2040. package/configure/node_modules/slate-react/dist/hooks/use-slate-selection.d.ts.map +1 -0
  2041. package/configure/node_modules/slate-react/dist/hooks/use-slate-selector.d.ts +32 -0
  2042. package/configure/node_modules/slate-react/dist/hooks/use-slate-selector.d.ts.map +1 -0
  2043. package/configure/node_modules/slate-react/dist/hooks/use-slate-static.d.ts +12 -0
  2044. package/configure/node_modules/slate-react/dist/hooks/use-slate-static.d.ts.map +1 -0
  2045. package/configure/node_modules/slate-react/dist/hooks/use-slate.d.ts +24 -0
  2046. package/configure/node_modules/slate-react/dist/hooks/use-slate.d.ts.map +1 -0
  2047. package/configure/node_modules/slate-react/dist/hooks/use-track-user-input.d.ts +6 -0
  2048. package/configure/node_modules/slate-react/dist/hooks/use-track-user-input.d.ts.map +1 -0
  2049. package/configure/node_modules/slate-react/dist/index.d.ts +15 -0
  2050. package/configure/node_modules/slate-react/dist/index.d.ts.map +1 -0
  2051. package/configure/node_modules/slate-react/dist/index.es.js +5256 -0
  2052. package/configure/node_modules/slate-react/dist/index.es.js.map +1 -0
  2053. package/configure/node_modules/slate-react/dist/index.js +5877 -0
  2054. package/configure/node_modules/slate-react/dist/index.js.map +1 -0
  2055. package/configure/node_modules/slate-react/dist/plugin/react-editor.d.ts +151 -0
  2056. package/configure/node_modules/slate-react/dist/plugin/react-editor.d.ts.map +1 -0
  2057. package/configure/node_modules/slate-react/dist/plugin/with-react.d.ts +12 -0
  2058. package/configure/node_modules/slate-react/dist/plugin/with-react.d.ts.map +1 -0
  2059. package/configure/node_modules/slate-react/dist/slate-react.js +34712 -0
  2060. package/configure/node_modules/slate-react/dist/slate-react.min.js +1 -0
  2061. package/configure/node_modules/slate-react/dist/utils/constants.d.ts +2 -0
  2062. package/configure/node_modules/slate-react/dist/utils/constants.d.ts.map +1 -0
  2063. package/configure/node_modules/slate-react/dist/utils/diff-text.d.ts +45 -0
  2064. package/configure/node_modules/slate-react/dist/utils/diff-text.d.ts.map +1 -0
  2065. package/configure/node_modules/slate-react/dist/utils/dom.d.ts +84 -0
  2066. package/configure/node_modules/slate-react/dist/utils/dom.d.ts.map +1 -0
  2067. package/configure/node_modules/slate-react/dist/utils/environment.d.ts +16 -0
  2068. package/configure/node_modules/slate-react/dist/utils/environment.d.ts.map +1 -0
  2069. package/configure/node_modules/slate-react/dist/utils/hotkeys.d.ts +31 -0
  2070. package/configure/node_modules/slate-react/dist/utils/hotkeys.d.ts.map +1 -0
  2071. package/configure/node_modules/slate-react/dist/utils/key.d.ts +12 -0
  2072. package/configure/node_modules/slate-react/dist/utils/key.d.ts.map +1 -0
  2073. package/configure/node_modules/slate-react/dist/utils/lines.d.ts +15 -0
  2074. package/configure/node_modules/slate-react/dist/utils/lines.d.ts.map +1 -0
  2075. package/configure/node_modules/slate-react/dist/utils/range-list.d.ts +19 -0
  2076. package/configure/node_modules/slate-react/dist/utils/range-list.d.ts.map +1 -0
  2077. package/configure/node_modules/slate-react/dist/utils/types.d.ts +2 -0
  2078. package/configure/node_modules/slate-react/dist/utils/types.d.ts.map +1 -0
  2079. package/configure/node_modules/slate-react/dist/utils/weak-maps.d.ts +52 -0
  2080. package/configure/node_modules/slate-react/dist/utils/weak-maps.d.ts.map +1 -0
  2081. package/configure/node_modules/slate-react/package.json +73 -0
  2082. package/configure/node_modules/slate-soft-break/Changelog.md +57 -0
  2083. package/configure/node_modules/slate-soft-break/Readme.md +23 -0
  2084. package/configure/node_modules/slate-soft-break/dist/slate-soft-break.js +23 -0
  2085. package/configure/node_modules/slate-soft-break/dist/slate-soft-break.min.js +1 -0
  2086. package/configure/node_modules/slate-soft-break/lib/slate-soft-break.es.js +14 -0
  2087. package/configure/node_modules/slate-soft-break/lib/slate-soft-break.es.js.map +1 -0
  2088. package/configure/node_modules/slate-soft-break/lib/slate-soft-break.js +18 -0
  2089. package/configure/node_modules/slate-soft-break/lib/slate-soft-break.js.map +1 -0
  2090. package/configure/node_modules/slate-soft-break/package.json +22 -0
  2091. package/configure/node_modules/tiny-invariant/LICENSE +21 -0
  2092. package/configure/node_modules/tiny-invariant/README.md +88 -0
  2093. package/configure/node_modules/tiny-invariant/dist/tiny-invariant.cjs.js +17 -0
  2094. package/configure/node_modules/tiny-invariant/dist/tiny-invariant.cjs.js.flow +3 -0
  2095. package/configure/node_modules/tiny-invariant/dist/tiny-invariant.esm.js +15 -0
  2096. package/configure/node_modules/tiny-invariant/dist/tiny-invariant.js +20 -0
  2097. package/configure/node_modules/tiny-invariant/dist/tiny-invariant.min.js +1 -0
  2098. package/configure/node_modules/tiny-invariant/package.json +53 -0
  2099. package/configure/node_modules/tiny-invariant/src/index.d.ts +1 -0
  2100. package/configure/node_modules/tiny-invariant/src/index.js +22 -0
  2101. package/configure/package.json +1 -1
  2102. package/controller/package.json +1 -1
  2103. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../src/interfaces/path-ref.ts","../src/interfaces/point-ref.ts","../src/interfaces/range-ref.ts","../src/utils/weak-maps.ts","../src/interfaces/path.ts","../../../.yarn/cache/@babel-runtime-npm-7.15.3-6333c71362-2f0b8d2d4e.zip/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../src/interfaces/transforms/general.ts","../src/interfaces/transforms/node.ts","../src/interfaces/transforms/selection.ts","../src/utils/deep-equal.ts","../../../.yarn/cache/@babel-runtime-npm-7.15.3-6333c71362-2f0b8d2d4e.zip/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../.yarn/cache/@babel-runtime-npm-7.15.3-6333c71362-2f0b8d2d4e.zip/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../src/interfaces/range.ts","../src/interfaces/element.ts","../src/interfaces/node.ts","../src/interfaces/operation.ts","../src/editor/is-editor.ts","../src/interfaces/editor.ts","../src/interfaces/location.ts","../src/interfaces/point.ts","../src/interfaces/scrubber.ts","../src/interfaces/text.ts","../src/utils/get-default-insert-location.ts","../src/utils/match-path.ts","../src/utils/string.ts","../src/interfaces/transforms/text.ts","../src/interfaces/transforms/index.ts","../src/core/apply.ts","../src/core/get-dirty-paths.ts","../src/core/get-fragment.ts","../src/core/normalize-node.ts","../src/core/should-normalize.ts","../src/editor/above.ts","../src/editor/add-mark.ts","../src/editor/after.ts","../src/editor/before.ts","../src/editor/delete-backward.ts","../src/editor/delete-forward.ts","../src/editor/delete-fragment.ts","../src/editor/edges.ts","../src/editor/element-read-only.ts","../src/editor/end.ts","../src/editor/first.ts","../src/editor/fragment.ts","../src/editor/get-void.ts","../src/editor/has-blocks.ts","../src/editor/has-inlines.ts","../src/editor/has-path.ts","../src/editor/has-texts.ts","../src/editor/insert-break.ts","../src/editor/insert-node.ts","../src/editor/insert-soft-break.ts","../src/editor/insert-text.ts","../src/editor/is-block.ts","../src/editor/is-edge.ts","../src/editor/is-empty.ts","../src/editor/is-end.ts","../src/editor/is-normalizing.ts","../src/editor/is-start.ts","../src/editor/last.ts","../src/editor/leaf.ts","../src/editor/levels.ts","../src/editor/marks.ts","../src/editor/next.ts","../src/editor/node.ts","../src/editor/nodes.ts","../src/editor/normalize.ts","../src/editor/parent.ts","../src/editor/path-ref.ts","../src/editor/path-refs.ts","../src/editor/path.ts","../src/editor/point-ref.ts","../src/editor/point-refs.ts","../src/editor/point.ts","../src/editor/positions.ts","../src/editor/previous.ts","../src/editor/range-ref.ts","../src/editor/range-refs.ts","../src/editor/range.ts","../src/editor/remove-mark.ts","../src/editor/set-normalizing.ts","../src/editor/start.ts","../src/editor/string.ts","../src/editor/unhang-range.ts","../src/editor/without-normalizing.ts","../src/transforms-text/delete-text.ts","../src/transforms-text/insert-fragment.ts","../src/transforms-selection/collapse.ts","../src/transforms-selection/deselect.ts","../src/transforms-selection/move.ts","../src/transforms-selection/select.ts","../src/transforms-selection/set-point.ts","../src/transforms-selection/set-selection.ts","../src/transforms-node/insert-nodes.ts","../src/transforms-node/lift-nodes.ts","../src/transforms-node/merge-nodes.ts","../src/transforms-node/move-nodes.ts","../src/transforms-node/remove-nodes.ts","../src/transforms-node/set-nodes.ts","../src/transforms-node/split-nodes.ts","../src/transforms-node/unset-nodes.ts","../src/transforms-node/unwrap-nodes.ts","../src/transforms-node/wrap-nodes.ts","../src/create-editor.ts"],"sourcesContent":["import { Operation, Path } from '..'\n\n/**\n * `PathRef` objects keep a specific path in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date path value.\n */\n\nexport interface PathRef {\n current: Path | null\n affinity: 'forward' | 'backward' | null\n unref(): Path | null\n}\n\nexport interface PathRefInterface {\n /**\n * Transform the path ref's current value by an operation.\n */\n transform: (ref: PathRef, op: Operation) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const PathRef: PathRefInterface = {\n transform(ref: PathRef, op: Operation): void {\n const { current, affinity } = ref\n\n if (current == null) {\n return\n }\n\n const path = Path.transform(current, op, { affinity })\n ref.current = path\n\n if (path == null) {\n ref.unref()\n }\n },\n}\n","import { Operation, Point } from '..'\nimport { TextDirection } from '../types/types'\n\n/**\n * `PointRef` objects keep a specific point in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date point value.\n */\n\nexport interface PointRef {\n current: Point | null\n affinity: TextDirection | null\n unref(): Point | null\n}\n\nexport interface PointRefInterface {\n /**\n * Transform the point ref's current value by an operation.\n */\n transform: (ref: PointRef, op: Operation) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const PointRef: PointRefInterface = {\n transform(ref: PointRef, op: Operation): void {\n const { current, affinity } = ref\n\n if (current == null) {\n return\n }\n\n const point = Point.transform(current, op, { affinity })\n ref.current = point\n\n if (point == null) {\n ref.unref()\n }\n },\n}\n","import { Operation, Range } from '..'\n\n/**\n * `RangeRef` objects keep a specific range in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date range value.\n */\n\nexport interface RangeRef {\n current: Range | null\n affinity: 'forward' | 'backward' | 'outward' | 'inward' | null\n unref(): Range | null\n}\n\nexport interface RangeRefInterface {\n /**\n * Transform the range ref's current value by an operation.\n */\n transform: (ref: RangeRef, op: Operation) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const RangeRef: RangeRefInterface = {\n transform(ref: RangeRef, op: Operation): void {\n const { current, affinity } = ref\n\n if (current == null) {\n return\n }\n\n const path = Range.transform(current, op, { affinity })\n ref.current = path\n\n if (path == null) {\n ref.unref()\n }\n },\n}\n","import { Editor, Path, PathRef, PointRef, RangeRef } from '..'\n\nexport const DIRTY_PATHS: WeakMap<Editor, Path[]> = new WeakMap()\nexport const DIRTY_PATH_KEYS: WeakMap<Editor, Set<string>> = new WeakMap()\nexport const FLUSHING: WeakMap<Editor, boolean> = new WeakMap()\nexport const NORMALIZING: WeakMap<Editor, boolean> = new WeakMap()\nexport const PATH_REFS: WeakMap<Editor, Set<PathRef>> = new WeakMap()\nexport const POINT_REFS: WeakMap<Editor, Set<PointRef>> = new WeakMap()\nexport const RANGE_REFS: WeakMap<Editor, Set<RangeRef>> = new WeakMap()\n","import {\n InsertNodeOperation,\n MergeNodeOperation,\n MoveNodeOperation,\n Operation,\n RemoveNodeOperation,\n SplitNodeOperation,\n} from '..'\nimport { TextDirection } from '../types/types'\n\n/**\n * `Path` arrays are a list of indexes that describe a node's exact position in\n * a Slate node tree. Although they are usually relative to the root `Editor`\n * object, they can be relative to any `Node` object.\n */\n\nexport type Path = number[]\n\nexport interface PathAncestorsOptions {\n reverse?: boolean\n}\n\nexport interface PathLevelsOptions {\n reverse?: boolean\n}\n\nexport interface PathTransformOptions {\n affinity?: TextDirection | null\n}\n\nexport interface PathInterface {\n /**\n * Get a list of ancestor paths for a given path.\n *\n * The paths are sorted from shallowest to deepest ancestor. However, if the\n * `reverse: true` option is passed, they are reversed.\n */\n ancestors: (path: Path, options?: PathAncestorsOptions) => Path[]\n\n /**\n * Get the common ancestor path of two paths.\n */\n common: (path: Path, another: Path) => Path\n\n /**\n * Compare a path to another, returning an integer indicating whether the path\n * was before, at, or after the other.\n *\n * Note: Two paths of unequal length can still receive a `0` result if one is\n * directly above or below the other. If you want exact matching, use\n * [[Path.equals]] instead.\n */\n compare: (path: Path, another: Path) => -1 | 0 | 1\n\n /**\n * Check if a path ends after one of the indexes in another.\n */\n endsAfter: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path ends at one of the indexes in another.\n */\n endsAt: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path ends before one of the indexes in another.\n */\n endsBefore: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is exactly equal to another.\n */\n equals: (path: Path, another: Path) => boolean\n\n /**\n * Check if the path of previous sibling node exists\n */\n hasPrevious: (path: Path) => boolean\n\n /**\n * Check if a path is after another.\n */\n isAfter: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is an ancestor of another.\n */\n isAncestor: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is before another.\n */\n isBefore: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is a child of another.\n */\n isChild: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is equal to or an ancestor of another.\n */\n isCommon: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is a descendant of another.\n */\n isDescendant: (path: Path, another: Path) => boolean\n\n /**\n * Check if a path is the parent of another.\n */\n isParent: (path: Path, another: Path) => boolean\n\n /**\n * Check is a value implements the `Path` interface.\n */\n isPath: (value: any) => value is Path\n\n /**\n * Check if a path is a sibling of another.\n */\n isSibling: (path: Path, another: Path) => boolean\n\n /**\n * Get a list of paths at every level down to a path. Note: this is the same\n * as `Path.ancestors`, but including the path itself.\n *\n * The paths are sorted from shallowest to deepest. However, if the `reverse:\n * true` option is passed, they are reversed.\n */\n levels: (path: Path, options?: PathLevelsOptions) => Path[]\n\n /**\n * Given a path, get the path to the next sibling node.\n */\n next: (path: Path) => Path\n\n /**\n * Returns whether this operation can affect paths or not. Used as an\n * optimization when updating dirty paths during normalization\n *\n * NOTE: This *must* be kept in sync with the implementation of 'transform'\n * below\n */\n operationCanTransformPath: (\n operation: Operation\n ) => operation is\n | InsertNodeOperation\n | RemoveNodeOperation\n | MergeNodeOperation\n | SplitNodeOperation\n | MoveNodeOperation\n\n /**\n * Given a path, return a new path referring to the parent node above it.\n */\n parent: (path: Path) => Path\n\n /**\n * Given a path, get the path to the previous sibling node.\n */\n previous: (path: Path) => Path\n\n /**\n * Get a path relative to an ancestor.\n */\n relative: (path: Path, ancestor: Path) => Path\n\n /**\n * Transform a path by an operation.\n */\n transform: (\n path: Path,\n operation: Operation,\n options?: PathTransformOptions\n ) => Path | null\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Path: PathInterface = {\n ancestors(path: Path, options: PathAncestorsOptions = {}): Path[] {\n const { reverse = false } = options\n let paths = Path.levels(path, options)\n\n if (reverse) {\n paths = paths.slice(1)\n } else {\n paths = paths.slice(0, -1)\n }\n\n return paths\n },\n\n common(path: Path, another: Path): Path {\n const common: Path = []\n\n for (let i = 0; i < path.length && i < another.length; i++) {\n const av = path[i]\n const bv = another[i]\n\n if (av !== bv) {\n break\n }\n\n common.push(av)\n }\n\n return common\n },\n\n compare(path: Path, another: Path): -1 | 0 | 1 {\n const min = Math.min(path.length, another.length)\n\n for (let i = 0; i < min; i++) {\n if (path[i] < another[i]) return -1\n if (path[i] > another[i]) return 1\n }\n\n return 0\n },\n\n endsAfter(path: Path, another: Path): boolean {\n const i = path.length - 1\n const as = path.slice(0, i)\n const bs = another.slice(0, i)\n const av = path[i]\n const bv = another[i]\n return Path.equals(as, bs) && av > bv\n },\n\n endsAt(path: Path, another: Path): boolean {\n const i = path.length\n const as = path.slice(0, i)\n const bs = another.slice(0, i)\n return Path.equals(as, bs)\n },\n\n endsBefore(path: Path, another: Path): boolean {\n const i = path.length - 1\n const as = path.slice(0, i)\n const bs = another.slice(0, i)\n const av = path[i]\n const bv = another[i]\n return Path.equals(as, bs) && av < bv\n },\n\n equals(path: Path, another: Path): boolean {\n return (\n path.length === another.length && path.every((n, i) => n === another[i])\n )\n },\n\n hasPrevious(path: Path): boolean {\n return path[path.length - 1] > 0\n },\n\n isAfter(path: Path, another: Path): boolean {\n return Path.compare(path, another) === 1\n },\n\n isAncestor(path: Path, another: Path): boolean {\n return path.length < another.length && Path.compare(path, another) === 0\n },\n\n isBefore(path: Path, another: Path): boolean {\n return Path.compare(path, another) === -1\n },\n\n isChild(path: Path, another: Path): boolean {\n return (\n path.length === another.length + 1 && Path.compare(path, another) === 0\n )\n },\n\n isCommon(path: Path, another: Path): boolean {\n return path.length <= another.length && Path.compare(path, another) === 0\n },\n\n isDescendant(path: Path, another: Path): boolean {\n return path.length > another.length && Path.compare(path, another) === 0\n },\n\n isParent(path: Path, another: Path): boolean {\n return (\n path.length + 1 === another.length && Path.compare(path, another) === 0\n )\n },\n\n isPath(value: any): value is Path {\n return (\n Array.isArray(value) &&\n (value.length === 0 || typeof value[0] === 'number')\n )\n },\n\n isSibling(path: Path, another: Path): boolean {\n if (path.length !== another.length) {\n return false\n }\n\n const as = path.slice(0, -1)\n const bs = another.slice(0, -1)\n const al = path[path.length - 1]\n const bl = another[another.length - 1]\n return al !== bl && Path.equals(as, bs)\n },\n\n levels(path: Path, options: PathLevelsOptions = {}): Path[] {\n const { reverse = false } = options\n const list: Path[] = []\n\n for (let i = 0; i <= path.length; i++) {\n list.push(path.slice(0, i))\n }\n\n if (reverse) {\n list.reverse()\n }\n\n return list\n },\n\n next(path: Path): Path {\n if (path.length === 0) {\n throw new Error(\n `Cannot get the next path of a root path [${path}], because it has no next index.`\n )\n }\n\n const last = path[path.length - 1]\n return path.slice(0, -1).concat(last + 1)\n },\n\n operationCanTransformPath(\n operation: Operation\n ): operation is\n | InsertNodeOperation\n | RemoveNodeOperation\n | MergeNodeOperation\n | SplitNodeOperation\n | MoveNodeOperation {\n switch (operation.type) {\n case 'insert_node':\n case 'remove_node':\n case 'merge_node':\n case 'split_node':\n case 'move_node':\n return true\n default:\n return false\n }\n },\n\n parent(path: Path): Path {\n if (path.length === 0) {\n throw new Error(`Cannot get the parent path of the root path [${path}].`)\n }\n\n return path.slice(0, -1)\n },\n\n previous(path: Path): Path {\n if (path.length === 0) {\n throw new Error(\n `Cannot get the previous path of a root path [${path}], because it has no previous index.`\n )\n }\n\n const last = path[path.length - 1]\n\n if (last <= 0) {\n throw new Error(\n `Cannot get the previous path of a first child path [${path}] because it would result in a negative index.`\n )\n }\n\n return path.slice(0, -1).concat(last - 1)\n },\n\n relative(path: Path, ancestor: Path): Path {\n if (!Path.isAncestor(ancestor, path) && !Path.equals(path, ancestor)) {\n throw new Error(\n `Cannot get the relative path of [${path}] inside ancestor [${ancestor}], because it is not above or equal to the path.`\n )\n }\n\n return path.slice(ancestor.length)\n },\n\n transform(\n path: Path | null,\n operation: Operation,\n options: PathTransformOptions = {}\n ): Path | null {\n if (!path) return null\n\n // PERF: use destructing instead of immer\n const p = [...path]\n const { affinity = 'forward' } = options\n\n // PERF: Exit early if the operation is guaranteed not to have an effect.\n if (path.length === 0) {\n return p\n }\n\n switch (operation.type) {\n case 'insert_node': {\n const { path: op } = operation\n\n if (\n Path.equals(op, p) ||\n Path.endsBefore(op, p) ||\n Path.isAncestor(op, p)\n ) {\n p[op.length - 1] += 1\n }\n\n break\n }\n\n case 'remove_node': {\n const { path: op } = operation\n\n if (Path.equals(op, p) || Path.isAncestor(op, p)) {\n return null\n } else if (Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n }\n\n break\n }\n\n case 'merge_node': {\n const { path: op, position } = operation\n\n if (Path.equals(op, p) || Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n } else if (Path.isAncestor(op, p)) {\n p[op.length - 1] -= 1\n p[op.length] += position\n }\n\n break\n }\n\n case 'split_node': {\n const { path: op, position } = operation\n\n if (Path.equals(op, p)) {\n if (affinity === 'forward') {\n p[p.length - 1] += 1\n } else if (affinity === 'backward') {\n // Nothing, because it still refers to the right path.\n } else {\n return null\n }\n } else if (Path.endsBefore(op, p)) {\n p[op.length - 1] += 1\n } else if (Path.isAncestor(op, p) && path[op.length] >= position) {\n p[op.length - 1] += 1\n p[op.length] -= position\n }\n\n break\n }\n\n case 'move_node': {\n const { path: op, newPath: onp } = operation\n\n // If the old and new path are the same, it's a no-op.\n if (Path.equals(op, onp)) {\n return p\n }\n\n if (Path.isAncestor(op, p) || Path.equals(op, p)) {\n const copy = onp.slice()\n\n if (Path.endsBefore(op, onp) && op.length < onp.length) {\n copy[op.length - 1] -= 1\n }\n\n return copy.concat(p.slice(op.length))\n } else if (\n Path.isSibling(op, onp) &&\n (Path.isAncestor(onp, p) || Path.equals(onp, p))\n ) {\n if (Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n } else {\n p[op.length - 1] += 1\n }\n } else if (\n Path.endsBefore(onp, p) ||\n Path.equals(onp, p) ||\n Path.isAncestor(onp, p)\n ) {\n if (Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n }\n\n p[onp.length - 1] += 1\n } else if (Path.endsBefore(op, p)) {\n if (Path.equals(onp, p)) {\n p[onp.length - 1] += 1\n }\n\n p[op.length - 1] -= 1\n }\n\n break\n }\n }\n\n return p\n },\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import { createDraft, finishDraft, isDraft } from 'immer'\nimport {\n Ancestor,\n Descendant,\n Editor,\n Element,\n Node,\n NodeEntry,\n Operation,\n Path,\n Point,\n Range,\n Scrubber,\n Selection,\n Text,\n} from '../../index'\n\nexport interface GeneralTransforms {\n /**\n * Transform the editor by an operation.\n */\n transform: (editor: Editor, op: Operation) => void\n}\n\nconst applyToDraft = (editor: Editor, selection: Selection, op: Operation) => {\n switch (op.type) {\n case 'insert_node': {\n const { path, node } = op\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n\n if (index > parent.children.length) {\n throw new Error(\n `Cannot apply an \"insert_node\" operation at path [${path}] because the destination is past the end of the node.`\n )\n }\n\n parent.children.splice(index, 0, node)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'insert_text': {\n const { path, offset, text } = op\n if (text.length === 0) break\n const node = Node.leaf(editor, path)\n const before = node.text.slice(0, offset)\n const after = node.text.slice(offset)\n node.text = before + text + after\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'merge_node': {\n const { path } = op\n const node = Node.get(editor, path)\n const prevPath = Path.previous(path)\n const prev = Node.get(editor, prevPath)\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n\n if (Text.isText(node) && Text.isText(prev)) {\n prev.text += node.text\n } else if (!Text.isText(node) && !Text.isText(prev)) {\n prev.children.push(...node.children)\n } else {\n throw new Error(\n `Cannot apply a \"merge_node\" operation at path [${path}] to nodes of different interfaces: ${Scrubber.stringify(\n node\n )} ${Scrubber.stringify(prev)}`\n )\n }\n\n parent.children.splice(index, 1)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'move_node': {\n const { path, newPath } = op\n\n if (Path.isAncestor(path, newPath)) {\n throw new Error(\n `Cannot move a path [${path}] to new path [${newPath}] because the destination is inside itself.`\n )\n }\n\n const node = Node.get(editor, path)\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n\n // This is tricky, but since the `path` and `newPath` both refer to\n // the same snapshot in time, there's a mismatch. After either\n // removing the original position, the second step's path can be out\n // of date. So instead of using the `op.newPath` directly, we\n // transform `op.path` to ascertain what the `newPath` would be after\n // the operation was applied.\n parent.children.splice(index, 1)\n const truePath = Path.transform(path, op)!\n const newParent = Node.get(editor, Path.parent(truePath)) as Ancestor\n const newIndex = truePath[truePath.length - 1]\n\n newParent.children.splice(newIndex, 0, node)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'remove_node': {\n const { path } = op\n const index = path[path.length - 1]\n const parent = Node.parent(editor, path)\n parent.children.splice(index, 1)\n\n // Transform all of the points in the value, but if the point was in the\n // node that was removed we need to update the range or remove it.\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n const result = Point.transform(point, op)\n\n if (selection != null && result != null) {\n selection[key] = result\n } else {\n let prev: NodeEntry<Text> | undefined\n let next: NodeEntry<Text> | undefined\n\n for (const [n, p] of Node.texts(editor)) {\n if (Path.compare(p, path) === -1) {\n prev = [n, p]\n } else {\n next = [n, p]\n break\n }\n }\n\n let preferNext = false\n if (prev && next) {\n if (Path.equals(next[1], path)) {\n preferNext = !Path.hasPrevious(next[1])\n } else {\n preferNext =\n Path.common(prev[1], path).length <\n Path.common(next[1], path).length\n }\n }\n\n if (prev && !preferNext) {\n point.path = prev[1]\n point.offset = prev[0].text.length\n } else if (next) {\n point.path = next[1]\n point.offset = 0\n } else {\n selection = null\n }\n }\n }\n }\n\n break\n }\n\n case 'remove_text': {\n const { path, offset, text } = op\n if (text.length === 0) break\n const node = Node.leaf(editor, path)\n const before = node.text.slice(0, offset)\n const after = node.text.slice(offset + text.length)\n node.text = before + after\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'set_node': {\n const { path, properties, newProperties } = op\n\n if (path.length === 0) {\n throw new Error(`Cannot set properties on the root node!`)\n }\n\n const node = Node.get(editor, path)\n\n for (const key in newProperties) {\n if (key === 'children' || key === 'text') {\n throw new Error(`Cannot set the \"${key}\" property of nodes!`)\n }\n\n const value = newProperties[key]\n\n if (value == null) {\n delete node[key]\n } else {\n node[key] = value\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in properties) {\n if (!newProperties.hasOwnProperty(key)) {\n delete node[key]\n }\n }\n\n break\n }\n\n case 'set_selection': {\n const { newProperties } = op\n\n if (newProperties == null) {\n selection = newProperties\n } else {\n if (selection == null) {\n if (!Range.isRange(newProperties)) {\n throw new Error(\n `Cannot apply an incomplete \"set_selection\" operation properties ${Scrubber.stringify(\n newProperties\n )} when there is no current selection.`\n )\n }\n\n selection = { ...newProperties }\n }\n\n for (const key in newProperties) {\n const value = newProperties[key]\n\n if (value == null) {\n if (key === 'anchor' || key === 'focus') {\n throw new Error(`Cannot remove the \"${key}\" selection property`)\n }\n\n delete selection[key]\n } else {\n selection[key] = value\n }\n }\n }\n\n break\n }\n\n case 'split_node': {\n const { path, position, properties } = op\n\n if (path.length === 0) {\n throw new Error(\n `Cannot apply a \"split_node\" operation at path [${path}] because the root node cannot be split.`\n )\n }\n\n const node = Node.get(editor, path)\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n let newNode: Descendant\n\n if (Text.isText(node)) {\n const before = node.text.slice(0, position)\n const after = node.text.slice(position)\n node.text = before\n newNode = {\n ...(properties as Partial<Text>),\n text: after,\n }\n } else {\n const before = node.children.slice(0, position)\n const after = node.children.slice(position)\n node.children = before\n\n newNode = {\n ...(properties as Partial<Element>),\n children: after,\n }\n }\n\n parent.children.splice(index + 1, 0, newNode)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n }\n return selection\n}\n\n// eslint-disable-next-line no-redeclare\nexport const GeneralTransforms: GeneralTransforms = {\n transform(editor: Editor, op: Operation): void {\n editor.children = createDraft(editor.children)\n let selection = editor.selection && createDraft(editor.selection)\n\n try {\n selection = applyToDraft(editor, selection, op)\n } finally {\n editor.children = finishDraft(editor.children)\n\n if (selection) {\n editor.selection = isDraft(selection)\n ? (finishDraft(selection) as Range)\n : selection\n } else {\n editor.selection = null\n }\n }\n },\n}\n","import { Editor, Element, Location, Node, Path } from '../../index'\nimport { NodeMatch, PropsCompare, PropsMerge } from '../editor'\nimport { MaximizeMode, RangeMode } from '../../types/types'\n\nexport interface NodeInsertNodesOptions<T extends Node> {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n hanging?: boolean\n select?: boolean\n voids?: boolean\n}\n\nexport interface NodeTransforms {\n /**\n * Insert nodes in the editor\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertNodes: <T extends Node>(\n editor: Editor,\n nodes: Node | Node[],\n options?: NodeInsertNodesOptions<T>\n ) => void\n\n /**\n * Lift nodes at a specific location upwards in the document tree, splitting\n * their parent in two if necessary.\n */\n liftNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n voids?: boolean\n }\n ) => void\n\n /**\n * Merge a node at a location with the previous node of the same depth,\n * removing any empty containing nodes after the merge if necessary.\n */\n mergeNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n hanging?: boolean\n voids?: boolean\n }\n ) => void\n\n /**\n * Move the nodes at a location to a new location.\n */\n moveNodes: <T extends Node>(\n editor: Editor,\n options: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n to: Path\n voids?: boolean\n }\n ) => void\n\n /**\n * Remove the nodes at a specific location in the document.\n */\n removeNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n hanging?: boolean\n voids?: boolean\n }\n ) => void\n\n /**\n * Set new properties on the nodes at a location.\n */\n setNodes: <T extends Node>(\n editor: Editor,\n props: Partial<T>,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n hanging?: boolean\n split?: boolean\n voids?: boolean\n compare?: PropsCompare\n merge?: PropsMerge\n }\n ) => void\n\n /**\n * Split the nodes at a specific location.\n */\n splitNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n always?: boolean\n height?: number\n voids?: boolean\n }\n ) => void\n\n /**\n * Unset properties on the nodes at a location.\n */\n unsetNodes: <T extends Node>(\n editor: Editor,\n props: string | string[],\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n hanging?: boolean\n split?: boolean\n voids?: boolean\n }\n ) => void\n\n /**\n * Unwrap the nodes at a location from a parent node, splitting the parent if\n * necessary to ensure that only the content in the range is unwrapped.\n */\n unwrapNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n }\n ) => void\n\n /**\n * Wrap the nodes at a location in a new container node, splitting the edges\n * of the range first to ensure that only the content in the range is wrapped.\n */\n wrapNodes: <T extends Node>(\n editor: Editor,\n element: Element,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n }\n ) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const NodeTransforms: NodeTransforms = {\n insertNodes(editor, nodes, options) {\n editor.insertNodes(nodes, options)\n },\n liftNodes(editor, options) {\n editor.liftNodes(options)\n },\n mergeNodes(editor, options) {\n editor.mergeNodes(options)\n },\n moveNodes(editor, options) {\n editor.moveNodes(options)\n },\n removeNodes(editor, options) {\n editor.removeNodes(options)\n },\n setNodes(editor, props, options) {\n editor.setNodes(props, options)\n },\n splitNodes(editor, options) {\n editor.splitNodes(options)\n },\n unsetNodes(editor, props, options) {\n editor.unsetNodes(props, options)\n },\n unwrapNodes(editor, options) {\n editor.unwrapNodes(options)\n },\n wrapNodes(editor, element, options) {\n editor.wrapNodes(element, options)\n },\n}\n","import { Editor, Location, Point, Range } from '../../index'\nimport { MoveUnit, SelectionEdge } from '../../types/types'\n\nexport interface SelectionCollapseOptions {\n edge?: SelectionEdge\n}\n\nexport interface SelectionMoveOptions {\n distance?: number\n unit?: MoveUnit\n reverse?: boolean\n edge?: SelectionEdge\n}\n\nexport interface SelectionSetPointOptions {\n edge?: SelectionEdge\n}\n\nexport interface SelectionTransforms {\n /**\n * Collapse the selection.\n */\n collapse: (editor: Editor, options?: SelectionCollapseOptions) => void\n\n /**\n * Unset the selection.\n */\n deselect: (editor: Editor) => void\n\n /**\n * Move the selection's point forward or backward.\n */\n move: (editor: Editor, options?: SelectionMoveOptions) => void\n\n /**\n * Set the selection to a new value.\n */\n select: (editor: Editor, target: Location) => void\n\n /**\n * Set new properties on one of the selection's points.\n */\n setPoint: (\n editor: Editor,\n props: Partial<Point>,\n options?: SelectionSetPointOptions\n ) => void\n\n /**\n * Set new properties on the selection.\n */\n setSelection: (editor: Editor, props: Partial<Range>) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const SelectionTransforms: SelectionTransforms = {\n collapse(editor, options) {\n editor.collapse(options)\n },\n deselect(editor) {\n editor.deselect()\n },\n move(editor, options) {\n editor.move(options)\n },\n select(editor, target) {\n editor.select(target)\n },\n setPoint(editor, props, options) {\n editor.setPoint(props, options)\n },\n setSelection(editor, props) {\n editor.setSelection(props)\n },\n}\n","import { isPlainObject } from 'is-plain-object'\n\n/*\n Custom deep equal comparison for Slate nodes.\n\n We don't need general purpose deep equality;\n Slate only supports plain values, Arrays, and nested objects.\n Complex values nested inside Arrays are not supported.\n\n Slate objects are designed to be serialised, so\n missing keys are deliberately normalised to undefined.\n */\nexport const isDeepEqual = (\n node: Record<string, any>,\n another: Record<string, any>\n): boolean => {\n for (const key in node) {\n const a = node[key]\n const b = another[key]\n if (isPlainObject(a) && isPlainObject(b)) {\n if (!isDeepEqual(a, b)) return false\n } else if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false\n }\n } else if (a !== b) {\n return false\n }\n }\n\n /*\n Deep object equality is only necessary in one direction; in the reverse direction\n we are only looking for keys that are missing.\n As above, undefined keys are normalised to missing.\n */\n\n for (const key in another) {\n if (node[key] === undefined && another[key] !== undefined) {\n return false\n }\n }\n\n return true\n}\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","import { produce } from 'immer'\nimport { isPlainObject } from 'is-plain-object'\nimport { ExtendedType, Operation, Path, Point, PointEntry } from '..'\nimport { RangeDirection } from '../types/types'\n\n/**\n * `Range` objects are a set of points that refer to a specific span of a Slate\n * document. They can define a span inside a single node or a can span across\n * multiple nodes.\n */\n\nexport interface BaseRange {\n anchor: Point\n focus: Point\n}\n\nexport type Range = ExtendedType<'Range', BaseRange>\n\nexport interface RangeEdgesOptions {\n reverse?: boolean\n}\n\nexport interface RangeTransformOptions {\n affinity?: RangeDirection | null\n}\n\nexport interface RangeInterface {\n /**\n * Get the start and end points of a range, in the order in which they appear\n * in the document.\n */\n edges: (range: Range, options?: RangeEdgesOptions) => [Point, Point]\n\n /**\n * Get the end point of a range.\n */\n end: (range: Range) => Point\n\n /**\n * Check if a range is exactly equal to another.\n */\n equals: (range: Range, another: Range) => boolean\n\n /**\n * Check if a range includes a path, a point or part of another range.\n */\n includes: (range: Range, target: Path | Point | Range) => boolean\n\n /**\n * Get the intersection of a range with another.\n */\n intersection: (range: Range, another: Range) => Range | null\n\n /**\n * Check if a range is backward, meaning that its anchor point appears in the\n * document _after_ its focus point.\n */\n isBackward: (range: Range) => boolean\n\n /**\n * Check if a range is collapsed, meaning that both its anchor and focus\n * points refer to the exact same position in the document.\n */\n isCollapsed: (range: Range) => boolean\n\n /**\n * Check if a range is expanded.\n *\n * This is the opposite of [[Range.isCollapsed]] and is provided for legibility.\n */\n isExpanded: (range: Range) => boolean\n\n /**\n * Check if a range is forward.\n *\n * This is the opposite of [[Range.isBackward]] and is provided for legibility.\n */\n isForward: (range: Range) => boolean\n\n /**\n * Check if a value implements the [[Range]] interface.\n */\n isRange: (value: any) => value is Range\n\n /**\n * Iterate through all of the point entries in a range.\n */\n points: (range: Range) => Generator<PointEntry, void, undefined>\n\n /**\n * Get the start point of a range.\n */\n start: (range: Range) => Point\n\n /**\n * Transform a range by an operation.\n */\n transform: (\n range: Range,\n op: Operation,\n options?: RangeTransformOptions\n ) => Range | null\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Range: RangeInterface = {\n edges(range: Range, options: RangeEdgesOptions = {}): [Point, Point] {\n const { reverse = false } = options\n const { anchor, focus } = range\n return Range.isBackward(range) === reverse\n ? [anchor, focus]\n : [focus, anchor]\n },\n\n end(range: Range): Point {\n const [, end] = Range.edges(range)\n return end\n },\n\n equals(range: Range, another: Range): boolean {\n return (\n Point.equals(range.anchor, another.anchor) &&\n Point.equals(range.focus, another.focus)\n )\n },\n\n includes(range: Range, target: Path | Point | Range): boolean {\n if (Range.isRange(target)) {\n if (\n Range.includes(range, target.anchor) ||\n Range.includes(range, target.focus)\n ) {\n return true\n }\n\n const [rs, re] = Range.edges(range)\n const [ts, te] = Range.edges(target)\n return Point.isBefore(rs, ts) && Point.isAfter(re, te)\n }\n\n const [start, end] = Range.edges(range)\n let isAfterStart = false\n let isBeforeEnd = false\n\n if (Point.isPoint(target)) {\n isAfterStart = Point.compare(target, start) >= 0\n isBeforeEnd = Point.compare(target, end) <= 0\n } else {\n isAfterStart = Path.compare(target, start.path) >= 0\n isBeforeEnd = Path.compare(target, end.path) <= 0\n }\n\n return isAfterStart && isBeforeEnd\n },\n\n intersection(range: Range, another: Range): Range | null {\n const { anchor, focus, ...rest } = range\n const [s1, e1] = Range.edges(range)\n const [s2, e2] = Range.edges(another)\n const start = Point.isBefore(s1, s2) ? s2 : s1\n const end = Point.isBefore(e1, e2) ? e1 : e2\n\n if (Point.isBefore(end, start)) {\n return null\n } else {\n return { anchor: start, focus: end, ...rest }\n }\n },\n\n isBackward(range: Range): boolean {\n const { anchor, focus } = range\n return Point.isAfter(anchor, focus)\n },\n\n isCollapsed(range: Range): boolean {\n const { anchor, focus } = range\n return Point.equals(anchor, focus)\n },\n\n isExpanded(range: Range): boolean {\n return !Range.isCollapsed(range)\n },\n\n isForward(range: Range): boolean {\n return !Range.isBackward(range)\n },\n\n isRange(value: any): value is Range {\n return (\n isPlainObject(value) &&\n Point.isPoint(value.anchor) &&\n Point.isPoint(value.focus)\n )\n },\n\n *points(range: Range): Generator<PointEntry, void, undefined> {\n yield [range.anchor, 'anchor']\n yield [range.focus, 'focus']\n },\n\n start(range: Range): Point {\n const [start] = Range.edges(range)\n return start\n },\n\n transform(\n range: Range | null,\n op: Operation,\n options: RangeTransformOptions = {}\n ): Range | null {\n return produce(range, r => {\n if (r === null) {\n return null\n }\n const { affinity = 'inward' } = options\n let affinityAnchor: 'forward' | 'backward' | null\n let affinityFocus: 'forward' | 'backward' | null\n\n if (affinity === 'inward') {\n // If the range is collapsed, make sure to use the same affinity to\n // avoid the two points passing each other and expanding in the opposite\n // direction\n const isCollapsed = Range.isCollapsed(r)\n if (Range.isForward(r)) {\n affinityAnchor = 'forward'\n affinityFocus = isCollapsed ? affinityAnchor : 'backward'\n } else {\n affinityAnchor = 'backward'\n affinityFocus = isCollapsed ? affinityAnchor : 'forward'\n }\n } else if (affinity === 'outward') {\n if (Range.isForward(r)) {\n affinityAnchor = 'backward'\n affinityFocus = 'forward'\n } else {\n affinityAnchor = 'forward'\n affinityFocus = 'backward'\n }\n } else {\n affinityAnchor = affinity\n affinityFocus = affinity\n }\n const anchor = Point.transform(r.anchor, op, { affinity: affinityAnchor })\n const focus = Point.transform(r.focus, op, { affinity: affinityFocus })\n\n if (!anchor || !focus) {\n return null\n }\n\n r.anchor = anchor\n r.focus = focus\n })\n },\n}\n","import { isPlainObject } from 'is-plain-object'\nimport { Ancestor, Descendant, Editor, ExtendedType, Node, Path } from '..'\n\n/**\n * `Element` objects are a type of node in a Slate document that contain other\n * element nodes or text nodes. They can be either \"blocks\" or \"inlines\"\n * depending on the Slate editor's configuration.\n */\n\nexport interface BaseElement {\n children: Descendant[]\n}\n\nexport type Element = ExtendedType<'Element', BaseElement>\n\nexport interface ElementInterface {\n /**\n * Check if a value implements the 'Ancestor' interface.\n */\n isAncestor: (value: any) => value is Ancestor\n\n /**\n * Check if a value implements the `Element` interface.\n */\n isElement: (value: any) => value is Element\n\n /**\n * Check if a value is an array of `Element` objects.\n */\n isElementList: (value: any) => value is Element[]\n\n /**\n * Check if a set of props is a partial of Element.\n */\n isElementProps: (props: any) => props is Partial<Element>\n\n /**\n * Check if a value implements the `Element` interface and has elementKey with selected value.\n * Default it check to `type` key value\n */\n isElementType: <T extends Element>(\n value: any,\n elementVal: string,\n elementKey?: string\n ) => value is T\n\n /**\n * Check if an element matches set of properties.\n *\n * Note: this checks custom properties, and it does not ensure that any\n * children are equivalent.\n */\n matches: (element: Element, props: Partial<Element>) => boolean\n}\n\n/**\n * Shared the function with isElementType utility\n */\nconst isElement = (value: any): value is Element => {\n return (\n isPlainObject(value) &&\n Node.isNodeList(value.children) &&\n !Editor.isEditor(value)\n )\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Element: ElementInterface = {\n isAncestor(value: any): value is Ancestor {\n return isPlainObject(value) && Node.isNodeList(value.children)\n },\n\n isElement,\n\n isElementList(value: any): value is Element[] {\n return Array.isArray(value) && value.every(val => Element.isElement(val))\n },\n\n isElementProps(props: any): props is Partial<Element> {\n return (props as Partial<Element>).children !== undefined\n },\n\n isElementType: <T extends Element>(\n value: any,\n elementVal: string,\n elementKey: string = 'type'\n ): value is T => {\n return isElement(value) && value[elementKey] === elementVal\n },\n\n matches(element: Element, props: Partial<Element>): boolean {\n for (const key in props) {\n if (key === 'children') {\n continue\n }\n\n if (element[key] !== props[key]) {\n return false\n }\n }\n\n return true\n },\n}\n\n/**\n * `ElementEntry` objects refer to an `Element` and the `Path` where it can be\n * found inside a root node.\n */\nexport type ElementEntry = [Element, Path]\n","import { produce } from 'immer'\nimport { Editor, Path, Range, Scrubber, Text } from '..'\nimport { Element, ElementEntry } from './element'\n\n/**\n * The `Node` union type represents all of the different types of nodes that\n * occur in a Slate document tree.\n */\n\nexport type BaseNode = Editor | Element | Text\nexport type Node = Editor | Element | Text\n\nexport interface NodeAncestorsOptions {\n reverse?: boolean\n}\n\nexport interface NodeChildrenOptions {\n reverse?: boolean\n}\n\nexport interface NodeDescendantsOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeElementsOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeLevelsOptions {\n reverse?: boolean\n}\n\nexport interface NodeNodesOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (entry: NodeEntry) => boolean\n}\n\nexport interface NodeTextsOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeInterface {\n /**\n * Get the node at a specific path, asserting that it's an ancestor node.\n */\n ancestor: (root: Node, path: Path) => Ancestor\n\n /**\n * Return a generator of all the ancestor nodes above a specific path.\n *\n * By default the order is top-down, from highest to lowest ancestor in\n * the tree, but you can pass the `reverse: true` option to go bottom-up.\n */\n ancestors: (\n root: Node,\n path: Path,\n options?: NodeAncestorsOptions\n ) => Generator<NodeEntry<Ancestor>, void, undefined>\n\n /**\n * Get the child of a node at a specific index.\n */\n child: (root: Node, index: number) => Descendant\n\n /**\n * Iterate over the children of a node at a specific path.\n */\n children: (\n root: Node,\n path: Path,\n options?: NodeChildrenOptions\n ) => Generator<NodeEntry<Descendant>, void, undefined>\n\n /**\n * Get an entry for the common ancesetor node of two paths.\n */\n common: (root: Node, path: Path, another: Path) => NodeEntry\n\n /**\n * Get the node at a specific path, asserting that it's a descendant node.\n */\n descendant: (root: Node, path: Path) => Descendant\n\n /**\n * Return a generator of all the descendant node entries inside a root node.\n */\n descendants: (\n root: Node,\n options?: NodeDescendantsOptions\n ) => Generator<NodeEntry<Descendant>, void, undefined>\n\n /**\n * Return a generator of all the element nodes inside a root node. Each iteration\n * will return an `ElementEntry` tuple consisting of `[Element, Path]`. If the\n * root node is an element it will be included in the iteration as well.\n */\n elements: (\n root: Node,\n options?: NodeElementsOptions\n ) => Generator<ElementEntry, void, undefined>\n\n /**\n * Extract props from a Node.\n */\n extractProps: (node: Node) => NodeProps\n\n /**\n * Get the first node entry in a root node from a path.\n */\n first: (root: Node, path: Path) => NodeEntry\n\n /**\n * Get the sliced fragment represented by a range inside a root node.\n */\n fragment: (root: Node, range: Range) => Descendant[]\n\n /**\n * Get the descendant node referred to by a specific path. If the path is an\n * empty array, it refers to the root node itself.\n */\n get: (root: Node, path: Path) => Node\n\n /**\n * Check if a descendant node exists at a specific path.\n */\n has: (root: Node, path: Path) => boolean\n\n /**\n * Check if a value implements the `Node` interface.\n */\n isNode: (value: any) => value is Node\n\n /**\n * Check if a value is a list of `Node` objects.\n */\n isNodeList: (value: any) => value is Node[]\n\n /**\n * Get the last node entry in a root node from a path.\n */\n last: (root: Node, path: Path) => NodeEntry\n\n /**\n * Get the node at a specific path, ensuring it's a leaf text node.\n */\n leaf: (root: Node, path: Path) => Text\n\n /**\n * Return a generator of the in a branch of the tree, from a specific path.\n *\n * By default the order is top-down, from highest to lowest node in the tree,\n * but you can pass the `reverse: true` option to go bottom-up.\n */\n levels: (\n root: Node,\n path: Path,\n options?: NodeLevelsOptions\n ) => Generator<NodeEntry, void, undefined>\n\n /**\n * Check if a node matches a set of props.\n */\n matches: (node: Node, props: Partial<Node>) => boolean\n\n /**\n * Return a generator of all the node entries of a root node. Each entry is\n * returned as a `[Node, Path]` tuple, with the path referring to the node's\n * position inside the root node.\n */\n nodes: (\n root: Node,\n options?: NodeNodesOptions\n ) => Generator<NodeEntry, void, undefined>\n\n /**\n * Get the parent of a node at a specific path.\n */\n parent: (root: Node, path: Path) => Ancestor\n\n /**\n * Get the concatenated text string of a node's content.\n *\n * Note that this will not include spaces or line breaks between block nodes.\n * It is not a user-facing string, but a string for performing offset-related\n * computations for a node.\n */\n string: (node: Node) => string\n\n /**\n * Return a generator of all leaf text nodes in a root node.\n */\n texts: (\n root: Node,\n options?: NodeTextsOptions\n ) => Generator<NodeEntry<Text>, void, undefined>\n}\n\nconst IS_NODE_LIST_CACHE = new WeakMap<any[], boolean>()\n\n// eslint-disable-next-line no-redeclare\nexport const Node: NodeInterface = {\n ancestor(root: Node, path: Path): Ancestor {\n const node = Node.get(root, path)\n\n if (Text.isText(node)) {\n throw new Error(\n `Cannot get the ancestor node at path [${path}] because it refers to a text node instead: ${Scrubber.stringify(\n node\n )}`\n )\n }\n\n return node\n },\n\n *ancestors(\n root: Node,\n path: Path,\n options: NodeAncestorsOptions = {}\n ): Generator<NodeEntry<Ancestor>, void, undefined> {\n for (const p of Path.ancestors(path, options)) {\n const n = Node.ancestor(root, p)\n const entry: NodeEntry<Ancestor> = [n, p]\n yield entry\n }\n },\n\n child(root: Node, index: number): Descendant {\n if (Text.isText(root)) {\n throw new Error(\n `Cannot get the child of a text node: ${Scrubber.stringify(root)}`\n )\n }\n\n const c = root.children[index] as Descendant\n\n if (c == null) {\n throw new Error(\n `Cannot get child at index \\`${index}\\` in node: ${Scrubber.stringify(\n root\n )}`\n )\n }\n\n return c\n },\n\n *children(\n root: Node,\n path: Path,\n options: NodeChildrenOptions = {}\n ): Generator<NodeEntry<Descendant>, void, undefined> {\n const { reverse = false } = options\n const ancestor = Node.ancestor(root, path)\n const { children } = ancestor\n let index = reverse ? children.length - 1 : 0\n\n while (reverse ? index >= 0 : index < children.length) {\n const child = Node.child(ancestor, index)\n const childPath = path.concat(index)\n yield [child, childPath]\n index = reverse ? index - 1 : index + 1\n }\n },\n\n common(root: Node, path: Path, another: Path): NodeEntry {\n const p = Path.common(path, another)\n const n = Node.get(root, p)\n return [n, p]\n },\n\n descendant(root: Node, path: Path): Descendant {\n const node = Node.get(root, path)\n\n if (Editor.isEditor(node)) {\n throw new Error(\n `Cannot get the descendant node at path [${path}] because it refers to the root editor node instead: ${Scrubber.stringify(\n node\n )}`\n )\n }\n\n return node\n },\n\n *descendants(\n root: Node,\n options: NodeDescendantsOptions = {}\n ): Generator<NodeEntry<Descendant>, void, undefined> {\n for (const [node, path] of Node.nodes(root, options)) {\n if (path.length !== 0) {\n // NOTE: we have to coerce here because checking the path's length does\n // guarantee that `node` is not a `Editor`, but TypeScript doesn't know.\n yield [node, path] as NodeEntry<Descendant>\n }\n }\n },\n\n *elements(\n root: Node,\n options: NodeElementsOptions = {}\n ): Generator<ElementEntry, void, undefined> {\n for (const [node, path] of Node.nodes(root, options)) {\n if (Element.isElement(node)) {\n yield [node, path]\n }\n }\n },\n\n extractProps(node: Node): NodeProps {\n if (Element.isAncestor(node)) {\n const { children, ...properties } = node\n\n return properties\n } else {\n const { text, ...properties } = node\n\n return properties\n }\n },\n\n first(root: Node, path: Path): NodeEntry {\n const p = path.slice()\n let n = Node.get(root, p)\n\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break\n } else {\n n = n.children[0]\n p.push(0)\n }\n }\n\n return [n, p]\n },\n\n fragment(root: Node, range: Range): Descendant[] {\n if (Text.isText(root)) {\n throw new Error(\n `Cannot get a fragment starting from a root text node: ${Scrubber.stringify(\n root\n )}`\n )\n }\n\n const newRoot = produce({ children: root.children }, r => {\n const [start, end] = Range.edges(range)\n const nodeEntries = Node.nodes(r, {\n reverse: true,\n pass: ([, path]) => !Range.includes(range, path),\n })\n\n for (const [, path] of nodeEntries) {\n if (!Range.includes(range, path)) {\n const parent = Node.parent(r, path)\n const index = path[path.length - 1]\n parent.children.splice(index, 1)\n }\n\n if (Path.equals(path, end.path)) {\n const leaf = Node.leaf(r, path)\n leaf.text = leaf.text.slice(0, end.offset)\n }\n\n if (Path.equals(path, start.path)) {\n const leaf = Node.leaf(r, path)\n leaf.text = leaf.text.slice(start.offset)\n }\n }\n\n if (Editor.isEditor(r)) {\n r.selection = null\n }\n })\n\n return newRoot.children\n },\n\n get(root: Node, path: Path): Node {\n let node = root\n\n for (let i = 0; i < path.length; i++) {\n const p = path[i]\n\n if (Text.isText(node) || !node.children[p]) {\n throw new Error(\n `Cannot find a descendant at path [${path}] in node: ${Scrubber.stringify(\n root\n )}`\n )\n }\n\n node = node.children[p]\n }\n\n return node\n },\n\n has(root: Node, path: Path): boolean {\n let node = root\n\n for (let i = 0; i < path.length; i++) {\n const p = path[i]\n\n if (Text.isText(node) || !node.children[p]) {\n return false\n }\n\n node = node.children[p]\n }\n\n return true\n },\n\n isNode(value: any): value is Node {\n return (\n Text.isText(value) || Element.isElement(value) || Editor.isEditor(value)\n )\n },\n\n isNodeList(value: any): value is Node[] {\n if (!Array.isArray(value)) {\n return false\n }\n const cachedResult = IS_NODE_LIST_CACHE.get(value)\n if (cachedResult !== undefined) {\n return cachedResult\n }\n const isNodeList = value.every(val => Node.isNode(val))\n IS_NODE_LIST_CACHE.set(value, isNodeList)\n return isNodeList\n },\n\n last(root: Node, path: Path): NodeEntry {\n const p = path.slice()\n let n = Node.get(root, p)\n\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break\n } else {\n const i = n.children.length - 1\n n = n.children[i]\n p.push(i)\n }\n }\n\n return [n, p]\n },\n\n leaf(root: Node, path: Path): Text {\n const node = Node.get(root, path)\n\n if (!Text.isText(node)) {\n throw new Error(\n `Cannot get the leaf node at path [${path}] because it refers to a non-leaf node: ${Scrubber.stringify(\n node\n )}`\n )\n }\n\n return node\n },\n\n *levels(\n root: Node,\n path: Path,\n options: NodeLevelsOptions = {}\n ): Generator<NodeEntry, void, undefined> {\n for (const p of Path.levels(path, options)) {\n const n = Node.get(root, p)\n yield [n, p]\n }\n },\n\n matches(node: Node, props: Partial<Node>): boolean {\n return (\n (Element.isElement(node) &&\n Element.isElementProps(props) &&\n Element.matches(node, props)) ||\n (Text.isText(node) &&\n Text.isTextProps(props) &&\n Text.matches(node, props))\n )\n },\n\n *nodes(\n root: Node,\n options: NodeNodesOptions = {}\n ): Generator<NodeEntry, void, undefined> {\n const { pass, reverse = false } = options\n const { from = [], to } = options\n const visited = new Set()\n let p: Path = []\n let n = root\n\n while (true) {\n if (to && (reverse ? Path.isBefore(p, to) : Path.isAfter(p, to))) {\n break\n }\n\n if (!visited.has(n)) {\n yield [n, p]\n }\n\n // If we're allowed to go downward and we haven't descended yet, do.\n if (\n !visited.has(n) &&\n !Text.isText(n) &&\n n.children.length !== 0 &&\n (pass == null || pass([n, p]) === false)\n ) {\n visited.add(n)\n let nextIndex = reverse ? n.children.length - 1 : 0\n\n if (Path.isAncestor(p, from)) {\n nextIndex = from[p.length]\n }\n\n p = p.concat(nextIndex)\n n = Node.get(root, p)\n continue\n }\n\n // If we're at the root and we can't go down, we're done.\n if (p.length === 0) {\n break\n }\n\n // If we're going forward...\n if (!reverse) {\n const newPath = Path.next(p)\n\n if (Node.has(root, newPath)) {\n p = newPath\n n = Node.get(root, p)\n continue\n }\n }\n\n // If we're going backward...\n if (reverse && p[p.length - 1] !== 0) {\n const newPath = Path.previous(p)\n p = newPath\n n = Node.get(root, p)\n continue\n }\n\n // Otherwise we're going upward...\n p = Path.parent(p)\n n = Node.get(root, p)\n visited.add(n)\n }\n },\n\n parent(root: Node, path: Path): Ancestor {\n const parentPath = Path.parent(path)\n const p = Node.get(root, parentPath)\n\n if (Text.isText(p)) {\n throw new Error(\n `Cannot get the parent of path [${path}] because it does not exist in the root.`\n )\n }\n\n return p\n },\n\n string(node: Node): string {\n if (Text.isText(node)) {\n return node.text\n } else {\n return node.children.map(Node.string).join('')\n }\n },\n\n *texts(\n root: Node,\n options: NodeTextsOptions = {}\n ): Generator<NodeEntry<Text>, void, undefined> {\n for (const [node, path] of Node.nodes(root, options)) {\n if (Text.isText(node)) {\n yield [node, path]\n }\n }\n },\n}\n\n/**\n * The `Descendant` union type represents nodes that are descendants in the\n * tree. It is returned as a convenience in certain cases to narrow a value\n * further than the more generic `Node` union.\n */\n\nexport type Descendant = Element | Text\n\n/**\n * The `Ancestor` union type represents nodes that are ancestors in the tree.\n * It is returned as a convenience in certain cases to narrow a value further\n * than the more generic `Node` union.\n */\n\nexport type Ancestor = Editor | Element\n\n/**\n * `NodeEntry` objects are returned when iterating over the nodes in a Slate\n * document tree. They consist of the node and its `Path` relative to the root\n * node in the document.\n */\n\nexport type NodeEntry<T extends Node = Node> = [T, Path]\n\n/**\n * Convenience type for returning the props of a node.\n */\nexport type NodeProps =\n | Omit<Editor, 'children'>\n | Omit<Element, 'children'>\n | Omit<Text, 'text'>\n","import { ExtendedType, Node, Path, Range } from '..'\nimport { isPlainObject } from 'is-plain-object'\n\nexport type BaseInsertNodeOperation = {\n type: 'insert_node'\n path: Path\n node: Node\n}\n\nexport type InsertNodeOperation = ExtendedType<\n 'InsertNodeOperation',\n BaseInsertNodeOperation\n>\n\nexport type BaseInsertTextOperation = {\n type: 'insert_text'\n path: Path\n offset: number\n text: string\n}\n\nexport type InsertTextOperation = ExtendedType<\n 'InsertTextOperation',\n BaseInsertTextOperation\n>\n\nexport type BaseMergeNodeOperation = {\n type: 'merge_node'\n path: Path\n position: number\n properties: Partial<Node>\n}\n\nexport type MergeNodeOperation = ExtendedType<\n 'MergeNodeOperation',\n BaseMergeNodeOperation\n>\n\nexport type BaseMoveNodeOperation = {\n type: 'move_node'\n path: Path\n newPath: Path\n}\n\nexport type MoveNodeOperation = ExtendedType<\n 'MoveNodeOperation',\n BaseMoveNodeOperation\n>\n\nexport type BaseRemoveNodeOperation = {\n type: 'remove_node'\n path: Path\n node: Node\n}\n\nexport type RemoveNodeOperation = ExtendedType<\n 'RemoveNodeOperation',\n BaseRemoveNodeOperation\n>\n\nexport type BaseRemoveTextOperation = {\n type: 'remove_text'\n path: Path\n offset: number\n text: string\n}\n\nexport type RemoveTextOperation = ExtendedType<\n 'RemoveTextOperation',\n BaseRemoveTextOperation\n>\n\nexport type BaseSetNodeOperation = {\n type: 'set_node'\n path: Path\n properties: Partial<Node>\n newProperties: Partial<Node>\n}\n\nexport type SetNodeOperation = ExtendedType<\n 'SetNodeOperation',\n BaseSetNodeOperation\n>\n\nexport type BaseSetSelectionOperation =\n | {\n type: 'set_selection'\n properties: null\n newProperties: Range\n }\n | {\n type: 'set_selection'\n properties: Partial<Range>\n newProperties: Partial<Range>\n }\n | {\n type: 'set_selection'\n properties: Range\n newProperties: null\n }\n\nexport type SetSelectionOperation = ExtendedType<\n 'SetSelectionOperation',\n BaseSetSelectionOperation\n>\n\nexport type BaseSplitNodeOperation = {\n type: 'split_node'\n path: Path\n position: number\n properties: Partial<Node>\n}\n\nexport type SplitNodeOperation = ExtendedType<\n 'SplitNodeOperation',\n BaseSplitNodeOperation\n>\n\nexport type NodeOperation =\n | InsertNodeOperation\n | MergeNodeOperation\n | MoveNodeOperation\n | RemoveNodeOperation\n | SetNodeOperation\n | SplitNodeOperation\n\nexport type SelectionOperation = SetSelectionOperation\n\nexport type TextOperation = InsertTextOperation | RemoveTextOperation\n\n/**\n * `Operation` objects define the low-level instructions that Slate editors use\n * to apply changes to their internal state. Representing all changes as\n * operations is what allows Slate editors to easily implement history,\n * collaboration, and other features.\n */\n\nexport type BaseOperation = NodeOperation | SelectionOperation | TextOperation\nexport type Operation = ExtendedType<'Operation', BaseOperation>\n\nexport interface OperationInterface {\n /**\n * Check if a value is a `NodeOperation` object.\n */\n isNodeOperation: (value: any) => value is NodeOperation\n\n /**\n * Check if a value is an `Operation` object.\n */\n isOperation: (value: any) => value is Operation\n\n /**\n * Check if a value is a list of `Operation` objects.\n */\n isOperationList: (value: any) => value is Operation[]\n\n /**\n * Check if a value is a `SelectionOperation` object.\n */\n isSelectionOperation: (value: any) => value is SelectionOperation\n\n /**\n * Check if a value is a `TextOperation` object.\n */\n isTextOperation: (value: any) => value is TextOperation\n\n /**\n * Invert an operation, returning a new operation that will exactly undo the\n * original when applied.\n */\n inverse: (op: Operation) => Operation\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Operation: OperationInterface = {\n isNodeOperation(value: any): value is NodeOperation {\n return Operation.isOperation(value) && value.type.endsWith('_node')\n },\n\n isOperation(value: any): value is Operation {\n if (!isPlainObject(value)) {\n return false\n }\n\n switch (value.type) {\n case 'insert_node':\n return Path.isPath(value.path) && Node.isNode(value.node)\n case 'insert_text':\n return (\n typeof value.offset === 'number' &&\n typeof value.text === 'string' &&\n Path.isPath(value.path)\n )\n case 'merge_node':\n return (\n typeof value.position === 'number' &&\n Path.isPath(value.path) &&\n isPlainObject(value.properties)\n )\n case 'move_node':\n return Path.isPath(value.path) && Path.isPath(value.newPath)\n case 'remove_node':\n return Path.isPath(value.path) && Node.isNode(value.node)\n case 'remove_text':\n return (\n typeof value.offset === 'number' &&\n typeof value.text === 'string' &&\n Path.isPath(value.path)\n )\n case 'set_node':\n return (\n Path.isPath(value.path) &&\n isPlainObject(value.properties) &&\n isPlainObject(value.newProperties)\n )\n case 'set_selection':\n return (\n (value.properties === null && Range.isRange(value.newProperties)) ||\n (value.newProperties === null && Range.isRange(value.properties)) ||\n (isPlainObject(value.properties) &&\n isPlainObject(value.newProperties))\n )\n case 'split_node':\n return (\n Path.isPath(value.path) &&\n typeof value.position === 'number' &&\n isPlainObject(value.properties)\n )\n default:\n return false\n }\n },\n\n isOperationList(value: any): value is Operation[] {\n return (\n Array.isArray(value) && value.every(val => Operation.isOperation(val))\n )\n },\n\n isSelectionOperation(value: any): value is SelectionOperation {\n return Operation.isOperation(value) && value.type.endsWith('_selection')\n },\n\n isTextOperation(value: any): value is TextOperation {\n return Operation.isOperation(value) && value.type.endsWith('_text')\n },\n\n inverse(op: Operation): Operation {\n switch (op.type) {\n case 'insert_node': {\n return { ...op, type: 'remove_node' }\n }\n\n case 'insert_text': {\n return { ...op, type: 'remove_text' }\n }\n\n case 'merge_node': {\n return { ...op, type: 'split_node', path: Path.previous(op.path) }\n }\n\n case 'move_node': {\n const { newPath, path } = op\n\n // PERF: in this case the move operation is a no-op anyways.\n if (Path.equals(newPath, path)) {\n return op\n }\n\n // If the move happens completely within a single parent the path and\n // newPath are stable with respect to each other.\n if (Path.isSibling(path, newPath)) {\n return { ...op, path: newPath, newPath: path }\n }\n\n // If the move does not happen within a single parent it is possible\n // for the move to impact the true path to the location where the node\n // was removed from and where it was inserted. We have to adjust for this\n // and find the original path. We can accomplish this (only in non-sibling)\n // moves by looking at the impact of the move operation on the node\n // after the original move path.\n const inversePath = Path.transform(path, op)!\n const inverseNewPath = Path.transform(Path.next(path), op)!\n return { ...op, path: inversePath, newPath: inverseNewPath }\n }\n\n case 'remove_node': {\n return { ...op, type: 'insert_node' }\n }\n\n case 'remove_text': {\n return { ...op, type: 'insert_text' }\n }\n\n case 'set_node': {\n const { properties, newProperties } = op\n return { ...op, properties: newProperties, newProperties: properties }\n }\n\n case 'set_selection': {\n const { properties, newProperties } = op\n\n if (properties == null) {\n return {\n ...op,\n properties: newProperties as Range,\n newProperties: null,\n }\n } else if (newProperties == null) {\n return {\n ...op,\n properties: null,\n newProperties: properties as Range,\n }\n } else {\n return { ...op, properties: newProperties, newProperties: properties }\n }\n }\n\n case 'split_node': {\n return { ...op, type: 'merge_node', path: Path.next(op.path) }\n }\n }\n },\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { isPlainObject } from 'is-plain-object'\nimport { Range } from '../interfaces/range'\nimport { Node } from '../interfaces/node'\nimport { Operation } from '../interfaces/operation'\n\nconst IS_EDITOR_CACHE = new WeakMap<object, boolean>()\n\nexport const isEditor: EditorInterface['isEditor'] = (\n value: any\n): value is Editor => {\n const cachedIsEditor = IS_EDITOR_CACHE.get(value)\n if (cachedIsEditor !== undefined) {\n return cachedIsEditor\n }\n\n if (!isPlainObject(value)) {\n return false\n }\n\n const isEditor =\n typeof value.addMark === 'function' &&\n typeof value.apply === 'function' &&\n typeof value.deleteFragment === 'function' &&\n typeof value.insertBreak === 'function' &&\n typeof value.insertSoftBreak === 'function' &&\n typeof value.insertFragment === 'function' &&\n typeof value.insertNode === 'function' &&\n typeof value.insertText === 'function' &&\n typeof value.isElementReadOnly === 'function' &&\n typeof value.isInline === 'function' &&\n typeof value.isSelectable === 'function' &&\n typeof value.isVoid === 'function' &&\n typeof value.normalizeNode === 'function' &&\n typeof value.onChange === 'function' &&\n typeof value.removeMark === 'function' &&\n typeof value.getDirtyPaths === 'function' &&\n (value.marks === null || isPlainObject(value.marks)) &&\n (value.selection === null || Range.isRange(value.selection)) &&\n Node.isNodeList(value.children) &&\n Operation.isOperationList(value.operations)\n IS_EDITOR_CACHE.set(value, isEditor)\n return isEditor\n}\n","import {\n Ancestor,\n Descendant,\n Element,\n ExtendedType,\n Location,\n Node,\n NodeEntry,\n Operation,\n Path,\n PathRef,\n Point,\n PointRef,\n Range,\n RangeRef,\n Span,\n Text,\n Transforms,\n} from '..'\nimport {\n LeafEdge,\n MaximizeMode,\n RangeDirection,\n SelectionMode,\n TextDirection,\n TextUnit,\n TextUnitAdjustment,\n} from '../types/types'\nimport { OmitFirstArg } from '../utils/types'\nimport { isEditor } from '../editor/is-editor'\nimport {\n TextInsertFragmentOptions,\n TextInsertTextOptions,\n} from './transforms/text'\nimport { NodeInsertNodesOptions } from './transforms/node'\n\n/**\n * The `Editor` interface stores all the state of a Slate editor. It is extended\n * by plugins that wish to add their own helpers and implement new behaviors.\n */\nexport interface BaseEditor {\n // Core state.\n\n children: Descendant[]\n selection: Selection\n operations: Operation[]\n marks: EditorMarks | null\n\n // Overrideable core methods.\n\n apply: (operation: Operation) => void\n getDirtyPaths: (operation: Operation) => Path[]\n getFragment: () => Descendant[]\n isElementReadOnly: (element: Element) => boolean\n isSelectable: (element: Element) => boolean\n markableVoid: (element: Element) => boolean\n normalizeNode: (entry: NodeEntry, options?: { operation?: Operation }) => void\n onChange: (options?: { operation?: Operation }) => void\n shouldNormalize: ({\n iteration,\n dirtyPaths,\n operation,\n }: {\n iteration: number\n initialDirtyPathsLength: number\n dirtyPaths: Path[]\n operation?: Operation\n }) => boolean\n\n // Overrideable core transforms.\n\n addMark: OmitFirstArg<typeof Editor.addMark>\n collapse: OmitFirstArg<typeof Transforms.collapse>\n delete: OmitFirstArg<typeof Transforms.delete>\n deleteBackward: (unit: TextUnit) => void\n deleteForward: (unit: TextUnit) => void\n deleteFragment: OmitFirstArg<typeof Editor.deleteFragment>\n deselect: OmitFirstArg<typeof Transforms.deselect>\n insertBreak: OmitFirstArg<typeof Editor.insertBreak>\n insertFragment: OmitFirstArg<typeof Transforms.insertFragment>\n insertNode: OmitFirstArg<typeof Editor.insertNode>\n insertNodes: OmitFirstArg<typeof Transforms.insertNodes>\n insertSoftBreak: OmitFirstArg<typeof Editor.insertSoftBreak>\n insertText: OmitFirstArg<typeof Transforms.insertText>\n liftNodes: OmitFirstArg<typeof Transforms.liftNodes>\n mergeNodes: OmitFirstArg<typeof Transforms.mergeNodes>\n move: OmitFirstArg<typeof Transforms.move>\n moveNodes: OmitFirstArg<typeof Transforms.moveNodes>\n normalize: OmitFirstArg<typeof Editor.normalize>\n removeMark: OmitFirstArg<typeof Editor.removeMark>\n removeNodes: OmitFirstArg<typeof Transforms.removeNodes>\n select: OmitFirstArg<typeof Transforms.select>\n setNodes: <T extends Node>(\n props: Partial<T>,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n hanging?: boolean\n split?: boolean\n voids?: boolean\n compare?: PropsCompare\n merge?: PropsMerge\n }\n ) => void\n setNormalizing: OmitFirstArg<typeof Editor.setNormalizing>\n setPoint: OmitFirstArg<typeof Transforms.setPoint>\n setSelection: OmitFirstArg<typeof Transforms.setSelection>\n splitNodes: OmitFirstArg<typeof Transforms.splitNodes>\n unsetNodes: OmitFirstArg<typeof Transforms.unsetNodes>\n unwrapNodes: OmitFirstArg<typeof Transforms.unwrapNodes>\n withoutNormalizing: OmitFirstArg<typeof Editor.withoutNormalizing>\n wrapNodes: OmitFirstArg<typeof Transforms.wrapNodes>\n\n // Overrideable core queries.\n\n above: <T extends Ancestor>(\n options?: EditorAboveOptions<T>\n ) => NodeEntry<T> | undefined\n after: OmitFirstArg<typeof Editor.after>\n before: OmitFirstArg<typeof Editor.before>\n edges: OmitFirstArg<typeof Editor.edges>\n elementReadOnly: OmitFirstArg<typeof Editor.elementReadOnly>\n end: OmitFirstArg<typeof Editor.end>\n first: OmitFirstArg<typeof Editor.first>\n fragment: OmitFirstArg<typeof Editor.fragment>\n getMarks: OmitFirstArg<typeof Editor.marks>\n hasBlocks: OmitFirstArg<typeof Editor.hasBlocks>\n hasInlines: OmitFirstArg<typeof Editor.hasInlines>\n hasPath: OmitFirstArg<typeof Editor.hasPath>\n hasTexts: OmitFirstArg<typeof Editor.hasTexts>\n isBlock: OmitFirstArg<typeof Editor.isBlock>\n isEdge: OmitFirstArg<typeof Editor.isEdge>\n isEmpty: OmitFirstArg<typeof Editor.isEmpty>\n isEnd: OmitFirstArg<typeof Editor.isEnd>\n isInline: OmitFirstArg<typeof Editor.isInline>\n isNormalizing: OmitFirstArg<typeof Editor.isNormalizing>\n isStart: OmitFirstArg<typeof Editor.isStart>\n isVoid: OmitFirstArg<typeof Editor.isVoid>\n last: OmitFirstArg<typeof Editor.last>\n leaf: OmitFirstArg<typeof Editor.leaf>\n levels: <T extends Node>(\n options?: EditorLevelsOptions<T>\n ) => Generator<NodeEntry<T>, void, undefined>\n next: <T extends Descendant>(\n options?: EditorNextOptions<T>\n ) => NodeEntry<T> | undefined\n node: OmitFirstArg<typeof Editor.node>\n nodes: <T extends Node>(\n options?: EditorNodesOptions<T>\n ) => Generator<NodeEntry<T>, void, undefined>\n parent: OmitFirstArg<typeof Editor.parent>\n path: OmitFirstArg<typeof Editor.path>\n pathRef: OmitFirstArg<typeof Editor.pathRef>\n pathRefs: OmitFirstArg<typeof Editor.pathRefs>\n point: OmitFirstArg<typeof Editor.point>\n pointRef: OmitFirstArg<typeof Editor.pointRef>\n pointRefs: OmitFirstArg<typeof Editor.pointRefs>\n positions: OmitFirstArg<typeof Editor.positions>\n previous: <T extends Node>(\n options?: EditorPreviousOptions<T>\n ) => NodeEntry<T> | undefined\n range: OmitFirstArg<typeof Editor.range>\n rangeRef: OmitFirstArg<typeof Editor.rangeRef>\n rangeRefs: OmitFirstArg<typeof Editor.rangeRefs>\n start: OmitFirstArg<typeof Editor.start>\n string: OmitFirstArg<typeof Editor.string>\n unhangRange: OmitFirstArg<typeof Editor.unhangRange>\n void: OmitFirstArg<typeof Editor.void>\n}\n\nexport type Editor = ExtendedType<'Editor', BaseEditor>\n\nexport type BaseSelection = Range | null\n\nexport type Selection = ExtendedType<'Selection', BaseSelection>\n\nexport type EditorMarks = Omit<Text, 'text'>\n\nexport interface EditorAboveOptions<T extends Ancestor> {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n voids?: boolean\n}\n\nexport interface EditorAfterOptions {\n distance?: number\n unit?: TextUnitAdjustment\n voids?: boolean\n}\n\nexport interface EditorBeforeOptions {\n distance?: number\n unit?: TextUnitAdjustment\n voids?: boolean\n}\n\nexport interface EditorDirectedDeletionOptions {\n unit?: TextUnit\n}\n\nexport interface EditorElementReadOnlyOptions {\n at?: Location\n mode?: MaximizeMode\n voids?: boolean\n}\n\nexport interface EditorFragmentDeletionOptions {\n direction?: TextDirection\n}\n\nexport interface EditorLeafOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorLevelsOptions<T extends Node> {\n at?: Location\n match?: NodeMatch<T>\n reverse?: boolean\n voids?: boolean\n}\n\nexport interface EditorNextOptions<T extends Descendant> {\n at?: Location\n match?: NodeMatch<T>\n mode?: SelectionMode\n voids?: boolean\n}\n\nexport interface EditorNodeOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorNodesOptions<T extends Node> {\n at?: Location | Span\n match?: NodeMatch<T>\n mode?: SelectionMode\n universal?: boolean\n reverse?: boolean\n voids?: boolean\n ignoreNonSelectable?: boolean\n}\n\nexport interface EditorNormalizeOptions {\n force?: boolean\n operation?: Operation\n}\n\nexport interface EditorParentOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorPathOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorPathRefOptions {\n affinity?: TextDirection | null\n}\n\nexport interface EditorPointOptions {\n edge?: LeafEdge\n}\n\nexport interface EditorPointRefOptions {\n affinity?: TextDirection | null\n}\n\nexport interface EditorPositionsOptions {\n at?: Location\n unit?: TextUnitAdjustment\n reverse?: boolean\n voids?: boolean\n ignoreNonSelectable?: boolean\n}\n\nexport interface EditorPreviousOptions<T extends Node> {\n at?: Location\n match?: NodeMatch<T>\n mode?: SelectionMode\n voids?: boolean\n}\n\nexport interface EditorRangeRefOptions {\n affinity?: RangeDirection | null\n}\n\nexport interface EditorStringOptions {\n voids?: boolean\n}\n\nexport interface EditorUnhangRangeOptions {\n voids?: boolean\n}\n\nexport interface EditorVoidOptions {\n at?: Location\n mode?: MaximizeMode\n voids?: boolean\n}\n\nexport interface EditorInterface {\n /**\n * Get the ancestor above a location in the document.\n */\n above: <T extends Ancestor>(\n editor: Editor,\n options?: EditorAboveOptions<T>\n ) => NodeEntry<T> | undefined\n\n /**\n * Add a custom property to the leaf text nodes in the current selection.\n *\n * If the selection is currently collapsed, the marks will be added to the\n * `editor.marks` property instead, and applied when text is inserted next.\n */\n addMark: (editor: Editor, key: string, value: any) => void\n\n /**\n * Get the point after a location.\n */\n after: (\n editor: Editor,\n at: Location,\n options?: EditorAfterOptions\n ) => Point | undefined\n\n /**\n * Get the point before a location.\n */\n before: (\n editor: Editor,\n at: Location,\n options?: EditorBeforeOptions\n ) => Point | undefined\n\n /**\n * Delete content in the editor backward from the current selection.\n */\n deleteBackward: (\n editor: Editor,\n options?: EditorDirectedDeletionOptions\n ) => void\n\n /**\n * Delete content in the editor forward from the current selection.\n */\n deleteForward: (\n editor: Editor,\n options?: EditorDirectedDeletionOptions\n ) => void\n\n /**\n * Delete the content in the current selection.\n */\n deleteFragment: (\n editor: Editor,\n options?: EditorFragmentDeletionOptions\n ) => void\n\n /**\n * Get the start and end points of a location.\n */\n edges: (editor: Editor, at: Location) => [Point, Point]\n\n /**\n * Match a read-only element in the current branch of the editor.\n */\n elementReadOnly: (\n editor: Editor,\n options?: EditorElementReadOnlyOptions\n ) => NodeEntry<Element> | undefined\n\n /**\n * Get the end point of a location.\n */\n end: (editor: Editor, at: Location) => Point\n\n /**\n * Get the first node at a location.\n */\n first: (editor: Editor, at: Location) => NodeEntry\n\n /**\n * Get the fragment at a location.\n */\n fragment: (editor: Editor, at: Location) => Descendant[]\n\n /**\n * Check if a node has block children.\n */\n hasBlocks: (editor: Editor, element: Element) => boolean\n\n /**\n * Check if a node has inline and text children.\n */\n hasInlines: (editor: Editor, element: Element) => boolean\n\n hasPath: (editor: Editor, path: Path) => boolean\n\n /**\n * Check if a node has text children.\n */\n hasTexts: (editor: Editor, element: Element) => boolean\n\n /**\n * Insert a block break at the current selection.\n *\n * If the selection is currently expanded, it will be deleted first.\n */\n insertBreak: (editor: Editor) => void\n\n /**\n * Inserts a fragment\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertFragment: (\n editor: Editor,\n fragment: Node[],\n options?: TextInsertFragmentOptions\n ) => void\n\n /**\n * Atomically inserts `nodes`\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertNode: <T extends Node>(\n editor: Editor,\n node: Node,\n options?: NodeInsertNodesOptions<T>\n ) => void\n\n /**\n * Insert a soft break at the current selection.\n *\n * If the selection is currently expanded, it will be deleted first.\n */\n insertSoftBreak: (editor: Editor) => void\n\n /**\n * Insert a string of text\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertText: (\n editor: Editor,\n text: string,\n options?: TextInsertTextOptions\n ) => void\n\n /**\n * Check if a value is a block `Element` object.\n */\n isBlock: (editor: Editor, value: Element) => boolean\n\n /**\n * Check if a point is an edge of a location.\n */\n isEdge: (editor: Editor, point: Point, at: Location) => boolean\n\n /**\n * Check if a value is an `Editor` object.\n */\n isEditor: (value: any) => value is Editor\n\n /**\n * Check if a value is a read-only `Element` object.\n */\n isElementReadOnly: (editor: Editor, element: Element) => boolean\n\n /**\n * Check if an element is empty, accounting for void nodes.\n */\n isEmpty: (editor: Editor, element: Element) => boolean\n\n /**\n * Check if a point is the end point of a location.\n */\n isEnd: (editor: Editor, point: Point, at: Location) => boolean\n\n /**\n * Check if a value is an inline `Element` object.\n */\n isInline: (editor: Editor, value: Element) => boolean\n\n /**\n * Check if the editor is currently normalizing after each operation.\n */\n isNormalizing: (editor: Editor) => boolean\n\n /**\n * Check if a value is a selectable `Element` object.\n */\n isSelectable: (editor: Editor, element: Element) => boolean\n\n /**\n * Check if a point is the start point of a location.\n */\n isStart: (editor: Editor, point: Point, at: Location) => boolean\n\n /**\n * Check if a value is a void `Element` object.\n */\n isVoid: (editor: Editor, value: Element) => boolean\n\n /**\n * Get the last node at a location.\n */\n last: (editor: Editor, at: Location) => NodeEntry\n\n /**\n * Get the leaf text node at a location.\n */\n leaf: (\n editor: Editor,\n at: Location,\n options?: EditorLeafOptions\n ) => NodeEntry<Text>\n\n /**\n * Iterate through all of the levels at a location.\n */\n levels: <T extends Node>(\n editor: Editor,\n options?: EditorLevelsOptions<T>\n ) => Generator<NodeEntry<T>, void, undefined>\n\n /**\n * Get the marks that would be added to text at the current selection.\n */\n marks: (editor: Editor) => Omit<Text, 'text'> | null\n\n /**\n * Get the matching node in the branch of the document after a location.\n */\n next: <T extends Descendant>(\n editor: Editor,\n options?: EditorNextOptions<T>\n ) => NodeEntry<T> | undefined\n\n /**\n * Get the node at a location.\n */\n node: (editor: Editor, at: Location, options?: EditorNodeOptions) => NodeEntry\n\n /**\n * Iterate through all of the nodes in the Editor.\n */\n nodes: <T extends Node>(\n editor: Editor,\n options?: EditorNodesOptions<T>\n ) => Generator<NodeEntry<T>, void, undefined>\n\n /**\n * Normalize any dirty objects in the editor.\n */\n normalize: (editor: Editor, options?: EditorNormalizeOptions) => void\n\n /**\n * Get the parent node of a location.\n */\n parent: (\n editor: Editor,\n at: Location,\n options?: EditorParentOptions\n ) => NodeEntry<Ancestor>\n\n /**\n * Get the path of a location.\n */\n path: (editor: Editor, at: Location, options?: EditorPathOptions) => Path\n\n /**\n * Create a mutable ref for a `Path` object, which will stay in sync as new\n * operations are applied to the editor.\n */\n pathRef: (\n editor: Editor,\n path: Path,\n options?: EditorPathRefOptions\n ) => PathRef\n\n /**\n * Get the set of currently tracked path refs of the editor.\n */\n pathRefs: (editor: Editor) => Set<PathRef>\n\n /**\n * Get the start or end point of a location.\n */\n point: (editor: Editor, at: Location, options?: EditorPointOptions) => Point\n\n /**\n * Create a mutable ref for a `Point` object, which will stay in sync as new\n * operations are applied to the editor.\n */\n pointRef: (\n editor: Editor,\n point: Point,\n options?: EditorPointRefOptions\n ) => PointRef\n\n /**\n * Get the set of currently tracked point refs of the editor.\n */\n pointRefs: (editor: Editor) => Set<PointRef>\n\n /**\n * Return all the positions in `at` range where a `Point` can be placed.\n *\n * By default, moves forward by individual offsets at a time, but\n * the `unit` option can be used to to move by character, word, line, or block.\n *\n * The `reverse` option can be used to change iteration direction.\n *\n * Note: By default void nodes are treated as a single point and iteration\n * will not happen inside their content unless you pass in true for the\n * `voids` option, then iteration will occur.\n */\n positions: (\n editor: Editor,\n options?: EditorPositionsOptions\n ) => Generator<Point, void, undefined>\n\n /**\n * Get the matching node in the branch of the document before a location.\n */\n previous: <T extends Node>(\n editor: Editor,\n options?: EditorPreviousOptions<T>\n ) => NodeEntry<T> | undefined\n\n /**\n * Get a range of a location.\n */\n range: (editor: Editor, at: Location, to?: Location) => Range\n\n /**\n * Create a mutable ref for a `Range` object, which will stay in sync as new\n * operations are applied to the editor.\n */\n rangeRef: (\n editor: Editor,\n range: Range,\n options?: EditorRangeRefOptions\n ) => RangeRef\n\n /**\n * Get the set of currently tracked range refs of the editor.\n */\n rangeRefs: (editor: Editor) => Set<RangeRef>\n\n /**\n * Remove a custom property from all of the leaf text nodes in the current\n * selection.\n *\n * If the selection is currently collapsed, the removal will be stored on\n * `editor.marks` and applied to the text inserted next.\n */\n removeMark: (editor: Editor, key: string) => void\n\n /**\n * Manually set if the editor should currently be normalizing.\n *\n * Note: Using this incorrectly can leave the editor in an invalid state.\n *\n */\n setNormalizing: (editor: Editor, isNormalizing: boolean) => void\n\n /**\n * Get the start point of a location.\n */\n start: (editor: Editor, at: Location) => Point\n\n /**\n * Get the text string content of a location.\n *\n * Note: by default the text of void nodes is considered to be an empty\n * string, regardless of content, unless you pass in true for the voids option\n */\n string: (\n editor: Editor,\n at: Location,\n options?: EditorStringOptions\n ) => string\n\n /**\n * Convert a range into a non-hanging one.\n */\n unhangRange: (\n editor: Editor,\n range: Range,\n options?: EditorUnhangRangeOptions\n ) => Range\n\n /**\n * Match a void node in the current branch of the editor.\n */\n void: (\n editor: Editor,\n options?: EditorVoidOptions\n ) => NodeEntry<Element> | undefined\n\n /**\n * Call a function, deferring normalization until after it completes.\n */\n withoutNormalizing: (editor: Editor, fn: () => void) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Editor: EditorInterface = {\n above(editor, options) {\n return editor.above(options)\n },\n\n addMark(editor, key, value) {\n editor.addMark(key, value)\n },\n\n after(editor, at, options) {\n return editor.after(at, options)\n },\n\n before(editor, at, options) {\n return editor.before(at, options)\n },\n\n deleteBackward(editor, options = {}) {\n const { unit = 'character' } = options\n editor.deleteBackward(unit)\n },\n\n deleteForward(editor, options = {}) {\n const { unit = 'character' } = options\n editor.deleteForward(unit)\n },\n\n deleteFragment(editor, options) {\n editor.deleteFragment(options)\n },\n\n edges(editor, at) {\n return editor.edges(at)\n },\n\n elementReadOnly(editor: Editor, options: EditorElementReadOnlyOptions = {}) {\n return editor.elementReadOnly(options)\n },\n\n end(editor, at) {\n return editor.end(at)\n },\n\n first(editor, at) {\n return editor.first(at)\n },\n\n fragment(editor, at) {\n return editor.fragment(at)\n },\n\n hasBlocks(editor, element) {\n return editor.hasBlocks(element)\n },\n\n hasInlines(editor, element) {\n return editor.hasInlines(element)\n },\n\n hasPath(editor, path) {\n return editor.hasPath(path)\n },\n\n hasTexts(editor, element) {\n return editor.hasTexts(element)\n },\n\n insertBreak(editor) {\n editor.insertBreak()\n },\n\n insertFragment(editor, fragment, options) {\n editor.insertFragment(fragment, options)\n },\n\n insertNode(editor, node) {\n editor.insertNode(node)\n },\n\n insertSoftBreak(editor) {\n editor.insertSoftBreak()\n },\n\n insertText(editor, text) {\n editor.insertText(text)\n },\n\n isBlock(editor, value) {\n return editor.isBlock(value)\n },\n\n isEdge(editor, point, at) {\n return editor.isEdge(point, at)\n },\n\n isEditor(value: any): value is Editor {\n return isEditor(value)\n },\n\n isElementReadOnly(editor, element) {\n return editor.isElementReadOnly(element)\n },\n\n isEmpty(editor, element) {\n return editor.isEmpty(element)\n },\n\n isEnd(editor, point, at) {\n return editor.isEnd(point, at)\n },\n\n isInline(editor, value) {\n return editor.isInline(value)\n },\n\n isNormalizing(editor) {\n return editor.isNormalizing()\n },\n\n isSelectable(editor: Editor, value: Element) {\n return editor.isSelectable(value)\n },\n\n isStart(editor, point, at) {\n return editor.isStart(point, at)\n },\n\n isVoid(editor, value) {\n return editor.isVoid(value)\n },\n\n last(editor, at) {\n return editor.last(at)\n },\n\n leaf(editor, at, options) {\n return editor.leaf(at, options)\n },\n\n levels(editor, options) {\n return editor.levels(options)\n },\n\n marks(editor) {\n return editor.getMarks()\n },\n\n next<T extends Descendant>(\n editor: Editor,\n options?: EditorNextOptions<T>\n ): NodeEntry<T> | undefined {\n return editor.next(options)\n },\n\n node(editor, at, options) {\n return editor.node(at, options)\n },\n\n nodes(editor, options) {\n return editor.nodes(options)\n },\n\n normalize(editor, options) {\n editor.normalize(options)\n },\n\n parent(editor, at, options) {\n return editor.parent(at, options)\n },\n\n path(editor, at, options) {\n return editor.path(at, options)\n },\n\n pathRef(editor, path, options) {\n return editor.pathRef(path, options)\n },\n\n pathRefs(editor) {\n return editor.pathRefs()\n },\n\n point(editor, at, options) {\n return editor.point(at, options)\n },\n\n pointRef(editor, point, options) {\n return editor.pointRef(point, options)\n },\n\n pointRefs(editor) {\n return editor.pointRefs()\n },\n\n positions(editor, options) {\n return editor.positions(options)\n },\n\n previous(editor, options) {\n return editor.previous(options)\n },\n\n range(editor, at, to) {\n return editor.range(at, to)\n },\n\n rangeRef(editor, range, options) {\n return editor.rangeRef(range, options)\n },\n\n rangeRefs(editor) {\n return editor.rangeRefs()\n },\n\n removeMark(editor, key) {\n editor.removeMark(key)\n },\n\n setNormalizing(editor, isNormalizing) {\n editor.setNormalizing(isNormalizing)\n },\n\n start(editor, at) {\n return editor.start(at)\n },\n\n string(editor, at, options) {\n return editor.string(at, options)\n },\n\n unhangRange(editor, range, options) {\n return editor.unhangRange(range, options)\n },\n\n void(editor, options) {\n return editor.void(options)\n },\n\n withoutNormalizing(editor, fn: () => void) {\n editor.withoutNormalizing(fn)\n },\n}\n\n/**\n * A helper type for narrowing matched nodes with a predicate.\n */\n\nexport type NodeMatch<T extends Node> =\n | ((node: Node, path: Path) => node is T)\n | ((node: Node, path: Path) => boolean)\n\nexport type PropsCompare = (prop: Partial<Node>, node: Partial<Node>) => boolean\nexport type PropsMerge = (prop: Partial<Node>, node: Partial<Node>) => object\n","import { Path, Point, Range } from '..'\n\n/**\n * The `Location` interface is a union of the ways to refer to a specific\n * location in a Slate document: paths, points or ranges.\n *\n * Methods will often accept a `Location` instead of requiring only a `Path`,\n * `Point` or `Range`. This eliminates the need for developers to manage\n * converting between the different interfaces in their own code base.\n */\n\nexport type Location = Path | Point | Range\n\nexport interface LocationInterface {\n /**\n * Check if a value implements the `Location` interface.\n */\n isLocation: (value: any) => value is Location\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Location: LocationInterface = {\n isLocation(value: any): value is Location {\n return Path.isPath(value) || Point.isPoint(value) || Range.isRange(value)\n },\n}\n\n/**\n * The `Span` interface is a low-level way to refer to locations in nodes\n * without using `Point` which requires leaf text nodes to be present.\n */\n\nexport type Span = [Path, Path]\n\nexport interface SpanInterface {\n /**\n * Check if a value implements the `Span` interface.\n */\n isSpan: (value: any) => value is Span\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Span: SpanInterface = {\n isSpan(value: any): value is Span {\n return (\n Array.isArray(value) && value.length === 2 && value.every(Path.isPath)\n )\n },\n}\n","import { isPlainObject } from 'is-plain-object'\nimport { produce } from 'immer'\nimport { ExtendedType, Operation, Path } from '..'\nimport { TextDirection } from '../types/types'\n\n/**\n * `Point` objects refer to a specific location in a text node in a Slate\n * document. Its path refers to the location of the node in the tree, and its\n * offset refers to the distance into the node's string of text. Points can\n * only refer to `Text` nodes.\n */\n\nexport interface BasePoint {\n path: Path\n offset: number\n}\n\nexport type Point = ExtendedType<'Point', BasePoint>\n\nexport interface PointTransformOptions {\n affinity?: TextDirection | null\n}\n\nexport interface PointInterface {\n /**\n * Compare a point to another, returning an integer indicating whether the\n * point was before, at, or after the other.\n */\n compare: (point: Point, another: Point) => -1 | 0 | 1\n\n /**\n * Check if a point is after another.\n */\n isAfter: (point: Point, another: Point) => boolean\n\n /**\n * Check if a point is before another.\n */\n isBefore: (point: Point, another: Point) => boolean\n\n /**\n * Check if a point is exactly equal to another.\n */\n equals: (point: Point, another: Point) => boolean\n\n /**\n * Check if a value implements the `Point` interface.\n */\n isPoint: (value: any) => value is Point\n\n /**\n * Transform a point by an operation.\n */\n transform: (\n point: Point,\n op: Operation,\n options?: PointTransformOptions\n ) => Point | null\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Point: PointInterface = {\n compare(point: Point, another: Point): -1 | 0 | 1 {\n const result = Path.compare(point.path, another.path)\n\n if (result === 0) {\n if (point.offset < another.offset) return -1\n if (point.offset > another.offset) return 1\n return 0\n }\n\n return result\n },\n\n isAfter(point: Point, another: Point): boolean {\n return Point.compare(point, another) === 1\n },\n\n isBefore(point: Point, another: Point): boolean {\n return Point.compare(point, another) === -1\n },\n\n equals(point: Point, another: Point): boolean {\n // PERF: ensure the offsets are equal first since they are cheaper to check.\n return (\n point.offset === another.offset && Path.equals(point.path, another.path)\n )\n },\n\n isPoint(value: any): value is Point {\n return (\n isPlainObject(value) &&\n typeof value.offset === 'number' &&\n Path.isPath(value.path)\n )\n },\n\n transform(\n point: Point | null,\n op: Operation,\n options: PointTransformOptions = {}\n ): Point | null {\n return produce(point, p => {\n if (p === null) {\n return null\n }\n const { affinity = 'forward' } = options\n const { path, offset } = p\n\n switch (op.type) {\n case 'insert_node':\n case 'move_node': {\n p.path = Path.transform(path, op, options)!\n break\n }\n\n case 'insert_text': {\n if (\n Path.equals(op.path, path) &&\n (op.offset < offset ||\n (op.offset === offset && affinity === 'forward'))\n ) {\n p.offset += op.text.length\n }\n\n break\n }\n\n case 'merge_node': {\n if (Path.equals(op.path, path)) {\n p.offset += op.position\n }\n\n p.path = Path.transform(path, op, options)!\n break\n }\n\n case 'remove_text': {\n if (Path.equals(op.path, path) && op.offset <= offset) {\n p.offset -= Math.min(offset - op.offset, op.text.length)\n }\n\n break\n }\n\n case 'remove_node': {\n if (Path.equals(op.path, path) || Path.isAncestor(op.path, path)) {\n return null\n }\n\n p.path = Path.transform(path, op, options)!\n break\n }\n\n case 'split_node': {\n if (Path.equals(op.path, path)) {\n if (op.position === offset && affinity == null) {\n return null\n } else if (\n op.position < offset ||\n (op.position === offset && affinity === 'forward')\n ) {\n p.offset -= op.position\n\n p.path = Path.transform(path, op, {\n ...options,\n affinity: 'forward',\n })!\n }\n } else {\n p.path = Path.transform(path, op, options)!\n }\n\n break\n }\n }\n })\n },\n}\n\n/**\n * `PointEntry` objects are returned when iterating over `Point` objects that\n * belong to a range.\n */\n\nexport type PointEntry = [Point, 'anchor' | 'focus']\n","export type Scrubber = (key: string, value: unknown) => unknown\n\nexport interface ScrubberInterface {\n setScrubber(scrubber: Scrubber | undefined): void\n stringify(value: any): string\n}\n\nlet _scrubber: Scrubber | undefined = undefined\n\n/**\n * This interface implements a stringify() function, which is used by Slate\n * internally when generating exceptions containing end user data. Developers\n * using Slate may call Scrubber.setScrubber() to alter the behavior of this\n * stringify() function.\n *\n * For example, to prevent the cleartext logging of 'text' fields within Nodes:\n *\n * import { Scrubber } from 'slate';\n * Scrubber.setScrubber((key, val) => {\n * if (key === 'text') return '...scrubbed...'\n * return val\n * });\n *\n */\n// eslint-disable-next-line no-redeclare\nexport const Scrubber: ScrubberInterface = {\n setScrubber(scrubber: Scrubber | undefined): void {\n _scrubber = scrubber\n },\n\n stringify(value: any): string {\n return JSON.stringify(value, _scrubber)\n },\n}\n","import { isPlainObject } from 'is-plain-object'\nimport { Range } from '..'\nimport { ExtendedType } from '../types/custom-types'\nimport { isDeepEqual } from '../utils/deep-equal'\n\n/**\n * `Text` objects represent the nodes that contain the actual text content of a\n * Slate document along with any formatting properties. They are always leaf\n * nodes in the document tree as they cannot contain any children.\n */\n\nexport interface BaseText {\n text: string\n}\n\nexport type Text = ExtendedType<'Text', BaseText>\n\nexport interface TextEqualsOptions {\n loose?: boolean\n}\n\nexport interface TextInterface {\n /**\n * Check if two text nodes are equal.\n *\n * When loose is set, the text is not compared. This is\n * used to check whether sibling text nodes can be merged.\n */\n equals: (text: Text, another: Text, options?: TextEqualsOptions) => boolean\n\n /**\n * Check if a value implements the `Text` interface.\n */\n isText: (value: any) => value is Text\n\n /**\n * Check if a value is a list of `Text` objects.\n */\n isTextList: (value: any) => value is Text[]\n\n /**\n * Check if some props are a partial of Text.\n */\n isTextProps: (props: any) => props is Partial<Text>\n\n /**\n * Check if an text matches set of properties.\n *\n * Note: this is for matching custom properties, and it does not ensure that\n * the `text` property are two nodes equal.\n */\n matches: (text: Text, props: Partial<Text>) => boolean\n\n /**\n * Get the leaves for a text node given decorations.\n */\n decorations: (node: Text, decorations: Range[]) => Text[]\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Text: TextInterface = {\n equals(text: Text, another: Text, options: TextEqualsOptions = {}): boolean {\n const { loose = false } = options\n\n function omitText(obj: Record<any, any>) {\n const { text, ...rest } = obj\n\n return rest\n }\n\n return isDeepEqual(\n loose ? omitText(text) : text,\n loose ? omitText(another) : another\n )\n },\n\n isText(value: any): value is Text {\n return isPlainObject(value) && typeof value.text === 'string'\n },\n\n isTextList(value: any): value is Text[] {\n return Array.isArray(value) && value.every(val => Text.isText(val))\n },\n\n isTextProps(props: any): props is Partial<Text> {\n return (props as Partial<Text>).text !== undefined\n },\n\n matches(text: Text, props: Partial<Text>): boolean {\n for (const key in props) {\n if (key === 'text') {\n continue\n }\n\n if (!text.hasOwnProperty(key) || text[key] !== props[key]) {\n return false\n }\n }\n\n return true\n },\n\n decorations(node: Text, decorations: Range[]): Text[] {\n let leaves: Text[] = [{ ...node }]\n\n for (const dec of decorations) {\n const { anchor, focus, ...rest } = dec\n const [start, end] = Range.edges(dec)\n const next = []\n let leafEnd = 0\n const decorationStart = start.offset\n const decorationEnd = end.offset\n\n for (const leaf of leaves) {\n const { length } = leaf.text\n const leafStart = leafEnd\n leafEnd += length\n\n // If the range encompasses the entire leaf, add the range.\n if (decorationStart <= leafStart && leafEnd <= decorationEnd) {\n Object.assign(leaf, rest)\n next.push(leaf)\n continue\n }\n\n // If the range expanded and match the leaf, or starts after, or ends before it, continue.\n if (\n (decorationStart !== decorationEnd &&\n (decorationStart === leafEnd || decorationEnd === leafStart)) ||\n decorationStart > leafEnd ||\n decorationEnd < leafStart ||\n (decorationEnd === leafStart && leafStart !== 0)\n ) {\n next.push(leaf)\n continue\n }\n\n // Otherwise we need to split the leaf, at the start, end, or both,\n // and add the range to the middle intersecting section. Do the end\n // split first since we don't need to update the offset that way.\n let middle = leaf\n let before\n let after\n\n if (decorationEnd < leafEnd) {\n const off = decorationEnd - leafStart\n after = { ...middle, text: middle.text.slice(off) }\n middle = { ...middle, text: middle.text.slice(0, off) }\n }\n\n if (decorationStart > leafStart) {\n const off = decorationStart - leafStart\n before = { ...middle, text: middle.text.slice(0, off) }\n middle = { ...middle, text: middle.text.slice(off) }\n }\n\n Object.assign(middle, rest)\n\n if (before) {\n next.push(before)\n }\n\n next.push(middle)\n\n if (after) {\n next.push(after)\n }\n }\n\n leaves = next\n }\n\n return leaves\n },\n}\n","import { Editor, Location } from '../interfaces'\n\n/**\n * Get the default location to insert content into the editor.\n * By default, use the selection as the target location. But if there is\n * no selection, insert at the end of the document since that is such a\n * common use case when inserting from a non-selected state.\n */\nexport const getDefaultInsertLocation = (editor: Editor): Location => {\n if (editor.selection) {\n return editor.selection\n } else if (editor.children.length > 0) {\n return Editor.end(editor, [])\n } else {\n return [0]\n }\n}\n","import { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { Node } from '../interfaces/node'\n\nexport const matchPath = (\n editor: Editor,\n path: Path\n): ((node: Node) => boolean) => {\n const [node] = Editor.node(editor, path)\n return n => n === node\n}\n","// Character (grapheme cluster) boundaries are determined according to\n// the default grapheme cluster boundary specification, extended grapheme clusters variant[1].\n//\n// References:\n//\n// [1] https://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table\n// [2] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt\n// [3] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.html\n// [4] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.txt\n\n/**\n * Get the distance to the end of the first character in a string of text.\n */\n\nexport const getCharacterDistance = (str: string, isRTL = false): number => {\n const isLTR = !isRTL\n const codepoints = isRTL ? codepointsIteratorRTL(str) : str\n\n let left: CodepointType = CodepointType.None\n let right: CodepointType = CodepointType.None\n let distance = 0\n // Evaluation of these conditions are deferred.\n let gb11: boolean | null = null // Is GB11 applicable?\n let gb12Or13: boolean | null = null // Is GB12 or GB13 applicable?\n\n for (const char of codepoints) {\n const code = char.codePointAt(0)\n if (!code) break\n\n const type = getCodepointType(char, code)\n ;[left, right] = isLTR ? [right, type] : [type, left]\n\n if (\n intersects(left, CodepointType.ZWJ) &&\n intersects(right, CodepointType.ExtPict)\n ) {\n if (isLTR) {\n gb11 = endsWithEmojiZWJ(str.substring(0, distance))\n } else {\n gb11 = endsWithEmojiZWJ(str.substring(0, str.length - distance))\n }\n if (!gb11) break\n }\n\n if (\n intersects(left, CodepointType.RI) &&\n intersects(right, CodepointType.RI)\n ) {\n if (gb12Or13 !== null) {\n gb12Or13 = !gb12Or13\n } else {\n if (isLTR) {\n gb12Or13 = true\n } else {\n gb12Or13 = endsWithOddNumberOfRIs(\n str.substring(0, str.length - distance)\n )\n }\n }\n if (!gb12Or13) break\n }\n\n if (\n left !== CodepointType.None &&\n right !== CodepointType.None &&\n isBoundaryPair(left, right)\n ) {\n break\n }\n\n distance += char.length\n }\n\n return distance || 1\n}\n\nconst SPACE = /\\s/\nconst PUNCTUATION = /[\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\nconst CHAMELEON = /['\\u2018\\u2019]/\n\n/**\n * Get the distance to the end of the first word in a string of text.\n */\n\nexport const getWordDistance = (text: string, isRTL = false): number => {\n let dist = 0\n let started = false\n\n while (text.length > 0) {\n const charDist = getCharacterDistance(text, isRTL)\n const [char, remaining] = splitByCharacterDistance(text, charDist, isRTL)\n\n if (isWordCharacter(char, remaining, isRTL)) {\n started = true\n dist += charDist\n } else if (!started) {\n dist += charDist\n } else {\n break\n }\n\n text = remaining\n }\n\n return dist\n}\n\n/**\n * Split a string in two parts at a given distance starting from the end when\n * `isRTL` is set to `true`.\n */\n\nexport const splitByCharacterDistance = (\n str: string,\n dist: number,\n isRTL?: boolean\n): [string, string] => {\n if (isRTL) {\n const at = str.length - dist\n return [str.slice(at, str.length), str.slice(0, at)]\n }\n\n return [str.slice(0, dist), str.slice(dist)]\n}\n\n/**\n * Check if a character is a word character. The `remaining` argument is used\n * because sometimes you must read subsequent characters to truly determine it.\n */\n\nconst isWordCharacter = (\n char: string,\n remaining: string,\n isRTL = false\n): boolean => {\n if (SPACE.test(char)) {\n return false\n }\n\n // Chameleons count as word characters as long as they're in a word, so\n // recurse to see if the next one is a word character or not.\n if (CHAMELEON.test(char)) {\n const charDist = getCharacterDistance(remaining, isRTL)\n const [nextChar, nextRemaining] = splitByCharacterDistance(\n remaining,\n charDist,\n isRTL\n )\n\n if (isWordCharacter(nextChar, nextRemaining, isRTL)) {\n return true\n }\n }\n\n if (PUNCTUATION.test(char)) {\n return false\n }\n\n return true\n}\n\n/**\n * Iterate on codepoints from right to left.\n */\n\nexport const codepointsIteratorRTL = function*(str: string) {\n const end = str.length - 1\n\n for (let i = 0; i < str.length; i++) {\n const char1 = str.charAt(end - i)\n\n if (isLowSurrogate(char1.charCodeAt(0))) {\n const char2 = str.charAt(end - i - 1)\n if (isHighSurrogate(char2.charCodeAt(0))) {\n yield char2 + char1\n\n i++\n continue\n }\n }\n\n yield char1\n }\n}\n\n/**\n * Is `charCode` a high surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\n\nconst isHighSurrogate = (charCode: number) => {\n return charCode >= 0xd800 && charCode <= 0xdbff\n}\n\n/**\n * Is `charCode` a low surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\n\nconst isLowSurrogate = (charCode: number) => {\n return charCode >= 0xdc00 && charCode <= 0xdfff\n}\n\nenum CodepointType {\n None = 0,\n Extend = 1 << 0,\n ZWJ = 1 << 1,\n RI = 1 << 2,\n Prepend = 1 << 3,\n SpacingMark = 1 << 4,\n L = 1 << 5,\n V = 1 << 6,\n T = 1 << 7,\n LV = 1 << 8,\n LVT = 1 << 9,\n ExtPict = 1 << 10,\n Any = 1 << 11,\n}\n\nconst reExtend = /^[\\p{Gr_Ext}\\p{EMod}]$/u\nconst rePrepend = /^[\\u0600-\\u0605\\u06DD\\u070F\\u0890-\\u0891\\u08E2\\u0D4E\\u{110BD}\\u{110CD}\\u{111C2}-\\u{111C3}\\u{1193F}\\u{11941}\\u{11A3A}\\u{11A84}-\\u{11A89}\\u{11D46}]$/u\nconst reSpacingMark = /^[\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E-\\u094F\\u0982-\\u0983\\u09BF-\\u09C0\\u09C7-\\u09C8\\u09CB-\\u09CC\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB-\\u0ACC\\u0B02-\\u0B03\\u0B40\\u0B47-\\u0B48\\u0B4B-\\u0B4C\\u0BBF\\u0BC1-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82-\\u0C83\\u0CBE\\u0CC0-\\u0CC1\\u0CC3-\\u0CC4\\u0CC7-\\u0CC8\\u0CCA-\\u0CCB\\u0D02-\\u0D03\\u0D3F-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D82-\\u0D83\\u0DD0-\\u0DD1\\u0DD8-\\u0DDE\\u0DF2-\\u0DF3\\u0E33\\u0EB3\\u0F3E-\\u0F3F\\u0F7F\\u1031\\u103B-\\u103C\\u1056-\\u1057\\u1084\\u1715\\u1734\\u17B6\\u17BE-\\u17C5\\u17C7-\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930-\\u1931\\u1933-\\u1938\\u1A19-\\u1A1A\\u1A55\\u1A57\\u1A6D-\\u1A72\\u1B04\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B44\\u1B82\\u1BA1\\u1BA6-\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2-\\u1BF3\\u1C24-\\u1C2B\\u1C34-\\u1C35\\u1CE1\\u1CF7\\uA823-\\uA824\\uA827\\uA880-\\uA881\\uA8B4-\\uA8C3\\uA952-\\uA953\\uA983\\uA9B4-\\uA9B5\\uA9BA-\\uA9BB\\uA9BE-\\uA9C0\\uAA2F-\\uAA30\\uAA33-\\uAA34\\uAA4D\\uAAEB\\uAAEE-\\uAAEF\\uAAF5\\uABE3-\\uABE4\\uABE6-\\uABE7\\uABE9-\\uABEA\\uABEC\\u{11000}\\u{11002}\\u{11082}\\u{110B0}-\\u{110B2}\\u{110B7}-\\u{110B8}\\u{1112C}\\u{11145}-\\u{11146}\\u{11182}\\u{111B3}-\\u{111B5}\\u{111BF}-\\u{111C0}\\u{111CE}\\u{1122C}-\\u{1122E}\\u{11232}-\\u{11233}\\u{11235}\\u{112E0}-\\u{112E2}\\u{11302}-\\u{11303}\\u{1133F}\\u{11341}-\\u{11344}\\u{11347}-\\u{11348}\\u{1134B}-\\u{1134D}\\u{11362}-\\u{11363}\\u{11435}-\\u{11437}\\u{11440}-\\u{11441}\\u{11445}\\u{114B1}-\\u{114B2}\\u{114B9}\\u{114BB}-\\u{114BC}\\u{114BE}\\u{114C1}\\u{115B0}-\\u{115B1}\\u{115B8}-\\u{115BB}\\u{115BE}\\u{11630}-\\u{11632}\\u{1163B}-\\u{1163C}\\u{1163E}\\u{116AC}\\u{116AE}-\\u{116AF}\\u{116B6}\\u{11726}\\u{1182C}-\\u{1182E}\\u{11838}\\u{11931}-\\u{11935}\\u{11937}-\\u{11938}\\u{1193D}\\u{11940}\\u{11942}\\u{119D1}-\\u{119D3}\\u{119DC}-\\u{119DF}\\u{119E4}\\u{11A39}\\u{11A57}-\\u{11A58}\\u{11A97}\\u{11C2F}\\u{11C3E}\\u{11CA9}\\u{11CB1}\\u{11CB4}\\u{11D8A}-\\u{11D8E}\\u{11D93}-\\u{11D94}\\u{11D96}\\u{11EF5}-\\u{11EF6}\\u{16F51}-\\u{16F87}\\u{16FF0}-\\u{16FF1}\\u{1D166}\\u{1D16D}]$/u\nconst reL = /^[\\u1100-\\u115F\\uA960-\\uA97C]$/u\nconst reV = /^[\\u1160-\\u11A7\\uD7B0-\\uD7C6]$/u\nconst reT = /^[\\u11A8-\\u11FF\\uD7CB-\\uD7FB]$/u\nconst reLV = /^[\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718\\uD734\\uD750\\uD76C\\uD788]$/u\nconst reLVT = /^[\\uAC01-\\uAC1B\\uAC1D-\\uAC37\\uAC39-\\uAC53\\uAC55-\\uAC6F\\uAC71-\\uAC8B\\uAC8D-\\uACA7\\uACA9-\\uACC3\\uACC5-\\uACDF\\uACE1-\\uACFB\\uACFD-\\uAD17\\uAD19-\\uAD33\\uAD35-\\uAD4F\\uAD51-\\uAD6B\\uAD6D-\\uAD87\\uAD89-\\uADA3\\uADA5-\\uADBF\\uADC1-\\uADDB\\uADDD-\\uADF7\\uADF9-\\uAE13\\uAE15-\\uAE2F\\uAE31-\\uAE4B\\uAE4D-\\uAE67\\uAE69-\\uAE83\\uAE85-\\uAE9F\\uAEA1-\\uAEBB\\uAEBD-\\uAED7\\uAED9-\\uAEF3\\uAEF5-\\uAF0F\\uAF11-\\uAF2B\\uAF2D-\\uAF47\\uAF49-\\uAF63\\uAF65-\\uAF7F\\uAF81-\\uAF9B\\uAF9D-\\uAFB7\\uAFB9-\\uAFD3\\uAFD5-\\uAFEF\\uAFF1-\\uB00B\\uB00D-\\uB027\\uB029-\\uB043\\uB045-\\uB05F\\uB061-\\uB07B\\uB07D-\\uB097\\uB099-\\uB0B3\\uB0B5-\\uB0CF\\uB0D1-\\uB0EB\\uB0ED-\\uB107\\uB109-\\uB123\\uB125-\\uB13F\\uB141-\\uB15B\\uB15D-\\uB177\\uB179-\\uB193\\uB195-\\uB1AF\\uB1B1-\\uB1CB\\uB1CD-\\uB1E7\\uB1E9-\\uB203\\uB205-\\uB21F\\uB221-\\uB23B\\uB23D-\\uB257\\uB259-\\uB273\\uB275-\\uB28F\\uB291-\\uB2AB\\uB2AD-\\uB2C7\\uB2C9-\\uB2E3\\uB2E5-\\uB2FF\\uB301-\\uB31B\\uB31D-\\uB337\\uB339-\\uB353\\uB355-\\uB36F\\uB371-\\uB38B\\uB38D-\\uB3A7\\uB3A9-\\uB3C3\\uB3C5-\\uB3DF\\uB3E1-\\uB3FB\\uB3FD-\\uB417\\uB419-\\uB433\\uB435-\\uB44F\\uB451-\\uB46B\\uB46D-\\uB487\\uB489-\\uB4A3\\uB4A5-\\uB4BF\\uB4C1-\\uB4DB\\uB4DD-\\uB4F7\\uB4F9-\\uB513\\uB515-\\uB52F\\uB531-\\uB54B\\uB54D-\\uB567\\uB569-\\uB583\\uB585-\\uB59F\\uB5A1-\\uB5BB\\uB5BD-\\uB5D7\\uB5D9-\\uB5F3\\uB5F5-\\uB60F\\uB611-\\uB62B\\uB62D-\\uB647\\uB649-\\uB663\\uB665-\\uB67F\\uB681-\\uB69B\\uB69D-\\uB6B7\\uB6B9-\\uB6D3\\uB6D5-\\uB6EF\\uB6F1-\\uB70B\\uB70D-\\uB727\\uB729-\\uB743\\uB745-\\uB75F\\uB761-\\uB77B\\uB77D-\\uB797\\uB799-\\uB7B3\\uB7B5-\\uB7CF\\uB7D1-\\uB7EB\\uB7ED-\\uB807\\uB809-\\uB823\\uB825-\\uB83F\\uB841-\\uB85B\\uB85D-\\uB877\\uB879-\\uB893\\uB895-\\uB8AF\\uB8B1-\\uB8CB\\uB8CD-\\uB8E7\\uB8E9-\\uB903\\uB905-\\uB91F\\uB921-\\uB93B\\uB93D-\\uB957\\uB959-\\uB973\\uB975-\\uB98F\\uB991-\\uB9AB\\uB9AD-\\uB9C7\\uB9C9-\\uB9E3\\uB9E5-\\uB9FF\\uBA01-\\uBA1B\\uBA1D-\\uBA37\\uBA39-\\uBA53\\uBA55-\\uBA6F\\uBA71-\\uBA8B\\uBA8D-\\uBAA7\\uBAA9-\\uBAC3\\uBAC5-\\uBADF\\uBAE1-\\uBAFB\\uBAFD-\\uBB17\\uBB19-\\uBB33\\uBB35-\\uBB4F\\uBB51-\\uBB6B\\uBB6D-\\uBB87\\uBB89-\\uBBA3\\uBBA5-\\uBBBF\\uBBC1-\\uBBDB\\uBBDD-\\uBBF7\\uBBF9-\\uBC13\\uBC15-\\uBC2F\\uBC31-\\uBC4B\\uBC4D-\\uBC67\\uBC69-\\uBC83\\uBC85-\\uBC9F\\uBCA1-\\uBCBB\\uBCBD-\\uBCD7\\uBCD9-\\uBCF3\\uBCF5-\\uBD0F\\uBD11-\\uBD2B\\uBD2D-\\uBD47\\uBD49-\\uBD63\\uBD65-\\uBD7F\\uBD81-\\uBD9B\\uBD9D-\\uBDB7\\uBDB9-\\uBDD3\\uBDD5-\\uBDEF\\uBDF1-\\uBE0B\\uBE0D-\\uBE27\\uBE29-\\uBE43\\uBE45-\\uBE5F\\uBE61-\\uBE7B\\uBE7D-\\uBE97\\uBE99-\\uBEB3\\uBEB5-\\uBECF\\uBED1-\\uBEEB\\uBEED-\\uBF07\\uBF09-\\uBF23\\uBF25-\\uBF3F\\uBF41-\\uBF5B\\uBF5D-\\uBF77\\uBF79-\\uBF93\\uBF95-\\uBFAF\\uBFB1-\\uBFCB\\uBFCD-\\uBFE7\\uBFE9-\\uC003\\uC005-\\uC01F\\uC021-\\uC03B\\uC03D-\\uC057\\uC059-\\uC073\\uC075-\\uC08F\\uC091-\\uC0AB\\uC0AD-\\uC0C7\\uC0C9-\\uC0E3\\uC0E5-\\uC0FF\\uC101-\\uC11B\\uC11D-\\uC137\\uC139-\\uC153\\uC155-\\uC16F\\uC171-\\uC18B\\uC18D-\\uC1A7\\uC1A9-\\uC1C3\\uC1C5-\\uC1DF\\uC1E1-\\uC1FB\\uC1FD-\\uC217\\uC219-\\uC233\\uC235-\\uC24F\\uC251-\\uC26B\\uC26D-\\uC287\\uC289-\\uC2A3\\uC2A5-\\uC2BF\\uC2C1-\\uC2DB\\uC2DD-\\uC2F7\\uC2F9-\\uC313\\uC315-\\uC32F\\uC331-\\uC34B\\uC34D-\\uC367\\uC369-\\uC383\\uC385-\\uC39F\\uC3A1-\\uC3BB\\uC3BD-\\uC3D7\\uC3D9-\\uC3F3\\uC3F5-\\uC40F\\uC411-\\uC42B\\uC42D-\\uC447\\uC449-\\uC463\\uC465-\\uC47F\\uC481-\\uC49B\\uC49D-\\uC4B7\\uC4B9-\\uC4D3\\uC4D5-\\uC4EF\\uC4F1-\\uC50B\\uC50D-\\uC527\\uC529-\\uC543\\uC545-\\uC55F\\uC561-\\uC57B\\uC57D-\\uC597\\uC599-\\uC5B3\\uC5B5-\\uC5CF\\uC5D1-\\uC5EB\\uC5ED-\\uC607\\uC609-\\uC623\\uC625-\\uC63F\\uC641-\\uC65B\\uC65D-\\uC677\\uC679-\\uC693\\uC695-\\uC6AF\\uC6B1-\\uC6CB\\uC6CD-\\uC6E7\\uC6E9-\\uC703\\uC705-\\uC71F\\uC721-\\uC73B\\uC73D-\\uC757\\uC759-\\uC773\\uC775-\\uC78F\\uC791-\\uC7AB\\uC7AD-\\uC7C7\\uC7C9-\\uC7E3\\uC7E5-\\uC7FF\\uC801-\\uC81B\\uC81D-\\uC837\\uC839-\\uC853\\uC855-\\uC86F\\uC871-\\uC88B\\uC88D-\\uC8A7\\uC8A9-\\uC8C3\\uC8C5-\\uC8DF\\uC8E1-\\uC8FB\\uC8FD-\\uC917\\uC919-\\uC933\\uC935-\\uC94F\\uC951-\\uC96B\\uC96D-\\uC987\\uC989-\\uC9A3\\uC9A5-\\uC9BF\\uC9C1-\\uC9DB\\uC9DD-\\uC9F7\\uC9F9-\\uCA13\\uCA15-\\uCA2F\\uCA31-\\uCA4B\\uCA4D-\\uCA67\\uCA69-\\uCA83\\uCA85-\\uCA9F\\uCAA1-\\uCABB\\uCABD-\\uCAD7\\uCAD9-\\uCAF3\\uCAF5-\\uCB0F\\uCB11-\\uCB2B\\uCB2D-\\uCB47\\uCB49-\\uCB63\\uCB65-\\uCB7F\\uCB81-\\uCB9B\\uCB9D-\\uCBB7\\uCBB9-\\uCBD3\\uCBD5-\\uCBEF\\uCBF1-\\uCC0B\\uCC0D-\\uCC27\\uCC29-\\uCC43\\uCC45-\\uCC5F\\uCC61-\\uCC7B\\uCC7D-\\uCC97\\uCC99-\\uCCB3\\uCCB5-\\uCCCF\\uCCD1-\\uCCEB\\uCCED-\\uCD07\\uCD09-\\uCD23\\uCD25-\\uCD3F\\uCD41-\\uCD5B\\uCD5D-\\uCD77\\uCD79-\\uCD93\\uCD95-\\uCDAF\\uCDB1-\\uCDCB\\uCDCD-\\uCDE7\\uCDE9-\\uCE03\\uCE05-\\uCE1F\\uCE21-\\uCE3B\\uCE3D-\\uCE57\\uCE59-\\uCE73\\uCE75-\\uCE8F\\uCE91-\\uCEAB\\uCEAD-\\uCEC7\\uCEC9-\\uCEE3\\uCEE5-\\uCEFF\\uCF01-\\uCF1B\\uCF1D-\\uCF37\\uCF39-\\uCF53\\uCF55-\\uCF6F\\uCF71-\\uCF8B\\uCF8D-\\uCFA7\\uCFA9-\\uCFC3\\uCFC5-\\uCFDF\\uCFE1-\\uCFFB\\uCFFD-\\uD017\\uD019-\\uD033\\uD035-\\uD04F\\uD051-\\uD06B\\uD06D-\\uD087\\uD089-\\uD0A3\\uD0A5-\\uD0BF\\uD0C1-\\uD0DB\\uD0DD-\\uD0F7\\uD0F9-\\uD113\\uD115-\\uD12F\\uD131-\\uD14B\\uD14D-\\uD167\\uD169-\\uD183\\uD185-\\uD19F\\uD1A1-\\uD1BB\\uD1BD-\\uD1D7\\uD1D9-\\uD1F3\\uD1F5-\\uD20F\\uD211-\\uD22B\\uD22D-\\uD247\\uD249-\\uD263\\uD265-\\uD27F\\uD281-\\uD29B\\uD29D-\\uD2B7\\uD2B9-\\uD2D3\\uD2D5-\\uD2EF\\uD2F1-\\uD30B\\uD30D-\\uD327\\uD329-\\uD343\\uD345-\\uD35F\\uD361-\\uD37B\\uD37D-\\uD397\\uD399-\\uD3B3\\uD3B5-\\uD3CF\\uD3D1-\\uD3EB\\uD3ED-\\uD407\\uD409-\\uD423\\uD425-\\uD43F\\uD441-\\uD45B\\uD45D-\\uD477\\uD479-\\uD493\\uD495-\\uD4AF\\uD4B1-\\uD4CB\\uD4CD-\\uD4E7\\uD4E9-\\uD503\\uD505-\\uD51F\\uD521-\\uD53B\\uD53D-\\uD557\\uD559-\\uD573\\uD575-\\uD58F\\uD591-\\uD5AB\\uD5AD-\\uD5C7\\uD5C9-\\uD5E3\\uD5E5-\\uD5FF\\uD601-\\uD61B\\uD61D-\\uD637\\uD639-\\uD653\\uD655-\\uD66F\\uD671-\\uD68B\\uD68D-\\uD6A7\\uD6A9-\\uD6C3\\uD6C5-\\uD6DF\\uD6E1-\\uD6FB\\uD6FD-\\uD717\\uD719-\\uD733\\uD735-\\uD74F\\uD751-\\uD76B\\uD76D-\\uD787\\uD789-\\uD7A3]$/u\nconst reExtPict = /^\\p{ExtPict}$/u\n\nconst getCodepointType = (char: string, code: number): CodepointType => {\n let type = CodepointType.Any\n if (char.search(reExtend) !== -1) {\n type |= CodepointType.Extend\n }\n if (code === 0x200d) {\n type |= CodepointType.ZWJ\n }\n if (code >= 0x1f1e6 && code <= 0x1f1ff) {\n type |= CodepointType.RI\n }\n if (char.search(rePrepend) !== -1) {\n type |= CodepointType.Prepend\n }\n if (char.search(reSpacingMark) !== -1) {\n type |= CodepointType.SpacingMark\n }\n if (char.search(reL) !== -1) {\n type |= CodepointType.L\n }\n if (char.search(reV) !== -1) {\n type |= CodepointType.V\n }\n if (char.search(reT) !== -1) {\n type |= CodepointType.T\n }\n if (char.search(reLV) !== -1) {\n type |= CodepointType.LV\n }\n if (char.search(reLVT) !== -1) {\n type |= CodepointType.LVT\n }\n if (char.search(reExtPict) !== -1) {\n type |= CodepointType.ExtPict\n }\n\n return type\n}\n\nfunction intersects(x: CodepointType, y: CodepointType) {\n return (x & y) !== 0\n}\n\nconst NonBoundaryPairs: [CodepointType, CodepointType][] = [\n // GB6\n [\n CodepointType.L,\n CodepointType.L | CodepointType.V | CodepointType.LV | CodepointType.LVT,\n ],\n // GB7\n [CodepointType.LV | CodepointType.V, CodepointType.V | CodepointType.T],\n // GB8\n [CodepointType.LVT | CodepointType.T, CodepointType.T],\n // GB9\n [CodepointType.Any, CodepointType.Extend | CodepointType.ZWJ],\n // GB9a\n [CodepointType.Any, CodepointType.SpacingMark],\n // GB9b\n [CodepointType.Prepend, CodepointType.Any],\n // GB11\n [CodepointType.ZWJ, CodepointType.ExtPict],\n // GB12 and GB13\n [CodepointType.RI, CodepointType.RI],\n]\n\nfunction isBoundaryPair(left: CodepointType, right: CodepointType) {\n return (\n NonBoundaryPairs.findIndex(\n r => intersects(left, r[0]) && intersects(right, r[1])\n ) === -1\n )\n}\n\nconst endingEmojiZWJ = /\\p{ExtPict}[\\p{Gr_Ext}\\p{EMod}]*\\u200D$/u\nconst endsWithEmojiZWJ = (str: string): boolean => {\n return str.search(endingEmojiZWJ) !== -1\n}\n\nconst endingRIs = /\\p{RI}+$/gu\nconst endsWithOddNumberOfRIs = (str: string): boolean => {\n const match = str.match(endingRIs)\n if (match === null) {\n return false\n } else {\n // A RI is represented by a surrogate pair.\n const numRIs = match[0].length / 2\n return numRIs % 2 === 1\n }\n}\n","import { Editor, Location, Node, Path, Range, Transforms } from '../../index'\nimport { TextUnit } from '../../types/types'\nimport { getDefaultInsertLocation } from '../../utils'\n\nexport interface TextDeleteOptions {\n at?: Location\n distance?: number\n unit?: TextUnit\n reverse?: boolean\n hanging?: boolean\n voids?: boolean\n}\n\nexport interface TextInsertFragmentOptions {\n at?: Location\n hanging?: boolean\n voids?: boolean\n}\n\nexport interface TextInsertTextOptions {\n at?: Location\n voids?: boolean\n}\n\nexport interface TextTransforms {\n /**\n * Delete content in the editor.\n */\n delete: (editor: Editor, options?: TextDeleteOptions) => void\n\n /**\n * Insert a fragment in the editor\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertFragment: (\n editor: Editor,\n fragment: Node[],\n options?: TextInsertFragmentOptions\n ) => void\n\n /**\n * Insert a string of text in the editor\n * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n */\n insertText: (\n editor: Editor,\n text: string,\n options?: TextInsertTextOptions\n ) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const TextTransforms: TextTransforms = {\n delete(editor, options) {\n editor.delete(options)\n },\n insertFragment(editor, fragment, options) {\n editor.insertFragment(fragment, options)\n },\n insertText(\n editor: Editor,\n text: string,\n options: TextInsertTextOptions = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { voids = false } = options\n let { at = getDefaultInsertLocation(editor) } = options\n\n if (Path.isPath(at)) {\n at = Editor.range(editor, at)\n }\n\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const end = Range.end(at)\n if (!voids && Editor.void(editor, { at: end })) {\n return\n }\n const start = Range.start(at)\n const startRef = Editor.pointRef(editor, start)\n const endRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at, voids })\n const startPoint = startRef.unref()\n const endPoint = endRef.unref()\n\n at = startPoint || endPoint!\n Transforms.setSelection(editor, { anchor: at, focus: at })\n }\n }\n\n if (\n (!voids && Editor.void(editor, { at })) ||\n Editor.elementReadOnly(editor, { at })\n ) {\n return\n }\n\n const { path, offset } = at\n if (text.length > 0)\n editor.apply({ type: 'insert_text', path, offset, text })\n })\n },\n}\n","import { GeneralTransforms } from './general'\nimport { NodeTransforms } from './node'\nimport { SelectionTransforms } from './selection'\nimport { TextTransforms } from './text'\n\nexport const Transforms: GeneralTransforms &\n NodeTransforms &\n SelectionTransforms &\n TextTransforms = {\n ...GeneralTransforms,\n ...NodeTransforms,\n ...SelectionTransforms,\n ...TextTransforms,\n}\n","import { PathRef } from '../interfaces/path-ref'\nimport { PointRef } from '../interfaces/point-ref'\nimport { RangeRef } from '../interfaces/range-ref'\nimport { DIRTY_PATH_KEYS, DIRTY_PATHS, FLUSHING } from '../utils/weak-maps'\nimport { Path } from '../interfaces/path'\nimport { Transforms } from '../interfaces/transforms'\nimport { WithEditorFirstArg } from '../utils/types'\nimport { Editor } from '../interfaces/editor'\n\nexport const apply: WithEditorFirstArg<Editor['apply']> = (editor, op) => {\n for (const ref of Editor.pathRefs(editor)) {\n PathRef.transform(ref, op)\n }\n\n for (const ref of Editor.pointRefs(editor)) {\n PointRef.transform(ref, op)\n }\n\n for (const ref of Editor.rangeRefs(editor)) {\n RangeRef.transform(ref, op)\n }\n\n const oldDirtyPaths = DIRTY_PATHS.get(editor) || []\n const oldDirtyPathKeys = DIRTY_PATH_KEYS.get(editor) || new Set()\n let dirtyPaths: Path[]\n let dirtyPathKeys: Set<string>\n\n const add = (path: Path | null) => {\n if (path) {\n const key = path.join(',')\n\n if (!dirtyPathKeys.has(key)) {\n dirtyPathKeys.add(key)\n dirtyPaths.push(path)\n }\n }\n }\n\n if (Path.operationCanTransformPath(op)) {\n dirtyPaths = []\n dirtyPathKeys = new Set()\n for (const path of oldDirtyPaths) {\n const newPath = Path.transform(path, op)\n add(newPath)\n }\n } else {\n dirtyPaths = oldDirtyPaths\n dirtyPathKeys = oldDirtyPathKeys\n }\n\n const newDirtyPaths = editor.getDirtyPaths(op)\n for (const path of newDirtyPaths) {\n add(path)\n }\n\n DIRTY_PATHS.set(editor, dirtyPaths)\n DIRTY_PATH_KEYS.set(editor, dirtyPathKeys)\n Transforms.transform(editor, op)\n editor.operations.push(op)\n Editor.normalize(editor, {\n operation: op,\n })\n\n // Clear any formats applied to the cursor if the selection changes.\n if (op.type === 'set_selection') {\n editor.marks = null\n }\n\n if (!FLUSHING.get(editor)) {\n FLUSHING.set(editor, true)\n\n Promise.resolve().then(() => {\n FLUSHING.set(editor, false)\n editor.onChange({ operation: op })\n editor.operations = []\n })\n }\n}\n","import { WithEditorFirstArg } from '../utils/types'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\nimport { Node } from '../interfaces/node'\nimport { Editor } from '../interfaces/editor'\n\n/**\n * Get the \"dirty\" paths generated from an operation.\n */\nexport const getDirtyPaths: WithEditorFirstArg<Editor['getDirtyPaths']> = (\n editor,\n op\n) => {\n switch (op.type) {\n case 'insert_text':\n case 'remove_text':\n case 'set_node': {\n const { path } = op\n return Path.levels(path)\n }\n\n case 'insert_node': {\n const { node, path } = op\n const levels = Path.levels(path)\n const descendants = Text.isText(node)\n ? []\n : Array.from(Node.nodes(node), ([, p]) => path.concat(p))\n\n return [...levels, ...descendants]\n }\n\n case 'merge_node': {\n const { path } = op\n const ancestors = Path.ancestors(path)\n const previousPath = Path.previous(path)\n return [...ancestors, previousPath]\n }\n\n case 'move_node': {\n const { path, newPath } = op\n\n if (Path.equals(path, newPath)) {\n return []\n }\n\n const oldAncestors: Path[] = []\n const newAncestors: Path[] = []\n\n for (const ancestor of Path.ancestors(path)) {\n const p = Path.transform(ancestor, op)\n oldAncestors.push(p!)\n }\n\n for (const ancestor of Path.ancestors(newPath)) {\n const p = Path.transform(ancestor, op)\n newAncestors.push(p!)\n }\n\n const newParent = newAncestors[newAncestors.length - 1]\n const newIndex = newPath[newPath.length - 1]\n const resultPath = newParent.concat(newIndex)\n\n return [...oldAncestors, ...newAncestors, resultPath]\n }\n\n case 'remove_node': {\n const { path } = op\n const ancestors = Path.ancestors(path)\n return [...ancestors]\n }\n\n case 'split_node': {\n const { path } = op\n const levels = Path.levels(path)\n const nextPath = Path.next(path)\n return [...levels, nextPath]\n }\n\n default: {\n return []\n }\n }\n}\n","import { Editor, Node } from '../interfaces'\nimport { WithEditorFirstArg } from '../utils'\n\nexport const getFragment: WithEditorFirstArg<Editor['getFragment']> = editor => {\n const { selection } = editor\n\n if (selection) {\n return Node.fragment(editor, selection)\n }\n return []\n}\n","import { WithEditorFirstArg } from '../utils/types'\nimport { Text } from '../interfaces/text'\nimport { Element } from '../interfaces/element'\nimport { Transforms } from '../interfaces/transforms'\nimport { Descendant, Node } from '../interfaces/node'\nimport { Editor } from '../interfaces/editor'\n\nexport const normalizeNode: WithEditorFirstArg<Editor['normalizeNode']> = (\n editor,\n entry\n) => {\n const [node, path] = entry\n\n // There are no core normalizations for text nodes.\n if (Text.isText(node)) {\n return\n }\n\n // Ensure that block and inline nodes have at least one text child.\n if (Element.isElement(node) && node.children.length === 0) {\n const child = { text: '' }\n Transforms.insertNodes(editor, child, {\n at: path.concat(0),\n voids: true,\n })\n return\n }\n\n // Determine whether the node should have block or inline children.\n const shouldHaveInlines = Editor.isEditor(node)\n ? false\n : Element.isElement(node) &&\n (editor.isInline(node) ||\n node.children.length === 0 ||\n Text.isText(node.children[0]) ||\n editor.isInline(node.children[0]))\n\n // Since we'll be applying operations while iterating, keep track of an\n // index that accounts for any added/removed nodes.\n let n = 0\n\n for (let i = 0; i < node.children.length; i++, n++) {\n const currentNode = Node.get(editor, path)\n if (Text.isText(currentNode)) continue\n const child = currentNode.children[n] as Descendant\n const prev = currentNode.children[n - 1] as Descendant\n const isLast = i === node.children.length - 1\n const isInlineOrText =\n Text.isText(child) || (Element.isElement(child) && editor.isInline(child))\n\n // Only allow block nodes in the top-level children and parent blocks\n // that only contain block nodes. Similarly, only allow inline nodes in\n // other inline nodes, or parent blocks that only contain inlines and\n // text.\n if (isInlineOrText !== shouldHaveInlines) {\n Transforms.removeNodes(editor, { at: path.concat(n), voids: true })\n n--\n } else if (Element.isElement(child)) {\n // Ensure that inline nodes are surrounded by text nodes.\n if (editor.isInline(child)) {\n if (prev == null || !Text.isText(prev)) {\n const newChild = { text: '' }\n Transforms.insertNodes(editor, newChild, {\n at: path.concat(n),\n voids: true,\n })\n n++\n } else if (isLast) {\n const newChild = { text: '' }\n Transforms.insertNodes(editor, newChild, {\n at: path.concat(n + 1),\n voids: true,\n })\n n++\n }\n }\n } else {\n // Merge adjacent text nodes that are empty or match.\n if (prev != null && Text.isText(prev)) {\n if (Text.equals(child, prev, { loose: true })) {\n Transforms.mergeNodes(editor, { at: path.concat(n), voids: true })\n n--\n } else if (prev.text === '') {\n Transforms.removeNodes(editor, {\n at: path.concat(n - 1),\n voids: true,\n })\n n--\n } else if (child.text === '') {\n Transforms.removeNodes(editor, {\n at: path.concat(n),\n voids: true,\n })\n n--\n }\n }\n }\n }\n}\n","import { WithEditorFirstArg } from '../utils/types'\nimport { Editor } from '../interfaces/editor'\n\nexport const shouldNormalize: WithEditorFirstArg<Editor['shouldNormalize']> = (\n editor,\n { iteration, initialDirtyPathsLength }\n) => {\n const maxIterations = initialDirtyPathsLength * 42 // HACK: better way?\n\n if (iteration > maxIterations) {\n throw new Error(\n `Could not completely normalize the editor after ${maxIterations} iterations! This is usually due to incorrect normalization logic that leaves a node in an invalid state.`\n )\n }\n\n return true\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Text } from '../interfaces/text'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\n\nexport const above: EditorInterface['above'] = (editor, options = {}) => {\n const {\n voids = false,\n mode = 'lowest',\n at = editor.selection,\n match,\n } = options\n\n if (!at) {\n return\n }\n\n const path = Editor.path(editor, at)\n const reverse = mode === 'lowest'\n\n for (const [n, p] of Editor.levels(editor, {\n at: path,\n voids,\n match,\n reverse,\n })) {\n if (Text.isText(n)) continue\n if (Range.isRange(at)) {\n if (\n Path.isAncestor(p, at.anchor.path) &&\n Path.isAncestor(p, at.focus.path)\n ) {\n return [n, p]\n }\n } else {\n if (!Path.equals(path, p)) {\n return [n, p]\n }\n }\n }\n}\n","import { Node } from '../interfaces/node'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { FLUSHING } from '../utils/weak-maps'\nimport { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const addMark: EditorInterface['addMark'] = (editor, key, value) => {\n const { selection } = editor\n\n if (selection) {\n const match = (node: Node, path: Path) => {\n if (!Text.isText(node)) {\n return false // marks can only be applied to text\n }\n const [parentNode, parentPath] = Editor.parent(editor, path)\n return !editor.isVoid(parentNode) || editor.markableVoid(parentNode)\n }\n const expandedSelection = Range.isExpanded(selection)\n let markAcceptingVoidSelected = false\n if (!expandedSelection) {\n const [selectedNode, selectedPath] = Editor.node(editor, selection)\n if (selectedNode && match(selectedNode, selectedPath)) {\n const [parentNode] = Editor.parent(editor, selectedPath)\n markAcceptingVoidSelected =\n parentNode && editor.markableVoid(parentNode)\n }\n }\n if (expandedSelection || markAcceptingVoidSelected) {\n Transforms.setNodes(\n editor,\n { [key]: value },\n {\n match,\n split: true,\n voids: true,\n }\n )\n } else {\n const marks = {\n ...(Editor.marks(editor) || {}),\n [key]: value,\n }\n\n editor.marks = marks\n if (!FLUSHING.get(editor)) {\n editor.onChange()\n }\n }\n }\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const after: EditorInterface['after'] = (editor, at, options = {}) => {\n const anchor = Editor.point(editor, at, { edge: 'end' })\n const focus = Editor.end(editor, [])\n const range = { anchor, focus }\n const { distance = 1 } = options\n let d = 0\n let target\n\n for (const p of Editor.positions(editor, {\n ...options,\n at: range,\n })) {\n if (d > distance) {\n break\n }\n\n if (d !== 0) {\n target = p\n }\n\n d++\n }\n\n return target\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const before: EditorInterface['before'] = (editor, at, options = {}) => {\n const anchor = Editor.start(editor, [])\n const focus = Editor.point(editor, at, { edge: 'start' })\n const range = { anchor, focus }\n const { distance = 1 } = options\n let d = 0\n let target\n\n for (const p of Editor.positions(editor, {\n ...options,\n at: range,\n reverse: true,\n })) {\n if (d > distance) {\n break\n }\n\n if (d !== 0) {\n target = p\n }\n\n d++\n }\n\n return target\n}\n","import { Editor } from '../interfaces/editor'\nimport { Transforms } from '../interfaces/transforms'\nimport { Range } from '../interfaces/range'\nimport { WithEditorFirstArg } from '../utils/types'\n\nexport const deleteBackward: WithEditorFirstArg<Editor['deleteBackward']> = (\n editor,\n unit\n) => {\n const { selection } = editor\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, { unit, reverse: true })\n }\n}\n","import { Editor } from '../interfaces/editor'\nimport { Transforms } from '../interfaces/transforms'\nimport { Range } from '../interfaces/range'\nimport { WithEditorFirstArg } from '../utils/types'\n\nexport const deleteForward: WithEditorFirstArg<Editor['deleteForward']> = (\n editor,\n unit\n) => {\n const { selection } = editor\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, { unit })\n }\n}\n","import { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const deleteFragment: EditorInterface['deleteFragment'] = (\n editor,\n { direction = 'forward' } = {}\n) => {\n const { selection } = editor\n\n if (selection && Range.isExpanded(selection)) {\n Transforms.delete(editor, { reverse: direction === 'backward' })\n }\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const edges: EditorInterface['edges'] = (editor, at) => {\n return [Editor.start(editor, at), Editor.end(editor, at)]\n}\n","import { Element } from '../interfaces/element'\nimport { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const elementReadOnly: EditorInterface['elementReadOnly'] = (\n editor,\n options = {}\n) => {\n return Editor.above(editor, {\n ...options,\n match: n => Element.isElement(n) && Editor.isElementReadOnly(editor, n),\n })\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const end: EditorInterface['end'] = (editor, at) => {\n return Editor.point(editor, at, { edge: 'end' })\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const first: EditorInterface['first'] = (editor, at) => {\n const path = Editor.path(editor, at, { edge: 'start' })\n return Editor.node(editor, path)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const fragment: EditorInterface['fragment'] = (editor, at) => {\n const range = Editor.range(editor, at)\n return Node.fragment(editor, range)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Element } from '../interfaces/element'\n\nexport const getVoid: EditorInterface['void'] = (editor, options = {}) => {\n return Editor.above(editor, {\n ...options,\n match: n => Element.isElement(n) && Editor.isVoid(editor, n),\n })\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Element } from '../interfaces/element'\n\nexport const hasBlocks: EditorInterface['hasBlocks'] = (editor, element) => {\n return element.children.some(\n n => Element.isElement(n) && Editor.isBlock(editor, n)\n )\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Text } from '../interfaces/text'\n\nexport const hasInlines: EditorInterface['hasInlines'] = (editor, element) => {\n return element.children.some(\n n => Text.isText(n) || Editor.isInline(editor, n)\n )\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const hasPath: EditorInterface['hasPath'] = (editor, path) => {\n return Node.has(editor, path)\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { Text } from '../interfaces/text'\n\nexport const hasTexts: EditorInterface['hasTexts'] = (editor, element) => {\n return element.children.every(n => Text.isText(n))\n}\n","import { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const insertBreak: EditorInterface['insertBreak'] = editor => {\n Transforms.splitNodes(editor, { always: true })\n}\n","import { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const insertNode: EditorInterface['insertNode'] = (\n editor,\n node,\n options\n) => {\n Transforms.insertNodes(editor, node, options)\n}\n","import { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const insertSoftBreak: EditorInterface['insertSoftBreak'] = editor => {\n Transforms.splitNodes(editor, { always: true })\n}\n","import { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const insertText: EditorInterface['insertText'] = (\n editor,\n text,\n options = {}\n) => {\n const { selection, marks } = editor\n\n if (selection) {\n if (marks) {\n const node = { text, ...marks }\n Transforms.insertNodes(editor, node, {\n at: options.at,\n voids: options.voids,\n })\n } else {\n Transforms.insertText(editor, text, options)\n }\n\n editor.marks = null\n }\n}\n","import { EditorInterface } from '../interfaces/editor'\n\nexport const isBlock: EditorInterface['isBlock'] = (editor, value) => {\n return !editor.isInline(value)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const isEdge: EditorInterface['isEdge'] = (editor, point, at) => {\n return Editor.isStart(editor, point, at) || Editor.isEnd(editor, point, at)\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { Text } from '../interfaces/text'\n\nexport const isEmpty: EditorInterface['isEmpty'] = (editor, element) => {\n const { children } = element\n const [first] = children\n return (\n children.length === 0 ||\n (children.length === 1 &&\n Text.isText(first) &&\n first.text === '' &&\n !editor.isVoid(element))\n )\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Point } from '../interfaces/point'\n\nexport const isEnd: EditorInterface['isEnd'] = (editor, point, at) => {\n const end = Editor.end(editor, at)\n return Point.equals(point, end)\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { NORMALIZING } from '../utils/weak-maps'\n\nexport const isNormalizing: EditorInterface['isNormalizing'] = editor => {\n const isNormalizing = NORMALIZING.get(editor)\n return isNormalizing === undefined ? true : isNormalizing\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Point } from '../interfaces/point'\n\nexport const isStart: EditorInterface['isStart'] = (editor, point, at) => {\n // PERF: If the offset isn't `0` we know it's not the start.\n if (point.offset !== 0) {\n return false\n }\n\n const start = Editor.start(editor, at)\n return Point.equals(point, start)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const last: EditorInterface['last'] = (editor, at) => {\n const path = Editor.path(editor, at, { edge: 'end' })\n return Editor.node(editor, path)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const leaf: EditorInterface['leaf'] = (editor, at, options = {}) => {\n const path = Editor.path(editor, at, options)\n const node = Node.leaf(editor, path)\n return [node, path]\n}\n","import { Node, NodeEntry } from '../interfaces/node'\nimport { Editor, EditorLevelsOptions } from '../interfaces/editor'\nimport { Element } from '../interfaces/element'\n\nexport function* levels<T extends Node>(\n editor: Editor,\n options: EditorLevelsOptions<T> = {}\n): Generator<NodeEntry<T>, void, undefined> {\n const { at = editor.selection, reverse = false, voids = false } = options\n let { match } = options\n\n if (match == null) {\n match = () => true\n }\n\n if (!at) {\n return\n }\n\n const levels: NodeEntry<T>[] = []\n const path = Editor.path(editor, at)\n\n for (const [n, p] of Node.levels(editor, path)) {\n if (!match(n, p)) {\n continue\n }\n\n levels.push([n, p])\n\n if (!voids && Element.isElement(n) && Editor.isVoid(editor, n)) {\n break\n }\n }\n\n if (reverse) {\n levels.reverse()\n }\n\n yield* levels\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { NodeEntry } from '../interfaces/node'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\nimport { Element } from '../interfaces/element'\n\nexport const marks: EditorInterface['marks'] = (editor, options = {}) => {\n const { marks, selection } = editor\n\n if (!selection) {\n return null\n }\n\n if (marks) {\n return marks\n }\n\n if (Range.isExpanded(selection)) {\n const [match] = Editor.nodes(editor, { match: Text.isText })\n\n if (match) {\n const [node] = match as NodeEntry<Text>\n const { text, ...rest } = node\n return rest\n } else {\n return {}\n }\n }\n\n const { anchor } = selection\n const { path } = anchor\n let [node] = Editor.leaf(editor, path)\n\n if (anchor.offset === 0) {\n const prev = Editor.previous(editor, { at: path, match: Text.isText })\n const markedVoid = Editor.above(editor, {\n match: n =>\n Element.isElement(n) &&\n Editor.isVoid(editor, n) &&\n editor.markableVoid(n),\n })\n if (!markedVoid) {\n const block = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n })\n\n if (prev && block) {\n const [prevNode, prevPath] = prev\n const [, blockPath] = block\n\n if (Path.isAncestor(blockPath, prevPath)) {\n node = prevNode as Text\n }\n }\n }\n }\n\n const { text, ...rest } = node\n return rest\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Span } from '../interfaces/location'\nimport { Path } from '../interfaces/path'\n\nexport const next: EditorInterface['next'] = (editor, options = {}) => {\n const { mode = 'lowest', voids = false } = options\n let { match, at = editor.selection } = options\n\n if (!at) {\n return\n }\n\n const pointAfterLocation = Editor.after(editor, at, { voids })\n\n if (!pointAfterLocation) return\n\n const [, to] = Editor.last(editor, [])\n\n const span: Span = [pointAfterLocation.path, to]\n\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(`Cannot get the next node from the root node!`)\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n const [parent] = Editor.parent(editor, at)\n match = n => parent.children.includes(n)\n } else {\n match = () => true\n }\n }\n\n const [next] = Editor.nodes(editor, { at: span, match, mode, voids })\n return next\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const node: EditorInterface['node'] = (editor, at, options = {}) => {\n const path = Editor.path(editor, at, options)\n const node = Node.get(editor, path)\n return [node, path]\n}\n","import { Node, NodeEntry } from '../interfaces/node'\nimport { Editor, EditorNodesOptions } from '../interfaces/editor'\nimport { Span } from '../interfaces/location'\nimport { Element } from '../interfaces/element'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\n\nexport function* nodes<T extends Node>(\n editor: Editor,\n options: EditorNodesOptions<T> = {}\n): Generator<NodeEntry<T>, void, undefined> {\n const {\n at = editor.selection,\n mode = 'all',\n universal = false,\n reverse = false,\n voids = false,\n ignoreNonSelectable = false,\n } = options\n let { match } = options\n\n if (!match) {\n match = () => true\n }\n\n if (!at) {\n return\n }\n\n let from\n let to\n\n if (Span.isSpan(at)) {\n from = at[0]\n to = at[1]\n } else {\n const first = Editor.path(editor, at, { edge: 'start' })\n const last = Editor.path(editor, at, { edge: 'end' })\n from = reverse ? last : first\n to = reverse ? first : last\n }\n\n const nodeEntries = Node.nodes(editor, {\n reverse,\n from,\n to,\n pass: ([node]) => {\n if (!Element.isElement(node)) return false\n if (\n !voids &&\n (Editor.isVoid(editor, node) || Editor.isElementReadOnly(editor, node))\n )\n return true\n if (ignoreNonSelectable && !Editor.isSelectable(editor, node)) return true\n return false\n },\n })\n\n const matches: NodeEntry<T>[] = []\n let hit: NodeEntry<T> | undefined\n\n for (const [node, path] of nodeEntries) {\n if (\n ignoreNonSelectable &&\n Element.isElement(node) &&\n !Editor.isSelectable(editor, node)\n ) {\n continue\n }\n\n const isLower = hit && Path.compare(path, hit[1]) === 0\n\n // In highest mode any node lower than the last hit is not a match.\n if (mode === 'highest' && isLower) {\n continue\n }\n\n if (!match(node, path)) {\n // If we've arrived at a leaf text node that is not lower than the last\n // hit, then we've found a branch that doesn't include a match, which\n // means the match is not universal.\n if (universal && !isLower && Text.isText(node)) {\n return\n } else {\n continue\n }\n }\n\n // If there's a match and it's lower than the last, update the hit.\n if (mode === 'lowest' && isLower) {\n hit = [node, path]\n continue\n }\n\n // In lowest mode we emit the last hit, once it's guaranteed lowest.\n const emit: NodeEntry<T> | undefined =\n mode === 'lowest' ? hit : [node, path]\n\n if (emit) {\n if (universal) {\n matches.push(emit)\n } else {\n yield emit\n }\n }\n\n hit = [node, path]\n }\n\n // Since lowest is always emitting one behind, catch up at the end.\n if (mode === 'lowest' && hit) {\n if (universal) {\n matches.push(hit)\n } else {\n yield hit\n }\n }\n\n // Universal defers to ensure that the match occurs in every branch, so we\n // yield all of the matches after iterating.\n if (universal) {\n yield* matches\n }\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { DIRTY_PATH_KEYS, DIRTY_PATHS } from '../utils/weak-maps'\nimport { Path } from '../interfaces/path'\nimport { Node } from '../interfaces/node'\nimport { Element } from '../interfaces/element'\n\nexport const normalize: EditorInterface['normalize'] = (\n editor,\n options = {}\n) => {\n const { force = false, operation } = options\n const getDirtyPaths = (editor: Editor) => {\n return DIRTY_PATHS.get(editor) || []\n }\n\n const getDirtyPathKeys = (editor: Editor) => {\n return DIRTY_PATH_KEYS.get(editor) || new Set()\n }\n\n const popDirtyPath = (editor: Editor): Path => {\n const path = getDirtyPaths(editor).pop()!\n const key = path.join(',')\n getDirtyPathKeys(editor).delete(key)\n return path\n }\n\n if (!Editor.isNormalizing(editor)) {\n return\n }\n\n if (force) {\n const allPaths = Array.from(Node.nodes(editor), ([, p]) => p)\n const allPathKeys = new Set(allPaths.map(p => p.join(',')))\n DIRTY_PATHS.set(editor, allPaths)\n DIRTY_PATH_KEYS.set(editor, allPathKeys)\n }\n\n if (getDirtyPaths(editor).length === 0) {\n return\n }\n\n Editor.withoutNormalizing(editor, () => {\n /*\n Fix dirty elements with no children.\n editor.normalizeNode() does fix this, but some normalization fixes also require it to work.\n Running an initial pass avoids the catch-22 race condition.\n */\n for (const dirtyPath of getDirtyPaths(editor)) {\n if (Node.has(editor, dirtyPath)) {\n const entry = Editor.node(editor, dirtyPath)\n const [node, _] = entry\n\n /*\n The default normalizer inserts an empty text node in this scenario, but it can be customised.\n So there is some risk here.\n\n As long as the normalizer only inserts child nodes for this case it is safe to do in any order;\n by definition adding children to an empty node can't cause other paths to change.\n */\n if (Element.isElement(node) && node.children.length === 0) {\n editor.normalizeNode(entry, { operation })\n }\n }\n }\n\n let dirtyPaths = getDirtyPaths(editor)\n const initialDirtyPathsLength = dirtyPaths.length\n let iteration = 0\n\n while (dirtyPaths.length !== 0) {\n if (\n !editor.shouldNormalize({\n dirtyPaths,\n iteration,\n initialDirtyPathsLength,\n operation,\n })\n ) {\n return\n }\n\n const dirtyPath = popDirtyPath(editor)\n\n // If the node doesn't exist in the tree, it does not need to be normalized.\n if (Node.has(editor, dirtyPath)) {\n const entry = Editor.node(editor, dirtyPath)\n editor.normalizeNode(entry, { operation })\n }\n iteration++\n dirtyPaths = getDirtyPaths(editor)\n }\n })\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { Ancestor, NodeEntry } from '../interfaces/node'\n\nexport const parent: EditorInterface['parent'] = (editor, at, options = {}) => {\n const path = Editor.path(editor, at, options)\n const parentPath = Path.parent(path)\n const entry = Editor.node(editor, parentPath)\n return entry as NodeEntry<Ancestor>\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { PathRef } from '../interfaces/path-ref'\n\nexport const pathRef: EditorInterface['pathRef'] = (\n editor,\n path,\n options = {}\n) => {\n const { affinity = 'forward' } = options\n const ref: PathRef = {\n current: path,\n affinity,\n unref() {\n const { current } = ref\n const pathRefs = Editor.pathRefs(editor)\n pathRefs.delete(ref)\n ref.current = null\n return current\n },\n }\n\n const refs = Editor.pathRefs(editor)\n refs.add(ref)\n return ref\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { PATH_REFS } from '../utils/weak-maps'\n\nexport const pathRefs: EditorInterface['pathRefs'] = editor => {\n let refs = PATH_REFS.get(editor)\n\n if (!refs) {\n refs = new Set()\n PATH_REFS.set(editor, refs)\n }\n\n return refs\n}\n","import { EditorInterface, Node, Path, Point, Range } from '../interfaces'\n\nexport const path: EditorInterface['path'] = (editor, at, options = {}) => {\n const { depth, edge } = options\n\n if (Path.isPath(at)) {\n if (edge === 'start') {\n const [, firstPath] = Node.first(editor, at)\n at = firstPath\n } else if (edge === 'end') {\n const [, lastPath] = Node.last(editor, at)\n at = lastPath\n }\n }\n\n if (Range.isRange(at)) {\n if (edge === 'start') {\n at = Range.start(at)\n } else if (edge === 'end') {\n at = Range.end(at)\n } else {\n at = Path.common(at.anchor.path, at.focus.path)\n }\n }\n\n if (Point.isPoint(at)) {\n at = at.path\n }\n\n if (depth != null) {\n at = at.slice(0, depth)\n }\n\n return at\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { PointRef } from '../interfaces/point-ref'\n\nexport const pointRef: EditorInterface['pointRef'] = (\n editor,\n point,\n options = {}\n) => {\n const { affinity = 'forward' } = options\n const ref: PointRef = {\n current: point,\n affinity,\n unref() {\n const { current } = ref\n const pointRefs = Editor.pointRefs(editor)\n pointRefs.delete(ref)\n ref.current = null\n return current\n },\n }\n\n const refs = Editor.pointRefs(editor)\n refs.add(ref)\n return ref\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { POINT_REFS } from '../utils/weak-maps'\n\nexport const pointRefs: EditorInterface['pointRefs'] = editor => {\n let refs = POINT_REFS.get(editor)\n\n if (!refs) {\n refs = new Set()\n POINT_REFS.set(editor, refs)\n }\n\n return refs\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { Node } from '../interfaces/node'\nimport { Text } from '../interfaces/text'\nimport { Range } from '../interfaces/range'\n\nexport const point: EditorInterface['point'] = (editor, at, options = {}) => {\n const { edge = 'start' } = options\n\n if (Path.isPath(at)) {\n let path\n\n if (edge === 'end') {\n const [, lastPath] = Node.last(editor, at)\n path = lastPath\n } else {\n const [, firstPath] = Node.first(editor, at)\n path = firstPath\n }\n\n const node = Node.get(editor, path)\n\n if (!Text.isText(node)) {\n throw new Error(\n `Cannot get the ${edge} point in the node at path [${at}] because it has no ${edge} text node.`\n )\n }\n\n return { path, offset: edge === 'end' ? node.text.length : 0 }\n }\n\n if (Range.isRange(at)) {\n const [start, end] = Range.edges(at)\n return edge === 'start' ? start : end\n }\n\n return at\n}\n","import { Editor, EditorPositionsOptions } from '../interfaces/editor'\nimport { Point } from '../interfaces/point'\nimport { Range } from '../interfaces/range'\nimport { Element } from '../interfaces/element'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\nimport {\n getCharacterDistance,\n getWordDistance,\n splitByCharacterDistance,\n} from '../utils/string'\n\nexport function* positions(\n editor: Editor,\n options: EditorPositionsOptions = {}\n): Generator<Point, void, undefined> {\n const {\n at = editor.selection,\n unit = 'offset',\n reverse = false,\n voids = false,\n ignoreNonSelectable = false,\n } = options\n\n if (!at) {\n return\n }\n\n /**\n * Algorithm notes:\n *\n * Each step `distance` is dynamic depending on the underlying text\n * and the `unit` specified. Each step, e.g., a line or word, may\n * span multiple text nodes, so we iterate through the text both on\n * two levels in step-sync:\n *\n * `leafText` stores the text on a text leaf level, and is advanced\n * through using the counters `leafTextOffset` and `leafTextRemaining`.\n *\n * `blockText` stores the text on a block level, and is shortened\n * by `distance` every time it is advanced.\n *\n * We only maintain a window of one blockText and one leafText because\n * a block node always appears before all of its leaf nodes.\n */\n\n const range = Editor.range(editor, at)\n const [start, end] = Range.edges(range)\n const first = reverse ? end : start\n let isNewBlock = false\n let blockText = ''\n let distance = 0 // Distance for leafText to catch up to blockText.\n let leafTextRemaining = 0\n let leafTextOffset = 0\n\n // Iterate through all nodes in range, grabbing entire textual content\n // of block nodes in blockText, and text nodes in leafText.\n // Exploits the fact that nodes are sequenced in such a way that we first\n // encounter the block node, then all of its text nodes, so when iterating\n // through the blockText and leafText we just need to remember a window of\n // one block node and leaf node, respectively.\n for (const [node, path] of Editor.nodes(editor, {\n at,\n reverse,\n voids,\n ignoreNonSelectable,\n })) {\n /*\n * ELEMENT NODE - Yield position(s) for voids, collect blockText for blocks\n */\n if (Element.isElement(node)) {\n // Void nodes are a special case, so by default we will always\n // yield their first point. If the `voids` option is set to true,\n // then we will iterate over their content.\n if (!voids && (editor.isVoid(node) || editor.isElementReadOnly(node))) {\n yield Editor.start(editor, path)\n continue\n }\n\n // Inline element nodes are ignored as they don't themselves\n // contribute to `blockText` or `leafText` - their parent and\n // children do.\n if (editor.isInline(node)) continue\n\n // Block element node - set `blockText` to its text content.\n if (Editor.hasInlines(editor, node)) {\n // We always exhaust block nodes before encountering a new one:\n // console.assert(blockText === '',\n // `blockText='${blockText}' - `+\n // `not exhausted before new block node`, path)\n\n // Ensure range considered is capped to `range`, in the\n // start/end edge cases where block extends beyond range.\n // Equivalent to this, but presumably more performant:\n // blockRange = Editor.range(editor, ...Editor.edges(editor, path))\n // blockRange = Range.intersection(range, blockRange) // intersect\n // blockText = Editor.string(editor, blockRange, { voids })\n const e = Path.isAncestor(path, end.path)\n ? end\n : Editor.end(editor, path)\n const s = Path.isAncestor(path, start.path)\n ? start\n : Editor.start(editor, path)\n\n blockText = Editor.string(editor, { anchor: s, focus: e }, { voids })\n isNewBlock = true\n }\n }\n\n /*\n * TEXT LEAF NODE - Iterate through text content, yielding\n * positions every `distance` offset according to `unit`.\n */\n if (Text.isText(node)) {\n const isFirst = Path.equals(path, first.path)\n\n // Proof that we always exhaust text nodes before encountering a new one:\n // console.assert(leafTextRemaining <= 0,\n // `leafTextRemaining=${leafTextRemaining} - `+\n // `not exhausted before new leaf text node`, path)\n\n // Reset `leafText` counters for new text node.\n if (isFirst) {\n leafTextRemaining = reverse\n ? first.offset\n : node.text.length - first.offset\n leafTextOffset = first.offset // Works for reverse too.\n } else {\n leafTextRemaining = node.text.length\n leafTextOffset = reverse ? leafTextRemaining : 0\n }\n\n // Yield position at the start of node (potentially).\n if (isFirst || isNewBlock || unit === 'offset') {\n yield { path, offset: leafTextOffset }\n isNewBlock = false\n }\n\n // Yield positions every (dynamically calculated) `distance` offset.\n while (true) {\n // If `leafText` has caught up with `blockText` (distance=0),\n // and if blockText is exhausted, break to get another block node,\n // otherwise advance blockText forward by the new `distance`.\n if (distance === 0) {\n if (blockText === '') break\n distance = calcDistance(blockText, unit, reverse)\n // Split the string at the previously found distance and use the\n // remaining string for the next iteration.\n blockText = splitByCharacterDistance(blockText, distance, reverse)[1]\n }\n\n // Advance `leafText` by the current `distance`.\n leafTextOffset = reverse\n ? leafTextOffset - distance\n : leafTextOffset + distance\n leafTextRemaining = leafTextRemaining - distance\n\n // If `leafText` is exhausted, break to get a new leaf node\n // and set distance to the overflow amount, so we'll (maybe)\n // catch up to blockText in the next leaf text node.\n if (leafTextRemaining < 0) {\n distance = -leafTextRemaining\n break\n }\n\n // Successfully walked `distance` offsets through `leafText`\n // to catch up with `blockText`, so we can reset `distance`\n // and yield this position in this node.\n distance = 0\n yield { path, offset: leafTextOffset }\n }\n }\n }\n // Proof that upon completion, we've exahusted both leaf and block text:\n // console.assert(leafTextRemaining <= 0, \"leafText wasn't exhausted\")\n // console.assert(blockText === '', \"blockText wasn't exhausted\")\n\n // Helper:\n // Return the distance in offsets for a step of size `unit` on given string.\n function calcDistance(text: string, unit: string, reverse?: boolean) {\n if (unit === 'character') {\n return getCharacterDistance(text, reverse)\n } else if (unit === 'word') {\n return getWordDistance(text, reverse)\n } else if (unit === 'line' || unit === 'block') {\n return text.length\n }\n return 1\n }\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Span } from '../interfaces/location'\nimport { Path } from '../interfaces/path'\n\nexport const previous: EditorInterface['previous'] = (editor, options = {}) => {\n const { mode = 'lowest', voids = false } = options\n let { match, at = editor.selection } = options\n\n if (!at) {\n return\n }\n\n const pointBeforeLocation = Editor.before(editor, at, { voids })\n\n if (!pointBeforeLocation) {\n return\n }\n\n const [, to] = Editor.first(editor, [])\n\n // The search location is from the start of the document to the path of\n // the point before the location passed in\n const span: Span = [pointBeforeLocation.path, to]\n\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(`Cannot get the previous node from the root node!`)\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n const [parent] = Editor.parent(editor, at)\n match = n => parent.children.includes(n)\n } else {\n match = () => true\n }\n }\n\n const [previous] = Editor.nodes(editor, {\n reverse: true,\n at: span,\n match,\n mode,\n voids,\n })\n\n return previous\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { RangeRef } from '../interfaces/range-ref'\n\nexport const rangeRef: EditorInterface['rangeRef'] = (\n editor,\n range,\n options = {}\n) => {\n const { affinity = 'forward' } = options\n const ref: RangeRef = {\n current: range,\n affinity,\n unref() {\n const { current } = ref\n const rangeRefs = Editor.rangeRefs(editor)\n rangeRefs.delete(ref)\n ref.current = null\n return current\n },\n }\n\n const refs = Editor.rangeRefs(editor)\n refs.add(ref)\n return ref\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { RANGE_REFS } from '../utils/weak-maps'\n\nexport const rangeRefs: EditorInterface['rangeRefs'] = editor => {\n let refs = RANGE_REFS.get(editor)\n\n if (!refs) {\n refs = new Set()\n RANGE_REFS.set(editor, refs)\n }\n\n return refs\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\n\nexport const range: EditorInterface['range'] = (editor, at, to) => {\n if (Range.isRange(at) && !to) {\n return at\n }\n\n const start = Editor.start(editor, at)\n const end = Editor.end(editor, to || at)\n return { anchor: start, focus: end }\n}\n","import { Node } from '../interfaces/node'\nimport { Path } from '../interfaces/path'\nimport { Text } from '../interfaces/text'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { FLUSHING } from '../utils/weak-maps'\nimport { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const removeMark: EditorInterface['removeMark'] = (editor, key) => {\n const { selection } = editor\n\n if (selection) {\n const match = (node: Node, path: Path) => {\n if (!Text.isText(node)) {\n return false // marks can only be applied to text\n }\n const [parentNode, parentPath] = Editor.parent(editor, path)\n return !editor.isVoid(parentNode) || editor.markableVoid(parentNode)\n }\n const expandedSelection = Range.isExpanded(selection)\n let markAcceptingVoidSelected = false\n if (!expandedSelection) {\n const [selectedNode, selectedPath] = Editor.node(editor, selection)\n if (selectedNode && match(selectedNode, selectedPath)) {\n const [parentNode] = Editor.parent(editor, selectedPath)\n markAcceptingVoidSelected =\n parentNode && editor.markableVoid(parentNode)\n }\n }\n if (expandedSelection || markAcceptingVoidSelected) {\n Transforms.unsetNodes(editor, key, {\n match,\n split: true,\n voids: true,\n })\n } else {\n const marks = { ...(Editor.marks(editor) || {}) }\n delete marks[key]\n editor.marks = marks\n if (!FLUSHING.get(editor)) {\n editor.onChange()\n }\n }\n }\n}\n","import { EditorInterface } from '../interfaces/editor'\nimport { NORMALIZING } from '../utils/weak-maps'\n\nexport const setNormalizing: EditorInterface['setNormalizing'] = (\n editor,\n isNormalizing\n) => {\n NORMALIZING.set(editor, isNormalizing)\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const start: EditorInterface['start'] = (editor, at) => {\n return Editor.point(editor, at, { edge: 'start' })\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Text } from '../interfaces/text'\nimport { Path } from '../interfaces/path'\n\nexport const string: EditorInterface['string'] = (editor, at, options = {}) => {\n const { voids = false } = options\n const range = Editor.range(editor, at)\n const [start, end] = Range.edges(range)\n let text = ''\n\n for (const [node, path] of Editor.nodes(editor, {\n at: range,\n match: Text.isText,\n voids,\n })) {\n let t = node.text\n\n if (Path.equals(path, end.path)) {\n t = t.slice(0, end.offset)\n }\n\n if (Path.equals(path, start.path)) {\n t = t.slice(start.offset)\n }\n\n text += t\n }\n\n return text\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport { Element } from '../interfaces/element'\nimport { Text } from '../interfaces/text'\n\nexport const unhangRange: EditorInterface['unhangRange'] = (\n editor,\n range,\n options = {}\n) => {\n const { voids = false } = options\n let [start, end] = Range.edges(range)\n\n // PERF: exit early if we can guarantee that the range isn't hanging.\n if (\n start.offset !== 0 ||\n end.offset !== 0 ||\n Range.isCollapsed(range) ||\n Path.hasPrevious(end.path)\n ) {\n return range\n }\n\n const endBlock = Editor.above(editor, {\n at: end,\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n voids,\n })\n const blockPath = endBlock ? endBlock[1] : []\n const first = Editor.start(editor, start)\n const before = { anchor: first, focus: end }\n let skip = true\n\n for (const [node, path] of Editor.nodes(editor, {\n at: before,\n match: Text.isText,\n reverse: true,\n voids,\n })) {\n if (skip) {\n skip = false\n continue\n }\n\n if (node.text !== '' || Path.isBefore(path, blockPath)) {\n end = { path, offset: node.text.length }\n break\n }\n }\n\n return { anchor: start, focus: end }\n}\n","import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const withoutNormalizing: EditorInterface['withoutNormalizing'] = (\n editor,\n fn\n) => {\n const value = Editor.isNormalizing(editor)\n Editor.setNormalizing(editor, false)\n try {\n fn()\n } finally {\n Editor.setNormalizing(editor, value)\n }\n Editor.normalize(editor)\n}\n","import { TextTransforms } from '../interfaces/transforms/text'\nimport { Editor } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Point } from '../interfaces/point'\nimport { Path } from '../interfaces/path'\nimport { Transforms } from '../interfaces/transforms'\nimport { Element } from '../interfaces/element'\nimport { NodeEntry } from '../interfaces/node'\n\nexport const deleteText: TextTransforms['delete'] = (editor, options = {}) => {\n Editor.withoutNormalizing(editor, () => {\n const {\n reverse = false,\n unit = 'character',\n distance = 1,\n voids = false,\n } = options\n let { at = editor.selection, hanging = false } = options\n\n if (!at) {\n return\n }\n\n let isCollapsed = false\n if (Range.isRange(at) && Range.isCollapsed(at)) {\n isCollapsed = true\n at = at.anchor\n }\n\n if (Point.isPoint(at)) {\n const furthestVoid = Editor.void(editor, { at, mode: 'highest' })\n\n if (!voids && furthestVoid) {\n const [, voidPath] = furthestVoid\n at = voidPath\n } else {\n const opts = { unit, distance }\n const target = reverse\n ? Editor.before(editor, at, opts) || Editor.start(editor, [])\n : Editor.after(editor, at, opts) || Editor.end(editor, [])\n at = { anchor: at, focus: target }\n hanging = true\n }\n }\n\n if (Path.isPath(at)) {\n Transforms.removeNodes(editor, { at, voids })\n return\n }\n\n if (Range.isCollapsed(at)) {\n return\n }\n\n if (!hanging) {\n const [, end] = Range.edges(at)\n const endOfDoc = Editor.end(editor, [])\n\n if (!Point.equals(end, endOfDoc)) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n }\n\n let [start, end] = Range.edges(at)\n const startBlock = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at: start,\n voids,\n })\n const endBlock = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at: end,\n voids,\n })\n const isAcrossBlocks =\n startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1])\n const isSingleText = Path.equals(start.path, end.path)\n const startNonEditable = voids\n ? null\n : Editor.void(editor, { at: start, mode: 'highest' }) ??\n Editor.elementReadOnly(editor, { at: start, mode: 'highest' })\n const endNonEditable = voids\n ? null\n : Editor.void(editor, { at: end, mode: 'highest' }) ??\n Editor.elementReadOnly(editor, { at: end, mode: 'highest' })\n\n // If the start or end points are inside an inline void, nudge them out.\n if (startNonEditable) {\n const before = Editor.before(editor, start)\n\n if (before && startBlock && Path.isAncestor(startBlock[1], before.path)) {\n start = before\n }\n }\n\n if (endNonEditable) {\n const after = Editor.after(editor, end)\n\n if (after && endBlock && Path.isAncestor(endBlock[1], after.path)) {\n end = after\n }\n }\n\n // Get the highest nodes that are completely inside the range, as well as\n // the start and end nodes.\n const matches: NodeEntry[] = []\n let lastPath: Path | undefined\n\n for (const entry of Editor.nodes(editor, { at, voids })) {\n const [node, path] = entry\n\n if (lastPath && Path.compare(path, lastPath) === 0) {\n continue\n }\n\n if (\n (!voids &&\n Element.isElement(node) &&\n (Editor.isVoid(editor, node) ||\n Editor.isElementReadOnly(editor, node))) ||\n (!Path.isCommon(path, start.path) && !Path.isCommon(path, end.path))\n ) {\n matches.push(entry)\n lastPath = path\n }\n }\n\n const pathRefs = Array.from(matches, ([, p]) => Editor.pathRef(editor, p))\n const startRef = Editor.pointRef(editor, start)\n const endRef = Editor.pointRef(editor, end)\n\n let removedText = ''\n\n if (!isSingleText && !startNonEditable) {\n const point = startRef.current!\n const [node] = Editor.leaf(editor, point)\n const { path } = point\n const { offset } = start\n const text = node.text.slice(offset)\n if (text.length > 0) {\n editor.apply({ type: 'remove_text', path, offset, text })\n removedText = text\n }\n }\n\n pathRefs\n .reverse()\n .map(r => r.unref())\n .filter((r): r is Path => r !== null)\n .forEach(p => Transforms.removeNodes(editor, { at: p, voids }))\n\n if (!endNonEditable) {\n const point = endRef.current!\n const [node] = Editor.leaf(editor, point)\n const { path } = point\n const offset = isSingleText ? start.offset : 0\n const text = node.text.slice(offset, end.offset)\n if (text.length > 0) {\n editor.apply({ type: 'remove_text', path, offset, text })\n removedText = text\n }\n }\n\n if (!isSingleText && isAcrossBlocks && endRef.current && startRef.current) {\n Transforms.mergeNodes(editor, {\n at: endRef.current,\n hanging: true,\n voids,\n })\n }\n\n // For Thai script, deleting N character(s) backward should delete\n // N code point(s) instead of an entire grapheme cluster.\n // Therefore, the remaining code points should be inserted back.\n if (\n isCollapsed &&\n reverse &&\n unit === 'character' &&\n removedText.length > 1 &&\n removedText.match(/[\\u0E00-\\u0E7F]+/)\n ) {\n Transforms.insertText(\n editor,\n removedText.slice(0, removedText.length - distance)\n )\n }\n\n const startUnref = startRef.unref()\n const endUnref = endRef.unref()\n const point = reverse ? startUnref || endUnref : endUnref || startUnref\n\n if (options.at == null && point) {\n Transforms.select(editor, point)\n }\n })\n}\n","import { Transforms } from '../interfaces/transforms'\nimport { Editor } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport { Element } from '../interfaces/element'\nimport { Node, NodeEntry } from '../interfaces/node'\nimport { Text } from '../interfaces/text'\nimport { TextTransforms } from '../interfaces/transforms/text'\nimport { getDefaultInsertLocation } from '../utils'\n\nexport const insertFragment: TextTransforms['insertFragment'] = (\n editor,\n fragment,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { hanging = false, voids = false } = options\n let { at = getDefaultInsertLocation(editor) } = options\n\n if (!fragment.length) {\n return\n }\n\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const [, end] = Range.edges(at)\n\n if (!voids && Editor.void(editor, { at: end })) {\n return\n }\n\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at })\n at = pointRef.unref()!\n }\n } else if (Path.isPath(at)) {\n at = Editor.start(editor, at)\n }\n\n if (!voids && Editor.void(editor, { at })) {\n return\n }\n\n // If the insert point is at the edge of an inline node, move it outside\n // instead since it will need to be split otherwise.\n const inlineElementMatch = Editor.above(editor, {\n at,\n match: n => Element.isElement(n) && Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n })\n\n if (inlineElementMatch) {\n const [, inlinePath] = inlineElementMatch\n\n if (Editor.isEnd(editor, at, inlinePath)) {\n const after = Editor.after(editor, inlinePath)!\n at = after\n } else if (Editor.isStart(editor, at, inlinePath)) {\n const before = Editor.before(editor, inlinePath)!\n at = before\n }\n }\n\n const blockMatch = Editor.above(editor, {\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n at,\n voids,\n })!\n const [, blockPath] = blockMatch\n const isBlockStart = Editor.isStart(editor, at, blockPath)\n const isBlockEnd = Editor.isEnd(editor, at, blockPath)\n const isBlockEmpty = isBlockStart && isBlockEnd\n const mergeStart = !isBlockStart || (isBlockStart && isBlockEnd)\n const mergeEnd = !isBlockEnd\n const [, firstPath] = Node.first({ children: fragment }, [])\n const [, lastPath] = Node.last({ children: fragment }, [])\n\n const matches: NodeEntry[] = []\n const matcher = ([n, p]: NodeEntry) => {\n const isRoot = p.length === 0\n if (isRoot) {\n return false\n }\n\n if (isBlockEmpty) {\n return true\n }\n\n if (\n mergeStart &&\n Path.isAncestor(p, firstPath) &&\n Element.isElement(n) &&\n !editor.isVoid(n) &&\n !editor.isInline(n)\n ) {\n return false\n }\n\n if (\n mergeEnd &&\n Path.isAncestor(p, lastPath) &&\n Element.isElement(n) &&\n !editor.isVoid(n) &&\n !editor.isInline(n)\n ) {\n return false\n }\n\n return true\n }\n\n for (const entry of Node.nodes({ children: fragment }, { pass: matcher })) {\n if (matcher(entry)) {\n matches.push(entry)\n }\n }\n\n const starts = []\n const middles = []\n const ends = []\n let starting = true\n let hasBlocks = false\n\n for (const [node] of matches) {\n if (Element.isElement(node) && !editor.isInline(node)) {\n starting = false\n hasBlocks = true\n middles.push(node)\n } else if (starting) {\n starts.push(node)\n } else {\n ends.push(node)\n }\n }\n\n const [inlineMatch] = Editor.nodes(editor, {\n at,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n })!\n\n const [, inlinePath] = inlineMatch\n const isInlineStart = Editor.isStart(editor, at, inlinePath)\n const isInlineEnd = Editor.isEnd(editor, at, inlinePath)\n\n const middleRef = Editor.pathRef(\n editor,\n isBlockEnd && !ends.length ? Path.next(blockPath) : blockPath\n )\n\n const endRef = Editor.pathRef(\n editor,\n isInlineEnd ? Path.next(inlinePath) : inlinePath\n )\n\n Transforms.splitNodes(editor, {\n at,\n match: n =>\n hasBlocks\n ? Element.isElement(n) && Editor.isBlock(editor, n)\n : Text.isText(n) || Editor.isInline(editor, n),\n mode: hasBlocks ? 'lowest' : 'highest',\n always:\n hasBlocks &&\n (!isBlockStart || starts.length > 0) &&\n (!isBlockEnd || ends.length > 0),\n voids,\n })\n\n const startRef = Editor.pathRef(\n editor,\n !isInlineStart || (isInlineStart && isInlineEnd)\n ? Path.next(inlinePath)\n : inlinePath\n )\n\n Transforms.insertNodes(editor, starts, {\n at: startRef.current!,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n })\n\n if (isBlockEmpty && !starts.length && middles.length && !ends.length) {\n Transforms.delete(editor, { at: blockPath, voids })\n }\n\n Transforms.insertNodes(editor, middles, {\n at: middleRef.current!,\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n mode: 'lowest',\n voids,\n })\n\n Transforms.insertNodes(editor, ends, {\n at: endRef.current!,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n })\n\n if (!options.at) {\n let path\n\n if (ends.length > 0 && endRef.current) {\n path = Path.previous(endRef.current)\n } else if (middles.length > 0 && middleRef.current) {\n path = Path.previous(middleRef.current)\n } else if (startRef.current) {\n path = Path.previous(startRef.current)\n }\n\n if (path) {\n const end = Editor.end(editor, path)\n Transforms.select(editor, end)\n }\n }\n\n startRef.unref()\n middleRef.unref()\n endRef.unref()\n })\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Transforms } from '../interfaces/transforms'\nimport { Range } from '../interfaces/range'\n\nexport const collapse: SelectionTransforms['collapse'] = (\n editor,\n options = {}\n) => {\n const { edge = 'anchor' } = options\n const { selection } = editor\n\n if (!selection) {\n return\n } else if (edge === 'anchor') {\n Transforms.select(editor, selection.anchor)\n } else if (edge === 'focus') {\n Transforms.select(editor, selection.focus)\n } else if (edge === 'start') {\n const [start] = Range.edges(selection)\n Transforms.select(editor, start)\n } else if (edge === 'end') {\n const [, end] = Range.edges(selection)\n Transforms.select(editor, end)\n }\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\n\nexport const deselect: SelectionTransforms['deselect'] = editor => {\n const { selection } = editor\n\n if (selection) {\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: null,\n })\n }\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Range } from '../interfaces/range'\nimport { Editor } from '../interfaces/editor'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const move: SelectionTransforms['move'] = (editor, options = {}) => {\n const { selection } = editor\n const { distance = 1, unit = 'character', reverse = false } = options\n let { edge = null } = options\n\n if (!selection) {\n return\n }\n\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor'\n }\n\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus'\n }\n\n const { anchor, focus } = selection\n const opts = { distance, unit, ignoreNonSelectable: true }\n const props: Partial<Range> = {}\n\n if (edge == null || edge === 'anchor') {\n const point = reverse\n ? Editor.before(editor, anchor, opts)\n : Editor.after(editor, anchor, opts)\n\n if (point) {\n props.anchor = point\n }\n }\n\n if (edge == null || edge === 'focus') {\n const point = reverse\n ? Editor.before(editor, focus, opts)\n : Editor.after(editor, focus, opts)\n\n if (point) {\n props.focus = point\n }\n }\n\n Transforms.setSelection(editor, props)\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Editor } from '../interfaces/editor'\nimport { Transforms } from '../interfaces/transforms'\nimport { Range } from '../interfaces/range'\nimport { Scrubber } from '../interfaces/scrubber'\n\nexport const select: SelectionTransforms['select'] = (editor, target) => {\n const { selection } = editor\n target = Editor.range(editor, target)\n\n if (selection) {\n Transforms.setSelection(editor, target)\n return\n }\n\n if (!Range.isRange(target)) {\n throw new Error(\n `When setting the selection and the current selection is \\`null\\` you must provide at least an \\`anchor\\` and \\`focus\\`, but you passed: ${Scrubber.stringify(\n target\n )}`\n )\n }\n\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: target,\n })\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const setPoint: SelectionTransforms['setPoint'] = (\n editor,\n props,\n options = {}\n) => {\n const { selection } = editor\n let { edge = 'both' } = options\n\n if (!selection) {\n return\n }\n\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor'\n }\n\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus'\n }\n\n const { anchor, focus } = selection\n const point = edge === 'anchor' ? anchor : focus\n\n Transforms.setSelection(editor, {\n [edge === 'anchor' ? 'anchor' : 'focus']: { ...point, ...props },\n })\n}\n","import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Range } from '../interfaces/range'\nimport { Point } from '../interfaces/point'\n\nexport const setSelection: SelectionTransforms['setSelection'] = (\n editor,\n props\n) => {\n const { selection } = editor\n const oldProps: Partial<Range> | null = {}\n const newProps: Partial<Range> = {}\n\n if (!selection) {\n return\n }\n\n for (const k in props) {\n if (\n (k === 'anchor' &&\n props.anchor != null &&\n !Point.equals(props.anchor, selection.anchor)) ||\n (k === 'focus' &&\n props.focus != null &&\n !Point.equals(props.focus, selection.focus)) ||\n (k !== 'anchor' && k !== 'focus' && props[k] !== selection[k])\n ) {\n oldProps[k] = selection[k]\n newProps[k] = props[k]\n }\n }\n\n if (Object.keys(oldProps).length > 0) {\n editor.apply({\n type: 'set_selection',\n properties: oldProps,\n newProperties: newProps,\n })\n }\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { Point } from '../interfaces/point'\nimport { Text } from '../interfaces/text'\nimport { Element } from '../interfaces/element'\nimport { Path } from '../interfaces/path'\nimport { getDefaultInsertLocation } from '../utils'\n\nexport const insertNodes: NodeTransforms['insertNodes'] = (\n editor,\n nodes,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { hanging = false, voids = false, mode = 'lowest' } = options\n let { at, match, select } = options\n\n if (Node.isNode(nodes)) {\n nodes = [nodes]\n }\n\n if (nodes.length === 0) {\n return\n }\n\n const [node] = nodes\n\n if (!at) {\n at = getDefaultInsertLocation(editor)\n select = true\n }\n\n if (select == null) {\n select = false\n }\n\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const [, end] = Range.edges(at)\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at })\n at = pointRef.unref()!\n }\n }\n\n if (Point.isPoint(at)) {\n if (match == null) {\n if (Text.isText(node)) {\n match = n => Text.isText(n)\n } else if (editor.isInline(node)) {\n match = n => Text.isText(n) || Editor.isInline(editor, n)\n } else {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n }\n\n const [entry] = Editor.nodes(editor, {\n at: at.path,\n match,\n mode,\n voids,\n })\n\n if (entry) {\n const [, matchPath] = entry\n const pathRef = Editor.pathRef(editor, matchPath)\n const isAtEnd = Editor.isEnd(editor, at, matchPath)\n Transforms.splitNodes(editor, { at, match, mode, voids })\n const path = pathRef.unref()!\n at = isAtEnd ? Path.next(path) : path\n } else {\n return\n }\n }\n\n const parentPath = Path.parent(at)\n let index = at[at.length - 1]\n\n if (!voids && Editor.void(editor, { at: parentPath })) {\n return\n }\n\n for (const node of nodes) {\n const path = parentPath.concat(index)\n index++\n editor.apply({ type: 'insert_node', path, node })\n at = Path.next(at)\n }\n at = Path.previous(at)\n\n if (select) {\n const point = Editor.end(editor, at)\n\n if (point) {\n Transforms.select(editor, point)\n }\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\nimport { Ancestor, NodeEntry } from '../interfaces/node'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const liftNodes: NodeTransforms['liftNodes'] = (\n editor,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { at = editor.selection, mode = 'lowest', voids = false } = options\n let { match } = options\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n if (!at) {\n return\n }\n\n const matches = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(matches, ([, p]) => Editor.pathRef(editor, p))\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n\n if (path.length < 2) {\n throw new Error(\n `Cannot lift node at a path [${path}] because it has a depth of less than \\`2\\`.`\n )\n }\n\n const parentNodeEntry = Editor.node(editor, Path.parent(path))\n const [parent, parentPath] = parentNodeEntry as NodeEntry<Ancestor>\n const index = path[path.length - 1]\n const { length } = parent.children\n\n if (length === 1) {\n const toPath = Path.next(parentPath)\n Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n Transforms.removeNodes(editor, { at: parentPath, voids })\n } else if (index === 0) {\n Transforms.moveNodes(editor, { at: path, to: parentPath, voids })\n } else if (index === length - 1) {\n const toPath = Path.next(parentPath)\n Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n } else {\n const splitPath = Path.next(path)\n const toPath = Path.next(parentPath)\n Transforms.splitNodes(editor, { at: splitPath, voids })\n Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n }\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { Element } from '../interfaces/element'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { Text } from '../interfaces/text'\nimport { Scrubber } from '../interfaces/scrubber'\nimport { Node } from '../interfaces/node'\n\nconst hasSingleChildNest = (editor: Editor, node: Node): boolean => {\n if (Element.isElement(node)) {\n const element = node as Element\n if (Editor.isVoid(editor, node)) {\n return true\n } else if (element.children.length === 1) {\n return hasSingleChildNest(editor, element.children[0])\n } else {\n return false\n }\n } else if (Editor.isEditor(node)) {\n return false\n } else {\n return true\n }\n}\n\nexport const mergeNodes: NodeTransforms['mergeNodes'] = (\n editor,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n let { match, at = editor.selection } = options\n const { hanging = false, voids = false, mode = 'lowest' } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n const [parent] = Editor.parent(editor, at)\n match = n => parent.children.includes(n)\n } else {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const [, end] = Range.edges(at)\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at })\n at = pointRef.unref()!\n\n if (options.at == null) {\n Transforms.select(editor, at)\n }\n }\n }\n\n const [current] = Editor.nodes(editor, { at, match, voids, mode })\n const prev = Editor.previous(editor, { at, match, voids, mode })\n\n if (!current || !prev) {\n return\n }\n\n const [node, path] = current\n const [prevNode, prevPath] = prev\n\n if (path.length === 0 || prevPath.length === 0) {\n return\n }\n\n const newPath = Path.next(prevPath)\n const commonPath = Path.common(path, prevPath)\n const isPreviousSibling = Path.isSibling(path, prevPath)\n const levels = Array.from(Editor.levels(editor, { at: path }), ([n]) => n)\n .slice(commonPath.length)\n .slice(0, -1)\n\n // Determine if the merge will leave an ancestor of the path empty as a\n // result, in which case we'll want to remove it after merging.\n const emptyAncestor = Editor.above(editor, {\n at: path,\n mode: 'highest',\n match: n => levels.includes(n) && hasSingleChildNest(editor, n),\n })\n\n const emptyRef = emptyAncestor && Editor.pathRef(editor, emptyAncestor[1])\n let properties\n let position\n\n // Ensure that the nodes are equivalent, and figure out what the position\n // and extra properties of the merge will be.\n if (Text.isText(node) && Text.isText(prevNode)) {\n const { text, ...rest } = node\n position = prevNode.text.length\n properties = rest as Partial<Text>\n } else if (Element.isElement(node) && Element.isElement(prevNode)) {\n const { children, ...rest } = node\n position = prevNode.children.length\n properties = rest as Partial<Element>\n } else {\n throw new Error(\n `Cannot merge the node at path [${path}] with the previous sibling because it is not the same kind: ${Scrubber.stringify(\n node\n )} ${Scrubber.stringify(prevNode)}`\n )\n }\n\n // If the node isn't already the next sibling of the previous node, move\n // it so that it is before merging.\n if (!isPreviousSibling) {\n Transforms.moveNodes(editor, { at: path, to: newPath, voids })\n }\n\n // If there was going to be an empty ancestor of the node that was merged,\n // we remove it from the tree.\n if (emptyRef) {\n Transforms.removeNodes(editor, { at: emptyRef.current!, voids })\n }\n\n // If the target node that we're merging with is empty, remove it instead\n // of merging the two. This is a common rich text editor behavior to\n // prevent losing formatting when deleting entire nodes when you have a\n // hanging selection.\n // if prevNode is first child in parent,don't remove it.\n if (\n (Element.isElement(prevNode) && Editor.isEmpty(editor, prevNode)) ||\n (Text.isText(prevNode) &&\n prevNode.text === '' &&\n prevPath[prevPath.length - 1] !== 0)\n ) {\n Transforms.removeNodes(editor, { at: prevPath, voids })\n } else {\n editor.apply({\n type: 'merge_node',\n path: newPath,\n position,\n properties,\n })\n }\n\n if (emptyRef) {\n emptyRef.unref()\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\n\nexport const moveNodes: NodeTransforms['moveNodes'] = (editor, options) => {\n Editor.withoutNormalizing(editor, () => {\n const {\n to,\n at = editor.selection,\n mode = 'lowest',\n voids = false,\n } = options\n let { match } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n const toRef = Editor.pathRef(editor, to)\n const targets = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(targets, ([, p]) => Editor.pathRef(editor, p))\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n const newPath = toRef.current!\n\n if (path.length !== 0) {\n editor.apply({ type: 'move_node', path, newPath })\n }\n\n if (\n toRef.current &&\n Path.isSibling(newPath, path) &&\n Path.isAfter(newPath, path)\n ) {\n // When performing a sibling move to a later index, the path at the destination is shifted\n // to before the insertion point instead of after. To ensure our group of nodes are inserted\n // in the correct order we increment toRef to account for that\n toRef.current = Path.next(toRef.current)\n }\n }\n\n toRef.unref()\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\nimport { Range } from '../interfaces/range'\n\nexport const removeNodes: NodeTransforms['removeNodes'] = (\n editor,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { hanging = false, voids = false, mode = 'lowest' } = options\n let { at = editor.selection, match } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n\n const depths = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(depths, ([, p]) => Editor.pathRef(editor, p))\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n\n if (path) {\n const [node] = Editor.node(editor, path)\n editor.apply({ type: 'remove_node', path, node })\n }\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { Node } from '../interfaces/node'\n\nexport const setNodes: NodeTransforms['setNodes'] = (\n editor,\n props: Partial<Node>,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n let { match, at = editor.selection, compare, merge } = options\n const {\n hanging = false,\n mode = 'lowest',\n split = false,\n voids = false,\n } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n\n if (split && Range.isRange(at)) {\n if (\n Range.isCollapsed(at) &&\n Editor.leaf(editor, at.anchor)[0].text.length > 0\n ) {\n // If the range is collapsed in a non-empty node and 'split' is true, there's nothing to\n // set that won't get normalized away\n return\n }\n const rangeRef = Editor.rangeRef(editor, at, { affinity: 'inward' })\n const [start, end] = Range.edges(at)\n const splitMode = mode === 'lowest' ? 'lowest' : 'highest'\n const endAtEndOfNode = Editor.isEnd(editor, end, end.path)\n Transforms.splitNodes(editor, {\n at: end,\n match,\n mode: splitMode,\n voids,\n always: !endAtEndOfNode,\n })\n const startAtStartOfNode = Editor.isStart(editor, start, start.path)\n Transforms.splitNodes(editor, {\n at: start,\n match,\n mode: splitMode,\n voids,\n always: !startAtStartOfNode,\n })\n at = rangeRef.unref()!\n\n if (options.at == null) {\n Transforms.select(editor, at)\n }\n }\n\n if (!compare) {\n compare = (prop, nodeProp) => prop !== nodeProp\n }\n\n for (const [node, path] of Editor.nodes(editor, {\n at,\n match,\n mode,\n voids,\n })) {\n const properties: Partial<Node> = {}\n const newProperties: Partial<Node> = {}\n\n // You can't set properties on the editor node.\n if (path.length === 0) {\n continue\n }\n\n let hasChanges = false\n\n for (const k in props) {\n if (k === 'children' || k === 'text') {\n continue\n }\n\n if (compare(props[k], node[k])) {\n hasChanges = true\n // Omit new properties from the old properties list\n if (node.hasOwnProperty(k)) properties[k] = node[k]\n // Omit properties that have been removed from the new properties list\n if (merge) {\n if (props[k] != null) newProperties[k] = merge(node[k], props[k])\n } else {\n if (props[k] != null) newProperties[k] = props[k]\n }\n }\n }\n\n if (hasChanges) {\n editor.apply({\n type: 'set_node',\n path,\n properties,\n newProperties,\n })\n }\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Element } from '../interfaces/element'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport { PointRef } from '../interfaces/point-ref'\nimport { Transforms } from '../interfaces/transforms'\nimport { Node } from '../interfaces/node'\nimport { Point } from '../interfaces/point'\n\n/**\n * Convert a range into a point by deleting it's content.\n */\nconst deleteRange = (editor: Editor, range: Range): Point | null => {\n if (Range.isCollapsed(range)) {\n return range.anchor\n } else {\n const [, end] = Range.edges(range)\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at: range })\n return pointRef.unref()\n }\n}\n\nexport const splitNodes: NodeTransforms['splitNodes'] = (\n editor,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { mode = 'lowest', voids = false } = options\n let { match, at = editor.selection, height = 0, always = false } = options\n\n if (match == null) {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n if (Range.isRange(at)) {\n at = deleteRange(editor, at)\n }\n\n // If the target is a path, the default height-skipping and position\n // counters need to account for us potentially splitting at a non-leaf.\n if (Path.isPath(at)) {\n const path = at\n const point = Editor.point(editor, path)\n const [parent] = Editor.parent(editor, path)\n match = n => n === parent\n height = point.path.length - path.length + 1\n at = point\n always = true\n }\n\n if (!at) {\n return\n }\n\n const beforeRef = Editor.pointRef(editor, at, {\n affinity: 'backward',\n })\n let afterRef: PointRef | undefined\n try {\n const [highest] = Editor.nodes(editor, { at, match, mode, voids })\n\n if (!highest) {\n return\n }\n\n const voidMatch = Editor.void(editor, { at, mode: 'highest' })\n const nudge = 0\n\n if (!voids && voidMatch) {\n const [voidNode, voidPath] = voidMatch\n\n if (Element.isElement(voidNode) && editor.isInline(voidNode)) {\n let after = Editor.after(editor, voidPath)\n\n if (!after) {\n const text = { text: '' }\n const afterPath = Path.next(voidPath)\n Transforms.insertNodes(editor, text, { at: afterPath, voids })\n after = Editor.point(editor, afterPath)!\n }\n\n at = after\n always = true\n }\n\n const siblingHeight = at.path.length - voidPath.length\n height = siblingHeight + 1\n always = true\n }\n\n afterRef = Editor.pointRef(editor, at)\n const depth = at.path.length - height\n const [, highestPath] = highest\n const lowestPath = at.path.slice(0, depth)\n let position = height === 0 ? at.offset : at.path[depth] + nudge\n\n for (const [node, path] of Editor.levels(editor, {\n at: lowestPath,\n reverse: true,\n voids,\n })) {\n let split = false\n\n if (\n path.length < highestPath.length ||\n path.length === 0 ||\n (!voids && Element.isElement(node) && Editor.isVoid(editor, node))\n ) {\n break\n }\n\n const point = beforeRef.current!\n const isEnd = Editor.isEnd(editor, point, path)\n\n if (always || !beforeRef || !Editor.isEdge(editor, point, path)) {\n split = true\n const properties = Node.extractProps(node)\n editor.apply({\n type: 'split_node',\n path,\n position,\n properties,\n })\n }\n\n position = path[path.length - 1] + (split || isEnd ? 1 : 0)\n }\n\n if (options.at == null) {\n const point = afterRef.current || Editor.end(editor, [])\n Transforms.select(editor, point)\n }\n } finally {\n beforeRef.unref()\n afterRef?.unref()\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const unsetNodes: NodeTransforms['unsetNodes'] = (\n editor,\n props,\n options = {}\n) => {\n if (!Array.isArray(props)) {\n props = [props]\n }\n\n const obj = {}\n\n for (const key of props) {\n obj[key] = null\n }\n\n Transforms.setNodes(editor, obj, options)\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const unwrapNodes: NodeTransforms['unwrapNodes'] = (\n editor,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { mode = 'lowest', split = false, voids = false } = options\n let { at = editor.selection, match } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n\n if (Path.isPath(at)) {\n at = Editor.range(editor, at)\n }\n\n const rangeRef = Range.isRange(at) ? Editor.rangeRef(editor, at) : null\n const matches = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(\n matches,\n ([, p]) => Editor.pathRef(editor, p)\n // unwrapNode will call liftNode which does not support splitting the node when nested.\n // If we do not reverse the order and call it from top to the bottom, it will remove all blocks\n // that wrap target node. So we reverse the order.\n ).reverse()\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n const [node] = Editor.node(editor, path)\n let range = Editor.range(editor, path)\n\n if (split && rangeRef) {\n range = Range.intersection(rangeRef.current!, range)!\n }\n\n Transforms.liftNodes(editor, {\n at: range,\n match: n => Element.isAncestor(node) && node.children.includes(n),\n voids,\n })\n }\n\n if (rangeRef) {\n rangeRef.unref()\n }\n })\n}\n","import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Element } from '../interfaces/element'\nimport { Text } from '../interfaces/text'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const wrapNodes: NodeTransforms['wrapNodes'] = (\n editor,\n element,\n options = {}\n) => {\n Editor.withoutNormalizing(editor, () => {\n const { mode = 'lowest', split = false, voids = false } = options\n let { match, at = editor.selection } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n match = matchPath(editor, at)\n } else if (editor.isInline(element)) {\n match = n =>\n (Element.isElement(n) && Editor.isInline(editor, n)) || Text.isText(n)\n } else {\n match = n => Element.isElement(n) && Editor.isBlock(editor, n)\n }\n }\n\n if (split && Range.isRange(at)) {\n const [start, end] = Range.edges(at)\n const rangeRef = Editor.rangeRef(editor, at, {\n affinity: 'inward',\n })\n Transforms.splitNodes(editor, { at: end, match, voids })\n Transforms.splitNodes(editor, { at: start, match, voids })\n at = rangeRef.unref()!\n\n if (options.at == null) {\n Transforms.select(editor, at)\n }\n }\n\n const roots = Array.from(\n Editor.nodes(editor, {\n at,\n match: editor.isInline(element)\n ? n => Element.isElement(n) && Editor.isBlock(editor, n)\n : n => Editor.isEditor(n),\n mode: 'lowest',\n voids,\n })\n )\n\n for (const [, rootPath] of roots) {\n const a = Range.isRange(at)\n ? Range.intersection(at, Editor.range(editor, rootPath))\n : at\n\n if (!a) {\n continue\n }\n\n const matches = Array.from(\n Editor.nodes(editor, { at: a, match, mode, voids })\n )\n\n if (matches.length > 0) {\n const [first] = matches\n const last = matches[matches.length - 1]\n const [, firstPath] = first\n const [, lastPath] = last\n\n if (firstPath.length === 0 && lastPath.length === 0) {\n // if there's no matching parent - usually means the node is an editor - don't do anything\n continue\n }\n\n const commonPath = Path.equals(firstPath, lastPath)\n ? Path.parent(firstPath)\n : Path.common(firstPath, lastPath)\n\n const range = Editor.range(editor, firstPath, lastPath)\n const commonNodeEntry = Editor.node(editor, commonPath)\n const [commonNode] = commonNodeEntry\n const depth = commonPath.length + 1\n const wrapperPath = Path.next(lastPath.slice(0, depth))\n const wrapper = { ...element, children: [] }\n Transforms.insertNodes(editor, wrapper, { at: wrapperPath, voids })\n\n Transforms.moveNodes(editor, {\n at: range,\n match: n =>\n Element.isAncestor(commonNode) && commonNode.children.includes(n),\n to: wrapperPath.concat(0),\n voids,\n })\n }\n }\n })\n}\n","import {\n addMark,\n deleteFragment,\n Editor,\n getDirtyPaths,\n getFragment,\n insertBreak,\n insertFragment,\n insertNode,\n insertSoftBreak,\n insertText,\n normalizeNode,\n removeMark,\n shouldNormalize,\n} from './'\nimport { apply } from './core'\nimport {\n above,\n after,\n before,\n deleteBackward,\n deleteForward,\n edges,\n elementReadOnly,\n end,\n first,\n fragment,\n getVoid,\n hasBlocks,\n hasInlines,\n hasPath,\n hasTexts,\n isBlock,\n isEdge,\n isEmpty,\n isEnd,\n isNormalizing,\n isStart,\n last,\n leaf,\n levels,\n marks,\n next,\n node,\n nodes,\n normalize,\n parent,\n path,\n pathRef,\n pathRefs,\n point,\n pointRef,\n pointRefs,\n positions,\n previous,\n range,\n rangeRef,\n rangeRefs,\n setNormalizing,\n start,\n string,\n unhangRange,\n withoutNormalizing,\n} from './editor'\nimport { deleteText } from './transforms-text'\nimport {\n collapse,\n deselect,\n move,\n select,\n setPoint,\n setSelection,\n} from './transforms-selection'\nimport {\n insertNodes,\n liftNodes,\n mergeNodes,\n moveNodes,\n removeNodes,\n setNodes,\n splitNodes,\n unsetNodes,\n unwrapNodes,\n wrapNodes,\n} from './transforms-node'\n\n/**\n * Create a new Slate `Editor` object.\n */\nexport const createEditor = (): Editor => {\n const editor: Editor = {\n children: [],\n operations: [],\n selection: null,\n marks: null,\n isElementReadOnly: () => false,\n isInline: () => false,\n isSelectable: () => true,\n isVoid: () => false,\n markableVoid: () => false,\n onChange: () => {},\n\n // Core\n apply: (...args) => apply(editor, ...args),\n\n // Editor\n addMark: (...args) => addMark(editor, ...args),\n deleteBackward: (...args) => deleteBackward(editor, ...args),\n deleteForward: (...args) => deleteForward(editor, ...args),\n deleteFragment: (...args) => deleteFragment(editor, ...args),\n getFragment: (...args) => getFragment(editor, ...args),\n insertBreak: (...args) => insertBreak(editor, ...args),\n insertSoftBreak: (...args) => insertSoftBreak(editor, ...args),\n insertFragment: (...args) => insertFragment(editor, ...args),\n insertNode: (...args) => insertNode(editor, ...args),\n insertText: (...args) => insertText(editor, ...args),\n normalizeNode: (...args) => normalizeNode(editor, ...args),\n removeMark: (...args) => removeMark(editor, ...args),\n getDirtyPaths: (...args) => getDirtyPaths(editor, ...args),\n shouldNormalize: (...args) => shouldNormalize(editor, ...args),\n\n // Editor interface\n above: (...args) => above(editor, ...args),\n after: (...args) => after(editor, ...args),\n before: (...args) => before(editor, ...args),\n collapse: (...args) => collapse(editor, ...args),\n delete: (...args) => deleteText(editor, ...args),\n deselect: (...args) => deselect(editor, ...args),\n edges: (...args) => edges(editor, ...args),\n elementReadOnly: (...args) => elementReadOnly(editor, ...args),\n end: (...args) => end(editor, ...args),\n first: (...args) => first(editor, ...args),\n fragment: (...args) => fragment(editor, ...args),\n getMarks: (...args) => marks(editor, ...args),\n hasBlocks: (...args) => hasBlocks(editor, ...args),\n hasInlines: (...args) => hasInlines(editor, ...args),\n hasPath: (...args) => hasPath(editor, ...args),\n hasTexts: (...args) => hasTexts(editor, ...args),\n insertNodes: (...args) => insertNodes(editor, ...args),\n isBlock: (...args) => isBlock(editor, ...args),\n isEdge: (...args) => isEdge(editor, ...args),\n isEmpty: (...args) => isEmpty(editor, ...args),\n isEnd: (...args) => isEnd(editor, ...args),\n isNormalizing: (...args) => isNormalizing(editor, ...args),\n isStart: (...args) => isStart(editor, ...args),\n last: (...args) => last(editor, ...args),\n leaf: (...args) => leaf(editor, ...args),\n levels: (...args) => levels(editor, ...args),\n liftNodes: (...args) => liftNodes(editor, ...args),\n mergeNodes: (...args) => mergeNodes(editor, ...args),\n move: (...args) => move(editor, ...args),\n moveNodes: (...args) => moveNodes(editor, ...args),\n next: (...args) => next(editor, ...args),\n node: (...args) => node(editor, ...args),\n nodes: (...args) => nodes(editor, ...args),\n normalize: (...args) => normalize(editor, ...args),\n parent: (...args) => parent(editor, ...args),\n path: (...args) => path(editor, ...args),\n pathRef: (...args) => pathRef(editor, ...args),\n pathRefs: (...args) => pathRefs(editor, ...args),\n point: (...args) => point(editor, ...args),\n pointRef: (...args) => pointRef(editor, ...args),\n pointRefs: (...args) => pointRefs(editor, ...args),\n positions: (...args) => positions(editor, ...args),\n previous: (...args) => previous(editor, ...args),\n range: (...args) => range(editor, ...args),\n rangeRef: (...args) => rangeRef(editor, ...args),\n rangeRefs: (...args) => rangeRefs(editor, ...args),\n removeNodes: (...args) => removeNodes(editor, ...args),\n select: (...args) => select(editor, ...args),\n setNodes: (...args) => setNodes(editor, ...args),\n setNormalizing: (...args) => setNormalizing(editor, ...args),\n setPoint: (...args) => setPoint(editor, ...args),\n setSelection: (...args) => setSelection(editor, ...args),\n splitNodes: (...args) => splitNodes(editor, ...args),\n start: (...args) => start(editor, ...args),\n string: (...args) => string(editor, ...args),\n unhangRange: (...args) => unhangRange(editor, ...args),\n unsetNodes: (...args) => unsetNodes(editor, ...args),\n unwrapNodes: (...args) => unwrapNodes(editor, ...args),\n void: (...args) => getVoid(editor, ...args),\n withoutNormalizing: (...args) => withoutNormalizing(editor, ...args),\n wrapNodes: (...args) => wrapNodes(editor, ...args),\n }\n\n return editor\n}\n"],"names":["PathRef","transform","ref","op","current","affinity","path","Path","unref","PointRef","point","Point","RangeRef","Range","DIRTY_PATHS","WeakMap","DIRTY_PATH_KEYS","FLUSHING","NORMALIZING","PATH_REFS","POINT_REFS","RANGE_REFS","ancestors","options","reverse","paths","levels","slice","common","another","i","length","av","bv","push","compare","min","Math","endsAfter","as","bs","equals","endsAt","endsBefore","every","n","hasPrevious","isAfter","isAncestor","isBefore","isChild","isCommon","isDescendant","isParent","isPath","value","Array","isArray","isSibling","al","bl","list","next","Error","last","concat","operationCanTransformPath","operation","type","parent","previous","relative","ancestor","p","position","newPath","onp","copy","applyToDraft","editor","selection","node","Node","index","children","splice","key","points","offset","text","leaf","before","after","get","prevPath","prev","Text","isText","Scrubber","stringify","truePath","newParent","newIndex","result","texts","preferNext","properties","newProperties","hasOwnProperty","isRange","newNode","GeneralTransforms","createDraft","finishDraft","isDraft","NodeTransforms","insertNodes","nodes","liftNodes","mergeNodes","moveNodes","removeNodes","setNodes","props","splitNodes","unsetNodes","unwrapNodes","wrapNodes","element","SelectionTransforms","collapse","deselect","move","select","target","setPoint","setSelection","isDeepEqual","a","b","isPlainObject","undefined","objectWithoutPropertiesLoose","edges","range","anchor","focus","isBackward","end","includes","rs","re","ts","te","start","isAfterStart","isBeforeEnd","isPoint","intersection","rest","s1","e1","s2","e2","isCollapsed","isExpanded","isForward","produce","r","affinityAnchor","affinityFocus","isElement","isNodeList","Editor","isEditor","Element","isElementList","val","isElementProps","isElementType","elementVal","elementKey","matches","IS_NODE_LIST_CACHE","root","entry","child","c","childPath","descendant","descendants","elements","extractProps","first","fragment","newRoot","nodeEntries","pass","has","isNode","cachedResult","set","isTextProps","from","to","visited","Set","add","nextIndex","parentPath","string","map","join","Operation","isNodeOperation","isOperation","endsWith","isOperationList","isSelectionOperation","isTextOperation","inverse","inversePath","inverseNewPath","IS_EDITOR_CACHE","cachedIsEditor","addMark","apply","deleteFragment","insertBreak","insertSoftBreak","insertFragment","insertNode","insertText","isElementReadOnly","isInline","isSelectable","isVoid","normalizeNode","onChange","removeMark","getDirtyPaths","marks","operations","above","at","deleteBackward","unit","deleteForward","elementReadOnly","hasBlocks","hasInlines","hasPath","hasTexts","isBlock","isEdge","isEmpty","isEnd","isNormalizing","isStart","getMarks","normalize","pathRef","pathRefs","pointRef","pointRefs","positions","rangeRef","rangeRefs","setNormalizing","unhangRange","void","withoutNormalizing","fn","Location","isLocation","Span","isSpan","_scrubber","setScrubber","scrubber","JSON","loose","omitText","obj","isTextList","decorations","leaves","dec","leafEnd","decorationStart","decorationEnd","leafStart","Object","assign","middle","off","getDefaultInsertLocation","matchPath","getCharacterDistance","str","isRTL","isLTR","codepoints","codepointsIteratorRTL","left","CodepointType","None","right","distance","gb11","gb12Or13","char","code","codePointAt","getCodepointType","intersects","ZWJ","ExtPict","endsWithEmojiZWJ","substring","RI","endsWithOddNumberOfRIs","isBoundaryPair","SPACE","PUNCTUATION","CHAMELEON","getWordDistance","dist","started","charDist","remaining","splitByCharacterDistance","isWordCharacter","test","nextChar","nextRemaining","char1","charAt","isLowSurrogate","charCodeAt","char2","isHighSurrogate","charCode","reExtend","rePrepend","reSpacingMark","reL","reV","reT","reLV","reLVT","reExtPict","Any","search","Extend","Prepend","SpacingMark","L","V","T","LV","LVT","x","y","NonBoundaryPairs","findIndex","endingEmojiZWJ","endingRIs","match","numRIs","TextTransforms","delete","voids","startRef","endRef","Transforms","startPoint","endPoint","oldDirtyPaths","oldDirtyPathKeys","dirtyPaths","dirtyPathKeys","newDirtyPaths","Promise","resolve","then","previousPath","oldAncestors","newAncestors","resultPath","nextPath","getFragment","shouldHaveInlines","currentNode","isLast","isInlineOrText","newChild","shouldNormalize","iteration","initialDirtyPathsLength","maxIterations","mode","parentNode","markableVoid","expandedSelection","markAcceptingVoidSelected","selectedNode","selectedPath","split","edge","d","direction","getVoid","some","always","markedVoid","block","prevNode","blockPath","pointAfterLocation","span","universal","ignoreNonSelectable","hit","isLower","emit","force","getDirtyPathKeys","popDirtyPath","pop","allPaths","allPathKeys","dirtyPath","_","refs","depth","firstPath","lastPath","isNewBlock","blockText","leafTextRemaining","leafTextOffset","e","s","isFirst","calcDistance","pointBeforeLocation","t","endBlock","skip","deleteText","hanging","furthestVoid","voidPath","opts","endOfDoc","startBlock","isAcrossBlocks","isSingleText","startNonEditable","endNonEditable","removedText","filter","forEach","startUnref","endUnref","inlineElementMatch","inlinePath","blockMatch","isBlockStart","isBlockEnd","isBlockEmpty","mergeStart","mergeEnd","matcher","isRoot","starts","middles","ends","starting","inlineMatch","isInlineStart","isInlineEnd","middleRef","oldProps","newProps","k","keys","isAtEnd","parentNodeEntry","toPath","splitPath","hasSingleChildNest","commonPath","isPreviousSibling","emptyAncestor","emptyRef","toRef","targets","depths","merge","splitMode","endAtEndOfNode","startAtStartOfNode","prop","nodeProp","hasChanges","deleteRange","height","beforeRef","afterRef","highest","voidMatch","nudge","voidNode","afterPath","siblingHeight","highestPath","lowestPath","roots","rootPath","commonNodeEntry","commonNode","wrapperPath","wrapper","createEditor","args"],"mappings":"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"}