@telia-ace/widget-components-grid 1.0.11 → 1.0.14

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.
@@ -0,0 +1,68 @@
1
+ import { useChildren as c, useProperties as d } from "@telia-ace/widget-ui";
2
+ import i, { useMemo as p } from "react";
3
+ import { Component as l } from "@telia-ace/widget-types-grid";
4
+ import { appendClassNames as g } from "@telia-ace/widget-utilities";
5
+ import u, { css as s } from "styled-components";
6
+ import { i as f } from "./index.cfc936fb.js";
7
+ import "@telia-ace/widget-core";
8
+ const $ = (e) => {
9
+ const r = e.map((t) => "min-content").join(" "), n = e[0].split(" ").map((t) => "1fr").join(" "), a = e.map((t) => `'${t}'`).join(" ");
10
+ return s`
11
+ grid-template-columns: ${n};
12
+ grid-template-rows: ${r};
13
+ grid-template-areas: ${a};
14
+ `;
15
+ }, x = (e) => {
16
+ const r = c(), n = p(() => Object.entries(e.areas).map(([a, t]) => {
17
+ const m = r.find((o) => o.name === a);
18
+ return f(t) ? {
19
+ name: a,
20
+ componentDef: m,
21
+ context: t.context,
22
+ areaSettings: t.areaSettings,
23
+ template: t.template,
24
+ areas: t.areas,
25
+ gap: t.gap
26
+ } : {
27
+ name: a,
28
+ componentDef: m,
29
+ areaSettings: t.areaSettings,
30
+ child: t.child,
31
+ context: t.context
32
+ };
33
+ }), [e, r]);
34
+ return /* @__PURE__ */ i.createElement(A, {
35
+ "data-grid-area": e.gridArea,
36
+ gridArea: e.gridArea,
37
+ gap: e.gap,
38
+ template: e.template,
39
+ className: g(e.className, "humany-grid")
40
+ }, n.map((a) => a.componentDef ? /* @__PURE__ */ i.createElement(l, {
41
+ key: a.componentDef.id,
42
+ id: a.componentDef.id,
43
+ branch: "default",
44
+ context: {}
45
+ }) : null));
46
+ }, A = u.div`
47
+ display: grid;
48
+ ${(e) => e.gridArea && s`
49
+ grid-area: ${e.gridArea};
50
+ `}
51
+ ${(e) => $(e.template)}
52
+ ${(e) => e.gap && s`
53
+ grid-gap: ${e.gap}rem;
54
+ `}
55
+ `, E = ({ className: e }) => {
56
+ const r = d();
57
+ return /* @__PURE__ */ i.createElement(x, {
58
+ template: r.template,
59
+ areas: r.areas,
60
+ gap: r.gap,
61
+ areaSettings: r.areaSettings,
62
+ context: r.context
63
+ });
64
+ };
65
+ export {
66
+ E as default
67
+ };
68
+ //# sourceMappingURL=grid.c9cced26.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.c9cced26.js","sources":["../src/utils.ts","../src/nested-grid-area.tsx","../src/grid.tsx"],"sourcesContent":["import { css } from 'styled-components';\r\n\r\nexport const generateGridTemplateAreasValue = (template: string[]) => {\r\n const rows = template.map((_) => 'min-content').join(' ');\r\n const columns = template[0]\r\n .split(' ')\r\n .map((_) => '1fr')\r\n .join(' ');\r\n const areas = template.map((value) => `'${value}'`).join(' ');\r\n\r\n return css`\r\n grid-template-columns: ${columns};\r\n grid-template-rows: ${rows};\r\n grid-template-areas: ${areas};\r\n `;\r\n};\r\n","import { Component } from '@telia-ace/widget-types-grid';\r\nimport { useChildren } from '@telia-ace/widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React, { useMemo } from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { GridAreaProps, isNestedGrid, NestedArea } from './grid-component';\r\nimport { generateGridTemplateAreasValue } from './utils';\r\n\r\ntype Props = {\r\n className?: string;\r\n gridArea?: string;\r\n} & NestedArea;\r\nconst NestedGridArea: React.FC<Props> = (props) => {\r\n const children = useChildren();\r\n\r\n const areas = useMemo<(GridAreaProps & { name: string })[]>(() => {\r\n return Object.entries(props.areas).map(([key, area]) => {\r\n const componentDef = children.find((child) => child.name === key);\r\n\r\n if (!isNestedGrid(area)) {\r\n return {\r\n name: key,\r\n componentDef,\r\n areaSettings: area.areaSettings,\r\n child: area.child,\r\n context: area.context,\r\n };\r\n }\r\n return {\r\n name: key,\r\n componentDef,\r\n context: area.context,\r\n areaSettings: area.areaSettings,\r\n template: area.template,\r\n areas: area.areas,\r\n gap: area.gap,\r\n };\r\n });\r\n }, [props, children]);\r\n\r\n return (\r\n <Wrapper\r\n data-grid-area={props.gridArea}\r\n gridArea={props.gridArea}\r\n gap={props.gap}\r\n template={props.template}\r\n className={appendClassNames(props.className, 'humany-grid')}\r\n >\r\n {areas.map((area) => {\r\n if (!(area as any).componentDef) {\r\n return null;\r\n }\r\n return (\r\n <Component\r\n key={(area as any).componentDef.id}\r\n id={(area as any).componentDef.id}\r\n branch=\"default\"\r\n context={{}}\r\n />\r\n );\r\n })}\r\n </Wrapper>\r\n );\r\n};\r\n\r\nexport default NestedGridArea;\r\n\r\nconst Wrapper = styled.div<{\r\n template: string[];\r\n gridArea?: string;\r\n gap?: number;\r\n}>`\r\n display: grid;\r\n ${(p) =>\r\n p.gridArea &&\r\n css`\r\n grid-area: ${p.gridArea};\r\n `}\r\n ${(p) => generateGridTemplateAreasValue(p.template)}\r\n ${(p) =>\r\n p.gap &&\r\n css`\r\n grid-gap: ${p.gap}rem;\r\n `}\r\n`;\r\n","import { useProperties } from '@telia-ace/widget-ui';\r\nimport React from 'react';\r\nimport { GridComponentProps } from './grid-component';\r\nimport NestedGridArea from './nested-grid-area';\r\n\r\ntype Props = { className?: string };\r\nconst Grid: React.FC<Props> = ({ className }) => {\r\n const properties = useProperties<GridComponentProps>();\r\n return (\r\n <NestedGridArea\r\n template={properties.template}\r\n areas={properties.areas}\r\n gap={properties.gap}\r\n areaSettings={properties.areaSettings}\r\n context={properties.context}\r\n />\r\n );\r\n};\r\n\r\nexport default Grid;\r\n"],"names":[],"mappings":";;;;;;;AAEa,MAAA,IAAiC,CAAC,MAAuB;AAC5D,QAAA,IAAO,EAAS,IAAI,CAAC,MAAM,aAAa,EAAE,KAAK,GAAG,GAClD,IAAU,EAAS,GACpB,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,KAAK,EAChB,KAAK,GAAG,GACP,IAAQ,EAAS,IAAI,CAAC,MAAU,IAAI,IAAQ,EAAE,KAAK,GAAG;AAErD,SAAA;AAAA,iCACsB;AAAA,8BACH;AAAA,+BACC;AAAA;AAE/B,GCHM,IAAkC,CAAC,MAAU;AAC/C,QAAM,IAAW,KAEX,IAAQ,EAA8C,MACjD,OAAO,QAAQ,EAAM,KAAK,EAAE,IAAI,CAAC,CAAC,GAAK,OAAU;AACpD,UAAM,IAAe,EAAS,KAAK,CAAC,MAAU,EAAM,SAAS,CAAG;AAE5D,WAAC,EAAa,CAAI,IASf;AAAA,MACH,MAAM;AAAA,MACN;AAAA,MACA,SAAS,EAAK;AAAA,MACd,cAAc,EAAK;AAAA,MACnB,UAAU,EAAK;AAAA,MACf,OAAO,EAAK;AAAA,MACZ,KAAK,EAAK;AAAA,IAAA,IAfH;AAAA,MACH,MAAM;AAAA,MACN;AAAA,MACA,cAAc,EAAK;AAAA,MACnB,OAAO,EAAK;AAAA,MACZ,SAAS,EAAK;AAAA,IAAA;AAAA,EAWtB,CACH,GACF,CAAC,GAAO,CAAQ,CAAC;AAEpB,SACK,kBAAA,cAAA,GAAA;AAAA,IACG,kBAAgB,EAAM;AAAA,IACtB,UAAU,EAAM;AAAA,IAChB,KAAK,EAAM;AAAA,IACX,UAAU,EAAM;AAAA,IAChB,WAAW,EAAiB,EAAM,WAAW,aAAa;AAAA,EAAA,GAEzD,EAAM,IAAI,CAAC,MACF,EAAa,eAId,kBAAA,cAAA,GAAA;AAAA,IACG,KAAM,EAAa,aAAa;AAAA,IAChC,IAAK,EAAa,aAAa;AAAA,IAC/B,QAAO;AAAA,IACP,SAAS,CAAC;AAAA,EAAA,CACd,IARO,IAUd,CACL;AAER,GAIM,IAAU,EAAO;AAAA;AAAA,MAMjB,CAAC,MACC,EAAE,YACF;AAAA,yBACiB,EAAE;AAAA;AAAA,MAErB,CAAC,MAAM,EAA+B,EAAE,QAAQ;AAAA,IAClD,CAAC,MACG,EAAE,OACF;AAAA,wBACgB,EAAE;AAAA;AAAA,GC5EpB,IAAwB,CAAC,EAAE,mBAAgB;AAC7C,QAAM,IAAa;AACnB,SACK,kBAAA,cAAA,GAAA;AAAA,IACG,UAAU,EAAW;AAAA,IACrB,OAAO,EAAW;AAAA,IAClB,KAAK,EAAW;AAAA,IAChB,cAAc,EAAW;AAAA,IACzB,SAAS,EAAW;AAAA,EAAA,CACxB;AAER;"}
@@ -0,0 +1,65 @@
1
+ var D = Object.defineProperty;
2
+ var h = Object.getOwnPropertySymbols;
3
+ var E = Object.prototype.hasOwnProperty, G = Object.prototype.propertyIsEnumerable;
4
+ var u = (e, o, r) => o in e ? D(e, o, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[o] = r, b = (e, o) => {
5
+ for (var r in o || (o = {}))
6
+ E.call(o, r) && u(e, r, o[r]);
7
+ if (h)
8
+ for (var r of h(o))
9
+ G.call(o, r) && u(e, r, o[r]);
10
+ return e;
11
+ };
12
+ import { createReactComponent as I } from "@telia-ace/widget-ui";
13
+ import { createChildren as w } from "@telia-ace/widget-core";
14
+ import { Logger as L } from "@telia-ace/widget-utilities";
15
+ const H = (e) => !!e.template, V = (e) => I(e, "grid", import("./grid.c9cced26.js"), (o) => {
16
+ }), _ = (e, o) => {
17
+ var m, g, x, l;
18
+ const { platform: r, node: C, references: P, definitions: a, views: f, branch: N } = o, t = a[e.definitionId];
19
+ if (process.env.NODE_ENV !== "production" && !t) {
20
+ L.error(`No definition found for component type '${e.definitionId}'.`);
21
+ return;
22
+ }
23
+ const i = r.createNode(t.type);
24
+ if (i.name = e.definitionId, i.tags = t.tags || [], t.properties && i.writeProperties(t.properties), t.context && i.writeContext(t.context), t.layout && i.writeLayout(t.layout), C.appendChild(i, N), e.overrides.forEach((n) => {
25
+ const p = { breakpoints: n.breakpoints };
26
+ n.properties && i.writeProperties(n.properties, p), n.context && i.writeContext(n.context, p), n.layout && i.writeLayout(n.layout, p);
27
+ }), ((m = t.properties) == null ? void 0 : m.areas) && !!((g = t.properties) != null && g.areas)) {
28
+ const n = Object.entries(t.properties.areas).reduce((p, [c, s]) => {
29
+ if (s.child) {
30
+ const d = Object.entries(s.areaSettings || {}).reduce((y, [O, j]) => (y[`css-${O}`] = j, y), {});
31
+ p[c] = {
32
+ type: "area",
33
+ context: s.context || {},
34
+ children: [s.child],
35
+ properties: b({
36
+ "css-grid-area": c
37
+ }, d)
38
+ };
39
+ } else {
40
+ const d = {
41
+ type: "grid",
42
+ context: {},
43
+ properties: {
44
+ areaSettings: {},
45
+ areas: s.areas,
46
+ context: s.context,
47
+ gap: s.gap,
48
+ gridArea: s.gridArea,
49
+ template: s.template
50
+ }
51
+ };
52
+ p[c] = d;
53
+ }
54
+ return p;
55
+ }, a);
56
+ w(r, i, Object.keys(t.properties.areas), n, f);
57
+ } else
58
+ (x = t.properties) != null && x.child && w(r, i, [(l = t.properties) == null ? void 0 : l.child], a, f);
59
+ };
60
+ export {
61
+ V as G,
62
+ _ as g,
63
+ H as i
64
+ };
65
+ //# sourceMappingURL=index.cfc936fb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cfc936fb.js","sources":["../src/grid-component.ts","../src/handler.ts"],"sourcesContent":["import { createReactComponent } from '@telia-ace/widget-ui';\r\nimport { Container } from '@webprovisions/platform';\r\n\r\ntype AreaWithChild = {\r\n child: string;\r\n areaSettings: { [key: string]: string };\r\n context: { [key: string]: any };\r\n};\r\n\r\nexport type NestedArea = {\r\n context: { [key: string]: any };\r\n template: string[];\r\n areaSettings: { [key: string]: string };\r\n gap: number;\r\n areas: {\r\n [key: string]: GridAreaProps;\r\n };\r\n};\r\n\r\nexport type GridAreaProps = NestedArea | AreaWithChild;\r\n\r\nexport const isNestedGrid = (area: GridAreaProps): area is NestedArea => {\r\n return !!(area as NestedArea).template;\r\n};\r\n\r\nexport type GridComponentProps = {\r\n gap: number;\r\n template: string[];\r\n areaSettings: { [key: string]: string };\r\n areas: {\r\n [key: string]: GridAreaProps;\r\n };\r\n child: string;\r\n context: { [key: string]: any };\r\n};\r\n\r\nexport const GridComponent = (container: Container) => {\r\n return createReactComponent(container, 'grid', import('./grid'), (component) => {});\r\n};\r\n\r\nexport default GridComponent;\r\n","import {\r\n ComponentHandlerOptions,\r\n createChildren,\r\n NormalizedComponentReference,\r\n} from '@telia-ace/widget-core';\r\nimport { Logger } from '@telia-ace/widget-utilities';\r\n\r\nexport const gridComponentHandler = (\r\n childRef: NormalizedComponentReference,\r\n options: ComponentHandlerOptions\r\n) => {\r\n const { platform, node, references, definitions, views, branch } = options;\r\n\r\n const childDef = definitions[childRef.definitionId];\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!childDef) {\r\n Logger.error(`No definition found for component type '${childRef.definitionId}'.`);\r\n return;\r\n }\r\n }\r\n const childNode = platform.createNode(childDef.type);\r\n childNode.name = childRef.definitionId;\r\n childNode.tags = childDef.tags || [];\r\n if (childDef.properties) {\r\n childNode.writeProperties(childDef.properties);\r\n }\r\n if (childDef.context) {\r\n childNode.writeContext(childDef.context);\r\n }\r\n if (childDef.layout) {\r\n childNode.writeLayout(childDef.layout);\r\n }\r\n node.appendChild(childNode, branch);\r\n\r\n childRef.overrides.forEach((override) => {\r\n const options = { breakpoints: override.breakpoints };\r\n if (override.properties) {\r\n childNode.writeProperties(override.properties, options);\r\n }\r\n if (override.context) {\r\n childNode.writeContext(override.context, options);\r\n }\r\n if (override.layout) {\r\n childNode.writeLayout(override.layout, options);\r\n }\r\n });\r\n\r\n if (childDef.properties?.areas && !!childDef.properties?.areas) {\r\n const mergedDefinitons: any = Object.entries(childDef.properties.areas).reduce<any>(\r\n (acc, [key, value]: any) => {\r\n if (value.child) {\r\n const cssProps = Object.entries<string>(value.areaSettings || {}).reduce<{\r\n [key: string]: string;\r\n }>((acc, [key, value]) => {\r\n acc[`css-${key}`] = value;\r\n\r\n return acc;\r\n }, {});\r\n acc[key] = {\r\n type: 'area',\r\n context: value.context || {},\r\n children: [value.child],\r\n properties: {\r\n 'css-grid-area': key,\r\n ...cssProps,\r\n },\r\n };\r\n } else {\r\n const subgrid = {\r\n type: 'grid',\r\n context: {},\r\n properties: {\r\n areaSettings: {},\r\n areas: value.areas,\r\n context: value.context,\r\n gap: value.gap,\r\n gridArea: value.gridArea,\r\n template: value.template,\r\n },\r\n };\r\n acc[key] = subgrid;\r\n }\r\n return acc;\r\n },\r\n definitions\r\n );\r\n createChildren(\r\n platform,\r\n childNode,\r\n Object.keys(childDef.properties.areas),\r\n mergedDefinitons,\r\n views\r\n );\r\n } else if (childDef.properties?.child) {\r\n createChildren(platform, childNode, [childDef.properties?.child], definitions, views);\r\n }\r\n};\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAqBa,MAAA,IAAe,CAAC,MAClB,CAAC,CAAE,EAAoB,UAcrB,IAAgB,CAAC,MACnB,EAAqB,GAAW,QAAQ,OAAO,uBAAW,CAAC,MAAc;AAAA,CAAE,GC9BzE,IAAuB,CAChC,GACA,MACC;;AACD,QAAM,EAAE,aAAU,SAAM,eAAY,gBAAa,UAAO,cAAW,GAE7D,IAAW,EAAY,EAAS;AAClC,MAAA,QAAQ,IAAI,aAAa,gBACrB,CAAC,GAAU;AACJ,MAAA,MAAM,2CAA2C,EAAS,gBAAgB;AACjF;AAAA,EACJ;AAEJ,QAAM,IAAY,EAAS,WAAW,EAAS,IAAI;AA2BnD,MA1BA,EAAU,OAAO,EAAS,cAChB,EAAA,OAAO,EAAS,QAAQ,CAAA,GAC9B,EAAS,cACC,EAAA,gBAAgB,EAAS,UAAU,GAE7C,EAAS,WACC,EAAA,aAAa,EAAS,OAAO,GAEvC,EAAS,UACC,EAAA,YAAY,EAAS,MAAM,GAEpC,EAAA,YAAY,GAAW,CAAM,GAEzB,EAAA,UAAU,QAAQ,CAAC,MAAa;AACrC,UAAM,IAAU,EAAE,aAAa,EAAS,YAAY;AACpD,IAAI,EAAS,cACC,EAAA,gBAAgB,EAAS,YAAY,CAAO,GAEtD,EAAS,WACC,EAAA,aAAa,EAAS,SAAS,CAAO,GAEhD,EAAS,UACC,EAAA,YAAY,EAAS,QAAQ,CAAO;AAAA,EAClD,CACH,GAEG,QAAS,eAAT,kBAAqB,UAAS,CAAC,CAAC,QAAS,eAAT,UAAqB,QAAO;AAC5D,UAAM,IAAwB,OAAO,QAAQ,EAAS,WAAW,KAAK,EAAE,OACpE,CAAC,GAAK,CAAC,GAAK,OAAgB;AACxB,UAAI,EAAM,OAAO;AACb,cAAM,IAAW,OAAO,QAAgB,EAAM,gBAAgB,CAAA,CAAE,EAAE,OAE/D,CAAC,GAAK,CAAC,GAAK,OACX,GAAI,OAAO,OAAS,GAEb,IACR,CAAE,CAAA;AACL,UAAI,KAAO;AAAA,UACP,MAAM;AAAA,UACN,SAAS,EAAM,WAAW,CAAC;AAAA,UAC3B,UAAU,CAAC,EAAM,KAAK;AAAA,UACtB,YAAY;AAAA,YACR,iBAAiB;AAAA,aACd;AAAA,QACP;AAAA,MACJ,OACG;AACH,cAAM,IAAU;AAAA,UACZ,MAAM;AAAA,UACN,SAAS,CAAC;AAAA,UACV,YAAY;AAAA,YACR,cAAc,CAAC;AAAA,YACf,OAAO,EAAM;AAAA,YACb,SAAS,EAAM;AAAA,YACf,KAAK,EAAM;AAAA,YACX,UAAU,EAAM;AAAA,YAChB,UAAU,EAAM;AAAA,UACpB;AAAA,QAAA;AAEJ,UAAI,KAAO;AAAA,MACf;AACO,aAAA;AAAA,OAEX,CACJ;AAEI,MAAA,GACA,GACA,OAAO,KAAK,EAAS,WAAW,KAAK,GACrC,GACA,CACJ;AAAA,EAAA;AACJ,IAAW,OAAS,eAAT,UAAqB,SACb,EAAA,GAAU,GAAW,CAAC,OAAS,eAAT,kBAAqB,KAAK,GAAG,GAAa,CAAK;AAE5F;"}
package/dist/index.js CHANGED
@@ -1,5 +1,9 @@
1
- export { G as default, g as gridComponentHandler } from "./index2.js";
1
+ import { G as a, g as e } from "./index.cfc936fb.js";
2
2
  import "@telia-ace/widget-ui";
3
3
  import "@telia-ace/widget-core";
4
4
  import "@telia-ace/widget-utilities";
5
+ export {
6
+ a as default,
7
+ e as gridComponentHandler
8
+ };
5
9
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,13 +1,17 @@
1
1
  {
2
2
  "name": "@telia-ace/widget-components-grid",
3
- "version": "1.0.11",
3
+ "version": "1.0.14",
4
4
  "description": "Grid component for ACE Widgets.",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "Telia Company AB",
7
7
  "keywords": [
8
8
  "telia"
9
9
  ],
10
- "module": "dist/index.js",
10
+ "exports": {
11
+ "development": "./src/index.ts",
12
+ "default": "./dist/index.js"
13
+ },
14
+ "type": "module",
11
15
  "types": "dist/index.d.ts",
12
16
  "files": [
13
17
  "LICENSE.txt",
@@ -24,9 +28,9 @@
24
28
  },
25
29
  "sideEffects": false,
26
30
  "dependencies": {
27
- "@telia-ace/widget-core": "^1.0.9",
28
- "@telia-ace/widget-types-grid": "^1.0.15",
29
- "@telia-ace/widget-ui": "^1.0.15",
31
+ "@telia-ace/widget-core": "^1.0.11",
32
+ "@telia-ace/widget-types-grid": "^1.0.18",
33
+ "@telia-ace/widget-ui": "^1.0.18",
30
34
  "@telia-ace/widget-utilities": "^1.0.2",
31
35
  "@webprovisions/platform": "^1.1.2"
32
36
  },
@@ -40,5 +44,5 @@
40
44
  "@types/react-dom": "^16.8.0",
41
45
  "@types/styled-components": "^5.1.7"
42
46
  },
43
- "gitHead": "d57f04d13a7b937875290ba5e016bd581fbfe889"
47
+ "gitHead": "4006655a78d8f0379c021e4362536dcdf881b3d0"
44
48
  }
