tool-shack 0.0.2 → 0.0.6

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 (124) hide show
  1. package/.husky/pre-commit +4 -0
  2. package/.husky/pre-push +4 -0
  3. package/.prettierignore +6 -0
  4. package/.prettierrc +9 -0
  5. package/README.md +1 -1
  6. package/dist/browser/index.d.ts +3 -0
  7. package/dist/browser/index.js +3 -0
  8. package/dist/browser/index.js.map +1 -1
  9. package/dist/browser/interfaces/isTouchSupported.d.ts +3 -0
  10. package/dist/browser/interfaces/isTouchSupported.js +2 -0
  11. package/dist/browser/interfaces/isTouchSupported.js.map +1 -0
  12. package/dist/browser/isTabFocused.d.ts +6 -0
  13. package/dist/browser/isTabFocused.js +7 -0
  14. package/dist/browser/isTabFocused.js.map +1 -0
  15. package/dist/browser/isTouchSupported.d.ts +6 -0
  16. package/dist/browser/isTouchSupported.js +7 -0
  17. package/dist/browser/isTouchSupported.js.map +1 -0
  18. package/dist/browser/preferColorScheme.d.ts +15 -0
  19. package/dist/browser/preferColorScheme.js +15 -0
  20. package/dist/browser/preferColorScheme.js.map +1 -1
  21. package/dist/browser/tabFocusListener.d.ts +8 -0
  22. package/dist/browser/tabFocusListener.js +19 -0
  23. package/dist/browser/tabFocusListener.js.map +1 -0
  24. package/dist/dateTime/dateAsIso.d.ts +7 -0
  25. package/dist/dateTime/dateAsIso.js +16 -0
  26. package/dist/dateTime/dateAsIso.js.map +1 -0
  27. package/dist/dateTime/index.d.ts +3 -0
  28. package/dist/dateTime/index.js +4 -0
  29. package/dist/dateTime/index.js.map +1 -0
  30. package/dist/dateTime/interfaces/index.d.ts +1 -0
  31. package/dist/dateTime/interfaces/index.js +2 -0
  32. package/dist/dateTime/interfaces/index.js.map +1 -0
  33. package/dist/dateTime/interfaces/parseDuration.d.ts +7 -0
  34. package/dist/dateTime/interfaces/parseDuration.js +2 -0
  35. package/dist/dateTime/interfaces/parseDuration.js.map +1 -0
  36. package/dist/dateTime/parseDuration.d.ts +8 -0
  37. package/dist/dateTime/parseDuration.js +17 -0
  38. package/dist/dateTime/parseDuration.js.map +1 -0
  39. package/dist/dom/addAsyncEventListener.d.ts +8 -0
  40. package/dist/dom/addAsyncEventListener.js +8 -0
  41. package/dist/dom/addAsyncEventListener.js.map +1 -1
  42. package/dist/dom/addEventListener.d.ts +7 -0
  43. package/dist/dom/addEventListener.js +7 -0
  44. package/dist/dom/addEventListener.js.map +1 -1
  45. package/dist/dom/appendAfter.d.ts +8 -0
  46. package/dist/dom/appendAfter.js +9 -0
  47. package/dist/dom/appendAfter.js.map +1 -0
  48. package/dist/dom/appendBefore.d.ts +8 -0
  49. package/dist/dom/appendBefore.js +9 -0
  50. package/dist/dom/appendBefore.js.map +1 -0
  51. package/dist/dom/createElement.d.ts +8 -1
  52. package/dist/dom/createElement.js +18 -2
  53. package/dist/dom/createElement.js.map +1 -1
  54. package/dist/dom/fireEvent.d.ts +8 -0
  55. package/dist/dom/fireEvent.js +9 -0
  56. package/dist/dom/fireEvent.js.map +1 -0
  57. package/dist/dom/index.d.ts +4 -0
  58. package/dist/dom/index.js +4 -0
  59. package/dist/dom/index.js.map +1 -1
  60. package/dist/dom/interfaces/createElement.d.ts +3 -0
  61. package/dist/dom/interfaces/index.d.ts +1 -0
  62. package/dist/dom/interfaces/index.js +2 -0
  63. package/dist/dom/interfaces/index.js.map +1 -0
  64. package/dist/index.d.ts +2 -0
  65. package/dist/index.js +2 -0
  66. package/dist/index.js.map +1 -1
  67. package/dist/schedule/runAsync.d.ts +6 -0
  68. package/dist/schedule/runAsync.js +6 -0
  69. package/dist/schedule/runAsync.js.map +1 -1
  70. package/dist/string/escapeHTML.d.ts +7 -0
  71. package/dist/string/escapeHTML.js +12 -0
  72. package/dist/string/escapeHTML.js.map +1 -0
  73. package/dist/string/index.d.ts +1 -0
  74. package/dist/string/index.js +2 -0
  75. package/dist/string/index.js.map +1 -0
  76. package/dist/var/www/imeteo.local/public_html/resources/assets/ts/components/regioweather.d.ts +14 -0
  77. package/dist/var/www/imeteo.local/public_html/resources/assets/ts/pages/forecast.d.ts +1 -0
  78. package/dist/var/www/imeteo.local/public_html/resources/assets/ts/pages/homepage.d.ts +1 -0
  79. package/dist/var/www/imeteo.local/public_html/resources/assets/ts/pages/regioweather.d.ts +1 -0
  80. package/docs/.nojekyll +1 -0
  81. package/docs/assets/highlight.css +22 -0
  82. package/docs/assets/icons.css +1043 -0
  83. package/docs/assets/icons.png +0 -0
  84. package/docs/assets/icons@2x.png +0 -0
  85. package/docs/assets/main.js +52 -0
  86. package/docs/assets/search.js +1 -0
  87. package/docs/assets/style.css +1388 -0
  88. package/docs/assets/widgets.png +0 -0
  89. package/docs/assets/widgets@2x.png +0 -0
  90. package/docs/index.html +5 -0
  91. package/docs/interfaces/dateTime.IDuration.html +1 -0
  92. package/docs/interfaces/dom.IExtendingElementProps.html +1 -0
  93. package/docs/modules/browser.html +23 -0
  94. package/docs/modules/dateTime.html +11 -0
  95. package/docs/modules/dom.html +45 -0
  96. package/docs/modules/schedule.html +6 -0
  97. package/docs/modules/string.html +6 -0
  98. package/docs/modules.html +1 -0
  99. package/package.json +17 -10
  100. package/src/browser/index.ts +3 -0
  101. package/src/browser/interfaces/isTouchSupported.ts +3 -0
  102. package/src/browser/isTabFocused.ts +6 -0
  103. package/src/browser/isTouchSupported.ts +12 -0
  104. package/src/browser/preferColorScheme.ts +15 -0
  105. package/src/browser/tabFocusListener.ts +18 -0
  106. package/src/dateTime/dateAsIso.ts +18 -0
  107. package/src/dateTime/index.ts +4 -0
  108. package/src/dateTime/interfaces/index.ts +1 -0
  109. package/src/dateTime/interfaces/parseDuration.ts +7 -0
  110. package/src/dateTime/parseDuration.ts +19 -0
  111. package/src/dom/addAsyncEventListener.ts +8 -0
  112. package/src/dom/addEventListener.ts +7 -0
  113. package/src/dom/appendAfter.ts +9 -0
  114. package/src/dom/appendBefore.ts +9 -0
  115. package/src/dom/createElement.ts +19 -4
  116. package/src/dom/fireEvent.ts +8 -0
  117. package/src/dom/index.ts +5 -0
  118. package/src/dom/interfaces/createElement.ts +6 -0
  119. package/src/dom/interfaces/index.ts +1 -0
  120. package/src/index.ts +2 -0
  121. package/src/schedule/runAsync.ts +6 -0
  122. package/src/string/escapeHTML.ts +12 -0
  123. package/src/string/index.ts +1 -0
  124. package/tsconfig.json +2 -7
