@apia/util 2.0.11 → 3.0.2

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 (270) hide show
  1. package/dist/index.d.ts +1865 -68
  2. package/dist/index.js +2650 -62
  3. package/dist/index.js.map +1 -1
  4. package/package.json +4 -3
  5. package/dist/animate/index.d.ts +0 -4
  6. package/dist/animate/index.d.ts.map +0 -1
  7. package/dist/animate/index.js +0 -24
  8. package/dist/animate/index.js.map +0 -1
  9. package/dist/array/arrayOrArray.d.ts +0 -4
  10. package/dist/array/arrayOrArray.d.ts.map +0 -1
  11. package/dist/array/arrayOrArray.js +0 -8
  12. package/dist/array/arrayOrArray.js.map +0 -1
  13. package/dist/array/getIndex.d.ts +0 -14
  14. package/dist/array/getIndex.d.ts.map +0 -1
  15. package/dist/array/getIndex.js +0 -12
  16. package/dist/array/getIndex.js.map +0 -1
  17. package/dist/crypto/decrypt.d.ts +0 -4
  18. package/dist/crypto/decrypt.d.ts.map +0 -1
  19. package/dist/crypto/decrypt.js +0 -16
  20. package/dist/crypto/decrypt.js.map +0 -1
  21. package/dist/crypto/encrypt.d.ts +0 -4
  22. package/dist/crypto/encrypt.d.ts.map +0 -1
  23. package/dist/crypto/encrypt.js +0 -13
  24. package/dist/crypto/encrypt.js.map +0 -1
  25. package/dist/crypto/generateKey.js +0 -11
  26. package/dist/crypto/generateKey.js.map +0 -1
  27. package/dist/date/apiaDateToStandarFormat.d.ts +0 -4
  28. package/dist/date/apiaDateToStandarFormat.d.ts.map +0 -1
  29. package/dist/date/apiaDateToStandarFormat.js +0 -12
  30. package/dist/date/apiaDateToStandarFormat.js.map +0 -1
  31. package/dist/date/dateToApiaFormat.d.ts +0 -4
  32. package/dist/date/dateToApiaFormat.d.ts.map +0 -1
  33. package/dist/date/dateToApiaFormat.js +0 -9
  34. package/dist/date/dateToApiaFormat.js.map +0 -1
  35. package/dist/date/getDateFormat.d.ts +0 -11
  36. package/dist/date/getDateFormat.d.ts.map +0 -1
  37. package/dist/date/getDateFormat.js +0 -20
  38. package/dist/date/getDateFormat.js.map +0 -1
  39. package/dist/debug/debugDispatcher.d.ts +0 -36
  40. package/dist/debug/debugDispatcher.d.ts.map +0 -1
  41. package/dist/debug/debugDispatcher.js +0 -75
  42. package/dist/debug/debugDispatcher.js.map +0 -1
  43. package/dist/debug/shortcutController.d.ts +0 -57
  44. package/dist/debug/shortcutController.d.ts.map +0 -1
  45. package/dist/debug/shortcutController.js +0 -152
  46. package/dist/debug/shortcutController.js.map +0 -1
  47. package/dist/documents/downloadStringAsDoc.d.ts +0 -8
  48. package/dist/documents/downloadStringAsDoc.d.ts.map +0 -1
  49. package/dist/documents/downloadStringAsDoc.js +0 -12
  50. package/dist/documents/downloadStringAsDoc.js.map +0 -1
  51. package/dist/documents/downloadUrl.d.ts +0 -20
  52. package/dist/documents/downloadUrl.d.ts.map +0 -1
  53. package/dist/documents/downloadUrl.js +0 -18
  54. package/dist/documents/downloadUrl.js.map +0 -1
  55. package/dist/documents/openAndReadFile.d.ts +0 -4
  56. package/dist/documents/openAndReadFile.d.ts.map +0 -1
  57. package/dist/documents/openAndReadFile.js +0 -29
  58. package/dist/documents/openAndReadFile.js.map +0 -1
  59. package/dist/dom/autoDisconnectMutationObserver.d.ts +0 -17
  60. package/dist/dom/autoDisconnectMutationObserver.d.ts.map +0 -1
  61. package/dist/dom/autoDisconnectMutationObserver.js +0 -35
  62. package/dist/dom/autoDisconnectMutationObserver.js.map +0 -1
  63. package/dist/dom/customEvents.d.ts +0 -40
  64. package/dist/dom/customEvents.d.ts.map +0 -1
  65. package/dist/dom/customEvents.js +0 -34
  66. package/dist/dom/customEvents.js.map +0 -1
  67. package/dist/dom/enableChildrenFocus.d.ts +0 -18
  68. package/dist/dom/enableChildrenFocus.d.ts.map +0 -1
  69. package/dist/dom/enableChildrenFocus.js +0 -26
  70. package/dist/dom/enableChildrenFocus.js.map +0 -1
  71. package/dist/dom/findOffsetRelativeToScrollParent.d.ts +0 -7
  72. package/dist/dom/findOffsetRelativeToScrollParent.d.ts.map +0 -1
  73. package/dist/dom/findOffsetRelativeToScrollParent.js +0 -19
  74. package/dist/dom/findOffsetRelativeToScrollParent.js.map +0 -1
  75. package/dist/dom/findScrollContainer.d.ts +0 -8
  76. package/dist/dom/findScrollContainer.d.ts.map +0 -1
  77. package/dist/dom/findScrollContainer.js +0 -9
  78. package/dist/dom/findScrollContainer.js.map +0 -1
  79. package/dist/dom/getFocusSelector.d.ts +0 -25
  80. package/dist/dom/getFocusSelector.d.ts.map +0 -1
  81. package/dist/dom/getFocusSelector.js +0 -30
  82. package/dist/dom/getFocusSelector.js.map +0 -1
  83. package/dist/dom/getSpecificParent.d.ts +0 -23
  84. package/dist/dom/getSpecificParent.d.ts.map +0 -1
  85. package/dist/dom/getSpecificParent.js +0 -19
  86. package/dist/dom/getSpecificParent.js.map +0 -1
  87. package/dist/dom/isChild.d.ts +0 -13
  88. package/dist/dom/isChild.d.ts.map +0 -1
  89. package/dist/dom/isChild.js +0 -8
  90. package/dist/dom/isChild.js.map +0 -1
  91. package/dist/dom/scrollParentIntoElement.d.ts +0 -9
  92. package/dist/dom/scrollParentIntoElement.d.ts.map +0 -1
  93. package/dist/dom/scrollParentIntoElement.js +0 -24
  94. package/dist/dom/scrollParentIntoElement.js.map +0 -1
  95. package/dist/dom/url.d.ts +0 -18
  96. package/dist/dom/url.d.ts.map +0 -1
  97. package/dist/dom/url.js +0 -52
  98. package/dist/dom/url.js.map +0 -1
  99. package/dist/dom/usePanAndZoom.d.ts +0 -14
  100. package/dist/dom/usePanAndZoom.d.ts.map +0 -1
  101. package/dist/dom/usePanAndZoom.js +0 -111
  102. package/dist/dom/usePanAndZoom.js.map +0 -1
  103. package/dist/encoding/index.d.ts +0 -8
  104. package/dist/encoding/index.d.ts.map +0 -1
  105. package/dist/encoding/index.js +0 -12
  106. package/dist/encoding/index.js.map +0 -1
  107. package/dist/events/BouncingEmitter.d.ts +0 -67
  108. package/dist/events/BouncingEmitter.d.ts.map +0 -1
  109. package/dist/events/BouncingEmitter.js +0 -72
  110. package/dist/events/BouncingEmitter.js.map +0 -1
  111. package/dist/events/EventEmitter.d.ts +0 -47
  112. package/dist/events/EventEmitter.d.ts.map +0 -1
  113. package/dist/events/EventEmitter.js +0 -75
  114. package/dist/events/EventEmitter.js.map +0 -1
  115. package/dist/events/StatefulEmitter.d.ts +0 -44
  116. package/dist/events/StatefulEmitter.d.ts.map +0 -1
  117. package/dist/events/StatefulEmitter.js +0 -57
  118. package/dist/events/StatefulEmitter.js.map +0 -1
  119. package/dist/events/types.d.ts +0 -29
  120. package/dist/events/types.d.ts.map +0 -1
  121. package/dist/focus/focusController.d.ts +0 -108
  122. package/dist/focus/focusController.d.ts.map +0 -1
  123. package/dist/focus/focusController.js +0 -295
  124. package/dist/focus/focusController.js.map +0 -1
  125. package/dist/focus/globalFocus.d.ts +0 -24
  126. package/dist/focus/globalFocus.d.ts.map +0 -1
  127. package/dist/focus/globalFocus.js +0 -87
  128. package/dist/focus/globalFocus.js.map +0 -1
  129. package/dist/history/History.d.ts +0 -81
  130. package/dist/history/History.d.ts.map +0 -1
  131. package/dist/history/History.js +0 -122
  132. package/dist/history/History.js.map +0 -1
  133. package/dist/hooks/useCombinedRefs.d.ts +0 -18
  134. package/dist/hooks/useCombinedRefs.d.ts.map +0 -1
  135. package/dist/hooks/useCombinedRefs.js +0 -20
  136. package/dist/hooks/useCombinedRefs.js.map +0 -1
  137. package/dist/hooks/useDebouncedCallback.d.ts +0 -7
  138. package/dist/hooks/useDebouncedCallback.d.ts.map +0 -1
  139. package/dist/hooks/useDebouncedCallback.js +0 -21
  140. package/dist/hooks/useDebouncedCallback.js.map +0 -1
  141. package/dist/hooks/useLatest.d.ts +0 -13
  142. package/dist/hooks/useLatest.d.ts.map +0 -1
  143. package/dist/hooks/useLatest.js +0 -10
  144. package/dist/hooks/useLatest.js.map +0 -1
  145. package/dist/hooks/useMount.d.ts +0 -6
  146. package/dist/hooks/useMount.d.ts.map +0 -1
  147. package/dist/hooks/useMount.js +0 -14
  148. package/dist/hooks/useMount.js.map +0 -1
  149. package/dist/hooks/usePrevious.d.ts +0 -6
  150. package/dist/hooks/usePrevious.d.ts.map +0 -1
  151. package/dist/hooks/usePrevious.js +0 -12
  152. package/dist/hooks/usePrevious.js.map +0 -1
  153. package/dist/hooks/useShallowMemo.d.ts +0 -9
  154. package/dist/hooks/useShallowMemo.d.ts.map +0 -1
  155. package/dist/hooks/useShallowMemo.js +0 -42
  156. package/dist/hooks/useShallowMemo.js.map +0 -1
  157. package/dist/hooks/useStateRef.d.ts +0 -10
  158. package/dist/hooks/useStateRef.d.ts.map +0 -1
  159. package/dist/hooks/useStateRef.js +0 -11
  160. package/dist/hooks/useStateRef.js.map +0 -1
  161. package/dist/hooks/useSubscription.d.ts +0 -31
  162. package/dist/hooks/useSubscription.d.ts.map +0 -1
  163. package/dist/hooks/useSubscription.js +0 -21
  164. package/dist/hooks/useSubscription.js.map +0 -1
  165. package/dist/hooks/useUnmount.d.ts +0 -4
  166. package/dist/hooks/useUnmount.d.ts.map +0 -1
  167. package/dist/hooks/useUnmount.js +0 -10
  168. package/dist/hooks/useUnmount.js.map +0 -1
  169. package/dist/hooks/useUpdateEffect.d.ts +0 -10
  170. package/dist/hooks/useUpdateEffect.d.ts.map +0 -1
  171. package/dist/hooks/useUpdateEffect.js +0 -16
  172. package/dist/hooks/useUpdateEffect.js.map +0 -1
  173. package/dist/imperative/makeImperativeComponent.d.ts +0 -56
  174. package/dist/imperative/makeImperativeComponent.d.ts.map +0 -1
  175. package/dist/imperative/makeImperativeComponent.js +0 -43
  176. package/dist/imperative/makeImperativeComponent.js.map +0 -1
  177. package/dist/imperative/makeSingleImperativeComponent.d.ts +0 -15
  178. package/dist/imperative/makeSingleImperativeComponent.d.ts.map +0 -1
  179. package/dist/imperative/makeSingleImperativeComponent.js +0 -31
  180. package/dist/imperative/makeSingleImperativeComponent.js.map +0 -1
  181. package/dist/imperative/types.d.ts +0 -22
  182. package/dist/imperative/types.d.ts.map +0 -1
  183. package/dist/imperative/types.js +0 -8
  184. package/dist/imperative/types.js.map +0 -1
  185. package/dist/imperative/useImperativeComponentEvents.d.ts +0 -6
  186. package/dist/imperative/useImperativeComponentEvents.d.ts.map +0 -1
  187. package/dist/imperative/useImperativeComponentEvents.js +0 -35
  188. package/dist/imperative/useImperativeComponentEvents.js.map +0 -1
  189. package/dist/imperative/useImperativeIdentifierContext.d.ts +0 -14
  190. package/dist/imperative/useImperativeIdentifierContext.d.ts.map +0 -1
  191. package/dist/imperative/useImperativeIdentifierContext.js +0 -10
  192. package/dist/imperative/useImperativeIdentifierContext.js.map +0 -1
  193. package/dist/labels/formatMessage.d.ts +0 -19
  194. package/dist/labels/formatMessage.d.ts.map +0 -1
  195. package/dist/labels/formatMessage.js +0 -13
  196. package/dist/labels/formatMessage.js.map +0 -1
  197. package/dist/labels/getLabel.d.ts +0 -34
  198. package/dist/labels/getLabel.d.ts.map +0 -1
  199. package/dist/labels/getLabel.js +0 -18
  200. package/dist/labels/getLabel.js.map +0 -1
  201. package/dist/number/index.d.ts +0 -29
  202. package/dist/number/index.d.ts.map +0 -1
  203. package/dist/number/index.js +0 -43
  204. package/dist/number/index.js.map +0 -1
  205. package/dist/objects/getValueByPath.d.ts +0 -23
  206. package/dist/objects/getValueByPath.d.ts.map +0 -1
  207. package/dist/objects/getValueByPath.js +0 -19
  208. package/dist/objects/getValueByPath.js.map +0 -1
  209. package/dist/objects/setValueByPath.d.ts +0 -33
  210. package/dist/objects/setValueByPath.d.ts.map +0 -1
  211. package/dist/objects/setValueByPath.js +0 -35
  212. package/dist/objects/setValueByPath.js.map +0 -1
  213. package/dist/propsStore/propsStore.d.ts +0 -42
  214. package/dist/propsStore/propsStore.d.ts.map +0 -1
  215. package/dist/propsStore/propsStore.js +0 -157
  216. package/dist/propsStore/propsStore.js.map +0 -1
  217. package/dist/propsStore/types.d.ts +0 -24
  218. package/dist/propsStore/types.d.ts.map +0 -1
  219. package/dist/propsStore/usePropsSelector.d.ts +0 -67
  220. package/dist/propsStore/usePropsSelector.d.ts.map +0 -1
  221. package/dist/propsStore/usePropsSelector.js +0 -92
  222. package/dist/propsStore/usePropsSelector.js.map +0 -1
  223. package/dist/screenLock/screenLocker.d.ts +0 -60
  224. package/dist/screenLock/screenLocker.d.ts.map +0 -1
  225. package/dist/screenLock/screenLocker.js +0 -95
  226. package/dist/screenLock/screenLocker.js.map +0 -1
  227. package/dist/states/useDebouncedState.d.ts +0 -10
  228. package/dist/states/useDebouncedState.d.ts.map +0 -1
  229. package/dist/states/useDebouncedState.js +0 -22
  230. package/dist/states/useDebouncedState.js.map +0 -1
  231. package/dist/states/useDomState.d.ts +0 -86
  232. package/dist/states/useDomState.d.ts.map +0 -1
  233. package/dist/states/useDomState.js +0 -35
  234. package/dist/states/useDomState.js.map +0 -1
  235. package/dist/storage/StatefulStore.d.ts +0 -205
  236. package/dist/storage/StatefulStore.d.ts.map +0 -1
  237. package/dist/storage/StatefulStore.js +0 -301
  238. package/dist/storage/StatefulStore.js.map +0 -1
  239. package/dist/storage/persistentStorage.d.ts +0 -12
  240. package/dist/storage/persistentStorage.d.ts.map +0 -1
  241. package/dist/storage/persistentStorage.js +0 -28
  242. package/dist/storage/persistentStorage.js.map +0 -1
  243. package/dist/storage/useLocalStorage.d.ts +0 -7
  244. package/dist/storage/useLocalStorage.d.ts.map +0 -1
  245. package/dist/storage/useLocalStorage.js +0 -40
  246. package/dist/storage/useLocalStorage.js.map +0 -1
  247. package/dist/string/alignment.d.ts +0 -25
  248. package/dist/string/alignment.d.ts.map +0 -1
  249. package/dist/string/alignment.js +0 -26
  250. package/dist/string/alignment.js.map +0 -1
  251. package/dist/string/ucfirst.d.ts +0 -4
  252. package/dist/string/ucfirst.d.ts.map +0 -1
  253. package/dist/string/ucfirst.js +0 -6
  254. package/dist/string/ucfirst.js.map +0 -1
  255. package/dist/typeGuards/toBoolean.d.ts +0 -26
  256. package/dist/typeGuards/toBoolean.d.ts.map +0 -1
  257. package/dist/typeGuards/toBoolean.js +0 -11
  258. package/dist/typeGuards/toBoolean.js.map +0 -1
  259. package/dist/types/apia/common.d.ts +0 -114
  260. package/dist/types/apia/common.d.ts.map +0 -1
  261. package/dist/types/apia/date.d.ts +0 -4
  262. package/dist/types/apia/date.d.ts.map +0 -1
  263. package/dist/types/apia/forms.d.ts +0 -221
  264. package/dist/types/apia/forms.d.ts.map +0 -1
  265. package/dist/types/misc.d.ts +0 -9
  266. package/dist/types/misc.d.ts.map +0 -1
  267. package/dist/xml/parseXmlAsync.d.ts +0 -4
  268. package/dist/xml/parseXmlAsync.d.ts.map +0 -1
  269. package/dist/xml/parseXmlAsync.js +0 -58
  270. package/dist/xml/parseXmlAsync.js.map +0 -1
