@burger-editor/frozen-patty 0.10.0 → 4.0.0-alpha.1

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 (53) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +26 -27
  3. package/dist/field-name-parser.d.ts +8 -0
  4. package/dist/field-name-parser.js +18 -0
  5. package/{lib → dist}/frozen-patty.d.ts +4 -18
  6. package/dist/frozen-patty.js +43 -0
  7. package/dist/get-value.d.ts +10 -0
  8. package/dist/get-value.js +15 -0
  9. package/dist/get-values.d.ts +9 -0
  10. package/dist/get-values.js +158 -0
  11. package/dist/get.d.ts +9 -0
  12. package/dist/get.js +19 -0
  13. package/dist/index.d.ts +13 -0
  14. package/dist/index.js +14 -0
  15. package/dist/set-value.d.ts +21 -0
  16. package/{lib/setValue.js → dist/set-value.js} +249 -221
  17. package/dist/set.d.ts +9 -0
  18. package/dist/set.js +60 -0
  19. package/dist/types.d.ts +6 -0
  20. package/dist/types.js +1 -0
  21. package/dist/utils.d.ts +18 -0
  22. package/dist/utils.js +37 -0
  23. package/package.json +35 -39
  24. package/lib/frozen-patty.d.ts.map +0 -1
  25. package/lib/frozen-patty.js +0 -47
  26. package/lib/frozen-patty.js.map +0 -1
  27. package/lib/get.d.ts +0 -4
  28. package/lib/get.d.ts.map +0 -1
  29. package/lib/get.js +0 -20
  30. package/lib/get.js.map +0 -1
  31. package/lib/getValue.d.ts +0 -10
  32. package/lib/getValue.d.ts.map +0 -1
  33. package/lib/getValue.js +0 -142
  34. package/lib/getValue.js.map +0 -1
  35. package/lib/index.d.ts +0 -35
  36. package/lib/index.d.ts.map +0 -1
  37. package/lib/index.js +0 -55
  38. package/lib/index.js.map +0 -1
  39. package/lib/polyfill.d.ts +0 -1
  40. package/lib/polyfill.d.ts.map +0 -1
  41. package/lib/polyfill.js +0 -20
  42. package/lib/polyfill.js.map +0 -1
  43. package/lib/set.d.ts +0 -4
  44. package/lib/set.d.ts.map +0 -1
  45. package/lib/set.js +0 -56
  46. package/lib/set.js.map +0 -1
  47. package/lib/setValue.d.ts +0 -15
  48. package/lib/setValue.d.ts.map +0 -1
  49. package/lib/setValue.js.map +0 -1
  50. package/lib/util.d.ts +0 -8
  51. package/lib/util.d.ts.map +0 -1
  52. package/lib/util.js +0 -30
  53. package/lib/util.js.map +0 -1
