danholibraryjs 1.3.0 → 1.7.0

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 (103) hide show
  1. package/.gitattributes +2 -2
  2. package/README.md +12 -304
  3. package/Time.xlsx +0 -0
  4. package/dist/Classes/{Event.d.ts → Events/Event.d.ts} +14 -11
  5. package/dist/Classes/{Event.js → Events/Event.js} +16 -6
  6. package/dist/Classes/{EventCollection.d.ts → Events/EventCollection.d.ts} +10 -9
  7. package/dist/Classes/{EventCollection.js → Events/EventCollection.js} +27 -28
  8. package/dist/Classes/{EventEmitter.d.ts → Events/EventEmitter.d.ts} +11 -8
  9. package/dist/Classes/{EventEmitter.js → Events/EventEmitter.js} +7 -1
  10. package/dist/Classes/Events/index.d.ts +3 -0
  11. package/dist/Classes/Events/index.js +19 -0
  12. package/dist/Classes/Time/Date.d.ts +147 -0
  13. package/dist/Classes/Time/Date.js +238 -0
  14. package/dist/Classes/Time/Time.d.ts +65 -0
  15. package/dist/Classes/Time/Time.js +117 -0
  16. package/dist/Classes/Time/TimeProperties.d.ts +3 -0
  17. package/dist/{Types/EventHandler.js → Classes/Time/TimeProperties.js} +0 -0
  18. package/dist/Classes/Time/TimeSpan.d.ts +123 -0
  19. package/dist/Classes/Time/TimeSpan.js +179 -0
  20. package/dist/Classes/Time/index.d.ts +4 -0
  21. package/dist/Classes/Time/index.js +20 -0
  22. package/dist/Classes/index.d.ts +2 -2
  23. package/dist/Classes/index.js +7 -3
  24. package/dist/Extensions/Array.d.ts +31 -0
  25. package/dist/Extensions/Array.js +26 -0
  26. package/dist/Extensions/Map.d.ts +38 -0
  27. package/dist/Extensions/Map.js +31 -0
  28. package/dist/Extensions/Object.d.ts +16 -0
  29. package/dist/Extensions/Object.js +8 -0
  30. package/dist/Extensions/String.d.ts +26 -0
  31. package/dist/Extensions/String.js +17 -0
  32. package/dist/Extensions/index.d.ts +29 -0
  33. package/dist/Extensions/index.js +71 -0
  34. package/dist/Functions/GetCSSProperty.d.ts +15 -0
  35. package/dist/Functions/GetCSSProperty.js +26 -0
  36. package/dist/Functions/HTMLEvent.d.ts +11 -0
  37. package/dist/Functions/HTMLEvent.js +14 -0
  38. package/dist/Functions/SetNavigationSelected.js +2 -0
  39. package/dist/Functions/index.d.ts +2 -0
  40. package/dist/Functions/index.js +7 -1
  41. package/dist/Interfaces/ElementOptions.d.ts +12 -18
  42. package/dist/Interfaces/IReplacement.d.ts +3 -2
  43. package/dist/Interfaces/index.js +5 -1
  44. package/dist/Types/BetterTypes.d.ts +9 -0
  45. package/dist/Types/{IElement.js → BetterTypes.js} +0 -0
  46. package/dist/Types/Date.d.ts +6 -0
  47. package/dist/Types/{StringRegex.js → Date.js} +0 -0
  48. package/dist/Types/Events.d.ts +10 -0
  49. package/dist/Types/Events.js +2 -0
  50. package/dist/Types/PropertiesWith.d.ts +13 -0
  51. package/dist/Types/PropertiesWith.js +2 -0
  52. package/dist/Types/TransformTypes.d.ts +13 -0
  53. package/dist/Types/TransformTypes.js +2 -0
  54. package/dist/Types/index.d.ts +31 -3
  55. package/dist/Types/index.js +10 -4
  56. package/dist/index.d.ts +5 -9
  57. package/dist/index.js +19 -8
  58. package/docs/Classes.md +455 -0
  59. package/docs/Extensions.md +146 -0
  60. package/docs/Functions.md +53 -0
  61. package/docs/Interfaces.md +34 -0
  62. package/docs/Types.md +129 -0
  63. package/docs/index.md +29 -0
  64. package/package.json +22 -21
  65. package/src/Classes/{Event.ts → Events/Event.ts} +31 -20
  66. package/src/Classes/Events/EventCollection.ts +109 -0
  67. package/src/Classes/{EventEmitter.ts → Events/EventEmitter.ts} +16 -13
  68. package/src/Classes/Events/index.ts +3 -0
  69. package/src/Classes/Time/Date.ts +264 -0
  70. package/src/Classes/Time/Time.ts +134 -0
  71. package/src/Classes/Time/TimeProperties.ts +3 -0
  72. package/src/Classes/Time/TimeSpan.ts +195 -0
  73. package/src/Classes/Time/index.ts +4 -0
  74. package/src/Classes/index.ts +2 -2
  75. package/src/Extensions/Array.ts +57 -0
  76. package/src/Extensions/Map.ts +73 -0
  77. package/src/Extensions/Object.ts +25 -0
  78. package/src/Extensions/String.ts +43 -0
  79. package/src/Extensions/index.ts +83 -0
  80. package/src/Functions/GetCSSProperty.ts +27 -0
  81. package/src/Functions/HTMLEvent.ts +13 -0
  82. package/src/Functions/SetNavigationSelected.ts +1 -0
  83. package/src/Functions/index.ts +3 -1
  84. package/src/Interfaces/ElementOptions.ts +18 -16
  85. package/src/Interfaces/IReplacement.ts +4 -3
  86. package/src/Types/BetterTypes.ts +10 -0
  87. package/src/Types/Date.ts +7 -0
  88. package/src/Types/Events.ts +15 -0
  89. package/src/Types/PropertiesWith.ts +14 -0
  90. package/src/Types/TransformTypes.ts +18 -0
  91. package/src/Types/index.ts +36 -3
  92. package/src/index.ts +5 -13
  93. package/tsconfig.json +99 -7
  94. package/dist/Extensions.d.ts +0 -81
  95. package/dist/Extensions.js +0 -80
  96. package/dist/Types/EventHandler.d.ts +0 -6
  97. package/dist/Types/IElement.d.ts +0 -9
  98. package/dist/Types/StringRegex.d.ts +0 -2
  99. package/src/Classes/EventCollection.ts +0 -115
  100. package/src/Extensions.ts +0 -179
  101. package/src/Types/EventHandler.ts +0 -6
  102. package/src/Types/IElement.ts +0 -9
  103. package/src/Types/StringRegex.ts +0 -2
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetCSSProperty = void 0;
4
+ /**
5
+ * Gets the value of "property" in type "type" from query "query"
6
+ * Basically, you can get your --color-primary from :root
7
+ *
8
+ * @param property Name of the property to get
9
+ * @param type Type of the property to parse
10
+ * @param query Query to get the element that has the property
11
+ * @returns Property value converted to type
12
+ */
13
+ function GetCSSProperty(property, type, query = ":root") {
14
+ const rootEl = document.querySelector(query);
15
+ if (!rootEl)
16
+ throw new Error(`${query} does not exist!`);
17
+ const rootStyles = getComputedStyle(rootEl);
18
+ const cssProp = rootStyles.getPropertyValue(property);
19
+ if (type === 'string')
20
+ return cssProp;
21
+ const numberValue = parseInt(cssProp);
22
+ if (isNaN(numberValue))
23
+ throw new Error(`${property} is not a number!: ${cssProp}`);
24
+ return numberValue;
25
+ }
26
+ exports.GetCSSProperty = GetCSSProperty;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Create HTMLEvent object from function
3
+ * @param name Name of the event
4
+ * @param handler Handler for the event
5
+ * @returns Parameters as object
6
+ */
7
+ export declare function HTMLEvent<Event extends keyof HTMLElementEventMap, ReturnType extends any>(name: Event, handler: (event: HTMLElementEventMap[Event]) => ReturnType): {
8
+ name: Event;
9
+ handler: (event: HTMLElementEventMap[Event]) => ReturnType;
10
+ };
11
+ export default HTMLEvent;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HTMLEvent = void 0;
4
+ /**
5
+ * Create HTMLEvent object from function
6
+ * @param name Name of the event
7
+ * @param handler Handler for the event
8
+ * @returns Parameters as object
9
+ */
10
+ function HTMLEvent(name, handler) {
11
+ return { name, handler };
12
+ }
13
+ exports.HTMLEvent = HTMLEvent;
14
+ exports.default = HTMLEvent;
@@ -10,6 +10,8 @@ exports.SetNavigationSelected = void 0;
10
10
  */
