apexify.js 5.2.1 → 5.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.
@@ -118,41 +118,62 @@ class EnhancedTextRenderer {
118
118
  const lineHeight = (textProps.lineHeight || 1.4) * fontSize;
119
119
  const maxHeight = textProps.maxHeight;
120
120
  const maxLines = maxHeight ? Math.floor(maxHeight / lineHeight) : Infinity;
121
- // Split text into words and wrap
122
- const words = textProps.text.split(' ');
123
- const lines = [];
124
- let currentLine = '';
125
- for (const word of words) {
126
- const testLine = currentLine ? currentLine + ' ' + word : word;
127
- const testWidth = ctx.measureText(testLine).width;
128
- if (testWidth > (textProps.maxWidth || Infinity) && currentLine) {
129
- lines.push(currentLine);
130
- currentLine = word;
131
- if (lines.length >= maxLines) {
132
- currentLine = '...';
133
- break;
121
+ // First, split by \n to handle explicit line breaks
122
+ const explicitLines = textProps.text.split('\n');
123
+ const allLines = [];
124
+ // For each explicit line (split by \n), apply word wrapping if needed
125
+ for (const explicitLine of explicitLines) {
126
+ if (!explicitLine.trim() && explicitLines.length > 1) {
127
+ // Empty line from \n - add as empty line
128
+ allLines.push('');
129
+ continue;
130
+ }
131
+ // Split explicit line into words and wrap
132
+ const words = explicitLine.split(' ');
133
+ let currentLine = '';
134
+ for (const word of words) {
135
+ const testLine = currentLine ? currentLine + ' ' + word : word;
136
+ const testWidth = ctx.measureText(testLine).width;
137
+ if (testWidth > (textProps.maxWidth || Infinity) && currentLine) {
138
+ allLines.push(currentLine);
139
+ currentLine = word;
140
+ if (allLines.length >= maxLines) {
141
+ currentLine = '...';
142
+ break;
143
+ }
144
+ }
145
+ else {
146
+ currentLine = testLine;
134
147
  }
135
148
  }
136
- else {
137
- currentLine = testLine;
149
+ if (currentLine && allLines.length < maxLines) {
150
+ allLines.push(currentLine);
151
+ }
152
+ if (allLines.length >= maxLines) {
153
+ break;
138
154
  }
139
- }
140
- if (currentLine && lines.length < maxLines) {
141
- lines.push(currentLine);
142
155
  }
143
156
  // Render each line
144
- for (let i = 0; i < lines.length; i++) {
157
+ for (let i = 0; i < allLines.length; i++) {
145
158
  const y = textProps.y + (i * lineHeight);
146
- await this.renderTextLine(ctx, lines[i], textProps.x, y, textProps);
159
+ await this.renderTextLine(ctx, allLines[i], textProps.x, y, textProps);
147
160
  }
148
161
  }
149
162
  /**
150
- * Renders single line text with all effects
163
+ * Renders single line text with all effects (handles \n line breaks)
151
164
  * @param ctx - Canvas 2D context
152
165
  * @param textProps - Text properties
153
166
  */
154
167
  static async renderSingleLine(ctx, textProps) {
155
- await this.renderTextLine(ctx, textProps.text, textProps.x, textProps.y, textProps);
168
+ const fontSize = textProps.font?.size || textProps.fontSize || 16;
169
+ const lineHeight = (textProps.lineHeight || 1.4) * fontSize;
170
+ // Split by \n to handle explicit line breaks
171
+ const lines = textProps.text.split('\n');
172
+ // Render each line
173
+ for (let i = 0; i < lines.length; i++) {
174
+ const y = textProps.y + (i * lineHeight);
175
+ await this.renderTextLine(ctx, lines[i], textProps.x, y, textProps);
176
+ }
156
177
  }
157
178
  /**
158
179
  * Renders a single line of text with all effects applied
@@ -1 +1 @@
1
- {"version":3,"file":"enhancedTextRenderer.js","sourceRoot":"","sources":["../../../../../lib/Canvas/utils/Texts/enhancedTextRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enhancedTextRenderer.js","sourceRoot":"","sources":["../../../../../lib/Canvas/utils/Texts/enhancedTextRenderer.ts"],"names":[],"mappings":";;;;;;AAEA,4CAA8C;AAC9C,gDAAwB;AAExB;;GAEG;AACH,MAAa,oBAAoB;IAC/B;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAkB,EAAE,SAAyB;QACnE,GAAG,CAAC,IAAI,EAAE,CAAC;QAEX,IAAI,CAAC;YACH,+EAA+E;YAC/E,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC;YAC5D,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC;YAE5D,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,IAAI,YAAY,CAAC,CAAC;YACpE,CAAC;YAED,2BAA2B;YAC3B,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAE1C,4BAA4B;YAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAE/B,0BAA0B;YAC1B,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAEpC,mDAAmD;YACnD,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACvB,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC9C,CAAC;QAEH,CAAC;gBAAS,CAAC;YACT,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAgB,EAAE,QAAgB;QACxE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;YACpD,oBAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,sCAAsC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,oBAAoB,CAAC,GAAkB,EAAE,SAAyB;QAC/E,iBAAiB;QACjB,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;YACxC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;YACjD,GAAG,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,uBAAuB;QACvB,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACpC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,SAAS,CAAC,GAAkB,EAAE,SAAyB;QACpE,qDAAqD;QACrD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;QAClE,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,SAAS,CAAC,UAAU,IAAI,OAAO,CAAC;QAE3H,qCAAqC;QACrC,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,IAAI,SAAS,CAAC,IAAI;YAAE,UAAU,IAAI,OAAO,CAAC;QAC1C,IAAI,SAAS,CAAC,MAAM;YAAE,UAAU,IAAI,SAAS,CAAC;QAE9C,UAAU,IAAI,GAAG,QAAQ,OAAO,UAAU,GAAG,CAAC;QAE9C,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC;QAEtB,uBAAuB;QACvB,IAAI,SAAS,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YAC1C,GAAG,CAAC,aAAa,GAAG,GAAG,SAAS,CAAC,aAAa,IAAI,CAAC;QACrD,CAAC;QAED,qBAAqB;QACrB,IAAI,SAAS,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACxC,GAAG,CAAC,WAAW,GAAG,GAAG,SAAS,CAAC,WAAW,IAAI,CAAC;QACjD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,cAAc,CAAC,GAAkB,EAAE,SAAyB;QACzE,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,IAAI,MAAM,CAAC;QAC9C,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,IAAI,YAAY,CAAC;IAC5D,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAkB,EAAE,SAAyB;QAClF,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;QAClE,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,UAAU,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC;QAC5D,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACtC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAE3E,oDAAoD;QACpD,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,sEAAsE;QACtE,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrD,yCAAyC;gBACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClB,SAAS;YACX,CAAC;YAED,0CAA0C;YAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,WAAW,GAAG,EAAE,CAAC;YAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC/D,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;gBAElD,IAAI,SAAS,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC;oBAChE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC3B,WAAW,GAAG,IAAI,CAAC;oBAEnB,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;wBAChC,WAAW,GAAG,KAAK,CAAC;wBACpB,MAAM;oBACR,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,WAAW,GAAG,QAAQ,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,IAAI,WAAW,IAAI,QAAQ,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;gBAC9C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7B,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAChC,MAAM;YACR,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAkB,EAAE,SAAyB;QACjF,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;QAClE,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,UAAU,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC;QAE5D,6CAA6C;QAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEzC,mBAAmB;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,KAAK,CAAC,cAAc,CACjC,GAAkB,EAClB,IAAY,EACZ,CAAS,EACT,CAAS,EACT,SAAyB;QAEzB,4BAA4B;QAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;QAChC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;QAClE,MAAM,UAAU,GAAG,QAAQ,CAAC;QAE5B,6BAA6B;QAC7B,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9E,CAAC;QAED,oBAAoB;QACpB,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;QAED,sBAAsB;QACtB,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC;QAED,eAAe;QACf,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC;QAED,aAAa;QACb,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QAE5C,yBAAyB;QACzB,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;;;;OAQG;IACK,MAAM,CAAC,eAAe,CAC5B,GAAkB,EAClB,CAAS,EACT,CAAS,EACT,KAAa,EACb,MAAc,EACd,SAAoE;QAEpE,GAAG,CAAC,IAAI,EAAE,CAAC;QAEX,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1E,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;QAE1B,qCAAqC;QACrC,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvB,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;QAC5F,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC;QAC/C,CAAC;QAED,mDAAmD;QACnD,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,iCAAiC;QACtE,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAE3C,GAAG,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,UAAU,CACvB,GAAkB,EAClB,IAAY,EACZ,CAAS,EACT,CAAS,EACT,IAAmF;QAEnF,GAAG,CAAC,IAAI,EAAE,CAAC;QAEX,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAEhE,wEAAwE;QACxE,wFAAwF;QACxF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,2CAA2C;YAC3C,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,6BAA6B;YAC1D,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC;YAC3B,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;YAC1B,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAEzB,6BAA6B;YAC7B,GAAG,CAAC,WAAW,GAAG,aAAa,CAAC;YAChC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAClG,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC;YAC1C,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC;YAC3B,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;YAC1B,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC;QAED,GAAG,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,YAAY,CACzB,GAAkB,EAClB,IAAY,EACZ,CAAS,EACT,CAAS,EACT,MAA+F;QAE/F,GAAG,CAAC,IAAI,EAAE,CAAC;QAEX,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,oBAAoB,CAAC;QACvD,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QACxC,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QACxC,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;QAElC,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;QACnC,CAAC;QAED,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzB,GAAG,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,YAAY,CACzB,GAAkB,EAClB,IAAY,EACZ,CAAS,EACT,CAAS,EACT,MAAwJ;QAExJ,GAAG,CAAC,IAAI,EAAE,CAAC;QAEX,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC;QAE5C,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC;QAE5B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACxG,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC;QAC9C,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;QACnC,CAAC;QAED,qBAAqB;QACrB,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAEzD,+BAA+B;QAC/B,IAAI,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,OAAO,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpF,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzG,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,CAAC;QAED,GAAG,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,UAAU,CACvB,GAAkB,EAClB,IAAY,EACZ,CAAS,EACT,CAAS,EACT,SAAyB;QAEzB,GAAG,CAAC,IAAI,EAAE,CAAC;QAEX,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvB,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzG,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC;QAC/C,CAAC;QAED,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzB,GAAG,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAED;;;;;;;;;OASG;IACK,MAAM,CAAC,iBAAiB,CAC9B,GAAkB,EAClB,IAAY,EACZ,CAAS,EACT,CAAS,EACT,KAAa,EACb,MAAc,EACd,SAAyB;QAEzB,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,aAAa,CAAC;QAC5F,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,GAAG,CAAC,IAAI,EAAE,CAAC;QAEX,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;QAClE,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC;QAElD,8CAA8C;QAC9C,MAAM,oBAAoB,GAAG,CAC3B,WAAmB,EACnB,UAAyF,EACzF,QAAgB,EAChB,EAAE;YACF,IAAI,CAAC,UAAU;gBAAE,OAAO;YAExB,GAAG,CAAC,IAAI,EAAE,CAAC;YAEX,IAAI,eAAe,GAAG,YAAY,CAAC;YACnC,IAAI,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,kBAAkB;YAEtE,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACnC,eAAe,GAAG,UAAU,CAAC,KAAK,IAAI,YAAY,CAAC;gBACnD,eAAe,GAAG,UAAU,CAAC,KAAK,IAAI,eAAe,CAAC;gBAEtD,uCAAuC;gBACvC,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;oBACxB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,CAAC;gBAC1G,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,WAAW,GAAG,eAAe,CAAC;gBACpC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,WAAW,GAAG,eAAe,CAAC;YACpC,CAAC;YAED,GAAG,CAAC,SAAS,GAAG,eAAe,CAAC;YAEhC,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAC3B,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,CAAC;YACnC,GAAG,CAAC,MAAM,EAAE,CAAC;YAEb,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,CAAC,CAAC;QAEF,YAAY;QACZ,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,CAAC,GAAG,QAAQ,GAAG,GAAG,CAAC;YACtC,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACrE,CAAC;QAED,WAAW;QACX,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,GAAG,GAAG,CAAC;YACrC,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAClE,CAAC;QAED,gBAAgB;QAChB,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;YAC5B,MAAM,cAAc,GAAG,CAAC,GAAG,QAAQ,GAAG,GAAG,CAAC;YAC1C,oBAAoB,CAAC,cAAc,EAAE,SAAS,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QACjF,CAAC;QAED,GAAG,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAED;;;;;;;;;OASG;IACK,MAAM,CAAC,cAAc,CAC3B,GAAkB,EAClB,eAAyB,EACzB,MAAc,EACd,MAAc,EACd,IAAY,EACZ,IAAY;QAEZ,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;QACvG,CAAC;QAED,IAAI,QAAwB,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC;QAE9C,IAAI,eAAe,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAChE,KAAK,MAAM,SAAS,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;gBAC/C,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YACzD,CAAC;YAED,0CAA0C;YAC1C,IAAI,eAAe,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACrE,OAAO,IAAI,CAAC,8BAA8B,CAAC,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACnG,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,IAAI,eAAe,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7C,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CACjC,eAAe,CAAC,MAAM,IAAI,MAAM,EAChC,eAAe,CAAC,MAAM,IAAI,MAAM,EAChC,eAAe,CAAC,WAAW,IAAI,CAAC,EAChC,eAAe,CAAC,IAAI,IAAI,IAAI,EAC5B,eAAe,CAAC,IAAI,IAAI,IAAI,EAC5B,eAAe,CAAC,SAAS,IAAI,CAAC,CAC/B,CAAC;YACF,KAAK,MAAM,SAAS,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;gBAC/C,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YACzD,CAAC;YAED,0CAA0C;YAC1C,IAAI,eAAe,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACrE,OAAO,IAAI,CAAC,8BAA8B,CAAC,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACnG,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,IAAI,eAAe,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/D,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,IAAI,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;YAE9C,QAAQ,GAAG,GAAG,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC/D,KAAK,MAAM,SAAS,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;gBAC/C,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YACzD,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,8BAA8B,CAC3C,GAAkB,EAClB,QAAwB,EACxB,MAA4B,EAC5B,KAAa,EACb,MAAc;QAEd,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAkB,CAAC;QAEnE,0CAA0C;QAC1C,UAAU,CAAC,SAAS,GAAG,QAAQ,CAAC;QAChC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAEzC,iCAAiC;QACjC,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,aAAa,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC7F,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,oBAAoB,CACjC,GAAkB,EAClB,KAAoE,EACpE,KAAa;QAEb,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,OAAO;gBACV,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBACpB,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;gBACrB,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACvB,MAAM;YAER,KAAK,QAAQ;gBACX,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;gBACrB,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACvB,MAAM;YAER,KAAK,QAAQ;gBACX,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;gBAChC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;gBACtB,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACvB,MAAM;YAER,KAAK,QAAQ,CAAC;YACd,KAAK,OAAO,CAAC;YACb,KAAK,QAAQ;gBACX,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBACpB,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;gBACrB,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACvB,MAAM;YAER;gBACE,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBACpB,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;gBACrB,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACvB,MAAM;QACV,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACK,MAAM,CAAC,uBAAuB,CACpC,GAAkB,EAClB,IAAY,EACZ,CAAS,EACT,CAAS,EACT,KAAoC,EACpC,KAAa,EACb,KAAc,EACd,QAAmB;QAEnB,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;QAC5B,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QAE9C,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,QAAQ;gBACX,kCAAkC;gBAClC,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;gBAE1B,oBAAoB;gBACpB,IAAI,QAAQ,EAAE,CAAC;oBACb,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC/E,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC9D,CAAC;gBACD,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAE3B,qBAAqB;gBACrB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC1B,IAAI,QAAQ,EAAE,CAAC;oBACb,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC/E,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC/D,CAAC;gBACD,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3B,MAAM;YAER,KAAK,OAAO;gBACV,iCAAiC;gBACjC,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;gBAE1B,qBAAqB;gBACrB,IAAI,QAAQ,EAAE,CAAC;oBACb,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC/E,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC/D,CAAC;gBACD,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAE3B,oBAAoB;gBACpB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC1B,IAAI,QAAQ,EAAE,CAAC;oBACb,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC/E,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC9D,CAAC;gBACD,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3B,MAAM;YAER,KAAK,QAAQ;gBACX,+BAA+B;gBAC/B,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;gBAE1B,uBAAuB;gBACvB,IAAI,QAAQ,EAAE,CAAC;oBACb,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC/E,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,WAAW,GAAG,KAAK,IAAI,SAAS,CAAC;gBACvC,CAAC;gBACD,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAE3B,wBAAwB;gBACxB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC1B,IAAI,QAAQ,EAAE,CAAC;oBACb,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC/E,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,WAAW,GAAG,KAAK,IAAI,SAAS,CAAC;gBACvC,CAAC;gBACD,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3B,MAAM;QACV,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,WAAW,CAAC,KAAa,EAAE,MAAc;QACtD,kCAAkC;QAClC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACxE,CAAC;QACD,OAAO,KAAK,CAAC,CAAC,qCAAqC;IACrD,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,YAAY,CAAC,KAAa,EAAE,MAAc;QACvD,mCAAmC;QACnC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YAChF,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YACpG,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YAC1F,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACxE,CAAC;QACD,OAAO,KAAK,CAAC,CAAC,qCAAqC;IACrD,CAAC;CACF;AArxBD,oDAqxBC"}
@@ -83,6 +83,7 @@ export interface HorizontalAxisConfig {
83
83
  color?: string;
84
84
  width?: number;
85
85
  tickFontSize?: number;
86
+ tickColor?: string;
86
87
  valueSpacing?: number;
87
88
  }
88
89
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"horizontalbarchart.d.ts","sourceRoot":"","sources":["../../../../../lib/Canvas/utils/Charts/horizontalbarchart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"horizontalbarchart.d.ts","sourceRoot":"","sources":["../../../../../lib/Canvas/utils/Charts/horizontalbarchart.ts"],"names":[],"mappings":"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"}
@@ -18,8 +18,12 @@ async function renderEnhancedText(ctx, text, x, y, style, fontSize, color, textG
18
18
  fontString += 'bold ';
19
19
  if (style?.italic)
20
20
  fontString += 'italic ';
21
- fontString += `${effectiveFontSize}px "${fontFamily}"`;
21
+ // Use font family without quotes for better rendering (quotes can cause rendering issues)
22
+ fontString += `${effectiveFontSize}px ${fontFamily}`;
22
23
  ctx.font = fontString;
24
+ // Reset letter and word spacing to prevent stretched text
25
+ ctx.letterSpacing = '0px';
26
+ ctx.wordSpacing = '0px';
23
27
  // Restore text alignment to ensure correct positioning
24
28
  ctx.textAlign = savedTextAlign;
25
29
  ctx.textBaseline = savedTextBaseline;
@@ -30,7 +34,8 @@ async function renderEnhancedText(ctx, text, x, y, style, fontSize, color, textG
30
34
  const path = await import('path');
31
35
  const fullPath = path.join(process.cwd(), style.fontPath);
32
36
  GlobalFonts.registerFromPath(fullPath, style.fontName);
33
- ctx.font = fontString.replace(`"${fontFamily}"`, `"${style.fontName}"`);
37
+ // Replace font family in font string (handle both quoted and unquoted formats)
38
+ ctx.font = fontString.replace(fontFamily, style.fontName);
34
39
  }
35
40
  catch (error) {
36
41
  console.warn(`Failed to register font: ${style.fontPath}`, error);
@@ -107,9 +112,9 @@ function drawArrow(ctx, x, y, angle, size) {
107
112
  /**
108
113
  * Draws X-axis ticks and labels (horizontal axis - value axis)
109
114
  */
110
- function drawXAxisTicks(ctx, originX, originY, axisEndX, minValue, maxValue, step, tickFontSize, customValues, valueSpacing) {
115
+ function drawXAxisTicks(ctx, originX, originY, axisEndX, minValue, maxValue, step, tickFontSize, customValues, valueSpacing, tickColor = '#000000') {
111
116
  ctx.save();
112
- ctx.fillStyle = '#000000';
117
+ ctx.fillStyle = tickColor;
113
118
  ctx.font = `${tickFontSize}px Arial`;
114
119
  ctx.textAlign = 'center';
115
120
  ctx.textBaseline = 'top';
@@ -137,7 +142,10 @@ function drawXAxisTicks(ctx, originX, originY, axisEndX, minValue, maxValue, ste
137
142
  ctx.moveTo(x, originY);
138
143
  ctx.lineTo(x, originY + 5);
139
144
  ctx.stroke();
140
- ctx.fillText(labelText, x, originY + 10);
145
+ // Measure label to ensure it doesn't overflow, add minimum 2px spacing
146
+ const labelMetrics = ctx.measureText(labelText);
147
+ const labelY = originY + 10; // 10px spacing from axis line
148
+ ctx.fillText(labelText, x, labelY);
141
149
  lastLabelX = x; // Update last label center position
142
150
  });
143
151
  }
@@ -169,8 +177,9 @@ function drawXAxisTicks(ctx, originX, originY, axisEndX, minValue, maxValue, ste
169
177
  ctx.moveTo(x, originY);
170
178
  ctx.lineTo(x, originY + 5);
171
179
  ctx.stroke();
172
- // Draw label
173
- ctx.fillText(labelText, x, originY + 10);
180
+ // Draw label with minimum 2px spacing
181
+ const labelY = originY + 10; // 10px spacing from axis line
182
+ ctx.fillText(labelText, x, labelY);
174
183
  // Update last label position (center of the label)
175
184
  lastLabelX = x;
176
185
  }
@@ -180,9 +189,9 @@ function drawXAxisTicks(ctx, originX, originY, axisEndX, minValue, maxValue, ste
180
189
  /**
181
190
  * Draws Y-axis ticks and labels (vertical axis - category axis)
182
191
  */
183
- function drawYAxisTicks(ctx, originX, originY, axisEndY, minValue, maxValue, step, tickFontSize, customValues, valueSpacing) {
192
+ function drawYAxisTicks(ctx, originX, originY, axisEndY, minValue, maxValue, step, tickFontSize, customValues, valueSpacing, tickColor = '#000000') {
184
193
  ctx.save();
185
- ctx.fillStyle = '#000000';
194
+ ctx.fillStyle = tickColor;
186
195
  ctx.font = `${tickFontSize}px Arial`;
187
196
  ctx.textAlign = 'right';
188
197
  ctx.textBaseline = 'middle';
@@ -517,10 +526,22 @@ function calculateResponsiveHeight(dataLength, options = {}) {
517
526
  // Calculate minimum height needed: (number of bars * bar height) + (spacing between bars)
518
527
  // Each bar needs minBarHeight, and between each pair of bars we need barSpacing
519
528
  const chartAreaHeight = dataLength * minBarHeight + (dataLength - 1) * barSpacing;
520
- // Add title height if needed
521
- const titleHeight = options.labels?.title?.text ? (options.labels.title.fontSize ?? 24) + 30 : 0;
522
- const axisLabelHeight = ((options.axes?.x?.label || options.axes?.y?.label) ? (options.labels?.barLabelDefaults?.fontSize ?? 14) + 20 : 0);
523
- return paddingTop + titleHeight + chartAreaHeight + axisLabelHeight + paddingBottom;
529
+ // Add title height if needed (with margin below title)
530
+ const titleHeight = options.labels?.title?.text ? (options.labels.title.fontSize ?? 24) + 20 : 0;
531
+ const titleMargin = options.labels?.title?.text ? 20 : 0; // 20px gap between title and chart
532
+ // Calculate x-axis label area height (tick labels + gap + axis label)
533
+ const tickFontSize = options.axes?.x?.tickFontSize ?? options.axes?.y?.tickFontSize ?? 12;
534
+ const axisLabelFontSize = options.labels?.barLabelDefaults?.fontSize ?? 14;
535
+ let xAxisLabelAreaHeight = 0;
536
+ if (options.axes?.x?.label || options.axes?.x?.values || options.axes?.x?.range) {
537
+ const tickLabelHeight = tickFontSize + 10; // 10px spacing below tick labels
538
+ const xAxisLabelTextHeight = options.axes?.x?.label ? axisLabelFontSize + 2 : 0; // 2px minimum gap
539
+ xAxisLabelAreaHeight = tickLabelHeight + (options.axes?.x?.label ? 8 : 0) + xAxisLabelTextHeight; // 8px gap between tick labels and axis label
540
+ }
541
+ const yAxisLabelHeight = options.axes?.y?.label ? axisLabelFontSize + 20 : 0;
542
+ const axisLabelHeight = Math.max(xAxisLabelAreaHeight, yAxisLabelHeight);
543
+ const minBottomGap = 2; // Minimum 2px gap at bottom
544
+ return paddingTop + titleHeight + titleMargin + chartAreaHeight + axisLabelHeight + minBottomGap + paddingBottom;
524
545
  }
525
546
  /**
526
547
  * Creates a horizontal bar chart
@@ -557,6 +578,8 @@ async function createHorizontalBarChart(data, options = {}) {
557
578
  const baseline = options.axes?.x?.baseline ?? 0; // Custom baseline value (default: 0)
558
579
  const yAxisValues = options.axes?.y?.values;
559
580
  const tickFontSize = options.axes?.x?.tickFontSize ?? options.axes?.y?.tickFontSize ?? 12;
581
+ const xAxisTickColor = options.axes?.x?.tickColor ?? '#000000';
582
+ const yAxisTickColor = options.axes?.y?.tickColor ?? '#000000';
560
583
  const xAxisValueSpacing = options.axes?.x?.valueSpacing;
561
584
  const yAxisValueSpacing = options.axes?.y?.valueSpacing;
562
585
  // Legend
@@ -806,15 +829,31 @@ async function createHorizontalBarChart(data, options = {}) {
806
829
  });
807
830
  ctx.fillRect(0, 0, adjustedWidth, adjustedHeight);
808
831
  }
809
- // Calculate axis positions
810
- const titleHeight = chartTitle ? chartTitleFontSize + 30 : 0;
811
- const axisLabelHeight = (xAxisLabel || yAxisLabel) ? axisLabelFontSize + 20 : 0;
832
+ // Calculate axis positions with proper spacing
833
+ // Title height: fontSize + spacing below title (minimum 20px gap)
834
+ const titleHeight = chartTitle ? chartTitleFontSize + 20 : 0;
835
+ // Calculate actual height needed for x-axis labels (tick labels + axis label)
836
+ let xAxisLabelAreaHeight = 0;
837
+ if (xAxisLabel || (xAxisCustomValues && xAxisCustomValues.length > 0) || xAxisRange) {
838
+ // Measure tick label height (tickFontSize + spacing)
839
+ const tickLabelHeight = tickFontSize + 10; // 10px spacing below tick labels
840
+ // Measure x-axis label height if present
841
+ const xAxisLabelTextHeight = xAxisLabel ? axisLabelFontSize + 2 : 0; // 2px minimum gap
842
+ // Total height needed: tick labels + gap + axis label
843
+ xAxisLabelAreaHeight = tickLabelHeight + (xAxisLabel ? 8 : 0) + xAxisLabelTextHeight; // 8px gap between tick labels and axis label
844
+ }
845
+ // Y-axis label height (if present)
846
+ const yAxisLabelHeight = yAxisLabel ? axisLabelFontSize + 20 : 0;
847
+ const axisLabelHeight = Math.max(xAxisLabelAreaHeight, yAxisLabelHeight);
812
848
  // Adjust chart area based on legend position
813
849
  // Note: adjustedWidth and adjustedHeight are already calculated above (before canvas creation)
850
+ // Chart area should use the ORIGINAL width/height, not adjusted, so legend space is added to canvas, not taken from chart
814
851
  let chartAreaLeft = paddingLeft;
815
- let chartAreaRight = width - paddingRight;
816
- let chartAreaTop = paddingTop + titleHeight;
817
- let chartAreaBottom = adjustedHeight - paddingBottom;
852
+ let chartAreaRight = width - paddingRight; // Use original width - chart area stays the same size
853
+ // Add margin between title and chart area (minimum 2px)
854
+ const titleMargin = chartTitle ? 20 : 0; // 20px gap between title and chart
855
+ let chartAreaTop = paddingTop + titleHeight + titleMargin;
856
+ let chartAreaBottom = baseHeight - paddingBottom; // Use baseHeight, not adjustedHeight - chart area stays the same size
818
857
  if (showLegend && legend && legend.length > 0) {
819
858
  const legendSpacing = options.legend?.spacing ?? 20;
820
859
  if (legendPosition === 'left') {
@@ -847,26 +886,36 @@ async function createHorizontalBarChart(data, options = {}) {
847
886
  actualYAxisLabelWidth += 30;
848
887
  }
849
888
  }
850
- // Position chart area to leave room for legend + Y-axis labels
889
+ // For left position, we need to shift chart area to the right to make room for legend
890
+ // But the chart area width itself should remain the same (using original width)
851
891
  chartAreaLeft = paddingLeft + legendWidth + legendSpacing + actualYAxisLabelWidth;
852
- chartAreaRight = width - paddingRight;
892
+ chartAreaRight = width - paddingRight; // Keep using original width
853
893
  }
854
894
  else if (legendPosition === 'right') {
895
+ // For right position, chart area stays at original position and size
896
+ // Legend will be positioned to the right of chartAreaRight, in the extraWidth space
855
897
  chartAreaLeft = paddingLeft;
856
- chartAreaRight = width - paddingRight;
898
+ chartAreaRight = width - paddingRight; // Use original width - chart area doesn't shrink
857
899
  }
858
900
  else if (legendPosition === 'top') {
901
+ // For top position, shift chart area down but keep same height
859
902
  chartAreaTop = paddingTop + titleHeight + legendHeight + legendSpacing + minLegendSpacing;
860
- chartAreaBottom = adjustedHeight - paddingBottom;
903
+ chartAreaBottom = baseHeight - paddingBottom; // Use baseHeight, not adjustedHeight
861
904
  }
862
905
  else if (legendPosition === 'bottom') {
906
+ // For bottom position, chart area stays at original position
907
+ // Legend will be positioned below in the extraHeight space
863
908
  chartAreaTop = paddingTop + titleHeight;
864
- chartAreaBottom = adjustedHeight - paddingBottom;
909
+ chartAreaBottom = baseHeight - paddingBottom; // Use baseHeight, not adjustedHeight
865
910
  }
866
911
  }
867
912
  const originX = chartAreaLeft;
868
- // Use adjustedHeight for originY calculation to account for legend space
869
- const originY = adjustedHeight - paddingBottom - axisLabelHeight;
913
+ // Use baseHeight (not adjustedHeight) for originY calculation - chart area should be based on original dimensions
914
+ // The adjustedHeight is only for canvas size expansion, not chart area positioning
915
+ // This ensures the chart size stays constant and legend space is added to canvas, not taken from chart
916
+ // Ensure at least 2px gap at bottom for labels
917
+ const minBottomGap = 2;
918
+ const originY = baseHeight - paddingBottom - xAxisLabelAreaHeight - minBottomGap;
870
919
  const axisEndY = chartAreaTop;
871
920
  const axisEndX = chartAreaRight;
872
921
  // Draw chart title
@@ -909,9 +958,13 @@ async function createHorizontalBarChart(data, options = {}) {
909
958
  // Draw X-axis arrow
910
959
  drawArrow(ctx, axisEndX, originY, 0, arrowSize);
911
960
  // Draw X-axis ticks and labels at baseline position
912
- drawXAxisTicks(ctx, originX, originY, axisEndX, xMin, xMax, xStep, tickFontSize, xAxisCustomValues, xAxisValueSpacing);
913
- // Draw Y-axis ticks and labels (with values/range support)
914
- drawYAxisTicks(ctx, originX, originY, axisEndY, yMin, yMax, yStep, tickFontSize, yAxisCustomValues, yAxisValueSpacing);
961
+ drawXAxisTicks(ctx, originX, originY, axisEndX, xMin, xMax, xStep, tickFontSize, xAxisCustomValues, xAxisValueSpacing, xAxisTickColor);
962
+ // Draw Y-axis ticks and labels only if yAxisValues or yAxisRange is explicitly provided
963
+ // For horizontal bar charts, we typically only want bar labels, not numeric y-axis values
964
+ const shouldDrawYAxisTicks = (yAxisValues && yAxisValues.length > 0) || (options.axes?.y?.range && options.axes.y.range.min !== undefined && options.axes.y.range.max !== undefined);
965
+ if (shouldDrawYAxisTicks) {
966
+ drawYAxisTicks(ctx, originX, originY, axisEndY, yMin, yMax, yStep, tickFontSize, yAxisCustomValues, yAxisValueSpacing, yAxisTickColor);
967
+ }
915
968
  // Draw axis labels
916
969
  if (xAxisLabel) {
917
970
  ctx.save();
@@ -919,7 +972,11 @@ async function createHorizontalBarChart(data, options = {}) {
919
972
  ctx.font = `${axisLabelFontSize}px Arial`;
920
973
  ctx.textAlign = 'center';
921
974
  ctx.textBaseline = 'top';
922
- ctx.fillText(xAxisLabel, (originX + axisEndX) / 2, originY + 25);
975
+ // Position x-axis label with proper spacing: tick labels end at originY + tickFontSize + 10
976
+ // Add 8px gap between tick labels and axis label, then position axis label
977
+ const tickLabelBottom = originY + tickFontSize + 10;
978
+ const xAxisLabelY = tickLabelBottom + 8; // 8px gap between tick labels and axis label
979
+ ctx.fillText(xAxisLabel, (originX + axisEndX) / 2, xAxisLabelY);
923
980
  ctx.restore();
924
981
  }
925
982
  if (yAxisLabel) {
@@ -1003,28 +1060,35 @@ async function createHorizontalBarChart(data, options = {}) {
1003
1060
  const chartAreaHeight = originY - axisEndY;
1004
1061
  // Calculate bar dimensions to fit within Y-axis bounds (between axisEndY and originY)
1005
1062
  const calculatedBarSpacing = barSpacing ?? 15;
1006
- const totalSpacing = (data.length - 1) * calculatedBarSpacing;
1063
+ // Total spacing needed: spacing between bars (n-1) + initial spacing before first bar
1064
+ const totalSpacing = data.length * calculatedBarSpacing; // Include spacing before first bar
1007
1065
  const availableHeight = chartAreaHeight - totalSpacing;
1008
1066
  const calculatedBarHeight = Math.max(minBarHeight, availableHeight / data.length);
1067
+ // Verify all bars will fit
1068
+ const totalBarsHeight = data.length * calculatedBarHeight + totalSpacing;
1069
+ if (totalBarsHeight > chartAreaHeight) {
1070
+ // Adjust bar height if needed to fit all bars
1071
+ const adjustedBarHeight = Math.max(minBarHeight, (chartAreaHeight - totalSpacing) / data.length);
1072
+ if (adjustedBarHeight < calculatedBarHeight) {
1073
+ console.warn(`Bar height adjusted from ${calculatedBarHeight} to ${adjustedBarHeight} to fit all ${data.length} bars`);
1074
+ }
1075
+ }
1009
1076
  const labelsToDraw = [];
1010
1077
  // Track value label positions per bar (for adjusting bar label positions)
1011
1078
  const valueLabelPositions = new Map();
1012
1079
  // First pass: Draw all bars (no labels)
1013
1080
  data.forEach((item, index) => {
1014
1081
  // Calculate bar Y position - start from axisEndY (top) and space bars downward
1015
- // First bar starts after spacing, each subsequent bar: previous position + bar height + spacing
1016
- const barY = axisEndY + (index * (calculatedBarHeight + calculatedBarSpacing)) + calculatedBarSpacing;
1082
+ // First bar starts at axisEndY, each subsequent bar: previous position + bar height + spacing
1083
+ const barY = axisEndY + (index * (calculatedBarHeight + calculatedBarSpacing));
1017
1084
  const barCenterY = barY + calculatedBarHeight / 2;
1018
1085
  // Ensure bar stays within Y-axis bounds (between axisEndY and originY)
1019
1086
  if (barY + calculatedBarHeight > originY) {
1020
1087
  // Bar would exceed Y-axis bottom - skip it to prevent overflow
1088
+ // This should not happen if chartAreaHeight is calculated correctly, but check anyway
1089
+ console.warn(`Bar at index ${index} (${item.label}) would exceed chart bounds. Skipping.`);
1021
1090
  return;
1022
1091
  }
1023
- // Ensure bar doesn't exceed Y-axis bounds
1024
- if (barY + calculatedBarHeight > originY) {
1025
- // Adjust if bar would go below originY (Y-axis bottom)
1026
- return; // Skip this bar if it doesn't fit
1027
- }
1028
1092
  // Calculate bar position and dimensions for label positioning (used for all chart types)
1029
1093
  let barX, barEndX, barLength;
1030
1094
  // Handle grouped/stacked/lollipop vs standard charts
@@ -1346,12 +1410,14 @@ async function createHorizontalBarChart(data, options = {}) {
1346
1410
  textBaseline = 'middle';
1347
1411
  }
1348
1412
  // Calculate label color (for 'inside' position, check if bar is dark)
1349
- let labelColor = item.labelColor || '#000000';
1413
+ // Use item.labelColor if provided, otherwise fall back to barLabelDefaults.defaultColor
1414
+ const defaultBarLabelColor = options.labels?.barLabelDefaults?.defaultColor ?? '#000000';
1415
+ let labelColor = item.labelColor || defaultBarLabelColor;
1350
1416
  if (currentLabelPosition === 'inside') {
1351
1417
  const barColor = item.color || '#4A90E2';
1352
1418
  const isDark = barColor === '#000000' || barColor.toLowerCase().includes('dark') ||
1353
1419
  (barColor.startsWith('#') && parseInt(barColor.slice(1, 3), 16) < 128);
1354
- labelColor = isDark ? '#FFFFFF' : (item.labelColor || '#000000');
1420
+ labelColor = isDark ? '#FFFFFF' : (item.labelColor || defaultBarLabelColor);
1355
1421
  }
1356
1422
  labelsToDraw.push({
1357
1423
  type: 'bar',