use-vibes 0.0.6-dev-ci-test

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 (89) hide show
  1. package/LICENSE.md +232 -0
  2. package/README.md +604 -0
  3. package/components/ControlsBar.d.ts +20 -0
  4. package/components/ControlsBar.js +80 -0
  5. package/components/ControlsBar.js.map +1 -0
  6. package/components/ImgGen.css +675 -0
  7. package/components/ImgGen.d.ts +25 -0
  8. package/components/ImgGen.js +257 -0
  9. package/components/ImgGen.js.map +1 -0
  10. package/components/ImgGenUtils/ImgGenDisplay.d.ts +3 -0
  11. package/components/ImgGenUtils/ImgGenDisplay.js +192 -0
  12. package/components/ImgGenUtils/ImgGenDisplay.js.map +1 -0
  13. package/components/ImgGenUtils/ImgGenDisplayPlaceholder.d.ts +3 -0
  14. package/components/ImgGenUtils/ImgGenDisplayPlaceholder.js +107 -0
  15. package/components/ImgGenUtils/ImgGenDisplayPlaceholder.js.map +1 -0
  16. package/components/ImgGenUtils/ImgGenDisplayUtils.d.ts +27 -0
  17. package/components/ImgGenUtils/ImgGenDisplayUtils.js +95 -0
  18. package/components/ImgGenUtils/ImgGenDisplayUtils.js.map +1 -0
  19. package/components/ImgGenUtils/ImgGenError.d.ts +3 -0
  20. package/components/ImgGenUtils/ImgGenError.js +6 -0
  21. package/components/ImgGenUtils/ImgGenError.js.map +1 -0
  22. package/components/ImgGenUtils/ImgGenFileDrop.d.ts +12 -0
  23. package/components/ImgGenUtils/ImgGenFileDrop.js +50 -0
  24. package/components/ImgGenUtils/ImgGenFileDrop.js.map +1 -0
  25. package/components/ImgGenUtils/ImgGenModal.d.ts +24 -0
  26. package/components/ImgGenUtils/ImgGenModal.js +28 -0
  27. package/components/ImgGenUtils/ImgGenModal.js.map +1 -0
  28. package/components/ImgGenUtils/ImgGenModeUtils.d.ts +9 -0
  29. package/components/ImgGenUtils/ImgGenModeUtils.js +48 -0
  30. package/components/ImgGenUtils/ImgGenModeUtils.js.map +1 -0
  31. package/components/ImgGenUtils/ImgGenPromptWaiting.d.ts +12 -0
  32. package/components/ImgGenUtils/ImgGenPromptWaiting.js +37 -0
  33. package/components/ImgGenUtils/ImgGenPromptWaiting.js.map +1 -0
  34. package/components/ImgGenUtils/ImgGenUploadWaiting.d.ts +17 -0
  35. package/components/ImgGenUtils/ImgGenUploadWaiting.js +132 -0
  36. package/components/ImgGenUtils/ImgGenUploadWaiting.js.map +1 -0
  37. package/components/ImgGenUtils/index.d.ts +6 -0
  38. package/components/ImgGenUtils/index.js +7 -0
  39. package/components/ImgGenUtils/index.js.map +1 -0
  40. package/components/ImgGenUtils/overlays/DeleteConfirmationOverlay.d.ts +9 -0
  41. package/components/ImgGenUtils/overlays/DeleteConfirmationOverlay.js +30 -0
  42. package/components/ImgGenUtils/overlays/DeleteConfirmationOverlay.js.map +1 -0
  43. package/components/ImgGenUtils/overlays/ImageOverlay.d.ts +22 -0
  44. package/components/ImgGenUtils/overlays/ImageOverlay.js +8 -0
  45. package/components/ImgGenUtils/overlays/ImageOverlay.js.map +1 -0
  46. package/components/ImgGenUtils/types.d.ts +29 -0
  47. package/components/ImgGenUtils/types.js +2 -0
  48. package/components/ImgGenUtils/types.js.map +1 -0
  49. package/components/ImgGenUtils.d.ts +2 -0
  50. package/components/ImgGenUtils.js +3 -0
  51. package/components/ImgGenUtils.js.map +1 -0
  52. package/components/PromptBar.d.ts +11 -0
  53. package/components/PromptBar.js +16 -0
  54. package/components/PromptBar.js.map +1 -0
  55. package/hooks/image-gen/image-generator.d.ts +11 -0
  56. package/hooks/image-gen/image-generator.js +136 -0
  57. package/hooks/image-gen/image-generator.js.map +1 -0
  58. package/hooks/image-gen/index.d.ts +7 -0
  59. package/hooks/image-gen/index.js +6 -0
  60. package/hooks/image-gen/index.js.map +1 -0
  61. package/hooks/image-gen/types.d.ts +66 -0
  62. package/hooks/image-gen/types.js +2 -0
  63. package/hooks/image-gen/types.js.map +1 -0
  64. package/hooks/image-gen/use-image-gen.d.ts +4 -0
  65. package/hooks/image-gen/use-image-gen.js +544 -0
  66. package/hooks/image-gen/use-image-gen.js.map +1 -0
  67. package/hooks/image-gen/utils.d.ts +20 -0
  68. package/hooks/image-gen/utils.js +159 -0
  69. package/hooks/image-gen/utils.js.map +1 -0
  70. package/hooks/use-image-gen.d.ts +1 -0
  71. package/hooks/use-image-gen.js +2 -0
  72. package/hooks/use-image-gen.js.map +1 -0
  73. package/index.d.ts +17 -0
  74. package/index.js +15 -0
  75. package/index.js.map +1 -0
  76. package/package.json +74 -0
  77. package/style-loader.d.ts +1 -0
  78. package/style-loader.js +23 -0
  79. package/style-loader.js.map +1 -0
  80. package/tsconfig.json +18 -0
  81. package/utils/base64.d.ts +1 -0
  82. package/utils/base64.js +13 -0
  83. package/utils/base64.js.map +1 -0
  84. package/utils/debug.d.ts +2 -0
  85. package/utils/debug.js +8 -0
  86. package/utils/debug.js.map +1 -0
  87. package/utils/style-utils.d.ts +17 -0
  88. package/utils/style-utils.js +15 -0
  89. package/utils/style-utils.js.map +1 -0