@@ -1,3 +1,10 @@
1
+ /**
2
+ * Add event listener(s) to one or more Node elements
3
+ *
4
+ * @param element One or multiple Node element(s) to set listener(s) for
5
+ * @param listeners List of event types and related callback(s)
6
+ * @returns void
7
+ */
1
8
  export const addEventListener = (
2
9
  element: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement> | HTMLCollectionOf<HTMLElement>,
3
10
  listeners: Record<string, EventListenerOrEventListenerObject | EventListenerOrEventListenerObject[]>
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Append given node after reference node in the DOM
3
+ *
4
+ * @param newNode New node element to be appended
5
+ * @param referenceNode Reference node element
6
+ * @returns Result of the action
7
+ */
8
+ export const appendAfter = (newNode: HTMLElement, referenceNode: HTMLElement): boolean =>
9
+ !!referenceNode.parentElement?.insertBefore(newNode, referenceNode.nextSibling);
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Append given node before reference node in the DOM
3
+ *
4
+ * @param newNode New node element to be appended
5
+ * @param referenceNode Reference node element
6
+ * @returns Result of the action
7
+ */
8
+ export const appendBefore = (newNode: HTMLElement, referenceNode: HTMLElement): boolean =>
9
+ !!referenceNode.parentElement?.insertBefore(newNode, referenceNode);
@@ -1,13 +1,28 @@
1
1
  import { IExtendingElementProps } from './interfaces/createElement';
2
2
 
3
- export const createElement = <T = HTMLElement> (tagName: string, props?: Partial<T> & IExtendingElementProps): T => {
3
+ /**
4
+ * Method for creating Node element and assigning multiple parameters, event listeners & children in one method call
5
+ *
6
+ * @param tagName Node tag name
7
+ * @param props List of attributes, event listeners or/and children to assign to the newly created element
8
+ * @returns Resulting Node element
9
+ */
10
+ export const createElement = <T = HTMLElement> (tagName: string, props?: Partial<Omit<T, 'children'>> & IExtendingElementProps): T => {
4
11
  const element: HTMLElement = document.createElement(tagName);
5
12
 
6
13
  if (props) {
7
14
  for (let key in props) {
8
- if (key==='children') {
15
+ const value = (props as any)[key];
16
+
17
+ if (key === 'role') {
18
+ element.setAttribute(key, value);
19
+ } else if (key === 'aria') {
20
+ for (let ariaKey in props.aria!) {
21
+ element.setAttribute(`aria-${ariaKey}`, value[ariaKey]);
22
+ }
23
+ } else if (key === 'children') {
9
24
  props.children!.forEach((child: HTMLElement) => element.appendChild(child));
10
- } else if (key==='listeners') {
25
+ } else if (key === 'listeners') {
11
26
  for (let eventName in props.listeners!) {
12
27
  const functionList = (
13
28
  props.listeners![eventName] instanceof Array ? props.listeners![eventName] : [props.listeners![eventName]]
@@ -16,7 +31,7 @@ export const createElement = <T = HTMLElement> (tagName: string, props?: Partial
16
31
  functionList.forEach((fn: EventListenerOrEventListenerObject) => element.addEventListener(eventName, fn));
17
32
  }
18
33
  } else {
19
- (element as any)[key] = (props as any)[key];
34
+ (element as any)[key] = value;
20
35
  }
21
36
  }
22
37
  }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Manually fire event on Node element
3
+ *
4
+ * @param element Node element on which should be fired event
5
+ * @param eventType Type name of event that should be fired
6
+ * @returns Result of the action
7
+ */
8
+ export const fireEvent = (element: HTMLElement, eventType: string): boolean => element.dispatchEvent(new Event(eventType));
package/src/dom/index.ts CHANGED
@@ -1,3 +1,8 @@
1
+ export * from './interfaces';
2
+
1
3
  export * from './addAsyncEventListener';
2
4
  export * from './addEventListener';
5
+ export * from './appendAfter';
6
+ export * from './appendBefore';
3
7
  export * from './createElement';
8
+ export * from './fireEvent';
@@ -1,4 +1,10 @@
1
+ export type TAriaLabelKey = 'atomic' | 'busy' | 'controls' | 'current' | 'describedby' | 'details' | 'disables' |
2
+ 'dropeffect' | 'errormessage' | 'expanded' | 'flowto' | 'grabbed' | 'haspopup' | 'hidden' | 'invalid' |
3
+ 'keyshortcuts' | 'label' | 'labelledby' | 'live' | 'modal' | 'owns' | 'relevant' | 'roledescription';
4
+
1
5
  export interface IExtendingElementProps {
2
6
  children?: HTMLElement[];
3
7
  listeners?: Record<string, EventListenerOrEventListenerObject | EventListenerOrEventListenerObject[]>;
8
+ role?: string;
9
+ aria?: Partial<Record<TAriaLabelKey, string>>;
4
10
  }
@@ -0,0 +1 @@
1
+ export * from './createElement';
package/src/index.ts CHANGED
@@ -1,3 +1,5 @@
1
1
  export * from './browser';
2
+ export * from './dateTime';
2
3
  export * from './dom';
3
4
  export * from './schedule'
5
+ export * from './string'
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Run function in asynchronously in Worker
3
+ *
4
+ * @param fn Function to be run asynchronously
5
+ * @returns Promise of expected result
6
+ */
1
7
  export const runAsync = <T> (fn: () => any): Promise<T> => {
2
8
  const worker = new Worker(
3
9
  URL.createObjectURL(new Blob([`postMessage((${fn})());`])),
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Escape special HTML related characters from string
3
+ *
4
+ * @param html String containing HTML related characters
5
+ * @returns Safe string with escaped HTML related characters
6
+ */
7
+ export const escapeHTML = (html: string): string => {
8
+ const tempDiv = document.createElement('div');
9
+ tempDiv.innerText = html;
10
+
11
+ return tempDiv.innerHTML;
12
+ }
@@ -0,0 +1 @@
1
+ export * from './escapeHTML';
package/tsconfig.json CHANGED
@@ -13,12 +13,7 @@
13
13
  "baseUrl": ".",
14
14
  "declaration": true,
15
15
  "outDir": "./dist",
16
- "lib": [
17
- "dom",
18
- "es2018"
19
- ],
16
+ "lib": ["dom", "es2021"]
20
17
  },
21
- "include": [
22
- "src/**/*.ts"
23
- ]
18
+ "include": ["src/**/*.ts"]
24
19
  }