11
11
  function SetNavigationSelected(query, ...currentPageClasses) {
12
12
  const header = document.querySelector(query);
13
+ if (!header)
14
+ throw { message: `Couldn't find header from query, ${query}` };
13
15
  const children = header.children.array().filter(c => c.tagName === 'a');
14
16
  const currentPage = document.location.href;
15
17
  children.forEach(gc => {
@@ -1,2 +1,4 @@
1
1
  export * from './CopyToClipboard';
2
+ export * from './GetCSSProperty';
2
3
  export * from './SetNavigationSelected';
4
+ export * from './HTMLEvent';
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -11,4 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
11
15
  };
12
16
  Object.defineProperty(exports, "__esModule", { value: true });
13
17
  __exportStar(require("./CopyToClipboard"), exports);
18
+ __exportStar(require("./GetCSSProperty"), exports);
14
19
  __exportStar(require("./SetNavigationSelected"), exports);
20
+ __exportStar(require("./HTMLEvent"), exports);
@@ -1,21 +1,15 @@
1
- import { EventHandler } from "..";
2
- import IElement from "../Types/IElement";
1
+ import { Arrayable, IElement } from "../Types";
2
+ declare type Events = Record<`on${Capitalize<keyof HTMLElementEventMap>}`, (event: Event) => void>;
3
3
  /**
4
4
  * Construction options when creating an HTML element using:
5
- * @see Document.createProperElement */
6
- export interface ElementOptions {
7
- /**css classes to give the element*/
8
- classes?: string[];
9
- /**attributes to give the element*/
10
- attributes?: [string, string][];
11
- /**Children of the element*/
12
- children?: IElement[];
13
- /**Events for the element to listen to
14
- * @borrows EventHandler
15
- */
16
- events?: Array<{
17
- name: string;
18
- handlers: EventHandler[];
19
- }>;
20
- }
5
+ * @see Document.createProperElement
6
+ * @borwwos IElement
7
+ * @borrows Arrayable
8
+ */
9
+ export declare type ElementOptions = Partial<Events & Record<string, any> & {
10
+ id: string;
11
+ class: Arrayable<string>;
12
+ children: Arrayable<IElement>;
13
+ dataset: Record<string, string>;
14
+ }>;
21
15
  export default ElementOptions;
@@ -1,11 +1,12 @@
1
- import StringRegex from "../Types/StringRegex";
1
+ import { StringRegex } from "../Types";
2
2
  /**
3
3
  * Replacement tool for
4
4
  * @see String.toSnakeCase
5
5
  * @see String.toKebabCase
6
6
  * @borrows StringRegex
7
7
  */
8
- export default interface IReplacement {
8
+ export interface IReplacement {
9
9
  replacer?: StringRegex;
10
10
  replacement?: string;
11
11
  }
12
+ export default IReplacement;
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Construct a type with the properties of Type except for those in type Properties.
3
+ */
4
+ export declare type BetterOmit<Type, Properties extends keyof Type> = Omit<Type, Properties>;
5
+ /**
6
+ * Extract from From those types that are assignable to Properties
7
+ */
8
+ export declare type BetterExtract<From, Properties extends From> = Extract<From, Properties>;
9
+ export declare type PartialExcept<From, Properties extends keyof From> = Partial<From> & Required<Pick<From, Properties>>;
File without changes
@@ -0,0 +1,6 @@
1
+ export declare type LongMonth = 'Janurary' | 'February' | 'March' | 'April' | 'May' | 'June' | 'July' | 'August' | 'September' | 'October' | 'November' | 'December';
2
+ export declare type ShortMonth = 'Jan' | 'Feb' | 'Mar' | 'Apr' | 'May' | 'Jun' | 'Jul' | 'Aug' | 'Sep' | 'Oct' | 'Nov' | 'Dec';
3
+ export declare type Month = LongMonth | ShortMonth;
4
+ export declare type ShortDay = 'Mon' | 'Tue' | 'Wed' | 'Thu' | 'Fri' | 'Sat' | 'Sun';
5
+ export declare type LongDay = `${'Mon' | 'Tues' | 'Wednes' | 'Thurs' | 'Fri' | 'Satur' | 'Sun'}day`;
6
+ export declare type Day = ShortDay | LongDay;
File without changes
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Default eventhandler mapper. Object with properties that are arrays
3
+ */
4
+ export declare type BaseEvent<Keys extends string, Types extends Array<any>> = Record<Keys, Types>;
5
+ /**
6
+ * Eventhandler type for:
7
+ * @see EventCollection
8
+ * @borrows BaseEvent
9
+ */
10
+ export declare type EventHandler<Events extends BaseEvent<string, Array<any>> = BaseEvent<string, Array<any>>, Event extends keyof Events = keyof Events, ReturnType = any> = (...args: Events[Event]) => ReturnType;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Filters all properties from From that has the return type of Type
3
+ */
4
+ export declare type PropertiesWith<Type, From> = {
5
+ [Key in keyof From as From[Key] extends Type ? Key : never]: From[Key];
6
+ };
7
+ export default PropertiesWith;
8
+ /**
9
+ * Fitlers all properties from From that don't have the return type of Type
10
+ */
11
+ export declare type PropertiesWithout<Type, From> = {
12
+ [Key in keyof From as From[Key] extends Type ? never : Key]: From[Key];
13
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Converts Start types to Switch types in From type
3
+ */
4
+ export declare type TransformType<From, Start, Switch> = {
5
+ [Key in keyof From]: From[Key] extends Start ? Switch : From[Key];
6
+ };
7
+ /**
8
+ * Returns object with properties matching BaseType with types of NewType
9
+ */
10
+ export declare type TransformTypes<From, BaseType, NewType> = Record<keyof {
11
+ [Key in keyof From as From[Key] extends BaseType ? Key : never]: Key;
12
+ }, NewType>;
13
+ export default TransformTypes;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,3 +1,31 @@
1
- export * from './EventHandler';
2
- export * from './IElement';
3
- export * from './StringRegex';
1
+ export * from './BetterTypes';
2
+ export * from './Date';
3
+ export * from './Events';
4
+ export * from './TransformTypes';
5
+ export * from './PropertiesWith';
6
+ /**
7
+ * Item is single or multiple
8
+ */
9
+ export declare type Arrayable<T> = T | Array<T>;
10
+ /**
11
+ * Used for HTMLElement.append in ElementOptions, Document.createProperElement.
12
+ * IElement accepts HTML Elements or HTMl-like strings.
13
+ *
14
+ * @see HTMLElement.append
15
+ * @see Document.createProperElement
16
+ */
17
+ export declare type IElement = HTMLElement | string;
18
+ /**
19
+ * Return types of T
20
+ */
21
+ export declare type ValueOf<T> = T[keyof T];
22
+ /**
23
+ * Type's properties are ReturnType
24
+ */
25
+ export declare type AllPropsAre<ReturnType> = {
26
+ [key: string]: ReturnType;
27
+ };
28
+ /**
29
+ * string or RegExp.. pretty self-explanatory
30
+ */
31
+ export declare type StringRegex = string | RegExp;
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -10,6 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
15
  };
12
16
  Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./EventHandler"), exports);
14
- __exportStar(require("./IElement"), exports);
15
- __exportStar(require("./StringRegex"), exports);
17
+ __exportStar(require("./BetterTypes"), exports);
18
+ __exportStar(require("./Date"), exports);
19
+ __exportStar(require("./Events"), exports);
20
+ __exportStar(require("./TransformTypes"), exports);
21
+ __exportStar(require("./PropertiesWith"), exports);
package/dist/index.d.ts CHANGED
@@ -1,9 +1,5 @@
1
- import { EventHandler, IElement } from './Types';
2
- export { EventHandler, IElement };
3
- import { ElementOptions } from './Interfaces';
4
- export { ElementOptions };
5
- import { EventCollection, EventEmitter } from './Classes';
6
- export { EventCollection, EventEmitter };
7
- import { CopyToClipboard, SetNavigationSelected } from './Functions';
8
- export { CopyToClipboard, SetNavigationSelected };
9
- export * as Extensions from './Extensions';
1
+ export * from './Classes';
2
+ export * from './Extensions';
3
+ export * from './Functions';
4
+ export * from './Interfaces';
5
+ export * from './Types';
package/dist/index.js CHANGED
@@ -1,10 +1,21 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Extensions = exports.SetNavigationSelected = exports.CopyToClipboard = exports.EventEmitter = exports.EventCollection = void 0;
4
- const Classes_1 = require("./Classes");
5
- Object.defineProperty(exports, "EventCollection", { enumerable: true, get: function () { return Classes_1.EventCollection; } });
6
- Object.defineProperty(exports, "EventEmitter", { enumerable: true, get: function () { return Classes_1.EventEmitter; } });
7
- const Functions_1 = require("./Functions");
8
- Object.defineProperty(exports, "CopyToClipboard", { enumerable: true, get: function () { return Functions_1.CopyToClipboard; } });
9
- Object.defineProperty(exports, "SetNavigationSelected", { enumerable: true, get: function () { return Functions_1.SetNavigationSelected; } });
10
- exports.Extensions = require("./Extensions");
17
+ __exportStar(require("./Classes"), exports);
18
+ __exportStar(require("./Extensions"), exports);
19
+ __exportStar(require("./Functions"), exports);
20
+ __exportStar(require("./Interfaces"), exports);
21
+ __exportStar(require("./Types"), exports);