@cyberalien/svg-utils 1.0.5 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,5 @@
1
1
  import { GeneratedAssetPath } from "../../types/options.js";
2
+ declare const defaultHelpersDirectory = "helpers";
2
3
  /**
3
4
  * Generate asset filename based on options
4
5
  *
@@ -7,4 +8,4 @@ import { GeneratedAssetPath } from "../../types/options.js";
7
8
  * @returns Asset path
8
9
  */
9
10
  declare function getGeneratedAssetFilename(filename: string, rootPath: GeneratedAssetPath): GeneratedAssetPath;
10
- export { getGeneratedAssetFilename };
11
+ export { defaultHelpersDirectory, getGeneratedAssetFilename };
@@ -1,3 +1,4 @@
1
+ const defaultHelpersDirectory = "helpers";
1
2
  /**
2
3
  * Generate asset filename based on options
3
4
  *
@@ -13,4 +14,4 @@ function getGeneratedAssetFilename(filename, rootPath) {
13
14
  };
14
15
  }
15
16
 
16
- export { getGeneratedAssetFilename };
17
+ export { defaultHelpersDirectory, getGeneratedAssetFilename };
@@ -4,5 +4,5 @@ import { FactoryComponentImports } from "../imports/types.js";
4
4
  /**
5
5
  * Adds getSizeProps() function to assets
6
6
  */
7
- declare function addSizeFunctionAsset(imports: FactoryComponentImports, assets: GeneratedAssetFile[], options: Pick<ComponentFactoryOptions, 'rootPath'>): string;
7
+ declare function addSizeFunctionAsset(imports: FactoryComponentImports, assets: GeneratedAssetFile[], options: Pick<ComponentFactoryOptions, 'rootPath' | 'helpersDirectory'>): string;
8
8
  export { addSizeFunctionAsset };
@@ -1,4 +1,4 @@
1
- import { getGeneratedAssetFilename } from "../filenames/asset.js";
1
+ import { defaultHelpersDirectory, getGeneratedAssetFilename } from "../filenames/asset.js";
2
2
 
3
3
  const functionName = "getSizeProps";
