@unmade/text-renderer 0.1.10 → 0.1.12

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 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function C(t){return t.type==="text"}function P(t){const i=t.getState().garment;return t.settings.garments.find(s=>s.slug===i)}function M(t,o){if(t.embellishment_positions)return t.embellishment_positions.find(i=>i.placement===o)}function w(t,o){const i=t.fonts.find(s=>s.id===o);if(i)return{id:i.id,fontUrl:i.font_url,fontFamily:i.font_family,letterSpacing:i.letter_spacing??0,letterSpacingOutline:i.letter_spacing_outline??0,outlineWidth:i.outline_width??0,fixedColours:i.fixed_colours}}function z(t,o,i,s,a){const{library:h}=a,u=[];for(const[l,g]of Object.entries(s)){if(g.type!=="text")continue;const d=g,{meta:e}=d;if(!e?.text)continue;const{libraryItemID:y}=d,c=h[y];if(!c||!C(c))continue;const f=e.font;if(f===void 0)continue;const S=w(c,f);if(!S)continue;const r=M(o,l);if(!r)continue;let x=null,b=null;if(e.colours&&c.palette!=null)try{const n=t.palettes.getUsedColours(c.palette,e.colours);x=n[0]??null,b=n[1]??null}catch(n){console.warn(`[extractTextPlacements] Colour resolution failed for ${l}:`,n)}const m=a.byId?.[l],p={vertical:"top",horizontal:"left"};if(m){const n=m;n.vertical_alignment&&(p.vertical=n.vertical_alignment),n.horizontal_alignment&&(p.horizontal=n.horizontal_alignment)}u.push({placementId:l,displayName:l,source:i,text:e.text,font:S,isCurved:e.isCurved??!1,isDistributed:e.isDistributed??!1,verticalAlignment:e.verticalAlignment??p.vertical,horizontalAlignment:e.horizontalAlignment??p.horizontal,rotation:e.rotation??0,spacing:e.spacing??null,fillColour:x,outlineColour:b,position:{width:r.width,height:r.height,physicalWidth:r.physical_width_decimal,physicalHeight:r.physical_height_decimal,physicalUnits:r.physical_size_units,baselinePath:r.baseline_path,rotation:r.rotation},userSetPhysicalSize:e.retainedPhysicalSize??null,fontMetrics:(()=>{const n=e.fontMetrics??{size:0,height:0,baseline:0,width:0},_=n.physicalFontSize||(n.physicalHeight!=null&&n.physicalHeight>0&&n.physicalUnits!=null?[n.physicalHeight,n.physicalUnits]:void 0);return{...n,physicalFontSize:_}})(),manufacturingMethod:e.manufacturing_method??""})}return u}function U(t){const o=t.getState(),i=P(t);if(!i)return console.warn("[extractTextPlacements] No matching garment found"),[];const s=[],a=o.vals?.placements,h=t.settings.placements;a&&h&&s.push(...z(t,i,"placements",a,h));const u=o.vals?.embellishments,l=t.settings.embellishments;return u&&l&&s.push(...z(t,i,"embellishments",u,l)),s.length===0&&console.warn("[extractTextPlacements] No text entries found in either placements or embellishments"),s}function v(t){return t==="center"?"centre":t}function A(t){let o=v(t.horizontalAlignment);t.isDistributed&&(o="distributed");let i;t.position.baselinePath?i={type:"custom",path:t.position.baselinePath}:t.isCurved?i="curved":i="flat";const s=t.userSetPhysicalSize?[t.userSetPhysicalSize[0],t.userSetPhysicalSize[1]]:t.fontMetrics.physicalFontSize!=null?t.fontMetrics.physicalFontSize:[t.position.physicalHeight,t.position.physicalUnits],h=!t.userSetPhysicalSize&&t.fontMetrics.physicalFontSize!=null&&t.fontMetrics.physicalHeight!=null&&t.fontMetrics.physicalUnits===t.position.physicalUnits&&t.fontMetrics.height>0?t.position.height/t.fontMetrics.height*t.fontMetrics.physicalHeight:t.position.physicalHeight,l={outlineWidth:t.outlineColour!=null?t.font.outlineWidth:0,letterSpacing:t.spacing?.letter_spacing??0,letterSpacingOutline:t.spacing?.letter_spacing_outline??0},g=t.fillColour?{hex:t.fillColour.hex,reference:t.fillColour.reference??void 0}:void 0,d=t.outlineColour?{hex:t.outlineColour.hex,reference:t.outlineColour.reference??void 0}:void 0;let e;if(t.font.fixedColours){const y={};for(const[c,f]of Object.entries(t.font.fixedColours))y[c]={hex:f.hex,reference:f.reference};e=y}return{text:t.text,fontUrl:t.font.fontUrl,physicalSize:s,fontSizeFallback:t.fontMetrics.size,boxDimensions:{width:t.position.width,height:t.position.height,physicalWidth:t.position.physicalWidth,physicalHeight:h,physicalUnits:t.position.physicalUnits},spacing:l,verticalAlignment:v(t.verticalAlignment),horizontalAlignment:o,baseline:i,fillColour:g,strokeColour:d,colourMap:e}}exports.extractTextPlacements=U;exports.mapStateToRendererOptions=A;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function C(t){return t.type==="text"}function P(t){const i=t.getState().garment;return t.settings.garments.find(s=>s.slug===i)}function w(t,o){if(t.embellishment_positions)return t.embellishment_positions.find(i=>i.placement===o)}function A(t,o){const i=t.fonts.find(s=>s.id===o);if(i)return{id:i.id,fontUrl:i.font_url,fontFamily:i.font_family,letterSpacing:i.letter_spacing??0,letterSpacingOutline:i.letter_spacing_outline??0,outlineWidth:i.outline_width??0,fixedColours:i.fixed_colours}}function v(t,o,i,s,c){const{library:u}=c,a=[];for(const[l,h]of Object.entries(s)){if(h.type!=="text")continue;const f=h,{meta:n}=f;if(!n?.text)continue;const{libraryItemID:d}=f,g=u[d];if(!g||!C(g))continue;const y=n.font;if(y===void 0)continue;const m=A(g,y);if(!m)continue;const r=w(o,l);if(!r)continue;let x=null,b=null;if(n.colours&&g.palette!=null)try{const e=t.palettes.getUsedColours(g.palette,n.colours);x=e[0]??null,b=e[1]??null}catch(e){console.warn(`[extractTextPlacements] Colour resolution failed for ${l}:`,e)}const S=c.byId?.[l],p={vertical:"top",horizontal:"left"};if(S){const e=S;e.vertical_alignment&&(p.vertical=e.vertical_alignment),e.horizontal_alignment&&(p.horizontal=e.horizontal_alignment)}a.push({placementId:l,displayName:l,source:i,text:n.text,font:m,isCurved:n.isCurved??!1,isDistributed:n.isDistributed??!1,verticalAlignment:n.verticalAlignment??p.vertical,horizontalAlignment:n.horizontalAlignment??p.horizontal,rotation:n.rotation??0,spacing:n.spacing??null,fillColour:x,outlineColour:b,position:{width:r.width,height:r.height,physicalWidth:r.physical_width_decimal,physicalHeight:r.physical_height_decimal,physicalUnits:r.physical_size_units,baselinePath:r.baseline_path,rotation:r.rotation},userSetPhysicalSize:n.retainedPhysicalSize??null,fontMetrics:(()=>{const e=n.fontMetrics??{size:0,height:0,baseline:0,width:0},z=e.physicalFontSize||(e.physicalHeight!=null&&e.physicalHeight>0&&e.physicalUnits!=null?[e.physicalHeight,e.physicalUnits]:void 0);return{...e,physicalFontSize:z}})(),manufacturingMethod:n.manufacturing_method??""})}return a}function U(t){const o=t.getState(),i=P(t);if(!i)return console.warn("[extractTextPlacements] No matching garment found"),[];const s=[],c=o.vals?.placements,u=t.settings.placements;c&&u&&s.push(...v(t,i,"placements",c,u));const a=o.vals?.embellishments,l=t.settings.embellishments;return a&&l&&s.push(...v(t,i,"embellishments",a,l)),s.length===0&&console.warn("[extractTextPlacements] No text entries found in either placements or embellishments"),s}function _(t){return t==="center"?"centre":t}function O(t){let o=_(t.horizontalAlignment);t.isDistributed&&(o="distributed");let i;t.position.baselinePath?i={type:"custom",path:t.position.baselinePath}:t.isCurved?i="curved":i="flat";const s=t.userSetPhysicalSize?[t.userSetPhysicalSize[0],t.userSetPhysicalSize[1]]:t.fontMetrics.physicalFontSize!=null?t.fontMetrics.physicalFontSize:[t.position.physicalHeight,t.position.physicalUnits],u={outlineWidth:t.outlineColour!=null?t.font.outlineWidth:0,letterSpacing:t.spacing?.letter_spacing??0,letterSpacingOutline:t.spacing?.letter_spacing_outline??0},a=t.fillColour?{hex:t.fillColour.hex,reference:t.fillColour.reference??void 0}:void 0,l=t.outlineColour?{hex:t.outlineColour.hex,reference:t.outlineColour.reference??void 0}:void 0;let h;if(t.font.fixedColours){const f={};for(const[n,d]of Object.entries(t.font.fixedColours))f[n]={hex:d.hex,reference:d.reference};h=f}return{text:t.text,fontUrl:t.font.fontUrl,physicalSize:s,fontSizeFallback:t.fontMetrics.size,boxDimensions:{width:t.position.width,height:t.position.height,physicalWidth:t.position.physicalWidth,physicalHeight:t.position.physicalHeight,physicalUnits:t.position.physicalUnits},spacing:u,verticalAlignment:_(t.verticalAlignment),horizontalAlignment:o,baseline:i,fillColour:a,strokeColour:l,colourMap:h}}exports.extractTextPlacements=U;exports.mapStateToRendererOptions=O;
@@ -5,13 +5,13 @@ function P(t) {
5
5
  const i = t.getState().garment;
6
6
  return t.settings.garments.find((s) => s.slug === i);
7
7
  }