package/dist/grid.js DELETED
@@ -1,82 +0,0 @@
1
- import { useChildren, useProperties } from "@telia-ace/widget-ui";
2
- import React, { useMemo } from "react";
3
- import { Component } from "@telia-ace/widget-types-grid";
4
- import { appendClassNames } from "@telia-ace/widget-utilities";
5
- import styled, { css } from "styled-components";
6
- import { i as isNestedGrid } from "./index2.js";
7
- import "@telia-ace/widget-core";
8
- const generateGridTemplateAreasValue = (template) => {
9
- const rows = template.map((_) => "min-content").join(" ");
10
- const columns = template[0].split(" ").map((_) => "1fr").join(" ");
11
- const areas = template.map((value) => `'${value}'`).join(" ");
12
- return css`
13
- grid-template-columns: ${columns};
14
- grid-template-rows: ${rows};
15
- grid-template-areas: ${areas};
16
- `;
17
- };
18
- const NestedGridArea = (props) => {
19
- const children = useChildren();
20
- const areas = useMemo(() => {
21
- return Object.entries(props.areas).map(([key, area]) => {
22
- const componentDef = children.find((child) => child.name === key);
23
- if (!isNestedGrid(area)) {
24
- return {
25
- name: key,
26
- componentDef,
27
- areaSettings: area.areaSettings,
28
- child: area.child,
29
- context: area.context
30
- };
31
- }
32
- return {
33
- name: key,
34
- componentDef,
35
- context: area.context,
36
- areaSettings: area.areaSettings,
37
- template: area.template,
38
- areas: area.areas,
39
- gap: area.gap
40
- };
41
- });
42
- }, [props, children]);
43
- return /* @__PURE__ */ React.createElement(Wrapper, {
44
- "data-grid-area": props.gridArea,
45
- gridArea: props.gridArea,
46
- gap: props.gap,
47
- template: props.template,
48
- className: appendClassNames(props.className, "humany-grid")
49
- }, areas.map((area) => {
50
- if (!area.componentDef) {
51
- return null;
52
- }
53
- return /* @__PURE__ */ React.createElement(Component, {
54
- key: area.componentDef.id,
55
- id: area.componentDef.id,
56
- branch: "default",
57
- context: {}
58
- });
59
- }));
60
- };
61
- const Wrapper = styled.div`
62
- display: grid;
63
- ${(p) => p.gridArea && css`
64
- grid-area: ${p.gridArea};
65
- `}
66
- ${(p) => generateGridTemplateAreasValue(p.template)}
67
- ${(p) => p.gap && css`
68
- grid-gap: ${p.gap}rem;
69
- `}
70
- `;
71
- const Grid = ({ className }) => {
72
- const properties = useProperties();
73
- return /* @__PURE__ */ React.createElement(NestedGridArea, {
74
- template: properties.template,
75
- areas: properties.areas,
76
- gap: properties.gap,
77
- areaSettings: properties.areaSettings,
78
- context: properties.context
79
- });
80
- };
81
- export { Grid as default };
82
- //# sourceMappingURL=grid.js.map
package/dist/grid.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"grid.js","sources":["../src/utils.ts","../src/nested-grid-area.tsx","../src/grid.tsx"],"sourcesContent":["import { css } from 'styled-components';\r\n\r\nexport const generateGridTemplateAreasValue = (template: string[]) => {\r\n const rows = template.map((_) => 'min-content').join(' ');\r\n const columns = template[0]\r\n .split(' ')\r\n .map((_) => '1fr')\r\n .join(' ');\r\n const areas = template.map((value) => `'${value}'`).join(' ');\r\n\r\n return css`\r\n grid-template-columns: ${columns};\r\n grid-template-rows: ${rows};\r\n grid-template-areas: ${areas};\r\n `;\r\n};\r\n","import { Component } from '@telia-ace/widget-types-grid';\r\nimport { useChildren } from '@telia-ace/widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React, { useMemo } from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { GridAreaProps, isNestedGrid, NestedArea } from './grid-component';\r\nimport { generateGridTemplateAreasValue } from './utils';\r\n\r\ntype Props = {\r\n className?: string;\r\n gridArea?: string;\r\n} & NestedArea;\r\nconst NestedGridArea: React.FC<Props> = (props) => {\r\n const children = useChildren();\r\n\r\n const areas = useMemo<(GridAreaProps & { name: string })[]>(() => {\r\n return Object.entries(props.areas).map(([key, area]) => {\r\n const componentDef = children.find((child) => child.name === key);\r\n\r\n if (!isNestedGrid(area)) {\r\n return {\r\n name: key,\r\n componentDef,\r\n areaSettings: area.areaSettings,\r\n child: area.child,\r\n context: area.context,\r\n };\r\n }\r\n return {\r\n name: key,\r\n componentDef,\r\n context: area.context,\r\n areaSettings: area.areaSettings,\r\n template: area.template,\r\n areas: area.areas,\r\n gap: area.gap,\r\n };\r\n });\r\n }, [props, children]);\r\n\r\n return (\r\n <Wrapper\r\n data-grid-area={props.gridArea}\r\n gridArea={props.gridArea}\r\n gap={props.gap}\r\n template={props.template}\r\n className={appendClassNames(props.className, 'humany-grid')}\r\n >\r\n {areas.map((area) => {\r\n if (!(area as any).componentDef) {\r\n return null;\r\n }\r\n return (\r\n <Component\r\n key={(area as any).componentDef.id}\r\n id={(area as any).componentDef.id}\r\n branch=\"default\"\r\n context={{}}\r\n />\r\n );\r\n })}\r\n </Wrapper>\r\n );\r\n};\r\n\r\nexport default NestedGridArea;\r\n\r\nconst Wrapper = styled.div<{\r\n template: string[];\r\n gridArea?: string;\r\n gap?: number;\r\n}>`\r\n display: grid;\r\n ${(p) =>\r\n p.gridArea &&\r\n css`\r\n grid-area: ${p.gridArea};\r\n `}\r\n ${(p) => generateGridTemplateAreasValue(p.template)}\r\n ${(p) =>\r\n p.gap &&\r\n css`\r\n grid-gap: ${p.gap}rem;\r\n `}\r\n`;\r\n","import { useProperties } from '@telia-ace/widget-ui';\r\nimport React from 'react';\r\nimport { GridComponentProps } from './grid-component';\r\nimport NestedGridArea from './nested-grid-area';\r\n\r\ntype Props = { className?: string };\r\nconst Grid: React.FC<Props> = ({ className }) => {\r\n const properties = useProperties<GridComponentProps>();\r\n return (\r\n <NestedGridArea\r\n template={properties.template}\r\n areas={properties.areas}\r\n gap={properties.gap}\r\n areaSettings={properties.areaSettings}\r\n context={properties.context}\r\n />\r\n );\r\n};\r\n\r\nexport default Grid;\r\n"],"names":[],"mappings":";;;;;;;AAEa,MAAA,iCAAiC,CAAC,aAAuB;AAC5D,QAAA,OAAO,SAAS,IAAI,CAAC,MAAM,aAAa,EAAE,KAAK,GAAG;AACxD,QAAM,UAAU,SAAS,GACpB,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,KAAK,EAChB,KAAK,GAAG;AACP,QAAA,QAAQ,SAAS,IAAI,CAAC,UAAU,IAAI,QAAQ,EAAE,KAAK,GAAG;AAErD,SAAA;AAAA,iCACsB;AAAA,8BACH;AAAA,+BACC;AAAA;AAE/B;ACHA,MAAM,iBAAkC,CAAC,UAAU;AAC/C,QAAM,WAAW;AAEX,QAAA,QAAQ,QAA8C,MAAM;AACvD,WAAA,OAAO,QAAQ,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,UAAU;AACpD,YAAM,eAAe,SAAS,KAAK,CAAC,UAAU,MAAM,SAAS,GAAG;AAE5D,UAAA,CAAC,aAAa,IAAI,GAAG;AACd,eAAA;AAAA,UACH,MAAM;AAAA,UACN;AAAA,UACA,cAAc,KAAK;AAAA,UACnB,OAAO,KAAK;AAAA,UACZ,SAAS,KAAK;AAAA,QAAA;AAAA,MAEtB;AACO,aAAA;AAAA,QACH,MAAM;AAAA,QACN;AAAA,QACA,SAAS,KAAK;AAAA,QACd,cAAc,KAAK;AAAA,QACnB,UAAU,KAAK;AAAA,QACf,OAAO,KAAK;AAAA,QACZ,KAAK,KAAK;AAAA,MAAA;AAAA,IACd,CACH;AAAA,EAAA,GACF,CAAC,OAAO,QAAQ,CAAC;AAEpB,SACK,sBAAA,cAAA,SAAA;AAAA,IACG,kBAAgB,MAAM;AAAA,IACtB,UAAU,MAAM;AAAA,IAChB,KAAK,MAAM;AAAA,IACX,UAAU,MAAM;AAAA,IAChB,WAAW,iBAAiB,MAAM,WAAW,aAAa;AAAA,EAAA,GAEzD,MAAM,IAAI,CAAC,SAAS;AACb,QAAA,CAAE,KAAa,cAAc;AACtB,aAAA;AAAA,IACX;AACA,WACK,sBAAA,cAAA,WAAA;AAAA,MACG,KAAM,KAAa,aAAa;AAAA,MAChC,IAAK,KAAa,aAAa;AAAA,MAC/B,QAAO;AAAA,MACP,SAAS,CAAC;AAAA,IAAA,CACd;AAAA,EAEP,CAAA,CACL;AAER;AAIA,MAAM,UAAU,OAAO;AAAA;AAAA,MAMjB,CAAC,MACC,EAAE,YACF;AAAA,yBACiB,EAAE;AAAA;AAAA,MAErB,CAAC,MAAM,+BAA+B,EAAE,QAAQ;AAAA,IAClD,CAAC,MACG,EAAE,OACF;AAAA,wBACgB,EAAE;AAAA;AAAA;AC5EpB,MAAA,OAAwB,CAAC,EAAE,gBAAgB;AAC7C,QAAM,aAAa;AACnB,SACK,sBAAA,cAAA,gBAAA;AAAA,IACG,UAAU,WAAW;AAAA,IACrB,OAAO,WAAW;AAAA,IAClB,KAAK,WAAW;AAAA,IAChB,cAAc,WAAW;AAAA,IACzB,SAAS,WAAW;AAAA,EAAA,CACxB;AAER;;"}
package/dist/index2.js DELETED
@@ -1,94 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
- var __hasOwnProp = Object.prototype.hasOwnProperty;
4
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
- var __spreadValues = (a, b) => {
7
- for (var prop in b || (b = {}))
8
- if (__hasOwnProp.call(b, prop))
9
- __defNormalProp(a, prop, b[prop]);
10
- if (__getOwnPropSymbols)
11
- for (var prop of __getOwnPropSymbols(b)) {
12
- if (__propIsEnum.call(b, prop))
13
- __defNormalProp(a, prop, b[prop]);
14
- }
15
- return a;
16
- };
17
- import { createReactComponent } from "@telia-ace/widget-ui";
18
- import { createChildren } from "@telia-ace/widget-core";
19
- import "@telia-ace/widget-utilities";
20
- const isNestedGrid = (area) => {
21
- return !!area.template;
22
- };
23
- const GridComponent = (container) => {
24
- return createReactComponent(container, "grid", import("./grid.js"), (component) => {
25
- });
26
- };
27
- const gridComponentHandler = (childRef, options) => {
28
- var _a, _b, _c, _d;
29
- const { platform, node, references, definitions, views, branch } = options;
30
- const childDef = definitions[childRef.definitionId];
31
- const childNode = platform.createNode(childDef.type);
32
- childNode.name = childRef.definitionId;
33
- childNode.tags = childDef.tags || [];
34
- if (childDef.properties) {
35
- childNode.writeProperties(childDef.properties);
36
- }
37
- if (childDef.context) {
38
- childNode.writeContext(childDef.context);
39
- }
40
- if (childDef.layout) {
41
- childNode.writeLayout(childDef.layout);
42
- }
43
- node.appendChild(childNode, branch);
44
- childRef.overrides.forEach((override) => {
45
- const options2 = { breakpoints: override.breakpoints };
46
- if (override.properties) {
47
- childNode.writeProperties(override.properties, options2);
48
- }
49
- if (override.context) {
50
- childNode.writeContext(override.context, options2);
51
- }
52
- if (override.layout) {
53
- childNode.writeLayout(override.layout, options2);
54
- }
55
- });
56
- if (((_a = childDef.properties) == null ? void 0 : _a.areas) && !!((_b = childDef.properties) == null ? void 0 : _b.areas)) {
57
- const mergedDefinitons = Object.entries(childDef.properties.areas).reduce((acc, [key, value]) => {
58
- if (value.child) {
59
- const cssProps = Object.entries(value.areaSettings || {}).reduce((acc2, [key2, value2]) => {
60
- acc2[`css-${key2}`] = value2;
61
- return acc2;
62
- }, {});
63
- acc[key] = {
64
- type: "area",
65
- context: value.context || {},
66
- children: [value.child],
67
- properties: __spreadValues({
68
- "css-grid-area": key
69
- }, cssProps)
70
- };
71
- } else {
72
- const subgrid = {
73
- type: "grid",
74
- context: {},
75
- properties: {
76
- areaSettings: {},
77
- areas: value.areas,
78
- context: value.context,
79
- gap: value.gap,
80
- gridArea: value.gridArea,
81
- template: value.template
82
- }
83
- };
84
- acc[key] = subgrid;
85
- }
86
- return acc;
87
- }, definitions);
88
- createChildren(platform, childNode, Object.keys(childDef.properties.areas), mergedDefinitons, views);
89
- } else if ((_c = childDef.properties) == null ? void 0 : _c.child) {
90
- createChildren(platform, childNode, [(_d = childDef.properties) == null ? void 0 : _d.child], definitions, views);
91
- }
92
- };
93
- export { GridComponent as G, gridComponentHandler as g, isNestedGrid as i };
94
- //# sourceMappingURL=index2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index2.js","sources":["../src/grid-component.ts","../src/handler.ts"],"sourcesContent":["import { createReactComponent } from '@telia-ace/widget-ui';\r\nimport { Container } from '@webprovisions/platform';\r\n\r\ntype AreaWithChild = {\r\n child: string;\r\n areaSettings: { [key: string]: string };\r\n context: { [key: string]: any };\r\n};\r\n\r\nexport type NestedArea = {\r\n context: { [key: string]: any };\r\n template: string[];\r\n areaSettings: { [key: string]: string };\r\n gap: number;\r\n areas: {\r\n [key: string]: GridAreaProps;\r\n };\r\n};\r\n\r\nexport type GridAreaProps = NestedArea | AreaWithChild;\r\n\r\nexport const isNestedGrid = (area: GridAreaProps): area is NestedArea => {\r\n return !!(area as NestedArea).template;\r\n};\r\n\r\nexport type GridComponentProps = {\r\n gap: number;\r\n template: string[];\r\n areaSettings: { [key: string]: string };\r\n areas: {\r\n [key: string]: GridAreaProps;\r\n };\r\n child: string;\r\n context: { [key: string]: any };\r\n};\r\n\r\nexport const GridComponent = (container: Container) => {\r\n return createReactComponent(container, 'grid', import('./grid'), (component) => {});\r\n};\r\n\r\nexport default GridComponent;\r\n","import {\r\n ComponentHandlerOptions,\r\n createChildren,\r\n NormalizedComponentReference,\r\n} from '@telia-ace/widget-core';\r\nimport { Logger } from '@telia-ace/widget-utilities';\r\n\r\nexport const gridComponentHandler = (\r\n childRef: NormalizedComponentReference,\r\n options: ComponentHandlerOptions\r\n) => {\r\n const { platform, node, references, definitions, views, branch } = options;\r\n\r\n const childDef = definitions[childRef.definitionId];\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!childDef) {\r\n Logger.error(`No definition found for component type '${childRef.definitionId}'.`);\r\n return;\r\n }\r\n }\r\n const childNode = platform.createNode(childDef.type);\r\n childNode.name = childRef.definitionId;\r\n childNode.tags = childDef.tags || [];\r\n if (childDef.properties) {\r\n childNode.writeProperties(childDef.properties);\r\n }\r\n if (childDef.context) {\r\n childNode.writeContext(childDef.context);\r\n }\r\n if (childDef.layout) {\r\n childNode.writeLayout(childDef.layout);\r\n }\r\n node.appendChild(childNode, branch);\r\n\r\n childRef.overrides.forEach((override) => {\r\n const options = { breakpoints: override.breakpoints };\r\n if (override.properties) {\r\n childNode.writeProperties(override.properties, options);\r\n }\r\n if (override.context) {\r\n childNode.writeContext(override.context, options);\r\n }\r\n if (override.layout) {\r\n childNode.writeLayout(override.layout, options);\r\n }\r\n });\r\n\r\n if (childDef.properties?.areas && !!childDef.properties?.areas) {\r\n const mergedDefinitons: any = Object.entries(childDef.properties.areas).reduce<any>(\r\n (acc, [key, value]: any) => {\r\n if (value.child) {\r\n const cssProps = Object.entries<string>(value.areaSettings || {}).reduce<{\r\n [key: string]: string;\r\n }>((acc, [key, value]) => {\r\n acc[`css-${key}`] = value;\r\n\r\n return acc;\r\n }, {});\r\n acc[key] = {\r\n type: 'area',\r\n context: value.context || {},\r\n children: [value.child],\r\n properties: {\r\n 'css-grid-area': key,\r\n ...cssProps,\r\n },\r\n };\r\n } else {\r\n const subgrid = {\r\n type: 'grid',\r\n context: {},\r\n properties: {\r\n areaSettings: {},\r\n areas: value.areas,\r\n context: value.context,\r\n gap: value.gap,\r\n gridArea: value.gridArea,\r\n template: value.template,\r\n },\r\n };\r\n acc[key] = subgrid;\r\n }\r\n return acc;\r\n },\r\n definitions\r\n );\r\n createChildren(\r\n platform,\r\n childNode,\r\n Object.keys(childDef.properties.areas),\r\n mergedDefinitons,\r\n views\r\n );\r\n } else if (childDef.properties?.child) {\r\n createChildren(platform, childNode, [childDef.properties?.child], definitions, views);\r\n }\r\n};\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAqBa,MAAA,eAAe,CAAC,SAA4C;AAC9D,SAAA,CAAC,CAAE,KAAoB;AAClC;AAaa,MAAA,gBAAgB,CAAC,cAAyB;AACnD,SAAO,qBAAqB,WAAW,QAAQ,OAAO,cAAW,CAAC,cAAc;AAAA,EAAA,CAAE;AACtF;AC/Ba,MAAA,uBAAuB,CAChC,UACA,YACC;;AACD,QAAM,EAAE,UAAU,MAAM,YAAY,aAAa,OAAO,WAAW;AAE7D,QAAA,WAAW,YAAY,SAAS;AAOtC,QAAM,YAAY,SAAS,WAAW,SAAS,IAAI;AACnD,YAAU,OAAO,SAAS;AAChB,YAAA,OAAO,SAAS,QAAQ,CAAA;AAClC,MAAI,SAAS,YAAY;AACX,cAAA,gBAAgB,SAAS,UAAU;AAAA,EACjD;AACA,MAAI,SAAS,SAAS;AACR,cAAA,aAAa,SAAS,OAAO;AAAA,EAC3C;AACA,MAAI,SAAS,QAAQ;AACP,cAAA,YAAY,SAAS,MAAM;AAAA,EACzC;AACK,OAAA,YAAY,WAAW,MAAM;AAEzB,WAAA,UAAU,QAAQ,CAAC,aAAa;AACrC,UAAM,WAAU,EAAE,aAAa,SAAS,YAAY;AACpD,QAAI,SAAS,YAAY;AACX,gBAAA,gBAAgB,SAAS,YAAY,QAAO;AAAA,IAC1D;AACA,QAAI,SAAS,SAAS;AACR,gBAAA,aAAa,SAAS,SAAS,QAAO;AAAA,IACpD;AACA,QAAI,SAAS,QAAQ;AACP,gBAAA,YAAY,SAAS,QAAQ,QAAO;AAAA,IAClD;AAAA,EAAA,CACH;AAED,MAAI,gBAAS,eAAT,mBAAqB,UAAS,CAAC,CAAC,gBAAS,eAAT,mBAAqB,QAAO;AAC5D,UAAM,mBAAwB,OAAO,QAAQ,SAAS,WAAW,KAAK,EAAE,OACpE,CAAC,KAAK,CAAC,KAAK,WAAgB;AACxB,UAAI,MAAM,OAAO;AACb,cAAM,WAAW,OAAO,QAAgB,MAAM,gBAAgB,CAAA,CAAE,EAAE,OAE/D,CAAC,MAAK,CAAC,MAAK,YAAW;AACtB,eAAI,OAAO,UAAS;AAEb,iBAAA;AAAA,QACX,GAAG,CAAE,CAAA;AACL,YAAI,OAAO;AAAA,UACP,MAAM;AAAA,UACN,SAAS,MAAM,WAAW,CAAC;AAAA,UAC3B,UAAU,CAAC,MAAM,KAAK;AAAA,UACtB,YAAY;AAAA,YACR,iBAAiB;AAAA,aACd;AAAA,QACP;AAAA,MACJ,OACG;AACH,cAAM,UAAU;AAAA,UACZ,MAAM;AAAA,UACN,SAAS,CAAC;AAAA,UACV,YAAY;AAAA,YACR,cAAc,CAAC;AAAA,YACf,OAAO,MAAM;AAAA,YACb,SAAS,MAAM;AAAA,YACf,KAAK,MAAM;AAAA,YACX,UAAU,MAAM;AAAA,YAChB,UAAU,MAAM;AAAA,UACpB;AAAA,QAAA;AAEJ,YAAI,OAAO;AAAA,MACf;AACO,aAAA;AAAA,OAEX,WACJ;AAEI,mBAAA,UACA,WACA,OAAO,KAAK,SAAS,WAAW,KAAK,GACrC,kBACA,KACJ;AAAA,EAAA,WACO,eAAS,eAAT,mBAAqB,OAAO;AACpB,mBAAA,UAAU,WAAW,CAAC,eAAS,eAAT,mBAAqB,KAAK,GAAG,aAAa,KAAK;AAAA,EACxF;AACJ;;"}