extract-color.js.map (9370B)
1 { 2 "version": 3, 3 "sources": ["../src/extract-color.tsx", "swift:/Users/runner/work/extensions/extensions/extensions/color-picker/swift/extract-color"], 4 "sourcesContent": ["import { Action, ActionPanel, getSelectedFinderItems, Grid, Icon, showToast, Toast } from \"@raycast/api\";\nimport { useEffect, useState } from \"react\";\nimport { extractColor } from \"swift:../swift/extract-color\";\n\ntype FinalColor = {\n hex: string;\n red: number;\n green: number;\n blue: number;\n area: number;\n hue: number;\n saturation: number;\n lightness: number;\n intensity: number;\n};\n\nexport default function Command() {\n const [columns, setColumns] = useState(3);\n const [isLoading, setIsLoading] = useState(true);\n const [colors, setColors] = useState<FinalColor[]>([]);\n const [info, setInfo] = useState<{\n title: string;\n description: string;\n }>({\n title: \"No image found\",\n description: \"Select an image from finder to extract colors\",\n });\n\n async function loadColors() {\n const toast = await showToast({\n style: Toast.Style.Animated,\n title: \"Extracting colors\",\n });\n let path: string | undefined;\n\n try {\n const items = await getSelectedFinderItems();\n if (items.length === 0) {\n setIsLoading(false);\n }\n path = items[0].path;\n } catch {\n // did not find any selected items\n }\n\n if (path) {\n extractColor(path, 40, false) // Set dominantOnly to true\n .then((colors: FinalColor[]) => {\n setColors(colors);\n toast.style = Toast.Style.Success;\n toast.title = \"Colors extracted\";\n toast.message = `${colors.length} colors extracted from the image`;\n setIsLoading(false);\n })\n .catch(() => {\n setIsLoading(false);\n toast.style = Toast.Style.Failure;\n toast.title = \"Error extracting colors\";\n toast.message = \"Please select a valid image file\";\n });\n } else {\n setIsLoading(false);\n setInfo({\n title: \"No image selected\",\n description: \"Please select an image from finder\",\n });\n toast.style = Toast.Style.Failure;\n toast.title = \"No image selected\";\n toast.message = \"Please select an image from finder\";\n }\n }\n\n useEffect(() => {\n loadColors();\n }, []);\n\n return (\n <Grid\n columns={columns}\n inset={Grid.Inset.Zero}\n isLoading={isLoading}\n searchBarAccessory={\n <Grid.Dropdown\n tooltip=\"Grid Item Size\"\n storeValue\n onChange={(newValue) => {\n setColumns(parseInt(newValue));\n setIsLoading(false);\n }}\n >\n <Grid.Dropdown.Item title=\"Large\" value=\"4\" />\n <Grid.Dropdown.Item title=\"Medium\" value=\"6\" />\n <Grid.Dropdown.Item title=\"Small\" value=\"8\" />\n </Grid.Dropdown>\n }\n >\n <Grid.EmptyView icon={Icon.Eye} title={info.title} description={info.description} />\n\n {!isLoading &&\n colors.map((color, i) => (\n <Grid.Item\n key={color.hex + i}\n content={{ color: color.hex }}\n title={`${color.hex.toUpperCase()}`}\n actions={\n <ActionPanel>\n <Action.CopyToClipboard content={color.hex} />\n </ActionPanel>\n }\n />\n ))}\n </Grid>\n );\n}\n", "\nimport { environment } from \"@raycast/api\";\nimport { join } from \"path\";\nimport { chmod } from \"fs/promises\";\nimport { spawn } from \"child_process\";\n\nasync function runSwiftFunction(command, ...args) {\n const swiftPath = join(environment.assetsPath, \"compiled_raycast_swift/extract-color\");\n await chmod(swiftPath, \"755\");\n\n return new Promise((resolve, reject) => {\n const commandArgs = [command];\n for (const arg of args) {\n try {\n commandArgs.push(JSON.stringify(arg, (k, v) => v === undefined ? null : v));\n } catch (err) {\n reject(new SwiftError(\"Failed to serialize input to JSON: \" + err.message));\n return;\n }\n }\n const child = spawn(swiftPath, commandArgs);\n const stdout = [];\n const stderr = [];\n\n child.stdout?.on(\"data\", (data) => {\n stdout.push(data.toString());\n });\n child.stderr?.on(\"data\", (data) => {\n stderr.push(data.toString());\n });\n\n child.on(\"exit\", (code) => {\n if (code === 0) {\n try {\n const result = stdout.join(\"\").trim();\n if (result.length != 0) {\n resolve(JSON.parse(result));\n } else {\n resolve(null);\n }\n } catch (err) {\n const error = new SwiftError(\"Failed to deserialize result from JSON: \" + err.message);\n error.stdout = stdout.join(\"\").trim();\n error.stderr = stderr.join(\"\").trim();\n reject(error);\n }\n } else {\n const error = new SwiftError(stderr.join(\"\").trim() || stdout.join(\"\").trim() || \"Could not get any data\");\n error.stdout = stdout.join(\"\").trim();\n error.stderr = stderr.join(\"\").trim();\n reject(error);\n }\n });\n\n child.on(\"error\", (error) => {\n reject(error);\n });\n });\n}\n\nexport async function extractColor(filePath, count, dominantOnly) {\n return await runSwiftFunction(\"extractColor\", filePath, count, dominantOnly)\n}\n\nexport class SwiftError extends Error {\n constructor(message) {\n super(message);\n this.name = \"SwiftError\";\n }\n}\n"], 5 "mappings": "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", 6 "names": ["extract_color_exports", "__export", "Command", "__toCommonJS", "import_api", "import_react", "import_api", "import_path", "import_promises", "import_child_process", "runSwiftFunction", "command", "args", "swiftPath", "resolve", "reject", "commandArgs", "arg", "k", "v", "err", "SwiftError", "child", "stdout", "stderr", "data", "code", "result", "error", "extractColor", "filePath", "count", "dominantOnly", "message", "import_jsx_runtime", "Command", "columns", "setColumns", "isLoading", "setIsLoading", "colors", "setColors", "info", "setInfo", "loadColors", "toast", "path", "items", "extractColor", "newValue", "color", "i"] 7 }