8
- function M(t, o) {
8
+ function w(t, o) {
9
9
  if (t.embellishment_positions)
10
10
  return t.embellishment_positions.find(
11
11
  (i) => i.placement === o
12
12
  );
13
13
  }
14
- function w(t, o) {
14
+ function A(t, o) {
15
15
  const i = t.fonts.find((s) => s.id === o);
16
16
  if (i)
17
17
  return {
@@ -24,51 +24,51 @@ function w(t, o) {
24
24
  fixedColours: i.fixed_colours
25
25
  };
26
26
  }
27
- function z(t, o, i, s, a) {
28
- const { library: h } = a, u = [];
29
- for (const [l, g] of Object.entries(s)) {
30
- if (g.type !== "text") continue;
31
- const d = g, { meta: e } = d;
32
- if (!e?.text) continue;
33
- const { libraryItemID: y } = d, c = h[y];
34
- if (!c || !C(c)) continue;
35
- const f = e.font;
36
- if (f === void 0) continue;
37
- const S = w(c, f);
38
- if (!S) continue;
39
- const r = M(o, l);
27
+ function v(t, o, i, s, c) {
28
+ const { library: u } = c, a = [];
29
+ for (const [l, h] of Object.entries(s)) {
30
+ if (h.type !== "text") continue;
31
+ const f = h, { meta: n } = f;
32
+ if (!n?.text) continue;
33
+ const { libraryItemID: d } = f, g = u[d];
34
+ if (!g || !C(g)) continue;
35
+ const y = n.font;
36
+ if (y === void 0) continue;
37
+ const m = A(g, y);
38
+ if (!m) continue;
39
+ const r = w(o, l);
40
40
  if (!r) continue;
41
41
  let x = null, b = null;
42
- if (e.colours && c.palette != null)
42
+ if (n.colours && g.palette != null)
43
43
  try {
44
- const n = t.palettes.getUsedColours(
45
- c.palette,
46
- e.colours
44
+ const e = t.palettes.getUsedColours(
45
+ g.palette,
46
+ n.colours
47
47
  );
48
- x = n[0] ?? null, b = n[1] ?? null;
49
- } catch (n) {
50
- console.warn(`[extractTextPlacements] Colour resolution failed for ${l}:`, n);
48
+ x = e[0] ?? null, b = e[1] ?? null;
49
+ } catch (e) {
50
+ console.warn(`[extractTextPlacements] Colour resolution failed for ${l}:`, e);
51
51
  }
52
- const m = a.byId?.[l], p = {
52
+ const S = c.byId?.[l], p = {
53
53
  vertical: "top",
54
54
  horizontal: "left"
55
55
  };
56
- if (m) {
57
- const n = m;
58
- n.vertical_alignment && (p.vertical = n.vertical_alignment), n.horizontal_alignment && (p.horizontal = n.horizontal_alignment);
56
+ if (S) {
57
+ const e = S;
58
+ e.vertical_alignment && (p.vertical = e.vertical_alignment), e.horizontal_alignment && (p.horizontal = e.horizontal_alignment);
59
59
  }
60
- u.push({
60
+ a.push({
61
61
  placementId: l,
62
62
  displayName: l,
63
63
  source: i,
64
- text: e.text,
65
- font: S,
66
- isCurved: e.isCurved ?? !1,
67
- isDistributed: e.isDistributed ?? !1,
68
- verticalAlignment: e.verticalAlignment ?? p.vertical,
69
- horizontalAlignment: e.horizontalAlignment ?? p.horizontal,
70
- rotation: e.rotation ?? 0,
71
- spacing: e.spacing ?? null,
64
+ text: n.text,
65
+ font: m,
66
+ isCurved: n.isCurved ?? !1,
67
+ isDistributed: n.isDistributed ?? !1,
68
+ verticalAlignment: n.verticalAlignment ?? p.vertical,
69
+ horizontalAlignment: n.horizontalAlignment ?? p.horizontal,
70
+ rotation: n.rotation ?? 0,
71
+ spacing: n.spacing ?? null,
72
72
  fillColour: x,
73
73
  outlineColour: b,
74
74
  position: {
@@ -80,53 +80,53 @@ function z(t, o, i, s, a) {
80
80
  baselinePath: r.baseline_path,
81
81
  rotation: r.rotation
82
82
  },
83
- userSetPhysicalSize: e.retainedPhysicalSize ?? null,
83
+ userSetPhysicalSize: n.retainedPhysicalSize ?? null,
84
84
  fontMetrics: (() => {
85
- const n = e.fontMetrics ?? { size: 0, height: 0, baseline: 0, width: 0 }, _ = n.physicalFontSize || (n.physicalHeight != null && n.physicalHeight > 0 && n.physicalUnits != null ? [n.physicalHeight, n.physicalUnits] : void 0);
86
- return { ...n, physicalFontSize: _ };
85
+ const e = n.fontMetrics ?? { size: 0, height: 0, baseline: 0, width: 0 }, z = e.physicalFontSize || (e.physicalHeight != null && e.physicalHeight > 0 && e.physicalUnits != null ? [e.physicalHeight, e.physicalUnits] : void 0);
86
+ return { ...e, physicalFontSize: z };
87
87
  })(),
88
- manufacturingMethod: e.manufacturing_method ?? ""
88
+ manufacturingMethod: n.manufacturing_method ?? ""
89
89
  });
90
90
  }
91
- return u;
91
+ return a;
92
92
  }
93
93
  function U(t) {
94
94
  const o = t.getState(), i = P(t);
95
95
  if (!i)
96
96
  return console.warn("[extractTextPlacements] No matching garment found"), [];
97
- const s = [], a = o.vals?.placements, h = t.settings.placements;
98
- a && h && s.push(...z(t, i, "placements", a, h));
99
- const u = o.vals?.embellishments, l = t.settings.embellishments;
100
- return u && l && s.push(...z(t, i, "embellishments", u, l)), s.length === 0 && console.warn("[extractTextPlacements] No text entries found in either placements or embellishments"), s;
97
+ const s = [], c = o.vals?.placements, u = t.settings.placements;
98
+ c && u && s.push(...v(t, i, "placements", c, u));
99
+ const a = o.vals?.embellishments, l = t.settings.embellishments;
100
+ return a && l && s.push(...v(t, i, "embellishments", a, l)), s.length === 0 && console.warn("[extractTextPlacements] No text entries found in either placements or embellishments"), s;
101
101
  }
102
- function v(t) {
102
+ function _(t) {
103
103
  return t === "center" ? "centre" : t;
104
104
  }
105
- function A(t) {
106
- let o = v(t.horizontalAlignment);
105
+ function F(t) {
106
+ let o = _(t.horizontalAlignment);
107
107
  t.isDistributed && (o = "distributed");
108
108
  let i;
109
109
  t.position.baselinePath ? i = { type: "custom", path: t.position.baselinePath } : t.isCurved ? i = "curved" : i = "flat";
110
110
  const s = t.userSetPhysicalSize ? [
111
111
  t.userSetPhysicalSize[0],
112
112
  t.userSetPhysicalSize[1]
113
- ] : t.fontMetrics.physicalFontSize != null ? t.fontMetrics.physicalFontSize : [t.position.physicalHeight, t.position.physicalUnits], h = !t.userSetPhysicalSize && t.fontMetrics.physicalFontSize != null && t.fontMetrics.physicalHeight != null && t.fontMetrics.physicalUnits === t.position.physicalUnits && t.fontMetrics.height > 0 ? t.position.height / t.fontMetrics.height * t.fontMetrics.physicalHeight : t.position.physicalHeight, l = {
113
+ ] : t.fontMetrics.physicalFontSize != null ? t.fontMetrics.physicalFontSize : [t.position.physicalHeight, t.position.physicalUnits], u = {
114
114
  outlineWidth: t.outlineColour != null ? t.font.outlineWidth : 0,
115
115
  letterSpacing: t.spacing?.letter_spacing ?? 0,
116
116
  letterSpacingOutline: t.spacing?.letter_spacing_outline ?? 0
117
- }, g = t.fillColour ? {
117
+ }, a = t.fillColour ? {
118
118
  hex: t.fillColour.hex,
119
119
  reference: t.fillColour.reference ?? void 0
120
- } : void 0, d = t.outlineColour ? {
120
+ } : void 0, l = t.outlineColour ? {
121
121
  hex: t.outlineColour.hex,
122
122
  reference: t.outlineColour.reference ?? void 0
123
123
  } : void 0;
124
- let e;
124
+ let h;
125
125
  if (t.font.fixedColours) {
126
- const y = {};
127
- for (const [c, f] of Object.entries(t.font.fixedColours))
128
- y[c] = { hex: f.hex, reference: f.reference };
129
- e = y;
126
+ const f = {};
127
+ for (const [n, d] of Object.entries(t.font.fixedColours))
128
+ f[n] = { hex: d.hex, reference: d.reference };
129
+ h = f;
130
130
  }
131
131
  return {
132
132
  text: t.text,
@@ -137,21 +137,21 @@ function A(t) {
137
137
  width: t.position.width,
138
138
  height: t.position.height,
139
139
  physicalWidth: t.position.physicalWidth,
140
- physicalHeight: h,
140
+ physicalHeight: t.position.physicalHeight,
141
141
  physicalUnits: t.position.physicalUnits
142
142
  },
143
- spacing: l,
144
- verticalAlignment: v(
143
+ spacing: u,
144
+ verticalAlignment: _(
145
145
  t.verticalAlignment
146
146
  ),
147
147
  horizontalAlignment: o,
148
148
  baseline: i,
149
- fillColour: g,
150
- strokeColour: d,
151
- colourMap: e
149
+ fillColour: a,
150
+ strokeColour: l,
151
+ colourMap: h
152
152
  };
153
153
  }
154
154
  export {
155
155
  U as extractTextPlacements,
156
- A as mapStateToRendererOptions
156
+ F as mapStateToRendererOptions
157
157
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unmade/text-renderer",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "description": "Pure function text renderer for SVG output",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",