@@ -0,0 +1,159 @@
1
+ export const MODULE_STATE = {
2
+ pendingImageGenCalls: new Map(),
3
+ pendingPrompts: new Set(),
4
+ processingRequests: new Set(),
5
+ requestTimestamps: new Map(),
6
+ requestCounter: 0,
7
+ createdDocuments: new Map(), // Track document IDs created for each generation request
8
+ pendingDocumentCreations: new Map(),
9
+ };
10
+ export function cleanupRequestKey(key) {
11
+ MODULE_STATE.pendingImageGenCalls.delete(key);
12
+ MODULE_STATE.processingRequests.delete(key);
13
+ MODULE_STATE.pendingPrompts.delete(key);
14
+ MODULE_STATE.pendingDocumentCreations.delete(key);
15
+ MODULE_STATE.requestTimestamps.delete(key);
16
+ }
17
+ export const cleanupInterval = setInterval(() => {
18
+ const now = Date.now();
19
+ for (const [key, timestamp] of MODULE_STATE.requestTimestamps.entries()) {
20
+ if (now - timestamp > 5 * 60 * 1000) {
21
+ MODULE_STATE.createdDocuments.delete(key);
22
+ cleanupRequestKey(key);
23
+ }
24
+ }
25
+ }, 60000);
26
+ export function hashInput(prompt, options) {
27
+ const inputString = JSON.stringify({
28
+ prompt,
29
+ options,
30
+ });
31
+ let hash = 2166136261;
32
+ for (let i = 0; i < inputString.length; i++) {
33
+ hash ^= inputString.charCodeAt(i);
34
+ hash = Math.imul(hash, 16777619);
35
+ }
36
+ const hashHex = (hash >>> 0).toString(16).padStart(8, '0');
37
+ const requestId = hashHex.slice(0, 12);
38
+ return `${requestId}-${Date.now().toString(36)}`;
39
+ }
40
+ export function base64ToFile(base64Data, filename) {
41
+ const byteString = atob(base64Data);
42
+ const ab = new ArrayBuffer(byteString.length);
43
+ const ia = new Uint8Array(ab);
44
+ for (let i = 0; i < byteString.length; i++) {
45
+ ia[i] = byteString.charCodeAt(i);
46
+ }
47
+ const blob = new Blob([ab], { type: 'image/png' });
48
+ return new File([blob], filename, { type: 'image/png' });
49
+ }
50
+ export function generateVersionId(versionNumber) {
51
+ return `v${versionNumber}`;
52
+ }
53
+ export function getVersionsFromDocument(document) {
54
+ if (document?.versions && document.versions.length > 0) {
55
+ return {
56
+ versions: document.versions,
57
+ currentVersion: document.currentVersion ?? document.versions.length,
58
+ };
59
+ }
60
+ if (document?._files?.image) {
61
+ return {
62
+ versions: [{ id: 'v1', created: document.created || Date.now() }],
63
+ currentVersion: 1,
64
+ };
65
+ }
66
+ return { versions: [], currentVersion: 0 };
67
+ }
68
+ export function generatePromptKey(promptNumber) {
69
+ return `p${promptNumber}`;
70
+ }
71
+ export function getPromptsFromDocument(document) {
72
+ if (document?.prompts && document?.currentPromptKey) {
73
+ return {
74
+ prompts: document.prompts,
75
+ currentPromptKey: document.currentPromptKey,
76
+ };
77
+ }
78
+ if (document?.prompt) {
79
+ return {
80
+ prompts: {
81
+ p1: { text: document.prompt, created: document.created || Date.now() },
82
+ },
83
+ currentPromptKey: 'p1',
84
+ };
85
+ }
86
+ return { prompts: {}, currentPromptKey: '' };
87
+ }
88
+ export function addNewVersion(document, newImageFile, newPrompt) {
89
+ const { versions } = getVersionsFromDocument(document);
90
+ const versionCount = versions.length + 1;
91
+ const newVersionId = generateVersionId(versionCount);
92
+ const { prompts, currentPromptKey } = getPromptsFromDocument(document);
93
+ const updatedPrompts = { ...prompts };
94
+ let updatedCurrentPromptKey = currentPromptKey;
95
+ if (newPrompt && (!currentPromptKey || newPrompt !== prompts[currentPromptKey]?.text)) {
96
+ const promptCount = Object.keys(updatedPrompts).length + 1;
97
+ updatedCurrentPromptKey = generatePromptKey(promptCount);
98
+ updatedPrompts[updatedCurrentPromptKey] = {
99
+ text: newPrompt,
100
+ created: Date.now(),
101
+ };
102
+ }
103
+ else if (!updatedCurrentPromptKey && document.prompt) {
104
+ updatedCurrentPromptKey = 'p1';
105
+ updatedPrompts['p1'] = {
106
+ text: document.prompt,
107
+ created: document.created || Date.now(),
108
+ };
109
+ }
110
+ const updatedFiles = { ...(document._files || {}) };
111
+ updatedFiles[newVersionId] = newImageFile;
112
+ if (versionCount === 1 && document._files?.image) {
113
+ updatedFiles['v1'] = document._files.image;
114
+ delete updatedFiles.image;
115
+ }
116
+ return {
117
+ ...document,
118
+ currentVersion: versionCount - 1, // Make it 0-based
119
+ versions: [
120
+ ...versions,
121
+ {
122
+ id: newVersionId,
123
+ created: Date.now(),
124
+ promptKey: updatedCurrentPromptKey,
125
+ },
126
+ ],
127
+ prompts: updatedPrompts,
128
+ currentPromptKey: updatedCurrentPromptKey,
129
+ _files: updatedFiles,
130
+ };
131
+ }
132
+ export function getRelevantOptions(options) {
133
+ if (!options)
134
+ return {};
135
+ const relevantOptions = {};
136
+ if (options.size)
137
+ relevantOptions.size = options.size;
138
+ if (options.quality)
139
+ relevantOptions.quality = options.quality;
140
+ if (options.model)
141
+ relevantOptions.model = options.model;
142
+ if (options.style)
143
+ relevantOptions.style = options.style;
144
+ return relevantOptions;
145
+ }
146
+ export function generateSafeFilename(promptText) {
147
+ const maxPromptChars = 40;
148
+ const cleanedPrompt = promptText
149
+ .toLowerCase()
150
+ .replace(/[^a-z0-9\s-]/g, '')
151
+ .replace(/\s+/g, '-')
152
+ .substring(0, maxPromptChars)
153
+ .replace(/-+$/g, '');
154
+ const now = new Date();
155
+ const datePart = `${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, '0')}${String(now.getDate()).padStart(2, '0')}`;
156
+ const timePart = `${String(now.getHours()).padStart(2, '0')}${String(now.getMinutes()).padStart(2, '0')}`;
157
+ return `${cleanedPrompt}-${datePart}-${timePart}.png`;
158
+ }
159
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../jsr/hooks/image-gen/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './image-gen/index.js';
@@ -0,0 +1,2 @@
1
+ export * from './image-gen/index.js';
2
+ //# sourceMappingURL=use-image-gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-image-gen.js","sourceRoot":"","sources":["../../jsr/hooks/use-image-gen.ts"],"names":[],"mappings":"AAMA,cAAc,sBAAsB,CAAC"}
package/index.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ import { imageGen, callAi, type ImageGenOptions, type ImageResponse } from 'call-ai';
2
+ export { imageGen, callAi, type ImageGenOptions, type ImageResponse };
3
+ export { default as ImgGen } from './components/ImgGen.js';
4
+ export type { ImgGenProps } from './components/ImgGen.js';
5
+ export { ControlsBar } from './components/ControlsBar.js';
6
+ export { useImageGen, hashInput } from './hooks/image-gen/index.js';
7
+ export { type ImgGenClasses, defaultClasses } from './utils/style-utils.js';
8
+ export { base64ToFile } from './utils/base64.js';
9
+ export { PromptBar } from './components/PromptBar.js';
10
+ export { ImageOverlay } from './components/ImgGenUtils/overlays/ImageOverlay.js';
11
+ export { MODULE_STATE } from './hooks/image-gen/utils.js';
12
+ export { type ImageDocument } from './hooks/image-gen/types.js';
13
+ export { addNewVersion } from './hooks/image-gen/utils.js';
14
+ export { ImgGenDisplay } from './components/ImgGenUtils/ImgGenDisplay.js';
15
+ export { ImgGenModal } from './components/ImgGenUtils/ImgGenModal.jsx';
16
+ export { ImgGenDisplayPlaceholder } from './components/ImgGenUtils/ImgGenDisplayPlaceholder.js';
17
+ export { type UseImageGenOptions, type UseImageGenResult, type PartialImageDocument, } from './hooks/image-gen/types.js';
package/index.js ADDED
@@ -0,0 +1,15 @@
1
+ import { imageGen, callAi } from 'call-ai';
2
+ export { imageGen, callAi };
3
+ export { default as ImgGen } from './components/ImgGen.js';
4
+ export { ControlsBar } from './components/ControlsBar.js';
5
+ export { useImageGen, hashInput } from './hooks/image-gen/index.js';
6
+ export { defaultClasses } from './utils/style-utils.js';
7
+ export { base64ToFile } from './utils/base64.js';
8
+ export { PromptBar } from './components/PromptBar.js';
9
+ export { ImageOverlay } from './components/ImgGenUtils/overlays/ImageOverlay.js';
10
+ export { MODULE_STATE } from './hooks/image-gen/utils.js';
11
+ export { addNewVersion } from './hooks/image-gen/utils.js';
12
+ export { ImgGenDisplay } from './components/ImgGenUtils/ImgGenDisplay.js';
13
+ export { ImgGenModal } from './components/ImgGenUtils/ImgGenModal.jsx';
14
+ export { ImgGenDisplayPlaceholder } from './components/ImgGenUtils/ImgGenDisplayPlaceholder.js';
15
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../jsr/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAA4C,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAA4C,CAAC;AAGtE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EAAsB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG5E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,mDAAmD,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAEvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC"}
package/package.json ADDED
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "use-vibes",
3
+ "version": "0.0.6-dev-ci-test",
4
+ "type": "module",
5
+ "description": "Transform any DOM element into an AI-powered micro-app",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./index.d.ts",
9
+ "import": "./index.js"
10
+ },
11
+ "./style-loader": {
12
+ "types": "./style-loader.d.ts",
13
+ "import": "./style-loader.js"
14
+ }
15
+ },
16
+ "keywords": [
17
+ "ai",
18
+ "dom",
19
+ "micro-app",
20
+ "generator",
21
+ "web",
22
+ "esm",
23
+ "typescript"
24
+ ],
25
+ "contributors": [
26
+ "J Chris Anderson",
27
+ "Meno Abels"
28
+ ],
29
+ "license": "Apache-2.0",
30
+ "dependencies": {
31
+ "call-ai": "0.0.6-dev-ci-test",
32
+ "use-fireproof": "0.23.5",
33
+ "uuid": "^11.1.0"
34
+ },
35
+ "peerDependencies": {
36
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
37
+ },
38
+ "devDependencies": {
39
+ "@eslint/js": "^9.31.0",
40
+ "@fireproof/core-cli": "^0.23.6",
41
+ "@testing-library/jest-dom": "^6.6.3",
42
+ "@testing-library/react": "^16.3.0",
43
+ "@types/react": "^19.1.0",
44
+ "@types/react-dom": "^19.1.2",
45
+ "@vitejs/plugin-react": "^4.4.1",
46
+ "@vitest/browser": "^3.2.4",
47
+ "eslint": "^9.31.0",
48
+ "eslint-plugin-import": "^2.31.0",
49
+ "eslint-plugin-react": "^7.37.5",
50
+ "jsdom": "^26.1.0",
51
+ "playwright": "^1.54.1",
52
+ "playwright-chromium": "^1.54.1",
53
+ "prettier": "^3.6.2",
54
+ "react-dom": "^19.1.0",
55
+ "rimraf": "^5.0.5",
56
+ "typescript": "^5.8.2",
57
+ "typescript-eslint": "^8.36.0",
58
+ "vitest": "^3.2.4"
59
+ },
60
+ "scripts": {
61
+ "build": "core-cli tsc",
62
+ "copy-css": "mkdir -p dist/components && cp src/components/ImgGen.css dist/components/",
63
+ "build:watch": "tsc --watch",
64
+ "dev:build": "tsc --watch",
65
+ "lint": "eslint src --ext .ts,.tsx",
66
+ "lint:fix": "eslint src --ext .ts,.tsx --fix --rule 'no-unused-vars: 1' --rule 'no-empty: 1' --rule '@typescript-eslint/no-unused-vars: 1'",
67
+ "format": "prettier --write \"./**/*.{js,jsx,ts,tsx,json,md}\"",
68
+ "test": "vitest run",
69
+ "test:watch": "vitest",
70
+ "clean": "rimraf dist",
71
+ "typecheck": "tsc --noEmit",
72
+ "check": "pnpm lint && pnpm format && pnpm typecheck && pnpm test"
73
+ }
74
+ }
@@ -0,0 +1 @@
1
+ export declare function bootstrapUseVibesStyles(): boolean;
@@ -0,0 +1,23 @@
1
+ export function bootstrapUseVibesStyles() {
2
+ if (typeof document === 'undefined') {
3
+ return false;
4
+ }
5
+ const cssPath = './components/ImgGen.css';
6
+ if (document.querySelector(`link[data-use-vibes-css]`)) {
7
+ return false;
8
+ }
9
+ try {
10
+ const link = document.createElement('link');
11
+ link.rel = 'stylesheet';
12
+ link.href = new URL(cssPath, import.meta.url).toString();
13
+ link.setAttribute('data-use-vibes-css', 'true');
14
+ document.head.appendChild(link);
15
+ return true;
16
+ }
17
+ catch (e) {
18
+ console.warn('Failed to auto-load use-vibes styles:', e);
19
+ return false;
20
+ }
21
+ }
22
+ bootstrapUseVibesStyles();
23
+ //# sourceMappingURL=style-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-loader.js","sourceRoot":"","sources":["../jsr/style-loader.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,uBAAuB,GAAY;IAEjD,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,yBAAyB,CAAC;IAG1C,IAAI,QAAQ,CAAC,aAAa,CAAC,0BAA0B,CAAC,EAAE,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC;QAExB,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzD,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;QAGhD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;AAAA,CACF;AAGD,uBAAuB,EAAE,CAAC"}
package/tsconfig.json ADDED
@@ -0,0 +1,18 @@
1
+ {
2
+ "extends": [
3
+ "/home/runner/work/vibes.diy/vibes.diy/tsconfig.dist.json"
4
+ ],
5
+ "compilerOptions": {
6
+ "outDir": "../npm/",
7
+ "noEmit": false
8
+ },
9
+ "include": [
10
+ "**/*"
11
+ ],
12
+ "exclude": [
13
+ "node_modules",
14
+ "dist",
15
+ ".git",
16
+ ".vscode"
17
+ ]
18
+ }
@@ -0,0 +1 @@
1
+ export declare function base64ToFile(base64Data: string, filename?: string, mimeType?: string): File;
@@ -0,0 +1,13 @@
1
+ export function base64ToFile(base64Data, filename = 'generated-image.png', mimeType = 'image/png') {
2
+ const base64Content = base64Data.includes('base64,')
3
+ ? base64Data.split('base64,')[1]
4
+ : base64Data;
5
+ const binaryStr = atob(base64Content);
6
+ const bytes = new Uint8Array(binaryStr.length);
7
+ for (let i = 0; i < binaryStr.length; i++) {
8
+ bytes[i] = binaryStr.charCodeAt(i);
9
+ }
10
+ const blob = new Blob([bytes], { type: mimeType });
11
+ return new File([blob], filename, { type: mimeType });
12
+ }
13
+ //# sourceMappingURL=base64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64.js","sourceRoot":"","sources":["../../jsr/utils/base64.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAC1B,UAAkB,EAClB,QAAQ,GAAG,qBAAqB,EAChC,QAAQ,GAAG,WAAW,EAChB;IAEN,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;QAClD,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,UAAU,CAAC;IAGf,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IAGtC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAGD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnD,OAAO,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAAA,CACvD"}
@@ -0,0 +1,2 @@
1
+ export declare const isDebug: () => boolean;
2
+ export declare function logDebug(...args: unknown[]): void;
package/utils/debug.js ADDED
@@ -0,0 +1,8 @@
1
+ export const isDebug = () => Boolean(import.meta.env?.DEV) &&
2
+ (typeof window === 'undefined' || localStorage.getItem('debugDelete') === '1');
3
+ export function logDebug(...args) {
4
+ if (isDebug()) {
5
+ console.log(...args);
6
+ }
7
+ }
8
+ //# sourceMappingURL=debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../jsr/utils/debug.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,GAAY,EAAE,CACnC,OAAO,CAAE,OAAO,IAA+C,CAAC,GAAG,EAAE,GAAG,CAAC;IACzE,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;AAEjF,MAAM,UAAU,QAAQ,CAAC,GAAG,IAAe,EAAE;IAC3C,IAAI,OAAO,EAAE,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,CAAC;AAAA,CACF"}
@@ -0,0 +1,17 @@
1
+ export declare function combineClasses(...classes: (string | boolean | null | undefined)[]): string;
2
+ export interface ImgGenClasses {
3
+ readonly root: string;
4
+ readonly container: string;
5
+ readonly image: string;
6
+ readonly overlay: string;
7
+ readonly progress: string;
8
+ readonly placeholder: string;
9
+ readonly error: string;
10
+ readonly controls: string;
11
+ readonly button: string;
12
+ readonly prompt: string;
13
+ readonly deleteOverlay: string;
14
+ readonly dropZone: string;
15
+ readonly uploadWaiting: string;
16
+ }
17
+ export declare const defaultClasses: Partial<ImgGenClasses>;
@@ -0,0 +1,15 @@
1
+ export function combineClasses(...classes) {
2
+ const validClasses = classes.filter(Boolean);
3
+ const allClasses = [...validClasses];
4
+ validClasses.forEach((cls) => {
5
+ if (cls.startsWith('imggen-')) {
6
+ const legacyClass = cls.replace('imggen-', 'img-gen-');
7
+ if (!allClasses.includes(legacyClass)) {
8
+ allClasses.push(legacyClass);
9
+ }
10
+ }
11
+ });
12
+ return allClasses.join(' ');
13
+ }
14
+ export const defaultClasses = {};
15
+ //# sourceMappingURL=style-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-utils.js","sourceRoot":"","sources":["../../jsr/utils/style-utils.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,cAAc,CAAC,GAAG,OAAgD,EAAU;IAE1F,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;IAGzD,MAAM,UAAU,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAGrC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAE9B,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAEvD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IAAA,CACF,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAAA,CAC7B;AAqCD,MAAM,CAAC,MAAM,cAAc,GAA2B,EAAE,CAAC"}