@sme.up/doc-alchemist 1.7.0-SNAPSHOT-20251218155723 → 1.7.0-SNAPSHOT-20251223155346

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/converters/images/charts-converter.d.ts +1 -1
  2. package/dist/converters/images/charts-converter.js.map +1 -1
  3. package/dist/converters/images/charts-data-converter.d.ts +1 -1
  4. package/dist/converters/images/charts-data-converter.js +8 -8
  5. package/dist/converters/images/charts-data-converter.js.map +1 -1
  6. package/dist/converters/pdf/pdfmake/adapters/box/box-adapter.d.ts +28 -0
  7. package/dist/converters/pdf/pdfmake/adapters/box/box-adapter.js +164 -0
  8. package/dist/converters/pdf/pdfmake/adapters/box/box-adapter.js.map +1 -0
  9. package/dist/converters/pdf/pdfmake/adapters/box/box-layouts.d.ts +6 -0
  10. package/dist/converters/pdf/pdfmake/adapters/box/box-layouts.js +147 -0
  11. package/dist/converters/pdf/pdfmake/adapters/box/box-layouts.js.map +1 -0
  12. package/dist/converters/pdf/pdfmake/adapters/{chart-adapter.d.ts → chart/chart-adapter.d.ts} +1 -1
  13. package/dist/converters/pdf/pdfmake/adapters/{chart-adapter.js → chart/chart-adapter.js} +2 -2
  14. package/dist/converters/pdf/pdfmake/adapters/chart/chart-adapter.js.map +1 -0
  15. package/dist/converters/pdf/pdfmake/adapters/helpers.d.ts +3 -0
  16. package/dist/converters/pdf/pdfmake/adapters/helpers.js +18 -0
  17. package/dist/converters/pdf/pdfmake/adapters/helpers.js.map +1 -0
  18. package/dist/converters/pdf/pdfmake/adapters/{image-adapter.d.ts → image/image-adapter.d.ts} +1 -1
  19. package/dist/converters/pdf/pdfmake/adapters/image/image-adapter.js.map +1 -0
  20. package/dist/converters/pdf/pdfmake/adapters/{layout-adapter.d.ts → layout/layout-adapter.d.ts} +1 -1
  21. package/dist/converters/pdf/pdfmake/adapters/layout/layout-adapter.js.map +1 -0
  22. package/dist/converters/pdf/pdfmake/adapters/{page-element-adapter.d.ts → page-alement/page-element-adapter.d.ts} +1 -1
  23. package/dist/converters/pdf/pdfmake/adapters/{page-element-adapter.js → page-alement/page-element-adapter.js} +1 -1
  24. package/dist/converters/pdf/pdfmake/adapters/page-alement/page-element-adapter.js.map +1 -0
  25. package/dist/converters/pdf/pdfmake/adapters/{table-adapter.d.ts → table/table-adapter.d.ts} +1 -1
  26. package/dist/converters/pdf/pdfmake/adapters/{table-adapter.js → table/table-adapter.js} +16 -8
  27. package/dist/converters/pdf/pdfmake/adapters/table/table-adapter.js.map +1 -0
  28. package/dist/converters/pdf/pdfmake/pdfmake.types.d.ts +2 -3
  29. package/dist/converters/pdf/pdfmake/pdfmake.types.js.map +1 -1
  30. package/dist/converters/pdf-converter.js +7 -5
  31. package/dist/converters/pdf-converter.js.map +1 -1
  32. package/dist/index.d.ts +2 -2
  33. package/dist/index.js +2 -2
  34. package/dist/index.js.map +1 -1
  35. package/dist/types/component.d.ts +34 -0
  36. package/dist/types/component.js +8 -1
  37. package/dist/types/component.js.map +1 -1
  38. package/dist/utils/cells-utility.d.ts +2 -0
  39. package/dist/utils/cells-utility.js +10 -0
  40. package/dist/utils/cells-utility.js.map +1 -0
  41. package/dist/utils/filters-utility.js +0 -1
  42. package/dist/utils/filters-utility.js.map +1 -1
  43. package/dist/utils/objects-utility.d.ts +1 -0
  44. package/dist/utils/objects-utility.js +7 -1
  45. package/dist/utils/objects-utility.js.map +1 -1
  46. package/package.json +1 -1
  47. package/dist/converters/images/charts-converter-types.d.ts +0 -15
  48. package/dist/converters/images/charts-converter-types.js +0 -11
  49. package/dist/converters/images/charts-converter-types.js.map +0 -1
  50. package/dist/converters/pdf/pdfmake/adapters/chart-adapter.js.map +0 -1
  51. package/dist/converters/pdf/pdfmake/adapters/image-adapter.js.map +0 -1
  52. package/dist/converters/pdf/pdfmake/adapters/layout-adapter.js.map +0 -1
  53. package/dist/converters/pdf/pdfmake/adapters/page-element-adapter.js.map +0 -1
  54. package/dist/converters/pdf/pdfmake/adapters/table-adapter.js.map +0 -1
  55. /package/dist/converters/pdf/pdfmake/adapters/{image-adapter.js → image/image-adapter.js} +0 -0
  56. /package/dist/converters/pdf/pdfmake/adapters/{layout-adapter.js → layout/layout-adapter.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-adapter.js","sourceRoot":"","sources":["../../../../../../src/converters/pdf/pdfmake/adapters/image/image-adapter.ts"],"names":[],"mappings":";;;AAOA,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAW,EAAE;IAChD,MAAM,KAAK,GAAI,OAAmC;SAC/C,KAA8B,CAAC;IAClC,MAAM,GAAG,GAAG,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;IAC9B,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,SAAS,cAAc,CAAC,OAAgB;IACtC,MAAM,KAAK,GAAI,OAAmC;SAC/C,KAA8B,CAAC;IAClC,MAAM,GAAG,GAAG,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;IAC9B,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC;AACjD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,sBAAsB,GAAG,KAAK,EAClC,GAAW,EACX,SAA6C,EAC5B,EAAE;IACnB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,iCAAiC,GAAG,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAClF,CAAC;IACJ,CAAC;IAED,oCAAoC;IACpC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,YAAY,CAAC;IAEzE,yCAAyC;IACzC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,yDAAyD,WAAW,EAAE,CACvE,CAAC;IACJ,CAAC;IAED,uCAAuC;IACvC,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE3D,OAAO,QAAQ,WAAW,WAAW,MAAM,EAAE,CAAC;AAChD,CAAC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACI,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,OAAO,KAAK,EACV,OAAgB,EAChB,OAAgC,EACA,EAAE;QAClC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,OAAgC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,OAAgD,CAAC;QACtE,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QAEzC,uCAAuC;QACvC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;QACJ,CAAC;QAED,8CAA8C;QAC9C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAChC,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC;QAClC,CAAC;QAED,2DAA2D;QAC3D,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACrE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QAC5C,CAAC;QAED,8DAA8D;QAC9D,6DAA6D;QAC7D,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;QAEnD,OAAO;YACL,GAAG,YAAY;YACf,KAAK,EAAE,GAAG;YACV,GAAG,SAAS;SACb,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AA9CW,QAAA,iBAAiB,qBA8C5B;AAEK,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,OAAO,KAAK,EACV,OAAgB,EAChB,OAAgC,EACI,EAAE;QACtC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO,OAAoC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,qBAAqB,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAC9D,MAAM,IAAI,KAAK,CACb,0HAA0H,CAC3H,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,OAAoC,CAAC;YAC1D,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;YAC1C,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;YACJ,CAAC;YACD,MAAM,YAAY,GAAG,+BAA+B,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;YAC/E,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,qBAAqB,CACnD,YAAY,CACb,CAAkB,CAAC;YACpB,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAChE,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBACjD,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,GAAG,GAAG,GAAG,WAAW,CAAC;gBAEvD,8DAA8D;gBAC9D,6DAA6D;gBAC7D,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;gBAEnD,OAAO;oBACL,GAAG,YAAY;oBACf,KAAK,EAAE;wBACL,KAAK,EAAE;4BACL,GAAG;yBACJ;wBACD,GAAG,SAAS;qBACb;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AA/CW,QAAA,kBAAkB,sBA+C7B;AAEK,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,OAAO,KAAK,EACV,OAAgB,EAChB,OAAgC,EACA,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,IAAA,0BAAkB,GAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACpE,OAAO,MAAM,IAAA,yBAAiB,GAAE,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,MAAM,YAAY,GAAI,KAAe,CAAC,OAAO,CAAC;YAC9C,MAAM,KAAK,GAAI,KAAmC,CAAC,KAAK,CAAC;YACzD,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,OAAO;gBACL,IAAI,EAAE,wBAAwB,YAAY,GAAG,YAAY,EAAE;gBAC3D,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,SAAS;aACmB,CAAC;QACxC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AApBW,QAAA,YAAY,gBAoBvB","sourcesContent":["import { SmeupDataTree } from \"../../../../../types/data-structures/smeupDataTree\";\nimport {\n ContentImageExtension,\n ElementWithImageExtension,\n PdfMakeConverterContext,\n} from \"../../pdfmake.types\";\n\nconst hasSmeupUrl = (element: unknown): boolean => {\n const image = (element as Record<string, unknown>)\n .image as ContentImageExtension;\n const url = image?.smeup?.url;\n return typeof url === \"string\" && url.length > 0;\n};\n\nfunction hasSmeupObject(element: unknown): boolean {\n const image = (element as Record<string, unknown>)\n .image as ContentImageExtension;\n const obj = image?.smeup?.obj;\n return typeof obj === \"object\" && obj !== null;\n}\n\n/**\n * Downloads an image from a URL and converts it to a data URL format.\n * Validates that the content-type is an image MIME type.\n *\n * @param url - The URL of the image to download\n * @param fetchData - Callback function to fetch the image data\n * @returns A data URL string in the format: data:image/jpeg;base64,<base64>\n * @throws If the download fails, content-type is not an image, or network error occurs\n */\nconst downloadImageAsDataUrl = async (\n url: string,\n fetchData: (url: string) => Promise<Response>,\n): Promise<string> => {\n const response = await fetchData(url);\n\n if (!response.ok) {\n throw new Error(\n `Failed to download image from ${url}: ${response.status} ${response.statusText}`,\n );\n }\n\n // Extract content-type from headers\n const contentType = response.headers.get(\"content-type\") || \"image/jpeg\";\n\n // Validate that content-type is an image\n if (!contentType.startsWith(\"image/\")) {\n throw new Error(\n `Invalid content-type for image: expected image/*, got ${contentType}`,\n );\n }\n\n // Get image data and convert to base64\n const arrayBuffer = await response.arrayBuffer();\n const base64 = Buffer.from(arrayBuffer).toString(\"base64\");\n\n return `data:${contentType};base64,${base64}`;\n};\n\n/**\n * Adapts a Smeup image structure to the PDFMake image format.\n *\n * This adapter function checks if the provided element contains an image with a smeup URL.\n * If so, it downloads the image using the fetchData callback from context, validates the\n * content-type, and transforms it into a data URL format that PDFMake can use.\n * The data URL is stored in context.pdfDocument.images to avoid redundancy when the same\n * image is referenced multiple times.\n * All properties of the original image except `smeup` are preserved.\n *\n * @returns An async function that takes an element and returns the adapted element for PDFMake,\n * or the original element if it does not contain a valid smeup image.\n * @throws If the context does not provide a fetchData function when the smeup image is used.\n * @throws If the image download fails or the content-type is not a valid image MIME type.\n */\nexport const urlToImageAdapter = () => {\n return async (\n element: unknown,\n context: PdfMakeConverterContext,\n ): Promise<ContentImageExtension> => {\n if (!hasSmeupUrl(element)) {\n return element as ContentImageExtension;\n }\n\n if (!context.fetchData) {\n throw new Error(\n \"fetchData function is required in context when the smeup image property is used\",\n );\n }\n\n const elementImage = element as { image: { smeup: { url: string } } };\n const url = elementImage.image.smeup.url;\n\n // Ensure pdfDocument exists in context\n if (!context.pdfDocument) {\n throw new Error(\n \"pdfDocument is required in context when the smeup image property is used\",\n );\n }\n\n // Initialize images dictionary if not present\n if (!context.pdfDocument.images) {\n context.pdfDocument.images = {};\n }\n\n // Download and cache the image only if not already present\n if (!context.pdfDocument.images[url]) {\n const dataUrl = await downloadImageAsDataUrl(url, context.fetchData);\n context.pdfDocument.images[url] = dataUrl;\n }\n\n // Extract all properties except 'smeup' from the image object\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { smeup, ...imageRest } = elementImage.image;\n\n return {\n ...elementImage,\n image: url,\n ...imageRest,\n };\n };\n};\n\nexport const objectToUrlAdapter = () => {\n return async (\n element: unknown,\n context: PdfMakeConverterContext,\n ): Promise<ElementWithImageExtension> => {\n if (!hasSmeupObject(element)) {\n return element as ElementWithImageExtension;\n }\n if (!context.getSmeupDataStructure || !context.damSvcEndpoint) {\n throw new Error(\n \"getSmeupDataStructure function and damSvcEndpoint prop are required in context when the smeup image obj property is used\",\n );\n } else {\n const elementImage = element as ElementWithImageExtension;\n const obj = elementImage.image.smeup?.obj;\n if (!obj || !obj.t || !obj.p || !obj.k) {\n throw new Error(\n \"Smeup object must have t, p, and k properties to build GET.PATH function\",\n );\n }\n const funToGetPATH = `F(TRE;JASER_12W;GET.PATH) 1(${obj.t};${obj.p};${obj.k})`;\n const dataTree = (await context.getSmeupDataStructure(\n funToGetPATH,\n )) as SmeupDataTree;\n if (dataTree.children?.length === 0) {\n throw new Error(`No data found for function ${funToGetPATH}`);\n } else {\n const pathNode = dataTree.children[0].value.replace(/\\\\/g, \"/\");\n const pathEncoded = encodeURIComponent(pathNode);\n const url = context.damSvcEndpoint + \"/\" + pathEncoded;\n\n // Extract all properties except 'smeup' from the image object\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { smeup, ...imageRest } = elementImage.image;\n\n return {\n ...elementImage,\n image: {\n smeup: {\n url,\n },\n ...imageRest,\n },\n };\n }\n }\n };\n};\n\nexport const imageAdapter = () => {\n return async (\n element: unknown,\n context: PdfMakeConverterContext,\n ): Promise<ContentImageExtension> => {\n try {\n const adaptedElement = await objectToUrlAdapter()(element, context);\n return await urlToImageAdapter()(adaptedElement, context);\n } catch (error) {\n console.error(error);\n const errorMessage = (error as Error).message;\n const cause = (error as Error & { cause?: Error }).cause;\n const causeMessage = cause ? `\\nCause: ${cause.message || cause}` : \"\";\n return {\n text: `Error loading image: ${errorMessage}${causeMessage}`,\n fontSize: 10,\n color: \"#8B0000\",\n } as unknown as ContentImageExtension;\n }\n };\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { ElementWithLayout, PdfMakeConverterContext } from "../pdfmake.types";
1
+ import { ElementWithLayout, PdfMakeConverterContext } from "../../pdfmake.types";
2
2
  /**
3
3
  * Adapts a layout object by converting static values to functions.
4
4
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-adapter.js","sourceRoot":"","sources":["../../../../../../src/converters/pdf/pdfmake/adapters/layout/layout-adapter.ts"],"names":[],"mappings":";;;AAQA,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAW,EAAE;IAC9C,MAAM,MAAM,GAAI,OAAmC,CAAC,MAAM,CAAC;IAC3D,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC;AACvD,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,OAAgB,EAAW,EAAE;IAC1D,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAI,OAA6B,CAAC,MAAO,CAAC;IAEtD,kDAAkD;IAClD,MAAM,yBAAyB,GAC7B,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC;IAC7E,MAAM,yBAAyB,GAC7B,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC;IAC7E,MAAM,yBAAyB,GAC7B,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC;IAC7E,MAAM,yBAAyB,GAC7B,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC;IAE7E,OAAO,CACL,yBAAyB;QACzB,yBAAyB;QACzB,yBAAyB;QACzB,yBAAyB,CAC1B,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACI,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,OAAO,KAAK,EACV,OAAgB,EAChB,QAAiC,EACL,EAAE;QAC9B,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,OAA4B,CAAC;QACtC,CAAC;QAED,MAAM,iBAAiB,GAAG,OAA4B,CAAC;QACvD,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAO,CAAC;QACjD,MAAM,aAAa,GAAW,EAAE,GAAG,cAAc,EAAE,CAAC;QAEpD,sCAAsC;QACtC,IACE,cAAc,CAAC,UAAU,KAAK,SAAS;YACvC,OAAO,cAAc,CAAC,UAAU,KAAK,QAAQ,EAC7C,CAAC;YACD,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC;YACxC,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,KAAK,CAAuB,CAAC;QAC3E,CAAC;QAED,sCAAsC;QACtC,IACE,cAAc,CAAC,UAAU,KAAK,SAAS;YACvC,OAAO,cAAc,CAAC,UAAU,KAAK,QAAQ,EAC7C,CAAC;YACD,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC;YACxC,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,KAAK,CAAuB,CAAC;QAC3E,CAAC;QAED,sCAAsC;QACtC,IACE,cAAc,CAAC,UAAU,KAAK,SAAS;YACvC,OAAO,cAAc,CAAC,UAAU,KAAK,QAAQ,EAC7C,CAAC;YACD,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC;YACxC,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,KAAK,CAAwB,CAAC;QAC5E,CAAC;QAED,sCAAsC;QACtC,IACE,cAAc,CAAC,UAAU,KAAK,SAAS;YACvC,OAAO,cAAc,CAAC,UAAU,KAAK,QAAQ,EAC7C,CAAC;YACD,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC;YACxC,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,KAAK,CAAwB,CAAC;QAC5E,CAAC;QAED,OAAO;YACL,GAAG,iBAAiB;YACpB,MAAM,EAAE,aAAa;SACtB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAtDW,QAAA,aAAa,iBAsDxB","sourcesContent":["import {\n ElementWithLayout,\n Layout,\n LayoutColorFunction,\n LayoutLineFunction,\n PdfMakeConverterContext,\n} from \"../../pdfmake.types\";\n\nconst hasLayout = (element: unknown): boolean => {\n const layout = (element as Record<string, unknown>).layout;\n return typeof layout === \"object\" && layout !== null;\n};\n\nconst needsLayoutAdaptation = (element: unknown): boolean => {\n if (!hasLayout(element)) {\n return false;\n }\n\n const layout = (element as ElementWithLayout).layout!;\n\n // Check if any of the properties needs conversion\n const needsHLineWidthConversion =\n layout.hLineWidth !== undefined && typeof layout.hLineWidth !== \"function\";\n const needsVLineWidthConversion =\n layout.vLineWidth !== undefined && typeof layout.vLineWidth !== \"function\";\n const needsHLineColorConversion =\n layout.hLineColor !== undefined && typeof layout.hLineColor !== \"function\";\n const needsVLineColorConversion =\n layout.vLineColor !== undefined && typeof layout.vLineColor !== \"function\";\n\n return (\n needsHLineWidthConversion ||\n needsVLineWidthConversion ||\n needsHLineColorConversion ||\n needsVLineColorConversion\n );\n};\n\n/**\n * Adapts a layout object by converting static values to functions.\n *\n * This adapter function checks if the provided element contains a layout with static values\n * for hLineWidth, vLineWidth, hLineColor, and vLineColor properties.\n * If so, it converts them to functions as required by PDFMake:\n * - hLineWidth and vLineWidth (numbers) are converted to: function(i) { return value; }\n * - hLineColor and vLineColor (strings) are converted to: function(i) { return value; }\n *\n * All other properties of the layout are preserved.\n *\n * @returns A function that takes an element and returns the adapted element for PDFMake,\n * or the original element if it does not contain a layout that needs adaptation.\n */\nexport const layoutAdapter = () => {\n return async (\n element: unknown,\n _context: PdfMakeConverterContext,\n ): Promise<ElementWithLayout> => {\n if (!needsLayoutAdaptation(element)) {\n return element as ElementWithLayout;\n }\n\n const elementWithLayout = element as ElementWithLayout;\n const originalLayout = elementWithLayout.layout!;\n const adaptedLayout: Layout = { ...originalLayout };\n\n // Convert hLineWidth if it's a number\n if (\n originalLayout.hLineWidth !== undefined &&\n typeof originalLayout.hLineWidth === \"number\"\n ) {\n const value = originalLayout.hLineWidth;\n adaptedLayout.hLineWidth = ((_i: number) => value) as LayoutLineFunction;\n }\n\n // Convert vLineWidth if it's a number\n if (\n originalLayout.vLineWidth !== undefined &&\n typeof originalLayout.vLineWidth === \"number\"\n ) {\n const value = originalLayout.vLineWidth;\n adaptedLayout.vLineWidth = ((_i: number) => value) as LayoutLineFunction;\n }\n\n // Convert hLineColor if it's a string\n if (\n originalLayout.hLineColor !== undefined &&\n typeof originalLayout.hLineColor === \"string\"\n ) {\n const value = originalLayout.hLineColor;\n adaptedLayout.hLineColor = ((_i: number) => value) as LayoutColorFunction;\n }\n\n // Convert vLineColor if it's a string\n if (\n originalLayout.vLineColor !== undefined &&\n typeof originalLayout.vLineColor === \"string\"\n ) {\n const value = originalLayout.vLineColor;\n adaptedLayout.vLineColor = ((_i: number) => value) as LayoutColorFunction;\n }\n\n return {\n ...elementWithLayout,\n layout: adaptedLayout,\n };\n };\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { PdfMakeConverterContext } from "../pdfmake.types";
1
+ import { PdfMakeConverterContext } from "../../pdfmake.types";
2
2
  /**
3
3
  * Adapter for header elements with page number placeholder support.
4
4
  */
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.footerAdapter = exports.headerAdapter = void 0;
4
- const adapter_processor_1 = require("../adapter-processor");
4
+ const adapter_processor_1 = require("../../adapter-processor");
5
5
  /**
6
6
  * Type guard to check if an element has a specific property
7
7
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-element-adapter.js","sourceRoot":"","sources":["../../../../../../src/converters/pdf/pdfmake/adapters/page-alement/page-element-adapter.ts"],"names":[],"mappings":";;;AACA,+DAA0D;AAG1D;;GAEG;AACH,MAAM,WAAW,GAAG,CAClB,OAAgB,EAChB,YAAe,EACiC,EAAE;IAClD,OAAO,CACL,OAAO,KAAK,IAAI;QAChB,OAAO,OAAO,KAAK,QAAQ;QAC3B,YAAY,IAAI,OAAO;QACtB,OAAmC,CAAC,YAAY,CAAC,KAAK,SAAS,CACjE,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,mBAAmB,GAAG,CAC1B,GAAY,EACZ,WAAmB,EACnB,SAAiB,EACR,EAAE;IACX,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG;aACP,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;aAChD,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,wBAAwB,GAAG,CAAC,YAAiC,EAAE,EAAE;IACrE,OAAO,KAAK,EACV,OAAgB,EAChB,OAAgC,EACd,EAAE;QACpB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC;YACxC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAE5C,oDAAoD;QACpD,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE,CAAC;YACxC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,yEAAyE;QACzE,mFAAmF;QACnF,IAAI,cAAc,GAAY,aAAa,CAAC;QAC5C,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,cAAc,GAAG,MAAM,IAAA,mCAAe,EACpC,aAAa,EACb,OAAO,CAAC,SAAS,EACjB,OAAO,CACR,CAAC;QACJ,CAAC;QAED,0FAA0F;QAC1F,MAAM,cAAc,GAAmB,CACrC,WAAW,EACX,SAAS,EACT,SAAS,EACT,EAAE;YACF,OAAO,mBAAmB,CACxB,cAAc,EACd,WAAW,EACX,SAAS,CACC,CAAC;QACf,CAAC,CAAC;QAEF,OAAO;YACL,GAAG,OAAO;YACV,CAAC,YAAY,CAAC,EAAE,cAAc;SAC/B,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACI,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AAAzD,QAAA,aAAa,iBAA4C;AAEtE;;GAEG;AACI,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AAAzD,QAAA,aAAa,iBAA4C","sourcesContent":["import { Content, DynamicContent } from \"pdfmake/interfaces\";\nimport { processDocument } from \"../../adapter-processor\";\nimport { PdfMakeConverterContext } from \"../../pdfmake.types\";\n\n/**\n * Type guard to check if an element has a specific property\n */\nconst hasProperty = <T extends string>(\n element: unknown,\n propertyName: T,\n): element is Record<T, Content | DynamicContent> => {\n return (\n element !== null &&\n typeof element === \"object\" &&\n propertyName in element &&\n (element as Record<string, unknown>)[propertyName] !== undefined\n );\n};\n\n/**\n * Recursively searches for [CurrentPage] and [PageCount] placeholders in an object\n * and replaces them with the actual values.\n *\n * @param obj - The object to process\n * @param currentPage - The current page number\n * @param pageCount - The total page count\n * @returns The processed object with replaced placeholders\n */\nconst replacePlaceholders = (\n obj: unknown,\n currentPage: number,\n pageCount: number,\n): unknown => {\n if (typeof obj === \"string\") {\n return obj\n .replace(/\\[CurrentPage\\]/g, String(currentPage))\n .replace(/\\[PageCount\\]/g, String(pageCount));\n }\n\n if (Array.isArray(obj)) {\n return obj.map(item => replacePlaceholders(item, currentPage, pageCount));\n }\n\n if (obj !== null && typeof obj === \"object\") {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n result[key] = replacePlaceholders(value, currentPage, pageCount);\n }\n return result;\n }\n\n return obj;\n};\n\n/**\n * Adapts a header or footer to support dynamic page number placeholders.\n *\n * This adapter function checks if the provided element contains the specified property (header or footer).\n * - If the property is already a function, it leaves it unchanged.\n * - If the property is an object, it first recursively processes it with all registered adapters,\n * then wraps it in a function that replaces [CurrentPage] with the current page number and\n * [PageCount] with the total page count at rendering time.\n *\n * @param propertyName - The name of the property to adapt ('header' or 'footer')\n * @returns A function that takes an element and returns the adapted element for PDFMake,\n * or the original element if it does not contain the specified property.\n */\nconst createPageElementAdapter = (propertyName: \"header\" | \"footer\") => {\n return async (\n element: unknown,\n context: PdfMakeConverterContext,\n ): Promise<unknown> => {\n if (!hasProperty(element, propertyName)) {\n return element;\n }\n\n const propertyValue = element[propertyName];\n\n // If property is already a function, leave it as is\n if (typeof propertyValue === \"function\") {\n return element;\n }\n\n // First, recursively process the header/footer content with all adapters\n // This ensures nested elements (like tables with layouts) are properly transformed\n let processedValue: unknown = propertyValue;\n if (context._adapters) {\n processedValue = await processDocument(\n propertyValue,\n context._adapters,\n context,\n );\n }\n\n // Then wrap the processed content in a function that replaces placeholders at render time\n const dynamicContent: DynamicContent = (\n currentPage,\n pageCount,\n _pageSize,\n ) => {\n return replacePlaceholders(\n processedValue,\n currentPage,\n pageCount,\n ) as Content;\n };\n\n return {\n ...element,\n [propertyName]: dynamicContent,\n };\n };\n};\n\n/**\n * Adapter for header elements with page number placeholder support.\n */\nexport const headerAdapter = () => createPageElementAdapter(\"header\");\n\n/**\n * Adapter for footer elements with page number placeholder support.\n */\nexport const footerAdapter = () => createPageElementAdapter(\"footer\");\n"]}
@@ -1,4 +1,4 @@
1
- import { ElementWithTableExtension, PdfMakeConverterContext } from "../pdfmake.types";
1
+ import { ElementWithTableExtension, PdfMakeConverterContext } from "../../pdfmake.types";
2
2
  /**
3
3
  * Adapts a Smeup table structure to the PDFMake table format.
4
4
  *
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.dataTableAdapter = exports.funToSmeupTableAdapter = exports.smeupTableToPdfMakeTableAdapter = void 0;
4
- const types_1 = require("../../../../types");
5
- const smeupDataStructure_1 = require("../../../../types/data-structures/smeupDataStructure");
6
- const commons_utility_1 = require("../../../../utils/commons-utility");
4
+ const types_1 = require("../../../../../types");
5
+ const smeupDataStructure_1 = require("../../../../../types/data-structures/smeupDataStructure");
6
+ const commons_utility_1 = require("../../../../../utils/commons-utility");
7
+ const cells_utility_1 = require("../../../../../utils/cells-utility");
8
+ const helpers_1 = require("../helpers");
7
9
  const hasTableWithDataTable = (element) => {
8
10
  const table = element?.table;
9
11
  const data = table?.smeup?.data;
@@ -38,11 +40,17 @@ const smeupTableToPdfMakeTableAdapter = () => {
38
40
  // Build data rows by extracting values in column order
39
41
  const dataRows = rows.map(row => columns.map(col => {
40
42
  const cell = row.cells?.[col.name];
41
- const value = (0, commons_utility_1.calculateCellValue)(cell, types_1.SupportedExportFormats.PDF, context.webupManagerData);
42
- return {
43
- text: value != null ? String(value) : "",
44
- alignment: col.obj?.t === "NR" ? "right" : "left",
45
- };
43
+ const options = element.table.smeup?.options || {};
44
+ if ((0, cells_utility_1.cellIsImage)(cell)) {
45
+ return (0, helpers_1.buildImageCell)(cell, options, 1);
46
+ }
47
+ else {
48
+ const value = (0, commons_utility_1.calculateCellValue)(cell, types_1.SupportedExportFormats.PDF, context.webupManagerData);
49
+ return {
50
+ text: value != null ? String(value) : "",
51
+ alignment: col.obj?.t === "NR" ? "right" : "left",
52
+ };
53
+ }
46
54
  }));
47
55
  // Combine header and data rows
48
56
  const body = [headerRow, ...dataRows];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-adapter.js","sourceRoot":"","sources":["../../../../../../src/converters/pdf/pdfmake/adapters/table/table-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { TableCell } from \"pdfmake/interfaces\";\nimport { SupportedExportFormats } from \"../../../../../types\";\nimport { SmeupDataStructureType } from \"../../../../../types/data-structures/smeupDataStructure\";\nimport {\n SmeupDataCell,\n SmeupDataTable,\n} from \"../../../../../types/data-structures/smeupDataTable\";\nimport { calculateCellValue } from \"../../../../../utils/commons-utility\";\nimport {\n ElementWithTableExtension,\n PdfMakeConverterContext,\n TableExtension,\n} from \"../../pdfmake.types\";\nimport { cellIsImage } from \"../../../../../utils/cells-utility\";\nimport { TableOptions } from \"../../../../../types/component\";\nimport { buildImageCell } from \"../helpers\";\n\nconst hasTableWithDataTable = (\n element: unknown,\n): element is ElementWithTableExtension => {\n const table = (element as Record<string, unknown>)?.table as TableExtension;\n const data = table?.smeup?.data;\n return (\n data?.type === SmeupDataStructureType.SmeupDataTable &&\n Array.isArray(data?.rows) &&\n Array.isArray(data?.columns)\n );\n};\n\nconst hasTableWithFun = (\n element: unknown,\n): element is ElementWithTableExtension => {\n const table = (element as Record<string, unknown>)?.table as TableExtension;\n const fun = table?.smeup?.fun;\n return typeof fun === \"string\" && fun.length > 0;\n};\n\n/**\n * Adapts a Smeup table structure to the PDFMake table format.\n *\n * This adapter function checks if the provided element contains a table with data.\n * If so, it transforms the table's columns and rows into the PDFMake `body` format,\n * where the first row is the header (column titles) and subsequent rows are the data.\n * All properties of the original table except `data` are preserved.\n *\n * @returns A function that takes an element and returns the adapted element for PDFMake,\n * or the original element if it does not contain a valid table with data.\n */\nexport const smeupTableToPdfMakeTableAdapter = () => {\n return (\n element: unknown,\n context: PdfMakeConverterContext,\n ): ElementWithTableExtension => {\n if (!hasTableWithDataTable(element)) {\n return element as ElementWithTableExtension;\n }\n\n const { columns, rows } = element.table.smeup!.data!;\n\n // Build header row from column titles\n const headerRow = columns.map(col => col.title);\n\n // Build data rows by extracting values in column order\n const dataRows = rows.map(row =>\n columns.map(col => {\n const cell = row.cells?.[col.name] as SmeupDataCell;\n const options: TableOptions = element.table.smeup?.options || {};\n if (cellIsImage(cell)) {\n return buildImageCell(cell, options, 1);\n } else {\n const value = calculateCellValue(\n cell,\n SupportedExportFormats.PDF,\n context.webupManagerData,\n );\n return {\n text: value != null ? String(value) : \"\",\n alignment: col.obj?.t === \"NR\" ? \"right\" : \"left\",\n };\n }\n }),\n );\n\n // Combine header and data rows\n const body = [headerRow, ...dataRows] as TableCell[][];\n\n // Extract all properties except 'data' from the smeup object\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { data, ...smeupRest } = element.table.smeup!;\n // Extract all properties except 'smeup' from the table object\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { smeup, ...tableRest } = element.table;\n\n return {\n ...element,\n table: {\n ...tableRest,\n smeup: {\n ...smeupRest,\n },\n body,\n },\n };\n };\n};\n\n/**\n * Adapter function for converting a table element with a `fun` property to a Smeup table structure.\n *\n * This function returns an asynchronous converter that checks if the provided element contains\n * a table with a `fun` property. If present, it uses the `getSmeupDataStructure` function from\n * the context to fetch the table data corresponding to the `fun` string, and replaces the original\n * table's `fun` property with the fetched data under the `data` property. All other properties\n * of the table are preserved.\n *\n * @returns An asynchronous function that takes an element and a context, and returns the adapted element.\n *\n * @throws If the context does not provide a `getSmeupDataStructure` function when the `fun` property is used.\n *\n * @param element - The input element to be adapted.\n * @param context - The conversion context, which must provide `getSmeupDataStructure` if the `fun` property is present.\n */\nexport const funToSmeupTableAdapter = () => {\n return async (\n element: unknown,\n context: PdfMakeConverterContext,\n ): Promise<ElementWithTableExtension> => {\n if (!hasTableWithFun(element)) {\n return element as ElementWithTableExtension;\n } else {\n if (!context.getSmeupDataStructure) {\n throw new Error(\n \"getSmeupDataStructure function is required in context when the fun property is used\",\n );\n } else {\n const elementWithTable = element as ElementWithTableExtension;\n const funStr = elementWithTable.table.smeup!.fun!;\n const dataTable = (await context.getSmeupDataStructure(\n funStr,\n )) as SmeupDataTable;\n // Extract all properties except 'fun' from the smeup object\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { fun, ...smeupRest } = elementWithTable.table.smeup!;\n // Extract all properties except 'smeup' from the table object\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { smeup, ...tableRest } = elementWithTable.table;\n\n return {\n ...elementWithTable,\n table: {\n ...tableRest,\n body: tableRest.body,\n smeup: {\n ...smeupRest,\n data: dataTable,\n },\n },\n };\n }\n }\n };\n};\n\nexport const dataTableAdapter = () => {\n return async (\n element: unknown,\n context: PdfMakeConverterContext,\n ): Promise<ElementWithTableExtension> => {\n const adaptedElement = await funToSmeupTableAdapter()(element, context);\n return (await smeupTableToPdfMakeTableAdapter()(\n adaptedElement,\n context,\n )) as ElementWithTableExtension;\n };\n};\n"]}
@@ -40,11 +40,11 @@ export declare class AdapterError extends Error {
40
40
  element: unknown;
41
41
  constructor(message: string, element: unknown);
42
42
  }
43
- interface SmeupExtensionImageMetadata {
43
+ export interface SmeupExtensionImageMetadata {
44
44
  url?: string;
45
45
  obj?: SmeupDataObj;
46
46
  }
47
- interface SmeupExtensionTableMetadata<T = ComponentOptions> {
47
+ export interface SmeupExtensionTableMetadata<T = ComponentOptions> {
48
48
  fun?: string;
49
49
  data?: SmeupDataTable;
50
50
  options?: T;
@@ -83,4 +83,3 @@ export interface ContentChartExtension extends ContentSvg {
83
83
  export interface ElementWithChartExtension {
84
84
  chart: ContentChartExtension;
85
85
  }
86
- export {};
@@ -1 +1 @@
1
- {"version":3,"file":"pdfmake.types.js","sourceRoot":"","sources":["../../../../src/converters/pdf/pdfmake/pdfmake.types.ts"],"names":[],"mappings":";;;AAuDA,MAAa,YAAa,SAAQ,KAAK;IACrC,OAAO,CAAU;IACjB,YAAY,OAAe,EAAE,OAAgB;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;CACF;AAPD,oCAOC","sourcesContent":["import {\n ContentImage,\n Table,\n TDocumentDefinitions,\n ContentSvg,\n} from \"pdfmake/interfaces\";\nimport { SmeupDataObj, WebupManagerData } from \"../../../types\";\nimport { SmeupDataStructure } from \"../../../types/data-structures/smeupDataStructure\";\nimport { SmeupDataTable } from \"../../../types/data-structures/smeupDataTable\";\nimport { ComponentOptions } from \"../../../types/component\";\n\n/**\n * Context passed to adapter functions during document processing.\n */\nexport interface PdfMakeConverterContext<\n T extends SmeupDataStructure = SmeupDataStructure,\n> {\n webupManagerData: WebupManagerData;\n pdfDocument?: TDocumentDefinitions;\n damSvcEndpoint?: string;\n getSmeupDataStructure?: (fun: string) => Promise<T>;\n fetchData?: (url: string) => Promise<Response>;\n /**\n * Internal property used by adapters that need to recursively process content.\n * This is populated by the adapter processor and should not be set by external code.\n * @internal\n */\n _adapters?: Map<string, PdfmakeAdapter>;\n}\n\n/**\n * Function that transforms an element from custom format to pdfmake standard format.\n * Adapters are pure functions that receive an element and context, and return the transformed element.\n * Can be synchronous or asynchronous.\n */\nexport type PdfmakeAdapter = (\n element: unknown,\n context: PdfMakeConverterContext,\n) => unknown | Promise<unknown>;\n\n/**\n * Registry interface for managing pdfmake adapters at runtime.\n */\nexport interface AdapterRegistry {\n /** Register an adapter for a specific element type */\n register: (elementType: string, adapter: PdfmakeAdapter) => void;\n /** Unregister an adapter for a specific element type */\n unregister: (elementType: string) => void;\n /** Process a document by applying registered adapters */\n process: (\n document: unknown,\n context: Partial<PdfMakeConverterContext>,\n ) => Promise<unknown>;\n}\n\nexport class AdapterError extends Error {\n element: unknown;\n constructor(message: string, element: unknown) {\n super(message);\n this.element = element;\n Object.setPrototypeOf(this, AdapterError.prototype);\n }\n}\n\ninterface SmeupExtensionImageMetadata {\n url?: string;\n obj?: SmeupDataObj;\n}\n\ninterface SmeupExtensionTableMetadata<T = ComponentOptions> {\n fun?: string;\n data?: SmeupDataTable;\n options?: T;\n}\n\nexport interface ContentImageExtension extends ContentImage {\n smeup?: SmeupExtensionImageMetadata;\n}\n\nexport interface TableExtension extends Table {\n smeup?: SmeupExtensionTableMetadata;\n}\n\nexport interface ElementWithImageExtension {\n image: ContentImage & { smeup?: SmeupExtensionImageMetadata };\n}\n\nexport interface ElementWithTableExtension {\n table: Table & { smeup?: SmeupExtensionTableMetadata };\n}\n\nexport type LayoutLineFunction = (i: number, node?: unknown) => number;\nexport type LayoutColorFunction = (i: number, node?: unknown) => string;\n\nexport interface Layout {\n hLineWidth?: number | LayoutLineFunction;\n vLineWidth?: number | LayoutLineFunction;\n hLineColor?: string | LayoutColorFunction;\n vLineColor?: string | LayoutColorFunction;\n}\n\nexport interface ElementWithLayout {\n layout?: Layout;\n [key: string]: unknown;\n}\n\nexport interface ContentChartExtension extends ContentSvg {\n smeup?: SmeupExtensionTableMetadata;\n}\n\nexport interface ElementWithChartExtension {\n chart: ContentChartExtension;\n}\n"]}
1
+ {"version":3,"file":"pdfmake.types.js","sourceRoot":"","sources":["../../../../src/converters/pdf/pdfmake/pdfmake.types.ts"],"names":[],"mappings":";;;AAuDA,MAAa,YAAa,SAAQ,KAAK;IACrC,OAAO,CAAU;IACjB,YAAY,OAAe,EAAE,OAAgB;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;CACF;AAPD,oCAOC","sourcesContent":["import {\n ContentImage,\n Table,\n TDocumentDefinitions,\n ContentSvg,\n} from \"pdfmake/interfaces\";\nimport { SmeupDataObj, WebupManagerData } from \"../../../types\";\nimport { SmeupDataStructure } from \"../../../types/data-structures/smeupDataStructure\";\nimport { SmeupDataTable } from \"../../../types/data-structures/smeupDataTable\";\nimport { ComponentOptions } from \"../../../types/component\";\n\n/**\n * Context passed to adapter functions during document processing.\n */\nexport interface PdfMakeConverterContext<\n T extends SmeupDataStructure = SmeupDataStructure,\n> {\n webupManagerData: WebupManagerData;\n pdfDocument?: TDocumentDefinitions;\n damSvcEndpoint?: string;\n getSmeupDataStructure?: (fun: string) => Promise<T>;\n fetchData?: (url: string) => Promise<Response>;\n /**\n * Internal property used by adapters that need to recursively process content.\n * This is populated by the adapter processor and should not be set by external code.\n * @internal\n */\n _adapters?: Map<string, PdfmakeAdapter>;\n}\n\n/**\n * Function that transforms an element from custom format to pdfmake standard format.\n * Adapters are pure functions that receive an element and context, and return the transformed element.\n * Can be synchronous or asynchronous.\n */\nexport type PdfmakeAdapter = (\n element: unknown,\n context: PdfMakeConverterContext,\n) => unknown | Promise<unknown>;\n\n/**\n * Registry interface for managing pdfmake adapters at runtime.\n */\nexport interface AdapterRegistry {\n /** Register an adapter for a specific element type */\n register: (elementType: string, adapter: PdfmakeAdapter) => void;\n /** Unregister an adapter for a specific element type */\n unregister: (elementType: string) => void;\n /** Process a document by applying registered adapters */\n process: (\n document: unknown,\n context: Partial<PdfMakeConverterContext>,\n ) => Promise<unknown>;\n}\n\nexport class AdapterError extends Error {\n element: unknown;\n constructor(message: string, element: unknown) {\n super(message);\n this.element = element;\n Object.setPrototypeOf(this, AdapterError.prototype);\n }\n}\n\nexport interface SmeupExtensionImageMetadata {\n url?: string;\n obj?: SmeupDataObj;\n}\n\nexport interface SmeupExtensionTableMetadata<T = ComponentOptions> {\n fun?: string;\n data?: SmeupDataTable;\n options?: T;\n}\n\nexport interface ContentImageExtension extends ContentImage {\n smeup?: SmeupExtensionImageMetadata;\n}\n\nexport interface TableExtension extends Table {\n smeup?: SmeupExtensionTableMetadata;\n}\n\nexport interface ElementWithImageExtension {\n image: ContentImage & { smeup?: SmeupExtensionImageMetadata };\n}\n\nexport interface ElementWithTableExtension {\n table: Table & { smeup?: SmeupExtensionTableMetadata };\n}\n\nexport type LayoutLineFunction = (i: number, node?: unknown) => number;\nexport type LayoutColorFunction = (i: number, node?: unknown) => string;\n\nexport interface Layout {\n hLineWidth?: number | LayoutLineFunction;\n vLineWidth?: number | LayoutLineFunction;\n hLineColor?: string | LayoutColorFunction;\n vLineColor?: string | LayoutColorFunction;\n}\n\nexport interface ElementWithLayout {\n layout?: Layout;\n [key: string]: unknown;\n}\n\nexport interface ContentChartExtension extends ContentSvg {\n smeup?: SmeupExtensionTableMetadata;\n}\n\nexport interface ElementWithChartExtension {\n chart: ContentChartExtension;\n}\n"]}
@@ -14,11 +14,12 @@ const form_filler_1 = require("./pdf/form-filler");
14
14
  Object.defineProperty(exports, "fillPdfForm", { enumerable: true, get: function () { return form_filler_1.fillPdfForm; } });
15
15
  const adapter_processor_1 = require("./pdf/pdfmake/adapter-processor");
16
16
  const adapter_registry_1 = require("./pdf/pdfmake/adapter-registry");
17
- const table_adapter_1 = require("./pdf/pdfmake/adapters/table-adapter");
18
- const image_adapter_1 = require("./pdf/pdfmake/adapters/image-adapter");
19
- const chart_adapter_1 = require("./pdf/pdfmake/adapters/chart-adapter");
20
- const page_element_adapter_1 = require("./pdf/pdfmake/adapters/page-element-adapter");
21
- const layout_adapter_1 = require("./pdf/pdfmake/adapters/layout-adapter");
17
+ const table_adapter_1 = require("./pdf/pdfmake/adapters/table/table-adapter");
18
+ const image_adapter_1 = require("./pdf/pdfmake/adapters/image/image-adapter");
19
+ const chart_adapter_1 = require("./pdf/pdfmake/adapters/chart/chart-adapter");
20
+ const box_adapter_1 = require("./pdf/pdfmake/adapters/box/box-adapter");
21
+ const page_element_adapter_1 = require("./pdf/pdfmake/adapters/page-alement/page-element-adapter");
22
+ const layout_adapter_1 = require("./pdf/pdfmake/adapters/layout/layout-adapter");
22
23
  // `schedaToPdfData` removed: `sch-converter.ts` deleted and references removed
23
24
  const dataTableToPdfData = async (component, webupManagerData) => {
24
25
  const workbook = (0, matrix_converter_1.dataTableToExcelWorkbook)(component, index_1.SupportedExportFormats.XLSX, webupManagerData);
@@ -49,6 +50,7 @@ const pdfmakeDocumentToPdfData = async (documentDefinition, context) => {
49
50
  registry.register("table", (0, table_adapter_1.dataTableAdapter)());
50
51
  registry.register("image", (0, image_adapter_1.imageAdapter)());
51
52
  registry.register("chart", (0, chart_adapter_1.chartAdapter)());
53
+ registry.register("box", (0, box_adapter_1.boxAdapter)());
52
54
  registry.register("footer", (0, page_element_adapter_1.footerAdapter)());
53
55
  registry.register("header", (0, page_element_adapter_1.headerAdapter)());
54
56
  registry.register("layout", (0, layout_adapter_1.layoutAdapter)());
@@ -1 +1 @@
1
- {"version":3,"file":"pdf-converter.js","sourceRoot":"","sources":["../../src/converters/pdf-converter.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport { SmeupDataTable } from \"../types/data-structures/smeupDataTable\";\nimport { SmeupSch } from \"../types/data-structures/smeupSch\";\nimport {\n WebupManagerData,\n GenericObject,\n SupportedExportFormats,\n} from \"../types/index\";\nimport { convertToBuffer } from \"../utils/commons-utility\";\nimport { dataTableToExcelWorkbook } from \"./excel/matrix-converter\";\nimport { dataTableToPdfDoc } from \"./pdf/matrix-converter\";\nimport { PDFDocument } from \"pdf-lib\";\nimport { createCoverPdf } from \"./pdf/cover-renderer\";\nimport { logoBase64 } from \"../assets/gfx-data\";\nimport { renderPdfMakeDocument } from \"./pdf/pdfmake-renderer\";\nimport type { PdfMakeConverterContext } from \"./pdf/pdfmake/pdfmake.types\";\nimport type { TDocumentDefinitions } from \"pdfmake/interfaces\";\nimport { fillPdfForm, FillPdfFormOptions } from \"./pdf/form-filler\";\nimport { preProcessPdfMakeDocument } from \"./pdf/pdfmake/adapter-processor\";\nimport { createAdapterRegistry } from \"./pdf/pdfmake/adapter-registry\";\nimport { dataTableAdapter } from \"./pdf/pdfmake/adapters/table-adapter\";\nimport { imageAdapter } from \"./pdf/pdfmake/adapters/image-adapter\";\nimport { chartAdapter } from \"./pdf/pdfmake/adapters/chart-adapter\";\nimport {\n footerAdapter,\n headerAdapter,\n} from \"./pdf/pdfmake/adapters/page-element-adapter\";\nimport { layoutAdapter } from \"./pdf/pdfmake/adapters/layout-adapter\";\n\n// `schedaToPdfData` removed: `sch-converter.ts` deleted and references removed\n\nexport const dataTableToPdfData = async (\n component: {\n smeupDataTable: SmeupDataTable;\n props: GenericObject;\n },\n webupManagerData: WebupManagerData,\n): Promise<Buffer | Uint8Array> => {\n const workbook = dataTableToExcelWorkbook(\n component,\n SupportedExportFormats.XLSX,\n webupManagerData,\n );\n\n const worksheet = workbook.getWorksheet(1);\n if (worksheet) {\n const title = component.smeupDataTable.cover?.titles?.[\"T01\"] ?? \"\";\n const subtitle = component.smeupDataTable.cover?.titles?.[\"T02\"] ?? \"\";\n const subtitle2 = component.smeupDataTable.cover?.titles?.[\"T03\"] ?? \"\";\n const image = component.smeupDataTable.cover?.image ?? \"\";\n const logo = component.smeupDataTable.cover?.logo ?? logoBase64;\n const cover = createCoverPdf(image, logo, title, subtitle, subtitle2);\n const pdfDoc = await dataTableToPdfDoc(worksheet, webupManagerData, {\n logoBase64: logo,\n title: title,\n subtitle: subtitle,\n });\n const pdfBuffer = pdfDoc.output(\"arraybuffer\");\n return convertToBuffer(await appendPdfDocs([cover, pdfBuffer]));\n } else {\n throw new Error(\"Worksheet not found in the workbook\");\n }\n};\n\nexport const pdfmakeDocumentToPdfData = async (\n documentDefinition: TDocumentDefinitions,\n context: Partial<PdfMakeConverterContext>,\n): Promise<Buffer> => {\n // Register adapters\n const registry = createAdapterRegistry();\n registry.register(\"table\", dataTableAdapter());\n registry.register(\"image\", imageAdapter());\n registry.register(\"chart\", chartAdapter());\n registry.register(\"footer\", footerAdapter());\n registry.register(\"header\", headerAdapter());\n registry.register(\"layout\", layoutAdapter());\n\n context.pdfDocument = documentDefinition;\n\n // Pre-process document with adapters\n const processedDoc = await preProcessPdfMakeDocument(\n documentDefinition,\n context,\n registry,\n );\n\n // console.debug(\n // \"Processed pdfmake document:\",\n // JSON.stringify(processedDoc, null, 2),\n // );\n // Render the document using pdfmake\n return renderPdfMakeDocument(processedDoc);\n};\n\n/**\n * Unisce più PDF (in formato ArrayBuffer/Uint8Array/Buffer) in un unico PDF.\n * @param pdfBuffers Array di buffer PDF (es. ottenuti da jsPDF.output(\"arraybuffer\"))\n * @returns Buffer del PDF unito\n */\nconst appendPdfDocs = async (\n pdfBuffers: (Uint8Array | ArrayBuffer | Buffer)[],\n): Promise<Uint8Array> => {\n if (!pdfBuffers.length) throw new Error(\"No PDF buffers to append\");\n\n // Crea un nuovo documento PDF vuoto\n const mergedPdf = await PDFDocument.create();\n\n for (const pdfBytes of pdfBuffers) {\n const srcPdf = await PDFDocument.load(pdfBytes);\n const copiedPages = await mergedPdf.copyPages(\n srcPdf,\n srcPdf.getPageIndices(),\n );\n copiedPages.forEach(page => mergedPdf.addPage(page));\n }\n\n const mergedBytes = await mergedPdf.save();\n return mergedBytes;\n};\n\n// Re-export form filler function and types\nexport { fillPdfForm };\nexport type { FillPdfFormOptions };\n"]}
1
+ {"version":3,"file":"pdf-converter.js","sourceRoot":"","sources":["../../src/converters/pdf-converter.ts"],"names":[],"mappings":";AAAA,sDAAsD;;;AAItD,0CAIwB;AACxB,8DAA2D;AAC3D,+DAAoE;AACpE,6DAA2D;AAC3D,qCAAsC;AACtC,yDAAsD;AACtD,iDAAgD;AAChD,6DAA+D;AAG/D,mDAAoE;AA0G3D,4FA1GA,yBAAW,OA0GA;AAzGpB,uEAA4E;AAC5E,qEAAuE;AACvE,8EAA8E;AAC9E,8EAA0E;AAC1E,8EAA0E;AAC1E,wEAAoE;AACpE,mGAGkE;AAClE,iFAA6E;AAE7E,+EAA+E;AAExE,MAAM,kBAAkB,GAAG,KAAK,EACrC,SAGC,EACD,gBAAkC,EACJ,EAAE;IAChC,MAAM,QAAQ,GAAG,IAAA,2CAAwB,EACvC,SAAS,EACT,8BAAsB,CAAC,IAAI,EAC3B,gBAAgB,CACjB,CAAC;IAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACpE,MAAM,QAAQ,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACvE,MAAM,SAAS,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACxE,MAAM,KAAK,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,IAAI,qBAAU,CAAC;QAChE,MAAM,KAAK,GAAG,IAAA,+BAAc,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,MAAM,IAAA,oCAAiB,EAAC,SAAS,EAAE,gBAAgB,EAAE;YAClE,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC/C,OAAO,IAAA,iCAAe,EAAC,MAAM,aAAa,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;AACH,CAAC,CAAC;AA/BW,QAAA,kBAAkB,sBA+B7B;AAEK,MAAM,wBAAwB,GAAG,KAAK,EAC3C,kBAAwC,EACxC,OAAyC,EACxB,EAAE;IACnB,oBAAoB;IACpB,MAAM,QAAQ,GAAG,IAAA,wCAAqB,GAAE,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAA,gCAAgB,GAAE,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAA,4BAAY,GAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAA,4BAAY,GAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAA,wBAAU,GAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAA,oCAAa,GAAE,CAAC,CAAC;IAC7C,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAA,oCAAa,GAAE,CAAC,CAAC;IAC7C,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAA,8BAAa,GAAE,CAAC,CAAC;IAE7C,OAAO,CAAC,WAAW,GAAG,kBAAkB,CAAC;IAEzC,qCAAqC;IACrC,MAAM,YAAY,GAAG,MAAM,IAAA,6CAAyB,EAClD,kBAAkB,EAClB,OAAO,EACP,QAAQ,CACT,CAAC;IAEF,iBAAiB;IACjB,mCAAmC;IACnC,2CAA2C;IAC3C,KAAK;IACL,oCAAoC;IACpC,OAAO,IAAA,wCAAqB,EAAC,YAAY,CAAC,CAAC;AAC7C,CAAC,CAAC;AA7BW,QAAA,wBAAwB,4BA6BnC;AAEF;;;;GAIG;AACH,MAAM,aAAa,GAAG,KAAK,EACzB,UAAiD,EAC5B,EAAE;IACvB,IAAI,CAAC,UAAU,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAEpE,oCAAoC;IACpC,MAAM,SAAS,GAAG,MAAM,qBAAW,CAAC,MAAM,EAAE,CAAC;IAE7C,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,qBAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,SAAS,CAC3C,MAAM,EACN,MAAM,CAAC,cAAc,EAAE,CACxB,CAAC;QACF,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;IAC3C,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport { SmeupDataTable } from \"../types/data-structures/smeupDataTable\";\nimport { SmeupSch } from \"../types/data-structures/smeupSch\";\nimport {\n WebupManagerData,\n GenericObject,\n SupportedExportFormats,\n} from \"../types/index\";\nimport { convertToBuffer } from \"../utils/commons-utility\";\nimport { dataTableToExcelWorkbook } from \"./excel/matrix-converter\";\nimport { dataTableToPdfDoc } from \"./pdf/matrix-converter\";\nimport { PDFDocument } from \"pdf-lib\";\nimport { createCoverPdf } from \"./pdf/cover-renderer\";\nimport { logoBase64 } from \"../assets/gfx-data\";\nimport { renderPdfMakeDocument } from \"./pdf/pdfmake-renderer\";\nimport type { PdfMakeConverterContext } from \"./pdf/pdfmake/pdfmake.types\";\nimport type { TDocumentDefinitions } from \"pdfmake/interfaces\";\nimport { fillPdfForm, FillPdfFormOptions } from \"./pdf/form-filler\";\nimport { preProcessPdfMakeDocument } from \"./pdf/pdfmake/adapter-processor\";\nimport { createAdapterRegistry } from \"./pdf/pdfmake/adapter-registry\";\nimport { dataTableAdapter } from \"./pdf/pdfmake/adapters/table/table-adapter\";\nimport { imageAdapter } from \"./pdf/pdfmake/adapters/image/image-adapter\";\nimport { chartAdapter } from \"./pdf/pdfmake/adapters/chart/chart-adapter\";\nimport { boxAdapter } from \"./pdf/pdfmake/adapters/box/box-adapter\";\nimport {\n footerAdapter,\n headerAdapter,\n} from \"./pdf/pdfmake/adapters/page-alement/page-element-adapter\";\nimport { layoutAdapter } from \"./pdf/pdfmake/adapters/layout/layout-adapter\";\n\n// `schedaToPdfData` removed: `sch-converter.ts` deleted and references removed\n\nexport const dataTableToPdfData = async (\n component: {\n smeupDataTable: SmeupDataTable;\n props: GenericObject;\n },\n webupManagerData: WebupManagerData,\n): Promise<Buffer | Uint8Array> => {\n const workbook = dataTableToExcelWorkbook(\n component,\n SupportedExportFormats.XLSX,\n webupManagerData,\n );\n\n const worksheet = workbook.getWorksheet(1);\n if (worksheet) {\n const title = component.smeupDataTable.cover?.titles?.[\"T01\"] ?? \"\";\n const subtitle = component.smeupDataTable.cover?.titles?.[\"T02\"] ?? \"\";\n const subtitle2 = component.smeupDataTable.cover?.titles?.[\"T03\"] ?? \"\";\n const image = component.smeupDataTable.cover?.image ?? \"\";\n const logo = component.smeupDataTable.cover?.logo ?? logoBase64;\n const cover = createCoverPdf(image, logo, title, subtitle, subtitle2);\n const pdfDoc = await dataTableToPdfDoc(worksheet, webupManagerData, {\n logoBase64: logo,\n title: title,\n subtitle: subtitle,\n });\n const pdfBuffer = pdfDoc.output(\"arraybuffer\");\n return convertToBuffer(await appendPdfDocs([cover, pdfBuffer]));\n } else {\n throw new Error(\"Worksheet not found in the workbook\");\n }\n};\n\nexport const pdfmakeDocumentToPdfData = async (\n documentDefinition: TDocumentDefinitions,\n context: Partial<PdfMakeConverterContext>,\n): Promise<Buffer> => {\n // Register adapters\n const registry = createAdapterRegistry();\n registry.register(\"table\", dataTableAdapter());\n registry.register(\"image\", imageAdapter());\n registry.register(\"chart\", chartAdapter());\n registry.register(\"box\", boxAdapter());\n registry.register(\"footer\", footerAdapter());\n registry.register(\"header\", headerAdapter());\n registry.register(\"layout\", layoutAdapter());\n\n context.pdfDocument = documentDefinition;\n\n // Pre-process document with adapters\n const processedDoc = await preProcessPdfMakeDocument(\n documentDefinition,\n context,\n registry,\n );\n\n // console.debug(\n // \"Processed pdfmake document:\",\n // JSON.stringify(processedDoc, null, 2),\n // );\n // Render the document using pdfmake\n return renderPdfMakeDocument(processedDoc);\n};\n\n/**\n * Unisce più PDF (in formato ArrayBuffer/Uint8Array/Buffer) in un unico PDF.\n * @param pdfBuffers Array di buffer PDF (es. ottenuti da jsPDF.output(\"arraybuffer\"))\n * @returns Buffer del PDF unito\n */\nconst appendPdfDocs = async (\n pdfBuffers: (Uint8Array | ArrayBuffer | Buffer)[],\n): Promise<Uint8Array> => {\n if (!pdfBuffers.length) throw new Error(\"No PDF buffers to append\");\n\n // Crea un nuovo documento PDF vuoto\n const mergedPdf = await PDFDocument.create();\n\n for (const pdfBytes of pdfBuffers) {\n const srcPdf = await PDFDocument.load(pdfBytes);\n const copiedPages = await mergedPdf.copyPages(\n srcPdf,\n srcPdf.getPageIndices(),\n );\n copiedPages.forEach(page => mergedPdf.addPage(page));\n }\n\n const mergedBytes = await mergedPdf.save();\n return mergedBytes;\n};\n\n// Re-export form filler function and types\nexport { fillPdfForm };\nexport type { FillPdfFormOptions };\n"]}
package/dist/index.d.ts CHANGED
@@ -3,8 +3,8 @@ export { dataTableToPdfData, pdfmakeDocumentToPdfData, fillPdfForm, } from "./co
3
3
  export type { FillPdfFormOptions } from "./converters/pdf-converter";
4
4
  export { dataTableToChart } from "./converters/images/charts-converter";
5
5
  export { createAdapterRegistry } from "./converters/pdf/pdfmake/adapter-registry";
6
- export { funToSmeupTableAdapter } from "./converters/pdf/pdfmake/adapters/table-adapter";
7
- export { smeupTableToPdfMakeTableAdapter } from "./converters/pdf/pdfmake/adapters/table-adapter";
6
+ export { funToSmeupTableAdapter } from "./converters/pdf/pdfmake/adapters/table/table-adapter";
7
+ export { smeupTableToPdfMakeTableAdapter } from "./converters/pdf/pdfmake/adapters/table/table-adapter";
8
8
  export { preProcessPdfMakeDocument } from "./converters/pdf/pdfmake/adapter-processor";
9
9
  export type { PdfmakeAdapter, PdfMakeConverterContext, AdapterRegistry, AdapterError, } from "./converters/pdf/pdfmake/pdfmake.types";
10
10
  export type { WebupManagerData, GenericObject } from "./types/index";
package/dist/index.js CHANGED
@@ -14,9 +14,9 @@ Object.defineProperty(exports, "dataTableToChart", { enumerable: true, get: func
14
14
  // Pdfmake adapter system
15
15
  var adapter_registry_1 = require("./converters/pdf/pdfmake/adapter-registry");
16
16
  Object.defineProperty(exports, "createAdapterRegistry", { enumerable: true, get: function () { return adapter_registry_1.createAdapterRegistry; } });
17
- var table_adapter_1 = require("./converters/pdf/pdfmake/adapters/table-adapter");
17
+ var table_adapter_1 = require("./converters/pdf/pdfmake/adapters/table/table-adapter");
18
18
  Object.defineProperty(exports, "funToSmeupTableAdapter", { enumerable: true, get: function () { return table_adapter_1.funToSmeupTableAdapter; } });
19
- var table_adapter_2 = require("./converters/pdf/pdfmake/adapters/table-adapter");
19
+ var table_adapter_2 = require("./converters/pdf/pdfmake/adapters/table/table-adapter");
20
20
  Object.defineProperty(exports, "smeupTableToPdfMakeTableAdapter", { enumerable: true, get: function () { return table_adapter_2.smeupTableToPdfMakeTableAdapter; } });
21
21
  var adapter_processor_1 = require("./converters/pdf/pdfmake/adapter-processor");
22
22
  Object.defineProperty(exports, "preProcessPdfMakeDocument", { enumerable: true, get: function () { return adapter_processor_1.preProcessPdfMakeDocument; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qBAAqB;AACrB,gEAGsC;AAFpC,uHAAA,oBAAoB,OAAA;AACpB,sHAAA,mBAAmB,OAAA;AAGrB,4DAIoC;AAHlC,mHAAA,kBAAkB,OAAA;AAClB,yHAAA,wBAAwB,OAAA;AACxB,4GAAA,WAAW,OAAA;AAIb,yEAAwE;AAA/D,oHAAA,gBAAgB,OAAA;AAEzB,yBAAyB;AACzB,8EAAkF;AAAzE,yHAAA,qBAAqB,OAAA;AAC9B,iFAAyF;AAAhF,uHAAA,sBAAsB,OAAA;AAC/B,iFAAkG;AAAzF,gIAAA,+BAA+B,OAAA;AACxC,gFAAuF;AAA9E,8HAAA,yBAAyB,OAAA;AAWlC,uCAAuD;AAA9C,+GAAA,sBAAsB,OAAA","sourcesContent":["// Public API exports\nexport {\n dataTableToExcelData,\n dataTreeToExcelData,\n} from \"./converters/excel-converter\";\n\nexport {\n dataTableToPdfData,\n pdfmakeDocumentToPdfData,\n fillPdfForm,\n} from \"./converters/pdf-converter\";\nexport type { FillPdfFormOptions } from \"./converters/pdf-converter\";\n\nexport { dataTableToChart } from \"./converters/images/charts-converter\";\n\n// Pdfmake adapter system\nexport { createAdapterRegistry } from \"./converters/pdf/pdfmake/adapter-registry\";\nexport { funToSmeupTableAdapter } from \"./converters/pdf/pdfmake/adapters/table-adapter\";\nexport { smeupTableToPdfMakeTableAdapter } from \"./converters/pdf/pdfmake/adapters/table-adapter\";\nexport { preProcessPdfMakeDocument } from \"./converters/pdf/pdfmake/adapter-processor\";\n\nexport type {\n PdfmakeAdapter,\n PdfMakeConverterContext,\n AdapterRegistry,\n AdapterError,\n} from \"./converters/pdf/pdfmake/pdfmake.types\";\n\n// Export types that users might need\nexport type { WebupManagerData, GenericObject } from \"./types/index\";\nexport { SupportedExportFormats } from \"./types/index\";\nexport type { SmeupDataTable } from \"./types/data-structures/smeupDataTable\";\nexport type { SmeupDataTree } from \"./types/data-structures/smeupDataTree\";\n\nexport type ColumnGroup = {\n column: string;\n visible: boolean;\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qBAAqB;AACrB,gEAGsC;AAFpC,uHAAA,oBAAoB,OAAA;AACpB,sHAAA,mBAAmB,OAAA;AAGrB,4DAIoC;AAHlC,mHAAA,kBAAkB,OAAA;AAClB,yHAAA,wBAAwB,OAAA;AACxB,4GAAA,WAAW,OAAA;AAIb,yEAAwE;AAA/D,oHAAA,gBAAgB,OAAA;AAEzB,yBAAyB;AACzB,8EAAkF;AAAzE,yHAAA,qBAAqB,OAAA;AAC9B,uFAA+F;AAAtF,uHAAA,sBAAsB,OAAA;AAC/B,uFAAwG;AAA/F,gIAAA,+BAA+B,OAAA;AACxC,gFAAuF;AAA9E,8HAAA,yBAAyB,OAAA;AAWlC,uCAAuD;AAA9C,+GAAA,sBAAsB,OAAA","sourcesContent":["// Public API exports\nexport {\n dataTableToExcelData,\n dataTreeToExcelData,\n} from \"./converters/excel-converter\";\n\nexport {\n dataTableToPdfData,\n pdfmakeDocumentToPdfData,\n fillPdfForm,\n} from \"./converters/pdf-converter\";\nexport type { FillPdfFormOptions } from \"./converters/pdf-converter\";\n\nexport { dataTableToChart } from \"./converters/images/charts-converter\";\n\n// Pdfmake adapter system\nexport { createAdapterRegistry } from \"./converters/pdf/pdfmake/adapter-registry\";\nexport { funToSmeupTableAdapter } from \"./converters/pdf/pdfmake/adapters/table/table-adapter\";\nexport { smeupTableToPdfMakeTableAdapter } from \"./converters/pdf/pdfmake/adapters/table/table-adapter\";\nexport { preProcessPdfMakeDocument } from \"./converters/pdf/pdfmake/adapter-processor\";\n\nexport type {\n PdfmakeAdapter,\n PdfMakeConverterContext,\n AdapterRegistry,\n AdapterError,\n} from \"./converters/pdf/pdfmake/pdfmake.types\";\n\n// Export types that users might need\nexport type { WebupManagerData, GenericObject } from \"./types/index\";\nexport { SupportedExportFormats } from \"./types/index\";\nexport type { SmeupDataTable } from \"./types/data-structures/smeupDataTable\";\nexport type { SmeupDataTree } from \"./types/data-structures/smeupDataTree\";\n\nexport type ColumnGroup = {\n column: string;\n visible: boolean;\n};\n"]}
@@ -51,3 +51,37 @@ export declare enum ToolbarState {
51
51
  export interface ComponentOptions {
52
52
  Name?: string;
53
53
  }
54
+ export declare enum ChartType {
55
+ BAR = "Bar",
56
+ LINE = "Line",
57
+ PIE = "Pie",
58
+ SCATTER = "Scatter"
59
+ }
60
+ export interface ChartOptions extends ComponentOptions {
61
+ /** Category column name (X-axis for bar/line, labels for pie) */
62
+ Axe?: string;
63
+ /** Chart height in points */
64
+ ForceHeight?: string;
65
+ /** Chart width in points */
66
+ ForceWidth?: string;
67
+ /** Data series column names, pipe-separated (e.g., "COL1|COL2") */
68
+ Series?: string;
69
+ /** Chart title displayed at bottom */
70
+ Title?: string;
71
+ /** Chart type (Bar, Line, Pie, Scatter) */
72
+ Typ?: ChartType;
73
+ }
74
+ export interface BoxOptions extends ComponentOptions {
75
+ /** Layout template number (1: default, 2: right-aligned, 5: with image) */
76
+ LayoutNbr?: string;
77
+ /** Number of columns for card distribution */
78
+ Cols?: string;
79
+ /** Data column names to display, pipe-separated (e.g., "col1|col2") */
80
+ Columns?: string;
81
+ /** Image fit size in points (used in layout 5), if not specififed assumes 60 */
82
+ ImageFit?: string;
83
+ }
84
+ export interface TableOptions extends ComponentOptions {
85
+ /** Image fit size in points if not specififed assumes 60 */
86
+ ImageFit?: string;
87
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ToolbarState = exports.Shapes = void 0;
3
+ exports.ChartType = exports.ToolbarState = exports.Shapes = void 0;
4
4
  /**
5
5
  * Supported shapes.
6
6
  */
@@ -53,4 +53,11 @@ var ToolbarState;
53
53
  ToolbarState["COLLAPSED"] = "Collapsed";
54
54
  ToolbarState["INVISIBLE"] = "Invisible";
55
55
  })(ToolbarState || (exports.ToolbarState = ToolbarState = {}));
56
+ var ChartType;
57
+ (function (ChartType) {
58
+ ChartType["BAR"] = "Bar";
59
+ ChartType["LINE"] = "Line";
60
+ ChartType["PIE"] = "Pie";
61
+ ChartType["SCATTER"] = "Scatter";
62
+ })(ChartType || (exports.ChartType = ChartType = {}));
56
63
  //# sourceMappingURL=component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/types/component.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,MAsCX;AAtCD,WAAY,MAAM;IAChB,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;AACb,CAAC,EAtCW,MAAM,sBAAN,MAAM,QAsCjB;AAED;;GAEG;AACH,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,qCAAqB,CAAA;IACrB,uCAAuB,CAAA;IACvB,uCAAuB,CAAA;AACzB,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB","sourcesContent":["/**\n * Supported shapes.\n */\nexport enum Shapes {\n ACC = \"ACC\",\n ACT = \"ACT\",\n ATM = \"ATM\",\n BOX = \"BOX\",\n BTN = \"BTN\",\n CAL = \"CAL\",\n CHA = \"CHA\", // = EXA\n DFT = \"DFT\",\n DYN = \"DYN\",\n DSH = \"DSH\",\n EML = \"EML\",\n EXA = \"EXA\", // = CHA\n EXB = \"EXB\", // = MAT\n EXD = \"EXD\", // = SCH\n EXU = \"EXU\",\n FBK = \"FBK\",\n FLD = \"FLD\",\n FOR = \"FOR\",\n GNT = \"GNT\",\n HTM = \"HTM\",\n IML = \"IML\",\n IMG = \"IMG\",\n INT = \"INT\",\n INP = \"INP\",\n JSO = \"JSO\",\n LAB = \"LAB\",\n MAT = \"MAT\", // = EXB\n PLN = \"PLN\",\n PDF = \"PDF\",\n SCH = \"SCH\", // = EXD\n SPL = \"SPL\",\n TED = \"TED\",\n TRE = \"TRE\",\n TXT = \"TXT\",\n CND = \"CND\",\n UNK = \"UNK\",\n OGN = \"OGN\",\n}\n\n/**\n * ToolbarState Info.\n */\nexport enum ToolbarState {\n EXPANDED = \"Expanded\",\n COLLAPSED = \"Collapsed\",\n INVISIBLE = \"Invisible\",\n}\n\nexport interface ComponentOptions {\n Name?: string;\n}\n"]}
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/types/component.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,MAsCX;AAtCD,WAAY,MAAM;IAChB,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;AACb,CAAC,EAtCW,MAAM,sBAAN,MAAM,QAsCjB;AAED;;GAEG;AACH,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,qCAAqB,CAAA;IACrB,uCAAuB,CAAA;IACvB,uCAAuB,CAAA;AACzB,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB;AAMD,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,0BAAa,CAAA;IACb,wBAAW,CAAA;IACX,gCAAmB,CAAA;AACrB,CAAC,EALW,SAAS,yBAAT,SAAS,QAKpB","sourcesContent":["/**\n * Supported shapes.\n */\nexport enum Shapes {\n ACC = \"ACC\",\n ACT = \"ACT\",\n ATM = \"ATM\",\n BOX = \"BOX\",\n BTN = \"BTN\",\n CAL = \"CAL\",\n CHA = \"CHA\", // = EXA\n DFT = \"DFT\",\n DYN = \"DYN\",\n DSH = \"DSH\",\n EML = \"EML\",\n EXA = \"EXA\", // = CHA\n EXB = \"EXB\", // = MAT\n EXD = \"EXD\", // = SCH\n EXU = \"EXU\",\n FBK = \"FBK\",\n FLD = \"FLD\",\n FOR = \"FOR\",\n GNT = \"GNT\",\n HTM = \"HTM\",\n IML = \"IML\",\n IMG = \"IMG\",\n INT = \"INT\",\n INP = \"INP\",\n JSO = \"JSO\",\n LAB = \"LAB\",\n MAT = \"MAT\", // = EXB\n PLN = \"PLN\",\n PDF = \"PDF\",\n SCH = \"SCH\", // = EXD\n SPL = \"SPL\",\n TED = \"TED\",\n TRE = \"TRE\",\n TXT = \"TXT\",\n CND = \"CND\",\n UNK = \"UNK\",\n OGN = \"OGN\",\n}\n\n/**\n * ToolbarState Info.\n */\nexport enum ToolbarState {\n EXPANDED = \"Expanded\",\n COLLAPSED = \"Collapsed\",\n INVISIBLE = \"Invisible\",\n}\n\nexport interface ComponentOptions {\n Name?: string;\n}\n\nexport enum ChartType {\n BAR = \"Bar\",\n LINE = \"Line\",\n PIE = \"Pie\",\n SCATTER = \"Scatter\",\n}\n\nexport interface ChartOptions extends ComponentOptions {\n /** Category column name (X-axis for bar/line, labels for pie) */\n Axe?: string;\n /** Chart height in points */\n ForceHeight?: string;\n /** Chart width in points */\n ForceWidth?: string;\n /** Data series column names, pipe-separated (e.g., \"COL1|COL2\") */\n Series?: string;\n /** Chart title displayed at bottom */\n Title?: string;\n /** Chart type (Bar, Line, Pie, Scatter) */\n Typ?: ChartType;\n}\n\nexport interface BoxOptions extends ComponentOptions {\n /** Layout template number (1: default, 2: right-aligned, 5: with image) */\n LayoutNbr?: string;\n /** Number of columns for card distribution */\n Cols?: string;\n /** Data column names to display, pipe-separated (e.g., \"col1|col2\") */\n Columns?: string;\n /** Image fit size in points (used in layout 5), if not specififed assumes 60 */\n ImageFit?: string;\n}\n\nexport interface TableOptions extends ComponentOptions {\n /** Image fit size in points if not specififed assumes 60 */\n ImageFit?: string;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import { SmeupDataCell } from "../types/data-structures/smeupDataTable";
2
+ export declare const cellIsImage: (cell: SmeupDataCell) => boolean;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cellIsImage = void 0;
4
+ const cellIsImage = (cell) => {
5
+ if (!cell)
6
+ return false;
7
+ return cell.shape === "IMG";
8
+ };
9
+ exports.cellIsImage = cellIsImage;
10
+ //# sourceMappingURL=cells-utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cells-utility.js","sourceRoot":"","sources":["../../src/utils/cells-utility.ts"],"names":[],"mappings":";;;AAEO,MAAM,WAAW,GAAG,CAAC,IAAmB,EAAW,EAAE;IAC1D,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;AAC9B,CAAC,CAAC;AAHW,QAAA,WAAW,eAGtB","sourcesContent":["import { SmeupDataCell } from \"../types/data-structures/smeupDataTable\";\n\nexport const cellIsImage = (cell: SmeupDataCell): boolean => {\n if (!cell) return false;\n return cell.shape === \"IMG\";\n};\n"]}
@@ -91,7 +91,6 @@ const handleNegationOperator = (value, filterText, typedValue, typedFilter, isTy
91
91
  // For numeric or date types, use typed comparison
92
92
  if (isTypedComparison) {
93
93
  const returnValue = typedValue.valueOf() !== typedFilter.valueOf();
94
- console.log(typedValue.valueOf(), typedFilter.valueOf(), returnValue);
95
94
  return returnValue;
96
95
  }
97
96
  // Match negation for strings
@@ -1 +1 @@
1
- {"version":3,"file":"filters-utility.js","sourceRoot":"","sources":["../../src/utils/filters-utility.ts"],"names":[],"mappings":"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","sourcesContent":["import { WebupManagerData } from \"../types\";\nimport {\n datesIsIsoDate,\n parseDateByLocale,\n datesFormat,\n} from \"./dates-utility\";\nimport { mathFormat, mathNumberify } from \"./math-utility\";\nimport { objectsIsDate, objectsIsNumber } from \"./objects-utility\";\n\ninterface FilterParts {\n operator: string | undefined;\n startWildcard: boolean;\n filterText: string;\n endWildcard: boolean;\n}\n\ninterface TypedValues {\n typedValue: string | Date | number;\n typedFilter: string | Date | number;\n isTypedComparison: boolean;\n}\n\nconst parseFilterExpression = (filter: string): FilterParts | null => {\n const regex = /^\\s*(<=|>=|!|>|<)?\\s*'?(%)?(.*?)(%)?'?\\s*$/;\n const match = filter.match(regex);\n\n if (!match) {\n return null;\n }\n\n return {\n operator: match[1],\n startWildcard: match[2] === \"%\",\n filterText: match[3] ?? \"\",\n endWildcard: match[4] === \"%\",\n };\n};\n\nconst handleVoidFilter = (\n filterText: string,\n filterExpression: string,\n operator: string | undefined,\n value: string,\n): boolean | null => {\n if (filterText === \"\" && filterExpression.includes(\"''\")) {\n if (operator === \"!\") {\n return value !== \"\";\n }\n return value === \"\";\n }\n return null;\n};\n\nconst convertToTypedValues = (\n value: string,\n filterText: string,\n obj: { t: string; p: string; k: string },\n webupManagerData: WebupManagerData,\n): TypedValues => {\n let typedValue: string | Date | number = value;\n let typedFilter: string | Date | number = filterText;\n let isTypedComparison = false;\n\n if (\n obj &&\n objectsIsNumber(obj) &&\n !Number.isNaN(mathNumberify(filterText, webupManagerData.mathLocale))\n ) {\n // Convert to numbers for numeric comparison\n typedValue = parseFloat(value);\n typedFilter = mathNumberify(filterText, webupManagerData.mathLocale, true);\n\n // If parsing fails, treat as 0 for comparison\n if (isNaN(typedValue)) typedValue = 0;\n if (isNaN(typedFilter)) typedFilter = 0;\n isTypedComparison = true;\n } else if (\n obj &&\n objectsIsDate(obj) &&\n datesIsIsoDate(value) &&\n parseDateByLocale(filterText, webupManagerData.datesLocale)\n ) {\n // Convert to Date objects for date comparison\n typedValue = new Date(value);\n typedValue.setHours(0, 0, 0, 0);\n typedFilter =\n parseDateByLocale(filterText, webupManagerData.datesLocale) ?? filterText;\n isTypedComparison = true;\n }\n\n // If conversion to typed comparison failed, fallback to string comparison\n if (!isTypedComparison) {\n typedFilter = filterText;\n switch (true) {\n case objectsIsDate(obj):\n typedValue = datesFormat(value, webupManagerData.datesLocale);\n break;\n case objectsIsNumber(obj):\n typedValue = mathFormat(\n parseFloat(value),\n null as unknown as string,\n webupManagerData.mathLocale,\n );\n break;\n default:\n typedValue = value;\n }\n }\n\n return { typedValue, typedFilter, isTypedComparison };\n};\n\nconst handleComparisonOperator = (\n operator: string | undefined,\n typedValue: string | Date | number,\n typedFilter: string | Date | number,\n): boolean | null => {\n if (!operator || ![\">\", \">=\", \"<\", \"<=\"].includes(operator)) {\n return null;\n }\n\n switch (operator) {\n case \">\":\n return typedValue > typedFilter;\n case \">=\":\n return typedValue >= typedFilter;\n case \"<\":\n return typedValue < typedFilter;\n case \"<=\":\n return typedValue <= typedFilter;\n default:\n return null;\n }\n};\n\nconst handleNegationOperator = (\n value: string,\n filterText: string,\n typedValue: string | Date | number,\n typedFilter: string | Date | number,\n isTypedComparison: boolean,\n startWildcard: boolean,\n endWildcard: boolean,\n): boolean => {\n // For numeric or date types, use typed comparison\n if (isTypedComparison) {\n const returnValue = typedValue.valueOf() !== typedFilter.valueOf();\n console.log(typedValue.valueOf(), typedFilter.valueOf(), returnValue);\n return returnValue;\n }\n\n // Match negation for strings\n if (startWildcard && endWildcard) {\n return !value.includes(filterText);\n }\n if (startWildcard) {\n return !value.endsWith(filterText);\n }\n if (endWildcard) {\n return !value.startsWith(filterText);\n }\n\n // Exact match negation\n return value !== filterText;\n};\n\nconst handleWildcardMatch = (\n value: string,\n filterText: string,\n startWildcard: boolean,\n endWildcard: boolean,\n): boolean | null => {\n if (!startWildcard && !endWildcard) {\n return null;\n }\n\n if (startWildcard && endWildcard) {\n return value.includes(filterText);\n }\n if (startWildcard) {\n return value.endsWith(filterText);\n }\n if (endWildcard) {\n return value.startsWith(filterText);\n }\n\n return null;\n};\n\nconst handleDefaultMatch = (\n value: string,\n filter: string,\n filterText: string,\n typedValue: string | Date | number,\n typedFilter: string | Date | number,\n isTypedComparison: boolean,\n): boolean => {\n if (!isTypedComparison) {\n // Non-typed exact match\n if (filter.startsWith(\"'\") && filter.endsWith(\"'\")) {\n return value === filterText;\n } else {\n return value.toLowerCase().includes(filterText.toLowerCase());\n }\n } else {\n return typedValue.valueOf() === typedFilter.valueOf();\n }\n};\n\nconst isSingleFilterMatchValue = (\n value: string,\n filter: string,\n obj: { t: string; p: string; k: string } = { t: \"\", p: \"\", k: \"\" },\n webupManagerData: WebupManagerData,\n): boolean => {\n if (value == null) value = \"\";\n if (filter == null) filter = \"\";\n\n value = value.trim();\n filter = filter.trim();\n\n // Parse filter expression\n const filterParts = parseFilterExpression(filter);\n if (!filterParts) {\n // fallback: inclusion - Non case sensitive\n return value.toLowerCase().includes(filter.toLowerCase());\n }\n\n const { operator, startWildcard, filterText, endWildcard } = filterParts;\n\n // Handle void filter (empty string with quotes)\n const voidResult = handleVoidFilter(filterText, filter, operator, value);\n if (voidResult !== null) {\n return voidResult;\n }\n\n // Convert to appropriate type based on obj.t\n const { typedValue, typedFilter, isTypedComparison } = convertToTypedValues(\n value,\n filterText,\n obj,\n webupManagerData,\n );\n\n // Handle comparison operators (>, >=, <, <=)\n const comparisonResult = handleComparisonOperator(\n operator,\n typedValue,\n typedFilter,\n );\n if (comparisonResult !== null) {\n return comparisonResult;\n }\n\n // Handle negation operator (!)\n if (operator === \"!\") {\n return handleNegationOperator(\n value,\n filterText,\n typedValue,\n typedFilter,\n isTypedComparison,\n startWildcard,\n endWildcard,\n );\n }\n\n // Handle wildcard matching\n const wildcardResult = handleWildcardMatch(\n value,\n filterText,\n startWildcard,\n endWildcard,\n );\n if (wildcardResult !== null) {\n return wildcardResult;\n }\n\n // Default match (exact or inclusion)\n return handleDefaultMatch(\n value,\n filter,\n filterText,\n typedValue,\n typedFilter,\n isTypedComparison,\n );\n};\n\nexport const isFilterMatchValue = (\n value: string,\n filter: string,\n obj: { t: string; p: string; k: string } = { t: \"\", p: \"\", k: \"\" },\n webupManagerData: WebupManagerData = {\n mathLocale: \"it\",\n datesLocale: \"it\",\n themeBackground: \"\",\n },\n): boolean => {\n const filters = filter\n .split(\";\")\n .map(f => f.trim())\n .filter(f => f.length > 0);\n return filters.every(f =>\n isSingleFilterMatchValue(value, f, obj, webupManagerData),\n );\n};\n"]}
1
+ {"version":3,"file":"filters-utility.js","sourceRoot":"","sources":["../../src/utils/filters-utility.ts"],"names":[],"mappings":"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","sourcesContent":["import { WebupManagerData } from \"../types\";\nimport {\n datesIsIsoDate,\n parseDateByLocale,\n datesFormat,\n} from \"./dates-utility\";\nimport { mathFormat, mathNumberify } from \"./math-utility\";\nimport { objectsIsDate, objectsIsNumber } from \"./objects-utility\";\n\ninterface FilterParts {\n operator: string | undefined;\n startWildcard: boolean;\n filterText: string;\n endWildcard: boolean;\n}\n\ninterface TypedValues {\n typedValue: string | Date | number;\n typedFilter: string | Date | number;\n isTypedComparison: boolean;\n}\n\nconst parseFilterExpression = (filter: string): FilterParts | null => {\n const regex = /^\\s*(<=|>=|!|>|<)?\\s*'?(%)?(.*?)(%)?'?\\s*$/;\n const match = filter.match(regex);\n\n if (!match) {\n return null;\n }\n\n return {\n operator: match[1],\n startWildcard: match[2] === \"%\",\n filterText: match[3] ?? \"\",\n endWildcard: match[4] === \"%\",\n };\n};\n\nconst handleVoidFilter = (\n filterText: string,\n filterExpression: string,\n operator: string | undefined,\n value: string,\n): boolean | null => {\n if (filterText === \"\" && filterExpression.includes(\"''\")) {\n if (operator === \"!\") {\n return value !== \"\";\n }\n return value === \"\";\n }\n return null;\n};\n\nconst convertToTypedValues = (\n value: string,\n filterText: string,\n obj: { t: string; p: string; k: string },\n webupManagerData: WebupManagerData,\n): TypedValues => {\n let typedValue: string | Date | number = value;\n let typedFilter: string | Date | number = filterText;\n let isTypedComparison = false;\n\n if (\n obj &&\n objectsIsNumber(obj) &&\n !Number.isNaN(mathNumberify(filterText, webupManagerData.mathLocale))\n ) {\n // Convert to numbers for numeric comparison\n typedValue = parseFloat(value);\n typedFilter = mathNumberify(filterText, webupManagerData.mathLocale, true);\n\n // If parsing fails, treat as 0 for comparison\n if (isNaN(typedValue)) typedValue = 0;\n if (isNaN(typedFilter)) typedFilter = 0;\n isTypedComparison = true;\n } else if (\n obj &&\n objectsIsDate(obj) &&\n datesIsIsoDate(value) &&\n parseDateByLocale(filterText, webupManagerData.datesLocale)\n ) {\n // Convert to Date objects for date comparison\n typedValue = new Date(value);\n typedValue.setHours(0, 0, 0, 0);\n typedFilter =\n parseDateByLocale(filterText, webupManagerData.datesLocale) ?? filterText;\n isTypedComparison = true;\n }\n\n // If conversion to typed comparison failed, fallback to string comparison\n if (!isTypedComparison) {\n typedFilter = filterText;\n switch (true) {\n case objectsIsDate(obj):\n typedValue = datesFormat(value, webupManagerData.datesLocale);\n break;\n case objectsIsNumber(obj):\n typedValue = mathFormat(\n parseFloat(value),\n null as unknown as string,\n webupManagerData.mathLocale,\n );\n break;\n default:\n typedValue = value;\n }\n }\n\n return { typedValue, typedFilter, isTypedComparison };\n};\n\nconst handleComparisonOperator = (\n operator: string | undefined,\n typedValue: string | Date | number,\n typedFilter: string | Date | number,\n): boolean | null => {\n if (!operator || ![\">\", \">=\", \"<\", \"<=\"].includes(operator)) {\n return null;\n }\n\n switch (operator) {\n case \">\":\n return typedValue > typedFilter;\n case \">=\":\n return typedValue >= typedFilter;\n case \"<\":\n return typedValue < typedFilter;\n case \"<=\":\n return typedValue <= typedFilter;\n default:\n return null;\n }\n};\n\nconst handleNegationOperator = (\n value: string,\n filterText: string,\n typedValue: string | Date | number,\n typedFilter: string | Date | number,\n isTypedComparison: boolean,\n startWildcard: boolean,\n endWildcard: boolean,\n): boolean => {\n // For numeric or date types, use typed comparison\n if (isTypedComparison) {\n const returnValue = typedValue.valueOf() !== typedFilter.valueOf();\n return returnValue;\n }\n\n // Match negation for strings\n if (startWildcard && endWildcard) {\n return !value.includes(filterText);\n }\n if (startWildcard) {\n return !value.endsWith(filterText);\n }\n if (endWildcard) {\n return !value.startsWith(filterText);\n }\n\n // Exact match negation\n return value !== filterText;\n};\n\nconst handleWildcardMatch = (\n value: string,\n filterText: string,\n startWildcard: boolean,\n endWildcard: boolean,\n): boolean | null => {\n if (!startWildcard && !endWildcard) {\n return null;\n }\n\n if (startWildcard && endWildcard) {\n return value.includes(filterText);\n }\n if (startWildcard) {\n return value.endsWith(filterText);\n }\n if (endWildcard) {\n return value.startsWith(filterText);\n }\n\n return null;\n};\n\nconst handleDefaultMatch = (\n value: string,\n filter: string,\n filterText: string,\n typedValue: string | Date | number,\n typedFilter: string | Date | number,\n isTypedComparison: boolean,\n): boolean => {\n if (!isTypedComparison) {\n // Non-typed exact match\n if (filter.startsWith(\"'\") && filter.endsWith(\"'\")) {\n return value === filterText;\n } else {\n return value.toLowerCase().includes(filterText.toLowerCase());\n }\n } else {\n return typedValue.valueOf() === typedFilter.valueOf();\n }\n};\n\nconst isSingleFilterMatchValue = (\n value: string,\n filter: string,\n obj: { t: string; p: string; k: string } = { t: \"\", p: \"\", k: \"\" },\n webupManagerData: WebupManagerData,\n): boolean => {\n if (value == null) value = \"\";\n if (filter == null) filter = \"\";\n\n value = value.trim();\n filter = filter.trim();\n\n // Parse filter expression\n const filterParts = parseFilterExpression(filter);\n if (!filterParts) {\n // fallback: inclusion - Non case sensitive\n return value.toLowerCase().includes(filter.toLowerCase());\n }\n\n const { operator, startWildcard, filterText, endWildcard } = filterParts;\n\n // Handle void filter (empty string with quotes)\n const voidResult = handleVoidFilter(filterText, filter, operator, value);\n if (voidResult !== null) {\n return voidResult;\n }\n\n // Convert to appropriate type based on obj.t\n const { typedValue, typedFilter, isTypedComparison } = convertToTypedValues(\n value,\n filterText,\n obj,\n webupManagerData,\n );\n\n // Handle comparison operators (>, >=, <, <=)\n const comparisonResult = handleComparisonOperator(\n operator,\n typedValue,\n typedFilter,\n );\n if (comparisonResult !== null) {\n return comparisonResult;\n }\n\n // Handle negation operator (!)\n if (operator === \"!\") {\n return handleNegationOperator(\n value,\n filterText,\n typedValue,\n typedFilter,\n isTypedComparison,\n startWildcard,\n endWildcard,\n );\n }\n\n // Handle wildcard matching\n const wildcardResult = handleWildcardMatch(\n value,\n filterText,\n startWildcard,\n endWildcard,\n );\n if (wildcardResult !== null) {\n return wildcardResult;\n }\n\n // Default match (exact or inclusion)\n return handleDefaultMatch(\n value,\n filter,\n filterText,\n typedValue,\n typedFilter,\n isTypedComparison,\n );\n};\n\nexport const isFilterMatchValue = (\n value: string,\n filter: string,\n obj: { t: string; p: string; k: string } = { t: \"\", p: \"\", k: \"\" },\n webupManagerData: WebupManagerData = {\n mathLocale: \"it\",\n datesLocale: \"it\",\n themeBackground: \"\",\n },\n): boolean => {\n const filters = filter\n .split(\";\")\n .map(f => f.trim())\n .filter(f => f.length > 0);\n return filters.every(f =>\n isSingleFilterMatchValue(value, f, obj, webupManagerData),\n );\n};\n"]}
@@ -2,3 +2,4 @@ import { SmeupDataObj } from "../types/index";
2
2
  export declare const objectsIsDate: (obj: Omit<SmeupDataObj, "k">) => boolean;
3
3
  export declare const objectsIsNumber: (obj: Omit<SmeupDataObj, "k">) => boolean;
4
4
  export declare const objectsIsVoCodVer: (obj: Omit<SmeupDataObj, "k">) => boolean;
5
+ export declare const objectsIsURL: (obj?: Omit<SmeupDataObj, "k">) => boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.objectsIsVoCodVer = exports.objectsIsNumber = exports.objectsIsDate = void 0;
3
+ exports.objectsIsURL = exports.objectsIsVoCodVer = exports.objectsIsNumber = exports.objectsIsDate = void 0;
4
4
  const objectsIsDate = (obj) => {
5
5
  if (!obj)
6
6
  return false;
@@ -19,4 +19,10 @@ const objectsIsVoCodVer = (obj) => {
19
19
  return "VO" == obj.t && "COD_VER" === obj.p;
20
20
  };
21
21
  exports.objectsIsVoCodVer = objectsIsVoCodVer;
22
+ const objectsIsURL = (obj) => {
23
+ if (!obj)
24
+ return false;
25
+ return "J1" === obj.t || "URL" === obj.t;
26
+ };
27
+ exports.objectsIsURL = objectsIsURL;
22
28
  //# sourceMappingURL=objects-utility.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"objects-utility.js","sourceRoot":"","sources":["../../src/utils/objects-utility.ts"],"names":[],"mappings":";;;AAEO,MAAM,aAAa,GAAG,CAAC,GAA4B,EAAW,EAAE;IACrE,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;AACxB,CAAC,CAAC;AAHW,QAAA,aAAa,iBAGxB;AAEK,MAAM,eAAe,GAAG,CAAC,GAA4B,EAAW,EAAE;IACvE,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AAHW,QAAA,eAAe,mBAG1B;AAEK,MAAM,iBAAiB,GAAG,CAAC,GAA4B,EAAW,EAAE;IACzE,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,OAAO,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC;AAHW,QAAA,iBAAiB,qBAG5B","sourcesContent":["import { SmeupDataObj } from \"../types/index\";\n\nexport const objectsIsDate = (obj: Omit<SmeupDataObj, \"k\">): boolean => {\n if (!obj) return false;\n return \"D8\" === obj.t;\n};\n\nexport const objectsIsNumber = (obj: Omit<SmeupDataObj, \"k\">): boolean => {\n if (!obj) return false;\n return \"NR\" === obj.t || \"NP\" === obj.t;\n};\n\nexport const objectsIsVoCodVer = (obj: Omit<SmeupDataObj, \"k\">): boolean => {\n if (!obj) return false;\n return \"VO\" == obj.t && \"COD_VER\" === obj.p;\n};\n\n"]}
1
+ {"version":3,"file":"objects-utility.js","sourceRoot":"","sources":["../../src/utils/objects-utility.ts"],"names":[],"mappings":";;;AAEO,MAAM,aAAa,GAAG,CAAC,GAA4B,EAAW,EAAE;IACrE,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;AACxB,CAAC,CAAC;AAHW,QAAA,aAAa,iBAGxB;AAEK,MAAM,eAAe,GAAG,CAAC,GAA4B,EAAW,EAAE;IACvE,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AAHW,QAAA,eAAe,mBAG1B;AAEK,MAAM,iBAAiB,GAAG,CAAC,GAA4B,EAAW,EAAE;IACzE,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,OAAO,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC;AAHW,QAAA,iBAAiB,qBAG5B;AAEK,MAAM,YAAY,GAAG,CAAC,GAA6B,EAAW,EAAE;IACrE,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AAHW,QAAA,YAAY,gBAGvB","sourcesContent":["import { SmeupDataObj } from \"../types/index\";\n\nexport const objectsIsDate = (obj: Omit<SmeupDataObj, \"k\">): boolean => {\n if (!obj) return false;\n return \"D8\" === obj.t;\n};\n\nexport const objectsIsNumber = (obj: Omit<SmeupDataObj, \"k\">): boolean => {\n if (!obj) return false;\n return \"NR\" === obj.t || \"NP\" === obj.t;\n};\n\nexport const objectsIsVoCodVer = (obj: Omit<SmeupDataObj, \"k\">): boolean => {\n if (!obj) return false;\n return \"VO\" == obj.t && \"COD_VER\" === obj.p;\n};\n\nexport const objectsIsURL = (obj?: Omit<SmeupDataObj, \"k\">): boolean => {\n if (!obj) return false;\n return \"J1\" === obj.t || \"URL\" === obj.t;\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sme.up/doc-alchemist",
3
- "version": "1.7.0-SNAPSHOT-20251218155723",
3
+ "version": "1.7.0-SNAPSHOT-20251223155346",
4
4
  "description": "Library for generating documents in various formats, including Excel and PDF.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Smeup LAB <info@smeup.com> (https://www.smeup.com/)",
@@ -1,15 +0,0 @@
1
- import { ComponentOptions } from "../../types/component";
2
- export declare enum ChartType {
3
- BAR = "Bar",
4
- LINE = "Line",
5
- PIE = "Pie",
6
- SCATTER = "Scatter"
7
- }
8
- export interface ChartOptions extends ComponentOptions {
9
- Axe?: string;
10
- ForceHeight?: string;
11
- ForceWidth?: string;
12
- Series?: string;
13
- Title?: string;
14
- Typ?: ChartType;
15
- }
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ChartType = void 0;
4
- var ChartType;
5
- (function (ChartType) {
6
- ChartType["BAR"] = "Bar";
7
- ChartType["LINE"] = "Line";
8
- ChartType["PIE"] = "Pie";
9
- ChartType["SCATTER"] = "Scatter";
10
- })(ChartType || (exports.ChartType = ChartType = {}));
11
- //# sourceMappingURL=charts-converter-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"charts-converter-types.js","sourceRoot":"","sources":["../../../src/converters/images/charts-converter-types.ts"],"names":[],"mappings":";;;AAEA,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,0BAAa,CAAA;IACb,wBAAW,CAAA;IACX,gCAAmB,CAAA;AACrB,CAAC,EALW,SAAS,yBAAT,SAAS,QAKpB","sourcesContent":["import { ComponentOptions } from \"../../types/component\";\n\nexport enum ChartType {\n BAR = \"Bar\",\n LINE = \"Line\",\n PIE = \"Pie\",\n SCATTER = \"Scatter\",\n}\n\nexport interface ChartOptions extends ComponentOptions {\n Axe?: string;\n ForceHeight?: string;\n ForceWidth?: string;\n Series?: string;\n Title?: string;\n Typ?: ChartType;\n}\n"]}