4
4
  const functionContent = `
@@ -9,7 +9,7 @@ const precision = 100;
9
9
 
10
10
  function calculateSize(size, ratio) {
11
11
  if (ratio === 1) {
12
- return value;
12
+ return size;
13
13
  }
14
14
 
15
15
  const oldParts = size.split(unitsSplit);
@@ -67,7 +67,7 @@ export { ${functionName} };
67
67
  * Adds getSizeProps() function to assets
68
68
  */
69
69
  function addSizeFunctionAsset(imports, assets, options) {
70
- const filename = getGeneratedAssetFilename("helpers/size.js", options.rootPath);
70
+ const filename = getGeneratedAssetFilename(`${options.helpersDirectory ?? defaultHelpersDirectory}/size.js`, options.rootPath);
71
71
  imports.named[filename.import] = new Set([functionName]);
72
72
  assets.push({
73
73
  ...filename,
@@ -19,8 +19,12 @@ function createSvelteComponent(data, options) {
19
19
  const useTS = options.ts ?? false;
20
20
  const assets = [];
21
21
  const imports = createFactoryImports();
22
+ const dependencies = /* @__PURE__ */ new Set();
22
23
  const hasFallback = !!data.fallback;
23
- if (hasFallback) imports.default["@iconify/css-svelte"] = "Icon";
24
+ if (hasFallback) {
25
+ imports.default["@iconify/css-svelte"] = "Icon";
26
+ dependencies.add("@iconify/css-svelte");
27
+ }
24
28
  const styleContent = generateCSSFilesForComponent(data.icon, imports, assets, {
25
29
  ...options,
26
30
  componentType: "svelte"
@@ -99,7 +103,8 @@ ${template}
99
103
  assets,
100
104
  content,
101
105
  style,
102
- types
106
+ types,
107
+ dependencies: dependencies.size ? dependencies : void 0
103
108
  };
104
109
  }
105
110
 
@@ -19,6 +19,7 @@ interface FactoryGeneratedComponent {
19
19
  content: string;
20
20
  style?: string;
21
21
  types?: string;
22
+ dependencies?: Set<string>;
22
23
  }
23
24
  /**
24
25
  * Component data with filename
@@ -15,6 +15,7 @@ interface ComponentFactoryFileSystemOptions {
15
15
  doubleDirsForComponents: boolean;
16
16
  rootPath: GeneratedAssetPath;
17
17
  cssPath: GeneratedAssetPath;
18
+ helpersDirectory?: string;
18
19
  sharedTypes?: boolean;
19
20
  }
20
21
  /**
@@ -18,8 +18,12 @@ import { stringifyFactoryPropsAsJSON } from "./helpers/props/object.js";
18
18
  function createVueFunctionalComponent(data, options) {
19
19
  const assets = [];
20
20
  const imports = createFactoryImports();
21
+ const dependencies = /* @__PURE__ */ new Set();
21
22
  const hasFallback = !!data.fallback;
22
- if (hasFallback) imports.named["@iconify/css-vue"] = new Set(["Icon"]);
23
+ if (hasFallback) {
24
+ imports.named["@iconify/css-vue"] = new Set(["Icon"]);
25
+ dependencies.add("@iconify/css-vue");
26
+ }
23
27
  const vueNamedImports = new Set(["defineComponent", "h"]);
24
28
  imports.named["vue"] = vueNamedImports;
25
29
  const style = generateCSSFilesForComponent(data.icon, imports, assets, options);
@@ -94,7 +98,8 @@ function createVueFunctionalComponent(data, options) {
94
98
  assets,
95
99
  content: `${stringifyFactoryImports(imports)}\n${componentFunction}\nexport default Component;\n`,
96
100
  style: isEmbeddedCSS ? void 0 : style,
97
- types
101
+ types,
102
+ dependencies: dependencies.size ? dependencies : void 0
98
103
  };
99
104
  }
100
105
 
@@ -19,8 +19,12 @@ function createVueComponent(data, options) {
19
19
  const useTS = options.ts ?? false;
20
20
  const assets = [];
21
21
  const imports = createFactoryImports();
22
+ const dependencies = /* @__PURE__ */ new Set();
22
23
  const hasFallback = !!data.fallback;
23
- if (hasFallback) imports.named["@iconify/css-vue"] = new Set(["Icon"]);
24
+ if (hasFallback) {
25
+ imports.named["@iconify/css-vue"] = new Set(["Icon"]);
26
+ dependencies.add("@iconify/css-vue");
27
+ }
24
28
  const vueNamedImports = /* @__PURE__ */ new Set();
25
29
  imports.named["vue"] = vueNamedImports;
26
30
  const styleContent = generateCSSFilesForComponent(data.icon, imports, assets, options);
@@ -82,7 +86,7 @@ function createVueComponent(data, options) {
82
86
  const usedProps = getUsedFactoryProps(props);
83
87
  if (usedProps.length) {
84
88
  const tsCode = useTS ? `<{\n${stringifyFactoryPropTypes(props)}\n}>` : "";
85
- componentCode.unshift(`const props = defineProps${tsCode}(${JSON.stringify(usedProps)});\n`);
89
+ componentCode.unshift(`const props = defineProps${tsCode}(${tsCode ? "" : JSON.stringify(usedProps)});\n`);
86
90
  }
87
91
  const template = `<template><${hasFallback ? "Icon" : "svg"} ${stringifyFactoryProps(props, ":{prop}=\"{value}\"")} /></template>`;
88
92
  let content = `<script setup${useTS ? " lang=\"ts\"" : ""}>
@@ -98,7 +102,8 @@ ${template}
98
102
  assets,
99
103
  content,
100
104
  style,
101
- types
105
+ types,
106
+ dependencies: dependencies.size ? dependencies : void 0
102
107
  };
103
108
  }
104
109
 
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "type": "module",
4
4
  "description": "Common functions for working with SVG used by various packages.",
5
5
  "author": "Vjacheslav Trushkin",
6
- "version": "1.0.5",
6
+ "version": "1.0.7",
7
7
  "license": "MIT",
8
8
  "bugs": "https://github.com/cyberalien/svg-utils/issues",
9
9
  "homepage": "https://cyberalien.dev/",