package/dist/set.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ import type { Filter, FrozenPattyData } from './types.js';
2
+ /**
3
+ *
4
+ * @param el
5
+ * @param data
6
+ * @param attr
7
+ * @param filter
8
+ */
9
+ export default function (el: Element, data: FrozenPattyData, attr: string, filter?: Filter): Element;
package/dist/set.js ADDED
@@ -0,0 +1,60 @@
1
+ import { setValue } from './set-value.js';
2
+ import { kebabCase } from './utils.js';
3
+ /**
4
+ *
5
+ * @param el
6
+ * @param data
7
+ * @param attr
8
+ * @param filter
9
+ */
10
+ export default function (el, data, attr, filter) {
11
+ el = el.cloneNode(true);
12
+ for (const dataKeyName in data) {
13
+ if (dataKeyName in data) {
14
+ const datum = data[dataKeyName];
15
+ const selector = `[data-${attr}*="${kebabCase(dataKeyName)}"]`;
16
+ // eslint-disable-next-line unicorn/prefer-spread
17
+ const targetList = Array.from(el.querySelectorAll(selector));
18
+ if (Array.isArray(datum)) {
19
+ const targetEl = targetList[0];
20
+ if (!targetEl) {
21
+ continue;
22
+ }
23
+ const listRoot = targetEl.closest(`[data-${attr}-list]`);
24
+ if (!listRoot || (listRoot && listRoot.children.length === 0)) {
25
+ continue;
26
+ }
27
+ const listItem = listRoot.children[0]?.cloneNode(true);
28
+ while (listItem && datum.length > listRoot.children.length) {
29
+ listRoot.append(listItem.cloneNode(true));
30
+ }
31
+ // eslint-disable-next-line unicorn/prefer-spread
32
+ const newChildren = Array.from(listRoot.querySelectorAll(selector));
33
+ // eslint-disable-next-line unicorn/prefer-spread
34
+ const oldChildList = Array.from(listRoot.children);
35
+ let deleteNodeList = [];
36
+ for (const [i, child] of [...newChildren].entries()) {
37
+ if (datum[i] == null) {
38
+ setValue(child, dataKeyName, '', attr, filter);
39
+ const oldChild = oldChildList[i];
40
+ if (oldChild) {
41
+ deleteNodeList.push(oldChild);
42
+ }
43
+ }
44
+ else {
45
+ setValue(child, dataKeyName, datum[i], attr, filter);
46
+ deleteNodeList = [];
47
+ }
48
+ }
49
+ for (const node of deleteNodeList)
50
+ node.remove();
51
+ }
52
+ else {
53
+ for (const [, targetEl] of [...targetList].entries()) {
54
+ setValue(targetEl, dataKeyName, datum, attr, filter);
55
+ }
56
+ }
57
+ }
58
+ }
59
+ return el;
60
+ }
@@ -0,0 +1,6 @@
1
+ export interface FrozenPattyData {
2
+ [filed: string]: PrimitiveData;
3
+ }
4
+ export type PrimitiveDatum = string | number | boolean | null | undefined;
5
+ export type PrimitiveData = PrimitiveDatum | PrimitiveDatum[];
6
+ export type Filter = <T>(value: T) => T;
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ import type { FrozenPattyData, PrimitiveDatum } from './types.js';
2
+ /**
3
+ *
4
+ * @param kvs
5
+ */
6
+ export declare function arrayToHash(kvs: [keyof FrozenPattyData, PrimitiveDatum, boolean][]): {
7
+ [index: string]: PrimitiveDatum | PrimitiveDatum[];
8
+ };
9
+ /**
10
+ *
11
+ * @param str
12
+ */
13
+ export declare function kebabCase(str: string): string;
14
+ /**
15
+ *
16
+ * @param str
17
+ */
18
+ export declare function camelCase(str: string): string;
package/dist/utils.js ADDED
@@ -0,0 +1,37 @@
1
+ /**
2
+ *
3
+ * @param kvs
4
+ */
5
+ export function arrayToHash(kvs) {
6
+ const result = {};
7
+ for (const kv of kvs) {
8
+ const k = kv[0];
9
+ const v = kv[1];
10
+ const toArray = kv[2];
11
+ if (!toArray) {
12
+ result[k] = v;
13
+ continue;
14
+ }
15
+ const arrayPropVal = result[k];
16
+ if (Array.isArray(arrayPropVal)) {
17
+ arrayPropVal.push(v);
18
+ continue;
19
+ }
20
+ result[k] = k in result ? [arrayPropVal, v] : [v];
21
+ }
22
+ return result;
23
+ }
24
+ /**
25
+ *
26
+ * @param str
27
+ */
28
+ export function kebabCase(str) {
29
+ return str.replaceAll(/([A-Z])/g, '-$1').toLowerCase();
30
+ }
31
+ /**
32
+ *
33
+ * @param str
34
+ */
35
+ export function camelCase(str) {
36
+ return str.replaceAll(/-([a-z])/g, (_, c) => c.toUpperCase());
37
+ }
package/package.json CHANGED
@@ -1,49 +1,45 @@
1
1
  {
2
2
  "name": "@burger-editor/frozen-patty",
3
- "version": "0.10.0",
3
+ "version": "4.0.0-alpha.1",
4
4
  "description": "Pure HTML to JSON converter that not use template engine.",
5
- "main": "lib/index.js",
6
- "types": "lib/index.d.ts",
7
- "author": "Yusuke Hirao",
5
+ "author": "D-ZERO",
8
6
  "license": "MIT",
9
- "private": false,
10
- "files": [
11
- "lib",
12
- "!lib/*.test.*"
13
- ],
14
7
  "repository": {
15
- "url": "git@github.com:YusukeHirao/frozen-patty.git"
8
+ "url": "https://github.com/d-zero-dev/BurgerEditor.git"
16
9
  },
17
- "scripts": {
18
- "build": "tsc --build",
19
- "dev": "tsc --watch",
20
- "test": "jest --coverage",
21
- "coveralls": "jest --useStderr --coverage && cat ./coverage/lcov.info | coveralls",
22
- "lint": "eslint --fix ./src/**/*"
10
+ "private": false,
11
+ "publishConfig": {
12
+ "access": "public"
23
13
  },
24
- "jest": {
25
- "roots": [
26
- "<rootDir>/src/"
27
- ],
28
- "preset": "ts-jest",
29
- "testEnvironment": "jsdom",
30
- "testEnvironmentOptions": {
31
- "url": "https://www.d-zero.co.jp"
14
+ "type": "module",
15
+ "exports": {
16
+ ".": {
17
+ "import": "./dist/index.js",
18
+ "types": "./dist/index.d.ts"
19
+ },
20
+ "./get-value": {
21
+ "import": "./dist/get-value.js",
22
+ "types": "./dist/get-value.d.ts"
32
23
  },
33
- "collectCoverageFrom": [
34
- "src/**/*.ts"
35
- ]
24
+ "./set-value": {
25
+ "import": "./dist/set-value.js",
26
+ "types": "./dist/set-value.d.ts"
27
+ },
28
+ "./utils": {
29
+ "import": "./dist/utils.js",
30
+ "types": "./dist/utils.d.ts"
31
+ },
32
+ "./types": {
33
+ "types": "./dist/types.d.ts"
34
+ }
35
+ },
36
+ "files": [
37
+ "dist"
38
+ ],
39
+ "scripts": {
40
+ "build": "tsc --project tsconfig.build.json",
41
+ "dev": "tsc --watch --project tsconfig.build.json",
42
+ "clean": "tsc --build --clean"
36
43
  },
37
- "devDependencies": {
38
- "@types/jest": "^28.1.1",
39
- "@typescript-eslint/eslint-plugin": "^5.27.1",
40
- "@typescript-eslint/parser": "^5.27.1",
41
- "coveralls": "^3.1.1",
42
- "eslint": "^8.17.0",
43
- "jest": "^28.1.1",
44
- "jest-environment-jsdom": "^28.1.1",
45
- "prettier": "^2.6.2",
46
- "ts-jest": "^28.0.4",
47
- "typescript": "^4.7.3"
48
- }
44
+ "gitHead": "1d6fef96516914352bff60f3319fc9884d882f77"
49
45
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"frozen-patty.d.ts","sourceRoot":"","sources":["../src/frozen-patty.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,OAAO,WAAW;IAC/B,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,YAAY,CAAS;IAE7B;;OAEG;IACH,OAAO,CAAC,OAAO,CAAC,CAAS;IAEzB;;;;OAIG;gBACS,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAY/C,KAAK,CAAC,IAAI,EAAE,eAAe;IAO3B,MAAM,CAAC,SAAS,UAAO,GAAG,eAAe;IAKzC,MAAM,IAAI,MAAM;IAIhB,KAAK,IAAI,OAAO;CAGvB;AAED,MAAM,WAAW,kBAAkB;IAClC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IAEH,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC/B,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;CAC/B;AAED,oBAAY,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAE1E,oBAAY,aAAa,GAAG,cAAc,GAAG,cAAc,EAAE,CAAC;AAE9D,oBAAY,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC"}
@@ -1,47 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- var get_1 = __importDefault(require("./get"));
7
- var set_1 = __importDefault(require("./set"));
8
- var FrozenPatty = /** @class */ (function () {
9
- /**
10
- *
11
- * @param html Original HTML
12
- * @param options Options
13
- */
14
- function FrozenPatty(html, options) {
15
- this._attr = 'field';
16
- this._typeConvert = false;
17
- this._dom = document.createElement('fp-placeholer');
18
- this._dom.innerHTML = html;
19
- if (options) {
20
- if (options.attr) {
21
- this._attr = options.attr;
22
- }
23
- this._typeConvert = !!options.typeConvert;
24
- this._filter = options.valueFilter;
25
- }
26
- }
27
- FrozenPatty.prototype.merge = function (data) {
28
- var currentData = this.toJSON(false);
29
- var newData = Object.assign(currentData, data);
30
- this._dom = (0, set_1.default)(this._dom, newData, this._attr, this._filter);
31
- return this;
32
- };
33
- FrozenPatty.prototype.toJSON = function (filtering) {
34
- if (filtering === void 0) { filtering = true; }
35
- var filter = filtering ? this._filter : undefined;
36
- return (0, get_1.default)(this._dom, this._attr, this._typeConvert, filter);
37
- };
38
- FrozenPatty.prototype.toHTML = function () {
39
- return this._dom.innerHTML;
40
- };
41
- FrozenPatty.prototype.toDOM = function () {
42
- return this._dom;
43
- };
44
- return FrozenPatty;
45
- }());
46
- exports.default = FrozenPatty;
47
- //# sourceMappingURL=frozen-patty.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"frozen-patty.js","sourceRoot":"","sources":["../src/frozen-patty.ts"],"names":[],"mappings":";;;;;AAAA,8CAAwB;AACxB,8CAAwB;AAExB;IAUC;;;;OAIG;IACH,qBAAY,IAAY,EAAE,OAA4B;QAb9C,UAAK,GAAG,OAAO,CAAC;QAChB,iBAAY,GAAG,KAAK,CAAC;QAa5B,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAC3B,IAAI,OAAO,EAAE;YACZ,IAAI,OAAO,CAAC,IAAI,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;aAC1B;YACD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;YAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;SACnC;IACF,CAAC;IAEM,2BAAK,GAAZ,UAAa,IAAqB;QACjC,IAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,IAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,IAAA,aAAG,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,4BAAM,GAAb,UAAc,SAAgB;QAAhB,0BAAA,EAAA,gBAAgB;QAC7B,IAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACpD,OAAO,IAAA,aAAG,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAEM,4BAAM,GAAb;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC5B,CAAC;IAEM,2BAAK,GAAZ;QACC,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACF,kBAAC;AAAD,CAAC,AA9CD,IA8CC"}
package/lib/get.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import './polyfill';
2
- import type { Filter, FrozenPattyData } from './frozen-patty';
3
- export default function (el: Element, attr: string, typeConvert: boolean, filter?: Filter): FrozenPattyData;
4
- //# sourceMappingURL=get.d.ts.map
package/lib/get.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../src/get.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,CAAC;AAIpB,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAkB,MAAM,gBAAgB,CAAC;AAG9E,MAAM,CAAC,OAAO,WACb,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,MAAM,CAAC,EAAE,MAAM,GACb,eAAe,CAQjB"}
package/lib/get.js DELETED
@@ -1,20 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- require("./polyfill");
7
- var util_1 = require("./util");
8
- var getValue_1 = __importDefault(require("./getValue"));
9
- function default_1(el, attr, typeConvert, filter) {
10
- var filedElements = el.querySelectorAll("[data-".concat(attr, "]"));
11
- var values = [];
12
- for (var _i = 0, _a = Array.from(filedElements); _i < _a.length; _i++) {
13
- var _el = _a[_i];
14
- values = values.concat((0, getValue_1.default)(_el, attr, typeConvert, filter));
15
- }
16
- var result = (0, util_1.arrayToHash)(values);
17
- return result;
18
- }
19
- exports.default = default_1;
20
- //# sourceMappingURL=get.js.map
package/lib/get.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../src/get.ts"],"names":[],"mappings":";;;;;AAAA,sBAAoB;AAEpB,+BAAqC;AAGrC,wDAAkC;AAElC,mBACC,EAAW,EACX,IAAY,EACZ,WAAoB,EACpB,MAAe;IAEf,IAAM,aAAa,GAAG,EAAE,CAAC,gBAAgB,CAAC,gBAAS,IAAI,MAAG,CAAC,CAAC;IAC5D,IAAI,MAAM,GAAuD,EAAE,CAAC;IACpE,KAAkB,UAAyB,EAAzB,KAAA,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAzB,cAAyB,EAAzB,IAAyB,EAAE;QAAxC,IAAM,GAAG,SAAA;QACb,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAA,kBAAQ,EAAC,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;KACjE;IACD,IAAM,MAAM,GAAG,IAAA,kBAAW,EAAC,MAAM,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC;AACf,CAAC;AAbD,4BAaC"}
package/lib/getValue.d.ts DELETED
@@ -1,10 +0,0 @@
1
- import type { Filter, PrimitiveDatum } from './frozen-patty';
2
- /**
3
- * Get value from an element
4
- *
5
- * @param el HTMLElement
6
- * @param attr Data attribute name for specifying the node that FrozenPatty treats as a field
7
- * @param typeConvert Auto covert type of value
8
- */
9
- export default function (el: Element, attr: string, typeConvert: boolean, filter?: Filter): [string | number, PrimitiveDatum, boolean][];
10
- //# sourceMappingURL=getValue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getValue.d.ts","sourceRoot":"","sources":["../src/getValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAmB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,WACb,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,MAAM,CAAC,EAAE,MAAM,gDAqEf"}
package/lib/getValue.js DELETED
@@ -1,142 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /**
4
- * Get value from an element
5
- *
6
- * @param el HTMLElement
7
- * @param attr Data attribute name for specifying the node that FrozenPatty treats as a field
8
- * @param typeConvert Auto covert type of value
9
- */
10
- function default_1(el, attr, typeConvert, filter) {
11
- /**
12
- * [key, value, forceArray]
13
- */
14
- var result = [];
15
- var rawValue = el.getAttribute("data-".concat(attr));
16
- var listRoot = el.closest("[data-".concat(attr, "-list]"));
17
- var forceArray = !!listRoot;
18
- if (rawValue == null) {
19
- throw new Error("data-".concat(attr, " attriblute is empty."));
20
- }
21
- var fieldList = "".concat(rawValue).split(/\s*,\s*/);
22
- // console.log({fieldList, el: el.innerHTML});
23
- for (var _i = 0, fieldList_1 = fieldList; _i < fieldList_1.length; _i++) {
24
- var fieldName = fieldList_1[_i];
25
- var splitKey = void 0;
26
- var keyAttr = '';
27
- var value = void 0;
28
- fieldName = fieldName.trim();
29
- if (/^[a-z_-](?:[a-z0-9_-])*:[a-z_-](?:[a-z0-9_-])*(?:\([a-z-]+\))?/i.test(fieldName)) {
30
- splitKey = fieldName.split(':');
31
- fieldName = splitKey[0].trim();
32
- keyAttr = splitKey[1].trim();
33
- }
34
- // console.log({fieldName, keyAttr, el: el.innerHTML});
35
- if (keyAttr === 'text') {
36
- value = el.innerHTML;
37
- }
38
- else if (/^style\([a-z-]+\)$/i.test(keyAttr)) {
39
- var css = keyAttr.replace(/^style\(([a-z-]+)\)$/i, '$1');
40
- var style = void 0;
41
- if (el instanceof HTMLElement) {
42
- style = el.style;
43
- }
44
- else {
45
- style = window.getComputedStyle(el);
46
- }
47
- value = style.getPropertyValue(css);
48
- if (css === 'background-image') {
49
- value = getBackgroundImagePath(value);
50
- }
51
- }
52
- else if (keyAttr) {
53
- value = getAttribute(el, keyAttr, typeConvert);
54
- }
55
- else {
56
- if (el instanceof HTMLInputElement ||
57
- el instanceof HTMLSelectElement ||
58
- el instanceof HTMLTextAreaElement) {
59
- var val = el.value;
60
- if (Array.isArray(val)) {
61
- value = cast(val[0]);
62
- }
63
- else {
64
- value = cast(val);
65
- }
66
- }
67
- else {
68
- value = el.innerHTML;
69
- }
70
- }
71
- // console.log({fieldName, value});
72
- if (filter) {
73
- value = filter(value);
74
- }
75
- result.push([fieldName, value, forceArray]);
76
- }
77
- // console.log({result});
78
- return result;
79
- }
80
- exports.default = default_1;
81
- function getAttribute(el, keyAttr, typeConvert) {
82
- switch (keyAttr) {
83
- case 'contenteditable': {
84
- if (el instanceof HTMLElement) {
85
- return el.contentEditable === '' || el.contentEditable === 'true';
86
- }
87
- else {
88
- return (el.getAttribute(keyAttr) === '' || el.getAttribute(keyAttr) === 'true');
89
- }
90
- }
91
- case 'checked': {
92
- return el.checked;
93
- }
94
- case 'disabled': {
95
- return el.disabled;
96
- }
97
- case 'download': {
98
- // An inactive download attribute always returns an empty string.
99
- // So to get inactive it is necessary to use the "hasAttribute" method.
100
- return el.hasAttribute('download') ? el.getAttribute('download') : null;
101
- }
102
- case 'href': {
103
- // return (el as HTMLAnchorElement).href;
104
- return el.getAttribute(keyAttr) || ''; // return plain string
105
- }
106
- default: {
107
- if (/^data-/.test(keyAttr)) {
108
- var value = el.getAttribute(keyAttr) || '';
109
- if (typeConvert) {
110
- return cast(value);
111
- }
112
- return value;
113
- }
114
- return el.getAttribute(keyAttr) || '';
115
- }
116
- }
117
- }
118
- function cast(value) {
119
- if (value == null || value === '') {
120
- return '';
121
- }
122
- switch (value) {
123
- case 'true':
124
- return true;
125
- case 'false':
126
- return false;
127
- }
128
- var numeric = Number(value);
129
- if (isFinite(numeric)) {
130
- return numeric;
131
- }
132
- return value;
133
- }
134
- /**
135
- * Get path from value of "background-image"
136
- *
137
- */
138
- function getBackgroundImagePath(value) {
139
- var origin = "".concat(location.protocol, "//").concat(location.hostname).concat(location.port ? ":".concat(location.port) : '');
140
- return decodeURI(value.replace(/^url\(["']?([^"']+)["']?\)$/i, '$1').replace(origin, ''));
141
- }
142
- //# sourceMappingURL=getValue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getValue.js","sourceRoot":"","sources":["../src/getValue.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts DELETED
@@ -1,35 +0,0 @@
1
- import type { Filter, FrozenPattyOptions, PrimitiveDatum } from './frozen-patty';
2
- import FrozenPatty from './frozen-patty';
3
- /**
4
- * Pure HTML to JSON converter that not use template engine.
5
- *
6
- * @param html Original HTML
7
- * @param options Options
8
- */
9
- declare function frozenPatty(html: string, options?: FrozenPattyOptions): FrozenPatty;
10
- declare namespace frozenPatty {
11
- /**
12
- * Set value to an element
13
- *
14
- * ```html
15
- * <div [target-attribute] data-[attr]="[name]:[target-attribute]"></div>
16
- * ```
17
- *
18
- * @param el A target element
19
- * @param name A label name
20
- * @param datum A datum of value
21
- * @param attr Data attribute name for specifying the node that FrozenPatty treats as a field
22
- */
23
- function setValue(el: Element, name: string, datum: PrimitiveDatum, attr?: string, filter?: Filter): void;
24
- /**
25
- * Get value from an element
26
- *
27
- * @param el A target element
28
- * @param name A label name
29
- * @param typeConvert Auto covert type of value
30
- * @param attr Data attribute name for specifying the node that FrozenPatty treats as a field
31
- */
32
- function getValue(el: Element, name: string, typeConvert?: boolean, attr?: string, filter?: Filter): PrimitiveDatum | PrimitiveDatum[];
33
- }
34
- export default frozenPatty;
35
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAKzC;;;;;GAKG;AACH,iBAAS,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,eAE9D;AAGD,kBAAU,WAAW,CAAC;IACrB;;;;;;;;;;;OAWG;IACH,SAAgB,QAAQ,CACvB,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,cAAc,EACrB,IAAI,SAAU,EACd,MAAM,CAAC,EAAE,MAAM,QAGf;IAED;;;;;;;OAOG;IACH,SAAgB,QAAQ,CACvB,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,MAAM,EACZ,WAAW,UAAQ,EACnB,IAAI,SAAU,EACd,MAAM,CAAC,EAAE,MAAM,qCAIf;CACD;AAED,eAAe,WAAW,CAAC"}
package/lib/index.js DELETED
@@ -1,55 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- var frozen_patty_1 = __importDefault(require("./frozen-patty"));
7
- var getValue_1 = __importDefault(require("./getValue"));
8
- var setValue_1 = __importDefault(require("./setValue"));
9
- var util_1 = require("./util");
10
- /**
11
- * Pure HTML to JSON converter that not use template engine.
12
- *
13
- * @param html Original HTML
14
- * @param options Options
15
- */
16
- function frozenPatty(html, options) {
17
- return new frozen_patty_1.default(html, options);
18
- }
19
- // eslint-disable-next-line @typescript-eslint/no-namespace, no-redeclare
20
- (function (frozenPatty) {
21
- /**
22
- * Set value to an element
23
- *
24
- * ```html
25
- * <div [target-attribute] data-[attr]="[name]:[target-attribute]"></div>
26
- * ```
27
- *
28
- * @param el A target element
29
- * @param name A label name
30
- * @param datum A datum of value
31
- * @param attr Data attribute name for specifying the node that FrozenPatty treats as a field
32
- */
33
- function setValue(el, name, datum, attr, filter) {
34
- if (attr === void 0) { attr = 'field'; }
35
- return (0, setValue_1.default)(name, datum, el, attr, filter);
36
- }
37
- frozenPatty.setValue = setValue;
38
- /**
39
- * Get value from an element
40
- *
41
- * @param el A target element
42
- * @param name A label name
43
- * @param typeConvert Auto covert type of value
44
- * @param attr Data attribute name for specifying the node that FrozenPatty treats as a field
45
- */
46
- function getValue(el, name, typeConvert, attr, filter) {
47
- if (typeConvert === void 0) { typeConvert = false; }
48
- if (attr === void 0) { attr = 'field'; }
49
- var data = (0, util_1.arrayToHash)((0, getValue_1.default)(el, attr, typeConvert, filter));
50
- return data[name];
51
- }
52
- frozenPatty.getValue = getValue;
53
- })(frozenPatty || (frozenPatty = {}));
54
- exports.default = frozenPatty;
55
- //# sourceMappingURL=index.js.map
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AACA,gEAAyC;AACzC,wDAAmC;AACnC,wDAAmC;AACnC,+BAAqC;AAErC;;;;;GAKG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,OAA4B;IAC9D,OAAO,IAAI,sBAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,yEAAyE;AACzE,WAAU,WAAW;IACpB;;;;;;;;;;;OAWG;IACH,SAAgB,QAAQ,CACvB,EAAW,EACX,IAAY,EACZ,KAAqB,EACrB,IAAc,EACd,MAAe;QADf,qBAAA,EAAA,cAAc;QAGd,OAAO,IAAA,kBAAS,EAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IARe,oBAAQ,WAQvB,CAAA;IAED;;;;;;;OAOG;IACH,SAAgB,QAAQ,CACvB,EAAW,EACX,IAAY,EACZ,WAAmB,EACnB,IAAc,EACd,MAAe;QAFf,4BAAA,EAAA,mBAAmB;QACnB,qBAAA,EAAA,cAAc;QAGd,IAAM,IAAI,GAAG,IAAA,kBAAW,EAAC,IAAA,kBAAS,EAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IATe,oBAAQ,WASvB,CAAA;AACF,CAAC,EAzCS,WAAW,KAAX,WAAW,QAyCpB;AAED,kBAAe,WAAW,CAAC"}
package/lib/polyfill.d.ts DELETED
@@ -1 +0,0 @@
1
- //# sourceMappingURL=polyfill.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"polyfill.d.ts","sourceRoot":"","sources":["../src/polyfill.ts"],"names":[],"mappings":""}
package/lib/polyfill.js DELETED
@@ -1,20 +0,0 @@
1
- "use strict";
2
- if (!Element.prototype.matches) {
3
- Element.prototype.matches =
4
- // @ts-ignore
5
- Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
6
- }
7
- if (!Element.prototype.closest) {
8
- Element.prototype.closest = function (s) {
9
- // tslint:disable-next-line:no-invalid-this
10
- var ancestor = this;
11
- do {
12
- if (ancestor.matches(s)) {
13
- return ancestor;
14
- }
15
- ancestor = ancestor.parentElement;
16
- } while (ancestor !== null);
17
- return null;
18
- };
19
- }
20
- //# sourceMappingURL=polyfill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../src/polyfill.ts"],"names":[],"mappings":";AAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE;IAC/B,OAAO,CAAC,SAAS,CAAC,OAAO;QACxB,aAAa;QACb,OAAO,CAAC,SAAS,CAAC,iBAAiB,IAAI,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC;CAChF;AAED,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE;IAC/B,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,CAAS;QAC9C,2CAA2C;QAC3C,IAAI,QAAQ,GAAmB,IAAI,CAAC;QACpC,GAAG;YACF,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACxB,OAAO,QAAQ,CAAC;aAChB;YACD,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC;SAClC,QAAQ,QAAQ,KAAK,IAAI,EAAE;QAC5B,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;CACF"}
package/lib/set.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import './polyfill';
2
- import type { Filter, FrozenPattyData } from './frozen-patty';
3
- export default function (el: Element, data: FrozenPattyData, attr: string, filter?: Filter): Element;
4
- //# sourceMappingURL=set.d.ts.map
package/lib/set.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../src/set.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAG9D,MAAM,CAAC,OAAO,WACb,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,WA0Cf"}