@@ -1,30 +0,0 @@
1
- const cantFocusSelector = [
2
- "[disabled]",
3
- '[tabIndex="-1"]',
4
- '[aria-hidden="true"]',
5
- "[readonly]",
6
- "[data-focus-guard]",
7
- ".modal__closeButton"
8
- ].map((current) => `:not(${current})`).join("");
9
- const focusSelector = [
10
- "input",
11
- "textarea",
12
- "select",
13
- "a",
14
- "button:not(.toggleAccordionElement)",
15
- "[contenteditable]",
16
- "[tabIndex]",
17
- '[role="button"]'
18
- ].map((current) => `${current}${cantFocusSelector}`).join(",");
19
- function getFocusSelector(not) {
20
- return `input${not ?? ""},
21
- textarea${not ?? ""},
22
- select${not ?? ""},
23
- a${not ?? ""},
24
- button:not(.toggleAccordionElement)${not ?? ""},
25
- [contenteditable]${not ?? ""},
26
- [tabIndex]${not ?? ""}`;
27
- }
28
-
29
- export { cantFocusSelector, focusSelector, getFocusSelector };
30
- //# sourceMappingURL=getFocusSelector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getFocusSelector.js","sources":["../../src/dom/getFocusSelector.ts"],"sourcesContent":["/**\r\n * Este selector pretende abarcar todos modificadores que en caso de estar\r\n * presentes hacen que un elemento no sea focusable\r\n */\r\nexport const cantFocusSelector = [\r\n '[disabled]',\r\n '[tabIndex=\"-1\"]',\r\n '[aria-hidden=\"true\"]',\r\n '[readonly]',\r\n '[data-focus-guard]',\r\n '.modal__closeButton',\r\n]\r\n .map((current) => `:not(${current})`)\r\n .join('');\r\n\r\n/**\r\n * Este selector pretende abarcar todos los elementos que sean focusables\r\n */\r\nexport const focusSelector = [\r\n 'input',\r\n 'textarea',\r\n 'select',\r\n 'a',\r\n 'button:not(.toggleAccordionElement)',\r\n '[contenteditable]',\r\n '[tabIndex]',\r\n '[role=\"button\"]',\r\n]\r\n .map((current) => `${current}${cantFocusSelector}`)\r\n .join(',');\r\n\r\n/**\r\n * Genera un selector que permitirá seleccionar\r\n * todos los elementos candidatos a recibir foco,\r\n * que no cumplan con la condición not pasada\r\n * como parámetro.\r\n *\r\n * @param not Un selector not css, indicando cuáles\r\n * condiciones deben evitar el foco en un elemento.\r\n *\r\n * @returns Una cadena que representa un selector\r\n * css.\r\n */\r\nexport function getFocusSelector(not?: string) {\r\n return `input${not ?? ''}, \r\n textarea${not ?? ''}, \r\n select${not ?? ''}, \r\n a${not ?? ''}, \r\n button:not(.toggleAccordionElement)${not ?? ''}, \r\n [contenteditable]${not ?? ''}, \r\n [tabIndex]${not ?? ''}`;\r\n}\r\n"],"names":[],"mappings":"AAIO,MAAM,iBAAoB,GAAA;AAAA,EAC/B,YAAA;AAAA,EACA,iBAAA;AAAA,EACA,sBAAA;AAAA,EACA,YAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AACF,CACG,CAAA,GAAA,CAAI,CAAC,OAAY,KAAA,CAAA,KAAA,EAAQ,OAAO,CAAG,CAAA,CAAA,CAAA,CACnC,KAAK,EAAE,EAAA;AAKH,MAAM,aAAgB,GAAA;AAAA,EAC3B,OAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,qCAAA;AAAA,EACA,mBAAA;AAAA,EACA,YAAA;AAAA,EACA,iBAAA;AACF,CACG,CAAA,GAAA,CAAI,CAAC,OAAA,KAAY,CAAG,EAAA,OAAO,GAAG,iBAAiB,CAAA,CAAE,CACjD,CAAA,IAAA,CAAK,GAAG,EAAA;AAcJ,SAAS,iBAAiB,GAAc,EAAA;AAC7C,EAAO,OAAA,CAAA,KAAA,EAAQ,OAAO,EAAE,CAAA;AAAA,YAAA,EACZ,OAAO,EAAE,CAAA;AAAA,UAAA,EACX,OAAO,EAAE,CAAA;AAAA,KAAA,EACd,OAAO,EAAE,CAAA;AAAA,uCAAA,EACyB,OAAO,EAAE,CAAA;AAAA,qBAAA,EAC3B,OAAO,EAAE,CAAA;AAAA,cAAA,EAChB,OAAO,EAAE,CAAA,CAAA,CAAA;AACzB;;;;"}
@@ -1,23 +0,0 @@
1
- /**
2
- * Searches for a specific parent of a element,
3
- * using a callback function as the source of
4
- * truth in order to determine which is the correct
5
- * parent.
6
- *
7
- * @param element The element where the process
8
- * starts.
9
- *
10
- * @param checkParent A callback that will be
11
- * called for each of the ancestors of the element
12
- * until the desired parent is found.
13
- * This function should return **true when found**
14
- * the desired parend was found, **null to cancel**
15
- * the search or **false to continue searching**.
16
- *
17
- * @returns The specific parent or null in case
18
- * the root parent element is raised.
19
- */
20
- declare function getSpecificParent(element: HTMLElement | null, checkParent: (parent: HTMLElement) => boolean | null): HTMLElement | null;
21
-
22
- export { getSpecificParent };
23
- //# sourceMappingURL=getSpecificParent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getSpecificParent.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,19 +0,0 @@
1
- function getSpecificParent(element, checkParent) {
2
- let currentElement = element;
3
- while (element !== document.documentElement && currentElement) {
4
- const hasFoundTheParent = checkParent(currentElement);
5
- if (hasFoundTheParent === null)
6
- return null;
7
- if (hasFoundTheParent)
8
- return currentElement;
9
- const parent = currentElement.parentElement;
10
- if (parent)
11
- currentElement = parent;
12
- else
13
- return null;
14
- }
15
- return null;
16
- }
17
-
18
- export { getSpecificParent };
19
- //# sourceMappingURL=getSpecificParent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getSpecificParent.js","sources":["../../src/dom/getSpecificParent.ts"],"sourcesContent":["/**\r\n * Searches for a specific parent of a element,\r\n * using a callback function as the source of\r\n * truth in order to determine which is the correct\r\n * parent.\r\n *\r\n * @param element The element where the process\r\n * starts.\r\n *\r\n * @param checkParent A callback that will be\r\n * called for each of the ancestors of the element\r\n * until the desired parent is found.\r\n * This function should return **true when found**\r\n * the desired parend was found, **null to cancel**\r\n * the search or **false to continue searching**.\r\n *\r\n * @returns The specific parent or null in case\r\n * the root parent element is raised.\r\n */\r\nexport function getSpecificParent(\r\n element: HTMLElement | null,\r\n checkParent: (parent: HTMLElement) => boolean | null,\r\n): HTMLElement | null {\r\n let currentElement = element;\r\n\r\n while (element !== document.documentElement && currentElement) {\r\n const hasFoundTheParent = checkParent(currentElement);\r\n if (hasFoundTheParent === null) return null;\r\n if (hasFoundTheParent) return currentElement;\r\n\r\n const parent = currentElement.parentElement;\r\n if (parent) currentElement = parent;\r\n else return null;\r\n }\r\n\r\n return null;\r\n}\r\n"],"names":[],"mappings":"AAmBgB,SAAA,iBAAA,CACd,SACA,WACoB,EAAA;AACpB,EAAA,IAAI,cAAiB,GAAA,OAAA,CAAA;AAErB,EAAO,OAAA,OAAA,KAAY,QAAS,CAAA,eAAA,IAAmB,cAAgB,EAAA;AAC7D,IAAM,MAAA,iBAAA,GAAoB,YAAY,cAAc,CAAA,CAAA;AACpD,IAAA,IAAI,iBAAsB,KAAA,IAAA;AAAM,MAAO,OAAA,IAAA,CAAA;AACvC,IAAI,IAAA,iBAAA;AAAmB,MAAO,OAAA,cAAA,CAAA;AAE9B,IAAA,MAAM,SAAS,cAAe,CAAA,aAAA,CAAA;AAC9B,IAAI,IAAA,MAAA;AAAQ,MAAiB,cAAA,GAAA,MAAA,CAAA;AAAA;AACxB,MAAO,OAAA,IAAA,CAAA;AAAA,GACd;AAEA,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Permite iterar desde un elemento hacia arriba en el
3
- * DOM, utilizando una función de comparación para
4
- * determinar si el elemento actual es el que estamos
5
- * buscando.
6
- *
7
- * Si la función checkParent devuelve true, isChild
8
- * devuelve true.
9
- */
10
- declare function isChild(element: HTMLElement | null, checkParent: (parent: HTMLElement) => boolean | null): boolean;
11
-
12
- export { isChild };
13
- //# sourceMappingURL=isChild.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isChild.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,8 +0,0 @@
1
- import { getSpecificParent } from './getSpecificParent.js';
2
-
3
- function isChild(element, checkParent) {
4
- return !!getSpecificParent(element, checkParent);
5
- }
6
-
7
- export { isChild };
8
- //# sourceMappingURL=isChild.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isChild.js","sources":["../../src/dom/isChild.ts"],"sourcesContent":["import { getSpecificParent } from './getSpecificParent';\r\n\r\n/**\r\n * Permite iterar desde un elemento hacia arriba en el\r\n * DOM, utilizando una función de comparación para\r\n * determinar si el elemento actual es el que estamos\r\n * buscando.\r\n *\r\n * Si la función checkParent devuelve true, isChild\r\n * devuelve true.\r\n */\r\nexport function isChild(\r\n element: HTMLElement | null,\r\n checkParent: (parent: HTMLElement) => boolean | null,\r\n) {\r\n return !!getSpecificParent(element, checkParent);\r\n}\r\n"],"names":[],"mappings":";;AAWgB,SAAA,OAAA,CACd,SACA,WACA,EAAA;AACA,EAAA,OAAO,CAAC,CAAC,iBAAkB,CAAA,OAAA,EAAS,WAAW,CAAA,CAAA;AACjD;;;;"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Busca el padre con scroll visible y establece su scrollTop de acuerdo al offset del elemento pasado como argumento, de modo que éste aparezca visible dentro del padre mencionado.
3
- *
4
- * @param fixedOffsetTop Establece un mínimo de distancia que debe mantener con el borde superior del contenedor con scroll. Se usa para compensar en las situaciones donde existen cabezales fijos.
5
- */
6
- declare function scrollParentIntoElement(element: HTMLElement, fixedOffsetTop?: number, tries?: number, timeout?: number, scrollId?: string | undefined): void;
7
-
8
- export { scrollParentIntoElement };
9
- //# sourceMappingURL=scrollParentIntoElement.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scrollParentIntoElement.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,24 +0,0 @@
1
- import { findOffsetRelativeToScrollParent } from './findOffsetRelativeToScrollParent.js';
2
- import { findScrollContainer } from './findScrollContainer.js';
3
-
4
- const scrollIntervals = {};
5
- function scrollParentIntoElement(element, fixedOffsetTop = 0, tries = 2, timeout = 100, scrollId = void 0) {
6
- if (scrollId) {
7
- clearTimeout(scrollIntervals[scrollId]);
8
- }
9
- const scrollParent = findScrollContainer(element);
10
- const offsetTop = findOffsetRelativeToScrollParent(element);
11
- if (scrollParent && (scrollParent.scrollTop + fixedOffsetTop > offsetTop || (scrollParent?.clientHeight ?? Infinity) - fixedOffsetTop < element.getBoundingClientRect().height)) {
12
- scrollParent.scrollTop = offsetTop - fixedOffsetTop;
13
- } else if (scrollParent && scrollParent.scrollTop + scrollParent.clientHeight < offsetTop + element.getBoundingClientRect().height) {
14
- scrollParent.scrollTop = offsetTop;
15
- }
16
- if (tries > 0)
17
- scrollIntervals[scrollId ?? "noId"] = setTimeout(
18
- () => scrollParentIntoElement(element, fixedOffsetTop, tries - 1, timeout),
19
- timeout
20
- );
21
- }
22
-
23
- export { scrollParentIntoElement };
24
- //# sourceMappingURL=scrollParentIntoElement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scrollParentIntoElement.js","sources":["../../src/dom/scrollParentIntoElement.ts"],"sourcesContent":["import { findOffsetRelativeToScrollParent } from \"./findOffsetRelativeToScrollParent\";\r\nimport { findScrollContainer } from \"./findScrollContainer\";\r\n\r\nconst scrollIntervals: Record<string, number> = {};\r\n/**\r\n * Busca el padre con scroll visible y establece su scrollTop de acuerdo al offset del elemento pasado como argumento, de modo que éste aparezca visible dentro del padre mencionado.\r\n *\r\n * @param fixedOffsetTop Establece un mínimo de distancia que debe mantener con el borde superior del contenedor con scroll. Se usa para compensar en las situaciones donde existen cabezales fijos.\r\n */\r\nexport function scrollParentIntoElement(\r\n element: HTMLElement,\r\n fixedOffsetTop = 0,\r\n tries = 2,\r\n timeout = 100,\r\n scrollId: string | undefined = undefined,\r\n) {\r\n if (scrollId) {\r\n clearTimeout(scrollIntervals[scrollId]);\r\n }\r\n\r\n const scrollParent = findScrollContainer(element);\r\n const offsetTop = findOffsetRelativeToScrollParent(element);\r\n\r\n if (\r\n scrollParent &&\r\n (scrollParent.scrollTop + fixedOffsetTop > offsetTop ||\r\n (scrollParent?.clientHeight ?? Infinity) - fixedOffsetTop <\r\n element.getBoundingClientRect().height)\r\n ) {\r\n scrollParent.scrollTop = offsetTop - fixedOffsetTop;\r\n } else if (\r\n scrollParent &&\r\n scrollParent.scrollTop + scrollParent.clientHeight <\r\n offsetTop + element.getBoundingClientRect().height\r\n ) {\r\n scrollParent.scrollTop = offsetTop;\r\n }\r\n\r\n if (tries > 0)\r\n scrollIntervals[scrollId ?? 'noId'] = setTimeout(\r\n () =>\r\n scrollParentIntoElement(element, fixedOffsetTop, tries - 1, timeout),\r\n timeout,\r\n ) as unknown as number;\r\n}"],"names":[],"mappings":";;;AAGA,MAAM,kBAA0C,EAAC,CAAA;AAMjC,SAAA,uBAAA,CACd,SACA,cAAiB,GAAA,CAAA,EACjB,QAAQ,CACR,EAAA,OAAA,GAAU,GACV,EAAA,QAAA,GAA+B,KAC/B,CAAA,EAAA;AACA,EAAA,IAAI,QAAU,EAAA;AACZ,IAAa,YAAA,CAAA,eAAA,CAAgB,QAAQ,CAAC,CAAA,CAAA;AAAA,GACxC;AAEA,EAAM,MAAA,YAAA,GAAe,oBAAoB,OAAO,CAAA,CAAA;AAChD,EAAM,MAAA,SAAA,GAAY,iCAAiC,OAAO,CAAA,CAAA;AAE1D,EAAA,IACE,YACC,KAAA,YAAA,CAAa,SAAY,GAAA,cAAA,GAAiB,SACxC,IAAA,CAAA,YAAA,EAAc,YAAgB,IAAA,QAAA,IAAY,cACzC,GAAA,OAAA,CAAQ,qBAAsB,EAAA,CAAE,MACpC,CAAA,EAAA;AACA,IAAA,YAAA,CAAa,YAAY,SAAY,GAAA,cAAA,CAAA;AAAA,GACvC,MAAA,IACE,YACA,IAAA,YAAA,CAAa,SAAY,GAAA,YAAA,CAAa,eACpC,SAAY,GAAA,OAAA,CAAQ,qBAAsB,EAAA,CAAE,MAC9C,EAAA;AACA,IAAA,YAAA,CAAa,SAAY,GAAA,SAAA,CAAA;AAAA,GAC3B;AAEA,EAAA,IAAI,KAAQ,GAAA,CAAA;AACV,IAAgB,eAAA,CAAA,QAAA,IAAY,MAAM,CAAI,GAAA,UAAA;AAAA,MACpC,MACE,uBAAwB,CAAA,OAAA,EAAS,cAAgB,EAAA,KAAA,GAAQ,GAAG,OAAO,CAAA;AAAA,MACrE,OAAA;AAAA,KACF,CAAA;AACJ;;;;"}
package/dist/dom/url.d.ts DELETED
@@ -1,18 +0,0 @@
1
- interface IParameter {
2
- name: string;
3
- value: unknown;
4
- allowMultiple?: boolean;
5
- }
6
- declare class Url {
7
- #private;
8
- defaultAllowMultiple: boolean;
9
- base: string;
10
- constructor(baseUrl: string, defaultAllowMultiple?: boolean);
11
- addParameter(name: string, value: unknown, allowMultiple?: boolean): void;
12
- addParameters(parameters: IParameter[]): void;
13
- getParameter(name: string): string | string[];
14
- toString(): string;
15
- }
16
-
17
- export { type IParameter, Url };
18
- //# sourceMappingURL=url.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"url.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/dom/url.js DELETED
@@ -1,52 +0,0 @@
1
- import arrayOrArray from '../array/arrayOrArray.js';
2
-
3
- var __accessCheck = (obj, member, msg) => {
4
- if (!member.has(obj))
5
- throw TypeError("Cannot " + msg);
6
- };
7
- var __privateGet = (obj, member, getter) => {
8
- __accessCheck(obj, member, "read from private field");
9
- return getter ? getter.call(obj) : member.get(obj);
10
- };
11
- var __privateAdd = (obj, member, value) => {
12
- if (member.has(obj))
13
- throw TypeError("Cannot add the same private member more than once");
14
- member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
15
- };
16
- var _parameters;
17
- class Url {
18
- constructor(baseUrl, defaultAllowMultiple = true) {
19
- this.defaultAllowMultiple = defaultAllowMultiple;
20
- __privateAdd(this, _parameters, {});
21
- const [base, query] = baseUrl.split("?");
22
- this.base = base;
23
- query?.split("&").forEach((current) => {
24
- const [name, ...value] = current.split("=");
25
- this.addParameter(name, value.join("="));
26
- });
27
- }
28
- addParameter(name, value, allowMultiple) {
29
- if (allowMultiple === void 0 && !this.defaultAllowMultiple || allowMultiple === false)
30
- __privateGet(this, _parameters)[name] = String(value);
31
- else
32
- __privateGet(this, _parameters)[name] = __privateGet(this, _parameters)[name] ? [...arrayOrArray(__privateGet(this, _parameters)[name]), String(value)] : [String(value)];
33
- }
34
- addParameters(parameters) {
35
- parameters.forEach(
36
- (current) => this.addParameter(current.name, current.value, current.allowMultiple)
37
- );
38
- }
39
- getParameter(name) {
40
- return __privateGet(this, _parameters)[name];
41
- }
42
- toString() {
43
- const parametersArray = Object.entries(__privateGet(this, _parameters));
44
- return `${this.base}${parametersArray.length > 0 ? `?${parametersArray.map(
45
- ([name, value]) => Array.isArray(value) ? value.map((current) => `${name}=${current}`).join("&") : `${name}=${String(value)}`
46
- ).join("&")}` : ""}`;
47
- }
48
- }
49
- _parameters = new WeakMap();
50
-
51
- export { Url };
52
- //# sourceMappingURL=url.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"url.js","sources":["../../src/dom/url.ts"],"sourcesContent":["import { arrayOrArray } from '../array';\r\n\r\nexport interface IParameter {\r\n name: string;\r\n value: unknown;\r\n allowMultiple?: boolean;\r\n}\r\n\r\nexport class Url {\r\n base: string;\r\n\r\n #parameters: Record<string, string | string[]> = {};\r\n\r\n constructor(baseUrl: string, public defaultAllowMultiple = true) {\r\n const [base, query] = baseUrl.split('?');\r\n this.base = base;\r\n query?.split('&').forEach((current) => {\r\n const [name, ...value] = current.split('=');\r\n this.addParameter(name, value.join('='));\r\n });\r\n }\r\n\r\n addParameter(name: string, value: unknown, allowMultiple?: boolean) {\r\n if (\r\n (allowMultiple === undefined && !this.defaultAllowMultiple) ||\r\n allowMultiple === false\r\n )\r\n this.#parameters[name] = String(value);\r\n else\r\n this.#parameters[name] = this.#parameters[name]\r\n ? [...arrayOrArray(this.#parameters[name]), String(value)]\r\n : [String(value)];\r\n }\r\n\r\n addParameters(parameters: IParameter[]) {\r\n parameters.forEach((current) =>\r\n this.addParameter(current.name, current.value, current.allowMultiple),\r\n );\r\n }\r\n\r\n getParameter(name: string) {\r\n return this.#parameters[name];\r\n }\r\n\r\n toString() {\r\n const parametersArray = Object.entries(this.#parameters);\r\n\r\n return `${this.base}${\r\n parametersArray.length > 0\r\n ? `?${parametersArray\r\n .map(([name, value]) =>\r\n Array.isArray(value)\r\n ? value.map((current) => `${name}=${current}`).join('&')\r\n : `${name}=${String(value)}`,\r\n )\r\n .join('&')}`\r\n : ''\r\n }`;\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,IAAA,WAAA,CAAA;AAQO,MAAM,GAAI,CAAA;AAAA,EAKf,WAAA,CAAY,OAAwB,EAAA,oBAAA,GAAuB,IAAM,EAAA;AAA7B,IAAA,IAAA,CAAA,oBAAA,GAAA,oBAAA,CAAA;AAFpC,IAAA,YAAA,CAAA,IAAA,EAAA,WAAA,EAAiD,EAAC,CAAA,CAAA;AAGhD,IAAA,MAAM,CAAC,IAAM,EAAA,KAAK,CAAI,GAAA,OAAA,CAAQ,MAAM,GAAG,CAAA,CAAA;AACvC,IAAA,IAAA,CAAK,IAAO,GAAA,IAAA,CAAA;AACZ,IAAA,KAAA,EAAO,KAAM,CAAA,GAAG,CAAE,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AACrC,MAAA,MAAM,CAAC,IAAM,EAAA,GAAG,KAAK,CAAI,GAAA,OAAA,CAAQ,MAAM,GAAG,CAAA,CAAA;AAC1C,MAAA,IAAA,CAAK,YAAa,CAAA,IAAA,EAAM,KAAM,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAAA,KACxC,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,YAAA,CAAa,IAAc,EAAA,KAAA,EAAgB,aAAyB,EAAA;AAClE,IAAA,IACG,aAAkB,KAAA,KAAA,CAAA,IAAa,CAAC,IAAA,CAAK,wBACtC,aAAkB,KAAA,KAAA;AAElB,MAAA,YAAA,CAAA,IAAA,EAAK,WAAY,CAAA,CAAA,IAAI,CAAI,GAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA;AAErC,MAAK,YAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAY,IAAI,CAAI,GAAA,YAAA,CAAA,IAAA,EAAK,aAAY,IAAI,CAAA,GAC1C,CAAC,GAAG,YAAa,CAAA,YAAA,CAAA,IAAA,EAAK,aAAY,IAAI,CAAC,GAAG,MAAO,CAAA,KAAK,CAAC,CACvD,GAAA,CAAC,MAAO,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,GACtB;AAAA,EAEA,cAAc,UAA0B,EAAA;AACtC,IAAW,UAAA,CAAA,OAAA;AAAA,MAAQ,CAAC,YAClB,IAAK,CAAA,YAAA,CAAa,QAAQ,IAAM,EAAA,OAAA,CAAQ,KAAO,EAAA,OAAA,CAAQ,aAAa,CAAA;AAAA,KACtE,CAAA;AAAA,GACF;AAAA,EAEA,aAAa,IAAc,EAAA;AACzB,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,aAAY,IAAI,CAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,QAAW,GAAA;AACT,IAAA,MAAM,eAAkB,GAAA,MAAA,CAAO,OAAQ,CAAA,YAAA,CAAA,IAAA,EAAK,WAAW,CAAA,CAAA,CAAA;AAEvD,IAAO,OAAA,CAAA,EAAG,KAAK,IAAI,CAAA,EACjB,gBAAgB,MAAS,GAAA,CAAA,GACrB,IAAI,eACD,CAAA,GAAA;AAAA,MAAI,CAAC,CAAC,IAAA,EAAM,KAAK,CAAA,KAChB,KAAM,CAAA,OAAA,CAAQ,KAAK,CAAA,GACf,KAAM,CAAA,GAAA,CAAI,CAAC,OAAA,KAAY,CAAG,EAAA,IAAI,CAAI,CAAA,EAAA,OAAO,CAAE,CAAA,CAAA,CAAE,IAAK,CAAA,GAAG,CACrD,GAAA,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,MAAO,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,KAE7B,CAAA,IAAA,CAAK,GAAG,CAAC,KACZ,EACN,CAAA,CAAA,CAAA;AAAA,GACF;AACF,CAAA;AAhDE,WAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
@@ -1,14 +0,0 @@
1
- import React__default from 'react';
2
-
3
- declare function usePanAndZoom<ContainerType extends HTMLElement = HTMLElement, ChildType extends HTMLElement | SVGElement = HTMLElement>(effectiveMargin?: {
4
- left: number;
5
- top: number;
6
- right: number;
7
- bottom: number;
8
- }, blockZoom?: boolean): {
9
- boxRef: React__default.RefObject<ContainerType>;
10
- elementRef: React__default.RefObject<ChildType>;
11
- };
12
-
13
- export { usePanAndZoom };
14
- //# sourceMappingURL=usePanAndZoom.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePanAndZoom.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,111 +0,0 @@
1
- import React__default, { useRef } from 'react';
2
-
3
- function usePanAndZoom(effectiveMargin = { left: 0, bottom: 0, right: 0, top: 0 }, blockZoom = true) {
4
- const boxRef = useRef(null);
5
- const elementRef = useRef(null);
6
- const [isPanning, setIsPanning] = React__default.useState(false);
7
- const [panningPosition, setPanningPosition] = React__default.useState({ x: 0, y: 0 });
8
- React__default.useEffect(() => {
9
- if (blockZoom)
10
- return;
11
- const container = boxRef.current;
12
- const innerElement = elementRef.current;
13
- const handlePanStart = (ev) => {
14
- ev.preventDefault();
15
- setIsPanning(true);
16
- setPanningPosition({ x: ev.clientX, y: ev.clientY });
17
- };
18
- const handlePanEnd = (ev) => {
19
- ev.preventDefault();
20
- setIsPanning(false);
21
- };
22
- const handlePan = (ev) => {
23
- if (!innerElement || !container) {
24
- return;
25
- }
26
- if (isPanning) {
27
- ev.preventDefault();
28
- ev.stopPropagation();
29
- const dx = ev.clientX - panningPosition.x;
30
- const dy = ev.clientY - panningPosition.y;
31
- container.scrollLeft -= dx;
32
- container.scrollTop -= dy;
33
- setPanningPosition({ x: ev.clientX, y: ev.clientY });
34
- }
35
- };
36
- if (container) {
37
- container.addEventListener("mousedown", handlePanStart);
38
- container.addEventListener("mouseup", handlePanEnd);
39
- container.addEventListener("mouseleave", handlePanEnd);
40
- container.addEventListener("mousemove", handlePan);
41
- return () => {
42
- container.removeEventListener("mousedown", handlePanStart);
43
- container.removeEventListener("mousemove", handlePan);
44
- container.removeEventListener("mouseup", handlePanEnd);
45
- container.removeEventListener("mouseleave", handlePanEnd);
46
- };
47
- }
48
- }, [isPanning, panningPosition]);
49
- React__default.useEffect(() => {
50
- if (blockZoom)
51
- return;
52
- const container = boxRef.current;
53
- const innerElement = elementRef.current;
54
- let newScale = 1;
55
- const handleZoom = (ev) => {
56
- ev.preventDefault();
57
- const newDelta = ev.deltaY;
58
- const scaleIncrement = 0.1;
59
- if (newDelta < 0) {
60
- if (newScale + scaleIncrement >= 2) {
61
- return;
62
- }
63
- newScale += scaleIncrement;
64
- } else {
65
- if (newScale - scaleIncrement <= 0.9) {
66
- return;
67
- }
68
- newScale -= scaleIncrement;
69
- }
70
- if (!innerElement || !container) {
71
- return;
72
- }
73
- const containerRect = container.getBoundingClientRect();
74
- const cursorX = ev.clientX - containerRect.left - effectiveMargin.left;
75
- const cursorY = ev.clientY - containerRect.top - effectiveMargin.top;
76
- const cursorXFromCenter = cursorX - containerRect.width / 2;
77
- const cursorYFromCenter = cursorY - containerRect.height / 2;
78
- if (newScale <= 1) {
79
- if (boxRef.current) {
80
- boxRef.current.style.overflow = "hidden";
81
- }
82
- } else {
83
- if (boxRef.current) {
84
- boxRef.current.style.overflow = "hidden";
85
- }
86
- }
87
- innerElement.style.transform = `scale(${newScale})`;
88
- innerElement.style.transformOrigin = "0px 0px";
89
- if (newDelta < 0) {
90
- container.scrollLeft += cursorXFromCenter / (newScale * 2);
91
- container.scrollTop += cursorYFromCenter / (newScale * 2);
92
- } else {
93
- container.scrollLeft -= cursorXFromCenter / (newScale * 2);
94
- container.scrollTop -= cursorYFromCenter / (newScale * 2);
95
- }
96
- };
97
- if (container) {
98
- container.addEventListener("wheel", handleZoom);
99
- return () => {
100
- container.removeEventListener("wheel", handleZoom);
101
- };
102
- }
103
- }, []);
104
- return {
105
- boxRef,
106
- elementRef
107
- };
108
- }
109
-
110
- export { usePanAndZoom };
111
- //# sourceMappingURL=usePanAndZoom.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePanAndZoom.js","sources":["../../src/dom/usePanAndZoom.ts"],"sourcesContent":["import React, { useRef } from 'react';\r\n\r\nexport function usePanAndZoom<\r\n ContainerType extends HTMLElement = HTMLElement,\r\n ChildType extends HTMLElement | SVGElement = HTMLElement,\r\n>(\r\n effectiveMargin: {\r\n left: number;\r\n top: number;\r\n right: number;\r\n bottom: number;\r\n } = { left: 0, bottom: 0, right: 0, top: 0 },\r\n blockZoom = true,\r\n) {\r\n const boxRef = useRef<ContainerType>(null);\r\n const elementRef = useRef<ChildType>(null);\r\n const [isPanning, setIsPanning] = React.useState(false);\r\n const [panningPosition, setPanningPosition] = React.useState({ x: 0, y: 0 });\r\n\r\n React.useEffect(() => {\r\n if (blockZoom) return;\r\n const container = boxRef.current;\r\n const innerElement = elementRef.current;\r\n const handlePanStart = (ev: MouseEvent) => {\r\n ev.preventDefault();\r\n setIsPanning(true);\r\n setPanningPosition({ x: ev.clientX, y: ev.clientY });\r\n };\r\n const handlePanEnd = (ev: MouseEvent) => {\r\n ev.preventDefault();\r\n\r\n setIsPanning(false);\r\n };\r\n\r\n const handlePan = (ev: MouseEvent) => {\r\n if (!innerElement || !container) {\r\n return;\r\n }\r\n\r\n if (isPanning) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n\r\n const dx = ev.clientX - panningPosition.x;\r\n const dy = ev.clientY - panningPosition.y;\r\n\r\n container.scrollLeft -= dx;\r\n container.scrollTop -= dy;\r\n\r\n setPanningPosition({ x: ev.clientX, y: ev.clientY });\r\n }\r\n };\r\n\r\n if (container) {\r\n container.addEventListener('mousedown', handlePanStart);\r\n container.addEventListener('mouseup', handlePanEnd);\r\n container.addEventListener('mouseleave', handlePanEnd);\r\n container.addEventListener('mousemove', handlePan);\r\n return () => {\r\n container.removeEventListener('mousedown', handlePanStart);\r\n container.removeEventListener('mousemove', handlePan);\r\n container.removeEventListener('mouseup', handlePanEnd);\r\n container.removeEventListener('mouseleave', handlePanEnd);\r\n };\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isPanning, panningPosition]);\r\n\r\n React.useEffect(() => {\r\n if (blockZoom) return;\r\n\r\n const container = boxRef.current;\r\n const innerElement = elementRef.current;\r\n let newScale = 1;\r\n const handleZoom = (ev: WheelEvent) => {\r\n ev.preventDefault();\r\n\r\n const newDelta = ev.deltaY;\r\n const scaleIncrement = 0.1;\r\n\r\n if (newDelta < 0) {\r\n if (newScale + scaleIncrement >= 2) {\r\n return;\r\n }\r\n newScale += scaleIncrement;\r\n } else {\r\n if (newScale - scaleIncrement <= 0.9) {\r\n return;\r\n }\r\n newScale -= scaleIncrement;\r\n }\r\n if (!innerElement || !container) {\r\n return;\r\n }\r\n const containerRect = container.getBoundingClientRect();\r\n const cursorX = ev.clientX - containerRect.left - effectiveMargin.left;\r\n const cursorY = ev.clientY - containerRect.top - effectiveMargin.top;\r\n\r\n const cursorXFromCenter = cursorX - containerRect.width / 2;\r\n const cursorYFromCenter = cursorY - containerRect.height / 2;\r\n\r\n if (newScale <= 1) {\r\n if (boxRef.current) {\r\n boxRef.current.style.overflow = 'hidden';\r\n }\r\n } else {\r\n if (boxRef.current) {\r\n boxRef.current.style.overflow = 'hidden';\r\n }\r\n }\r\n innerElement.style.transform = `scale(${newScale})`;\r\n innerElement.style.transformOrigin = '0px 0px';\r\n\r\n if (newDelta < 0) {\r\n container.scrollLeft += cursorXFromCenter / (newScale * 2);\r\n container.scrollTop += cursorYFromCenter / (newScale * 2);\r\n } else {\r\n container.scrollLeft -= cursorXFromCenter / (newScale * 2);\r\n container.scrollTop -= cursorYFromCenter / (newScale * 2);\r\n }\r\n };\r\n if (container) {\r\n container.addEventListener('wheel', handleZoom);\r\n return () => {\r\n container.removeEventListener('wheel', handleZoom);\r\n };\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n return {\r\n boxRef,\r\n elementRef,\r\n };\r\n}\r\n"],"names":["React"],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Toma una cadena de texto que puede tener caracteres de escape de HTML (por
3
- * ejemplo &aacute;) y devuelve su correspondiente en texto plano.
4
- */
5
- declare const decodeHTMLEntities: (str: string) => string | null;
6
-
7
- export { decodeHTMLEntities };
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,12 +0,0 @@
1
- const decodeHTMLEntities = (str) => {
2
- const parser = new DOMParser();
3
- const dom = parser.parseFromString(
4
- "<!doctype html><body>" + str,
5
- "text/html"
6
- );
7
- const decodedString = dom.body.textContent;
8
- return decodedString;
9
- };
10
-
11
- export { decodeHTMLEntities };
12
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../src/encoding/index.ts"],"sourcesContent":["/**\r\n * Toma una cadena de texto que puede tener caracteres de escape de HTML (por\r\n * ejemplo &aacute;) y devuelve su correspondiente en texto plano.\r\n */\r\nexport const decodeHTMLEntities = (str: string) => {\r\n const parser = new DOMParser();\r\n const dom = parser.parseFromString(\r\n '<!doctype html><body>' + str,\r\n 'text/html',\r\n );\r\n const decodedString = dom.body.textContent;\r\n return decodedString;\r\n};\r\n"],"names":[],"mappings":"AAIa,MAAA,kBAAA,GAAqB,CAAC,GAAgB,KAAA;AACjD,EAAM,MAAA,MAAA,GAAS,IAAI,SAAU,EAAA,CAAA;AAC7B,EAAA,MAAM,MAAM,MAAO,CAAA,eAAA;AAAA,IACjB,uBAA0B,GAAA,GAAA;AAAA,IAC1B,WAAA;AAAA,GACF,CAAA;AACA,EAAM,MAAA,aAAA,GAAgB,IAAI,IAAK,CAAA,WAAA,CAAA;AAC/B,EAAO,OAAA,aAAA,CAAA;AACT;;;;"}
@@ -1,67 +0,0 @@
1
- import { SetStateAction } from 'react';
2
- import { Map } from './types.js';
3
- import { StatefulEmitter } from './StatefulEmitter.js';
4
-
5
- type BouncingMap<Events extends Map> = {
6
- [K in keyof Events]: number;
7
- };
8
- declare const NullObject: unique symbol;
9
- type ThrottlingMap<Events extends Map> = {
10
- [K in keyof Events]: Events[K] | typeof NullObject;
11
- };
12
- type ThrottlingMarkers<Events extends Map> = {
13
- [K in keyof Events]: boolean;
14
- };
15
- type DebounceOptions = Partial<{
16
- timing: number;
17
- }>;
18
- type ThrottleOptions = Partial<{
19
- emitOnStart?: boolean;
20
- timing: number;
21
- }>;
22
- /**
23
- * @public
24
- *
25
- * The BouncingEmitter class is an extension of EventEmitter which adds debouncing and throttling functionality.
26
- *
27
- * @typeParam — Events - An extension of Map where the key is the event name and the value is the type of data associated with that event.
28
- */
29
- declare class BouncingEmitter<Events extends Map> extends StatefulEmitter<Events> {
30
- protected bouncingTimeouts: BouncingMap<Events>;
31
- protected defaultTiming: number;
32
- /**
33
- * Debounces a event emit with until there is no call to the emit methods by (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:
34
- *
35
- * E_E_E_E_E_E_E_E_E
36
- *
37
- * If timing is configured to 100ms, which is the default, the emission will occur as follows:
38
- *
39
- * _____________________E
40
- */
41
- debounce<K extends keyof Events>(event: K, data: Events[K], configuration?: DebounceOptions): void;
42
- /**
43
- * Throttles a event emit with the warranty that the data will be emitted at most every (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:
44
- *
45
- * E_E_E_E_E_E_E_E_E
46
- *
47
- * If timing is configured to 100ms, which is the default, the emission will occur as follows:
48
- *
49
- * ____E____E____E______E
50
- *
51
- * @param configuration.emitOnStart - Emits an event on the first call to throttle when no pending throttle is stored. **If emitOnStart is true and an only call to throttle is made, it will emit an only event.**
52
- */
53
- protected throttleData: ThrottlingMap<Events>;
54
- protected throttleEmittedOnInit: ThrottlingMarkers<Events>;
55
- throttle<K extends keyof Events>(event: K, data: Events[K], configuration?: ThrottleOptions): void;
56
- /**
57
- * This method is a mix between setState and debounce
58
- */
59
- setStateDebounced<K extends keyof Events>(event: K, data: SetStateAction<Events[K]>, configuration?: DebounceOptions): void;
60
- /**
61
- * This method is a mix between setState and throttle
62
- */
63
- setStateThrottled<K extends keyof Events>(event: K, data: SetStateAction<Events[K]>, configuration?: ThrottleOptions): void;
64
- }
65
-
66
- export { BouncingEmitter, type DebounceOptions, type ThrottleOptions };
67
- //# sourceMappingURL=BouncingEmitter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BouncingEmitter.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,72 +0,0 @@
1
- import { StatefulEmitter, isSetter } from './StatefulEmitter.js';
2
-
3
- const NullObject = Symbol("NullObject");
4
- class BouncingEmitter extends StatefulEmitter {
5
- constructor() {
6
- super(...arguments);
7
- this.bouncingTimeouts = {};
8
- this.defaultTiming = 100;
9
- /**
10
- * Throttles a event emit with the warranty that the data will be emitted at most every (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:
11
- *
12
- * E_E_E_E_E_E_E_E_E
13
- *
14
- * If timing is configured to 100ms, which is the default, the emission will occur as follows:
15
- *
16
- * ____E____E____E______E
17
- *
18
- * @param configuration.emitOnStart - Emits an event on the first call to throttle when no pending throttle is stored. **If emitOnStart is true and an only call to throttle is made, it will emit an only event.**
19
- */
20
- this.throttleData = {};
21
- this.throttleEmittedOnInit = {};
22
- }
23
- /**
24
- * Debounces a event emit with until there is no call to the emit methods by (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:
25
- *
26
- * E_E_E_E_E_E_E_E_E
27
- *
28
- * If timing is configured to 100ms, which is the default, the emission will occur as follows:
29
- *
30
- * _____________________E
31
- */
32
- debounce(event, data, configuration) {
33
- clearTimeout(this.bouncingTimeouts[event]);
34
- this.bouncingTimeouts[event] = setTimeout(() => {
35
- this.emit(event, data);
36
- }, configuration?.timing ?? this.defaultTiming);
37
- }
38
- throttle(event, data, configuration) {
39
- if (!this.throttleEmittedOnInit[event] && configuration?.emitOnStart) {
40
- this.throttleEmittedOnInit[event] = true;
41
- setTimeout(() => {
42
- this.throttleEmittedOnInit[event] = false;
43
- }, configuration?.timing ?? this.defaultTiming);
44
- this.emit(event, data);
45
- } else if (!configuration?.emitOnStart) {
46
- if (this.throttleData[event] === NullObject || !(event in this.throttleData)) {
47
- setTimeout(() => {
48
- this.emit(event, this.throttleData[event]);
49
- this.throttleData[event] = NullObject;
50
- }, configuration?.timing ?? this.defaultTiming);
51
- }
52
- this.throttleData[event] = data;
53
- }
54
- }
55
- /**
56
- * This method is a mix between setState and debounce
57
- */
58
- setStateDebounced(event, data, configuration) {
59
- const actualData = isSetter(data) ? data(this.getState(event)) : data;
60
- this.debounce(event, actualData, configuration);
61
- }
62
- /**
63
- * This method is a mix between setState and throttle
64
- */
65
- setStateThrottled(event, data, configuration) {
66
- const actualData = isSetter(data) ? data(this.getState(event)) : data;
67
- this.throttle(event, actualData, configuration);
68
- }
69
- }
70
-
71
- export { BouncingEmitter };
72
- //# sourceMappingURL=BouncingEmitter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BouncingEmitter.js","sources":["../../src/events/BouncingEmitter.ts"],"sourcesContent":["import { SetStateAction } from 'react';\r\nimport { Map } from './EventEmitter';\r\nimport { StatefulEmitter, isSetter } from './StatefulEmitter';\r\n\r\ntype BouncingMap<Events extends Map> = {\r\n [K in keyof Events]: number;\r\n};\r\n\r\nconst NullObject = Symbol('NullObject');\r\n\r\ntype ThrottlingMap<Events extends Map> = {\r\n [K in keyof Events]: Events[K] | typeof NullObject;\r\n};\r\n\r\ntype ThrottlingMarkers<Events extends Map> = {\r\n [K in keyof Events]: boolean;\r\n};\r\n\r\nexport type DebounceOptions = Partial<{ timing: number }>;\r\n\r\nexport type ThrottleOptions = Partial<{\r\n emitOnStart?: boolean;\r\n timing: number;\r\n}>;\r\n\r\n/**\r\n * @public\r\n *\r\n * The BouncingEmitter class is an extension of EventEmitter which adds debouncing and throttling functionality.\r\n *\r\n * @typeParam — Events - An extension of Map where the key is the event name and the value is the type of data associated with that event.\r\n */\r\nexport class BouncingEmitter<\r\n Events extends Map,\r\n> extends StatefulEmitter<Events> {\r\n protected bouncingTimeouts = {} as BouncingMap<Events>;\r\n\r\n protected defaultTiming = 100;\r\n\r\n /**\r\n * Debounces a event emit with until there is no call to the emit methods by (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:\r\n *\r\n * E_E_E_E_E_E_E_E_E\r\n *\r\n * If timing is configured to 100ms, which is the default, the emission will occur as follows:\r\n *\r\n * _____________________E\r\n */\r\n debounce<K extends keyof Events>(\r\n event: K,\r\n data: Events[K],\r\n configuration?: DebounceOptions,\r\n ) {\r\n clearTimeout(this.bouncingTimeouts[event]);\r\n this.bouncingTimeouts[event] = setTimeout(() => {\r\n this.emit(event, data);\r\n }, configuration?.timing ?? this.defaultTiming) as unknown as number;\r\n }\r\n\r\n /**\r\n * Throttles a event emit with the warranty that the data will be emitted at most every (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:\r\n *\r\n * E_E_E_E_E_E_E_E_E\r\n *\r\n * If timing is configured to 100ms, which is the default, the emission will occur as follows:\r\n *\r\n * ____E____E____E______E\r\n *\r\n * @param configuration.emitOnStart - Emits an event on the first call to throttle when no pending throttle is stored. **If emitOnStart is true and an only call to throttle is made, it will emit an only event.**\r\n */\r\n\r\n protected throttleData = {} as ThrottlingMap<Events>;\r\n protected throttleEmittedOnInit = {} as ThrottlingMarkers<Events>;\r\n throttle<K extends keyof Events>(\r\n event: K,\r\n data: Events[K],\r\n configuration?: ThrottleOptions,\r\n ) {\r\n if (!this.throttleEmittedOnInit[event] && configuration?.emitOnStart) {\r\n this.throttleEmittedOnInit[event] = true;\r\n setTimeout(() => {\r\n this.throttleEmittedOnInit[event] = false;\r\n }, configuration?.timing ?? this.defaultTiming);\r\n this.emit(event, data);\r\n } else if (!configuration?.emitOnStart) {\r\n if (\r\n this.throttleData[event] === NullObject ||\r\n !(event in this.throttleData)\r\n ) {\r\n setTimeout(() => {\r\n this.emit(event, this.throttleData[event] as Events[K]);\r\n this.throttleData[event] = NullObject;\r\n }, configuration?.timing ?? this.defaultTiming);\r\n }\r\n this.throttleData[event] = data;\r\n }\r\n }\r\n\r\n /**\r\n * This method is a mix between setState and debounce\r\n */\r\n setStateDebounced<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n configuration?: DebounceOptions,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.debounce(event, actualData, configuration);\r\n }\r\n\r\n /**\r\n * This method is a mix between setState and throttle\r\n */\r\n setStateThrottled<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n configuration?: ThrottleOptions,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.throttle(event, actualData, configuration);\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}