@rickard.antonsson/ts-utility 2.1.3 → 2.2.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.
@@ -1,5 +1,5 @@
1
1
  import { Fn } from '../../types';
2
2
  export declare function createElement<S extends keyof HTMLElementTagNameMap | `${keyof HTMLElementTagNameMap}${SplittingChars}${string}`>(basicEmmet: S, listOrFn?: (HTMLElement | string | (() => HTMLElement | string))[] | Fn<[HTMLElementTagNameMap[ExtractHtmlTagName<S>]], void>, list?: (HTMLElement | string | (() => HTMLElement | string))[]): HTMLElementTagNameMap[ExtractHtmlTagName<S>];
3
- type SplittingChars = '.' | '{' | '#';
3
+ type SplittingChars = '.' | '{' | '#' | '[';
4
4
  type ExtractHtmlTagName<T extends string> = T extends keyof HTMLElementTagNameMap ? T : T extends `${infer Tag}${SplittingChars}${string}` ? Tag extends keyof HTMLElementTagNameMap ? Tag : never : never;
5
5
  export {};
@@ -15,19 +15,43 @@ function createElement(basicEmmet, listOrFn, list) {
15
15
  elm.append(...list.map(i => (typeof i === 'function' ? i() : i)));
16
16
  return elm;
17
17
  }
18
- createElement('div.asdf', i => (i.id = ''), [() => createElement('div')]);
19
- function emmetCreateElement(str) {
20
- const matches = str.match(/([a-z-]+)(#[a-z1-9-]+)?((\.[a-z1-9-]+)*)(\{.+\})?/);
21
- if (!matches)
22
- return;
23
- const [, tagName, id, classnames, , textContent] = matches;
24
- const element = document.createElement(tagName);
18
+ function emmetCreateElement(input) {
19
+ var _a, _b, _c, _d, _e;
20
+ const [, tagname, , modifier] = (_a = input.match(/^([a-z-]+)(:([a-z-]+))?/)) !== null && _a !== void 0 ? _a : [];
21
+ const element = document.createElement((tagname !== null && tagname !== void 0 ? tagname : 'div'));
22
+ if (modifier)
23
+ handleElementModifier(element, modifier);
24
+ const [, id] = (_b = input.match(/#([a-z-]+)/)) !== null && _b !== void 0 ? _b : [];
25
25
  if (id)
26
- element.id = id.substring(1);
27
- if (classnames)
28
- element.className = classnames.substring(1).split('.').join(' ');
29
- if (textContent)
30
- element.textContent = textContent.substring(1, textContent.length - 1);
26
+ element.id = id;
27
+ const [, text] = (_c = input.match(/{(.*)}/)) !== null && _c !== void 0 ? _c : [];
28
+ if (text)
29
+ element.textContent = text;
30
+ const classnames = [...input.matchAll(/\.([a-z-0-9]*)/g)];
31
+ if (classnames.length)
32
+ element.className = classnames.map(cn => cn[1]).join(' ');
33
+ const [, allAttributes] = (_d = input.match(/\[(.*?)\]/)) !== null && _d !== void 0 ? _d : [];
34
+ const temp = [
35
+ ...((_e = allAttributes === null || allAttributes === void 0 ? void 0 : allAttributes.matchAll(/(\b\w+\b)(=(\b\w+)|="(.+?)")?/gi)) !== null && _e !== void 0 ? _e : []),
36
+ ];
37
+ temp === null || temp === void 0 ? void 0 : temp.forEach(([, prop, , single, multiple]) => { var _a; return (element[prop] = (_a = single !== null && single !== void 0 ? single : multiple) !== null && _a !== void 0 ? _a : true); });
31
38
  return element;
32
39
  }
40
+ function handleElementModifier(elm, attribute) {
41
+ var _a;
42
+ if (elm instanceof HTMLInputElement) {
43
+ const expand = {
44
+ b: 'button',
45
+ c: 'checkbox',
46
+ f: 'file',
47
+ h: 'hidden',
48
+ i: 'image',
49
+ r: 'radio',
50
+ s: 'submit',
51
+ t: 'text',
52
+ p: 'password',
53
+ };
54
+ elm.type = (_a = expand[attribute]) !== null && _a !== void 0 ? _a : attribute;
55
+ }
56
+ }
33
57
  //# sourceMappingURL=create-element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-element.js","sourceRoot":"","sources":["../../../src/functions/other/create-element.ts"],"names":[],"mappings":";;AAEA,sCAsBC;AAtBD,SAAgB,aAAa,CAK3B,UAAa,EACb,QAE4D,EAC5D,IAA8D;IAE9D,MAAM,GAAG,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;IAC3D,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAChD,IAAI,OAAO,QAAQ,KAAK,UAAU;YAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;;YAE3D,GAAG,CAAC,MAAM,CACR,GAAG,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAClE,CAAC;IACN,CAAC;IACD,IAAI,IAAI;QAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,OAAO,GAAG,CAAC;AACb,CAAC;AAED,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE1E,SAAS,kBAAkB,CAAmB,GAAM;IAClD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CACvB,mDAAmD,CACpD,CAAC;IACF,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,AAAD,EAAG,WAAW,CAAC,GAAG,OAAO,CAAC;IAC3D,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAgC,CAAC,CAAC;IACzE,IAAI,EAAE;QAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,UAAU;QACZ,OAAO,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnE,IAAI,WAAW;QACb,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzE,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"create-element.js","sourceRoot":"","sources":["../../../src/functions/other/create-element.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rickard.antonsson/ts-utility",
3
- "version": "2.1.3",
3
+ "version": "2.2.2",
4
4
  "description": "My favorite small helper functions",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -9,16 +9,6 @@
9
9
  ],
10
10
  "license": "Apache-2.0",
11
11
  "keywords": [],
12
- "scripts": {
13
- "test": "jest",
14
- "lint": "gts lint",
15
- "clean": "gts clean",
16
- "compile": "tsc",
17
- "fix": "gts fix",
18
- "prepare": "pnpm run compile",
19
- "pretest": "pnpm run compile",
20
- "posttest": "pnpm run lint"
21
- },
22
12
  "devDependencies": {
23
13
  "@babel/core": "^7.16.0",
24
14
  "@babel/preset-env": "^7.23.3",
@@ -34,5 +24,14 @@
34
24
  },
35
25
  "dependencies": {
36
26
  "@rickard.antonsson/ts-utility": "file:"
27
+ },
28
+ "scripts": {
29
+ "test": "jest",
30
+ "lint": "gts lint",
31
+ "clean": "gts clean",
32
+ "compile": "tsc",
33
+ "fix": "gts fix",
34
+ "pretest": "pnpm run compile",
35
+ "posttest": "pnpm run lint"
37
36
  }
38
- }
37
+ }