@trishchuk/coolors-mcp 1.0.0 → 1.1.0

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 (140) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +20 -8
  2. package/.github/ISSUE_TEMPLATE/feature_request.md +22 -8
  3. package/.github/pull_request_template.md +33 -8
  4. package/.github/workflows/ci.yml +107 -104
  5. package/.github/workflows/deploy-docs.yml +14 -11
  6. package/.github/workflows/release.yml +25 -23
  7. package/README.md +149 -15
  8. package/dist/bin/server.js +997 -256
  9. package/dist/bin/server.js.map +1 -1
  10. package/dist/{chunk-P3ARRKLS.js → chunk-HOMDMKUY.js} +3 -1
  11. package/dist/{chunk-P3ARRKLS.js.map → chunk-HOMDMKUY.js.map} +1 -1
  12. package/dist/{chunk-IQ7NN26V.js → chunk-LHW2ZTOU.js} +14 -2
  13. package/dist/chunk-LHW2ZTOU.js.map +1 -0
  14. package/dist/color/index.js +1 -1
  15. package/dist/coolors-mcp.d.ts +4 -4
  16. package/dist/coolors-mcp.js +1 -1
  17. package/docs/.vitepress/components/ClientGrid.vue +9 -3
  18. package/docs/.vitepress/components/CodeBlock.vue +51 -44
  19. package/docs/.vitepress/components/ConfigModal.vue +151 -67
  20. package/docs/.vitepress/components/DiagramModal.vue +186 -154
  21. package/docs/.vitepress/components/TroubleshootingModal.vue +101 -96
  22. package/docs/.vitepress/config.js +171 -141
  23. package/docs/.vitepress/theme/FundingLayout.vue +65 -54
  24. package/docs/.vitepress/theme/Layout.vue +21 -21
  25. package/docs/.vitepress/theme/components/AdBanner.vue +73 -52
  26. package/docs/.vitepress/theme/components/AdPlaceholder.vue +3 -3
  27. package/docs/.vitepress/theme/components/FundingEffects.vue +77 -53
  28. package/docs/.vitepress/theme/components/FundingHero.vue +78 -63
  29. package/docs/.vitepress/theme/components/SupportSection.vue +106 -89
  30. package/docs/.vitepress/theme/custom-app.css +19 -12
  31. package/docs/.vitepress/theme/custom.css +33 -25
  32. package/docs/.vitepress/theme/index.js +19 -16
  33. package/docs/concepts/accessibility.md +59 -47
  34. package/docs/concepts/color-spaces.md +28 -6
  35. package/docs/concepts/distance-metrics.md +45 -30
  36. package/docs/concepts/hct.md +30 -27
  37. package/docs/concepts/image-analysis.md +52 -21
  38. package/docs/concepts/material-design.md +43 -17
  39. package/docs/concepts/theme-matching.md +64 -40
  40. package/docs/examples/basic-colors.md +92 -108
  41. package/docs/examples/creating-themes.md +104 -108
  42. package/docs/examples/css-refactoring.md +33 -29
  43. package/docs/examples/image-extraction.md +145 -138
  44. package/docs/getting-started.md +45 -34
  45. package/docs/index.md +5 -1
  46. package/docs/installation.md +15 -1
  47. package/docs/tools/accessibility.md +74 -68
  48. package/docs/tools/image-extraction.md +62 -54
  49. package/docs/tools/theme-matching.md +45 -42
  50. package/eslint.config.ts +13 -0
  51. package/jsr.json +1 -1
  52. package/package.json +17 -13
  53. package/src/bin/server.ts +13 -1
  54. package/src/color/__tests__/extract-colors.test.ts +20 -30
  55. package/src/color/apca.ts +105 -0
  56. package/src/color/color-blindness.ts +109 -0
  57. package/src/coolors-mcp.ts +1 -1
  58. package/src/session.ts +10 -2
  59. package/src/theme/matcher.ts +1 -1
  60. package/src/theme/refactor.ts +1 -1
  61. package/src/theme/types.ts +3 -0
  62. package/src/tools/__tests__/cohesion.test.ts +97 -0
  63. package/src/tools/__tests__/color-blindness.test.ts +45 -0
  64. package/src/tools/__tests__/color-conversion.test.ts +38 -0
  65. package/src/tools/__tests__/contrast-checker.test.ts +56 -0
  66. package/src/tools/__tests__/palette-export.test.ts +54 -0
  67. package/src/tools/adjust-color.tool.ts +80 -0
  68. package/src/tools/cohesion.tools.ts +380 -0
  69. package/src/tools/color-blindness.tool.ts +168 -0
  70. package/src/tools/color-conversion.tool.ts +1 -1
  71. package/src/tools/contrast-checker.tool.ts +53 -14
  72. package/src/tools/dislike-analyzer.tool.ts +41 -54
  73. package/src/tools/image-extraction.tools.ts +62 -115
  74. package/src/tools/index.ts +15 -2
  75. package/src/tools/palette-export.tool.ts +174 -0
  76. package/src/tools/palette-with-locks.tool.ts +8 -6
  77. package/src/types.ts +2 -3
  78. package/tsconfig.json +12 -2
  79. package/vitest.config.js +1 -3
  80. package/.claude/settings.local.json +0 -39
  81. package/.env +0 -2
  82. package/.mcp.json +0 -12
  83. package/CLAUDE.md +0 -201
  84. package/DOCUMENTATION.md +0 -274
  85. package/GEMINI.md +0 -54
  86. package/demo/content_based_color.png +0 -0
  87. package/demo/music-player.html +0 -621
  88. package/demo/podcast-player.html +0 -903
  89. package/dist/chunk-IQ7NN26V.js.map +0 -1
  90. package/docs/.vitepress/cache/deps/@braintree_sanitize-url.js +0 -93
  91. package/docs/.vitepress/cache/deps/@braintree_sanitize-url.js.map +0 -7
  92. package/docs/.vitepress/cache/deps/_metadata.json +0 -127
  93. package/docs/.vitepress/cache/deps/chunk-BUSYA2B4.js +0 -9
  94. package/docs/.vitepress/cache/deps/chunk-BUSYA2B4.js.map +0 -7
  95. package/docs/.vitepress/cache/deps/chunk-JD3CXNQ6.js +0 -12683
  96. package/docs/.vitepress/cache/deps/chunk-JD3CXNQ6.js.map +0 -7
  97. package/docs/.vitepress/cache/deps/chunk-SYPOPCWC.js +0 -9719
  98. package/docs/.vitepress/cache/deps/chunk-SYPOPCWC.js.map +0 -7
  99. package/docs/.vitepress/cache/deps/cytoscape-cose-bilkent.js +0 -4710
  100. package/docs/.vitepress/cache/deps/cytoscape-cose-bilkent.js.map +0 -7
  101. package/docs/.vitepress/cache/deps/cytoscape.js +0 -30278
  102. package/docs/.vitepress/cache/deps/cytoscape.js.map +0 -7
  103. package/docs/.vitepress/cache/deps/dayjs.js +0 -285
  104. package/docs/.vitepress/cache/deps/dayjs.js.map +0 -7
  105. package/docs/.vitepress/cache/deps/debug.js +0 -468
  106. package/docs/.vitepress/cache/deps/debug.js.map +0 -7
  107. package/docs/.vitepress/cache/deps/package.json +0 -3
  108. package/docs/.vitepress/cache/deps/prismjs.js +0 -1466
  109. package/docs/.vitepress/cache/deps/prismjs.js.map +0 -7
  110. package/docs/.vitepress/cache/deps/prismjs_components_prism-bash.js +0 -228
  111. package/docs/.vitepress/cache/deps/prismjs_components_prism-bash.js.map +0 -7
  112. package/docs/.vitepress/cache/deps/prismjs_components_prism-javascript.js +0 -142
  113. package/docs/.vitepress/cache/deps/prismjs_components_prism-javascript.js.map +0 -7
  114. package/docs/.vitepress/cache/deps/prismjs_components_prism-json.js +0 -27
  115. package/docs/.vitepress/cache/deps/prismjs_components_prism-json.js.map +0 -7
  116. package/docs/.vitepress/cache/deps/prismjs_components_prism-python.js +0 -65
  117. package/docs/.vitepress/cache/deps/prismjs_components_prism-python.js.map +0 -7
  118. package/docs/.vitepress/cache/deps/prismjs_components_prism-typescript.js +0 -53
  119. package/docs/.vitepress/cache/deps/prismjs_components_prism-typescript.js.map +0 -7
  120. package/docs/.vitepress/cache/deps/prismjs_components_prism-yaml.js +0 -73
  121. package/docs/.vitepress/cache/deps/prismjs_components_prism-yaml.js.map +0 -7
  122. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +0 -4507
  123. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +0 -7
  124. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +0 -584
  125. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +0 -7
  126. package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js +0 -1146
  127. package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js.map +0 -7
  128. package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js +0 -1667
  129. package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js.map +0 -7
  130. package/docs/.vitepress/cache/deps/vitepress___minisearch.js +0 -1814
  131. package/docs/.vitepress/cache/deps/vitepress___minisearch.js.map +0 -7
  132. package/docs/.vitepress/cache/deps/vue.js +0 -344
  133. package/docs/.vitepress/cache/deps/vue.js.map +0 -7
  134. package/examples/theme-matching.md +0 -113
  135. package/mcp-config.json +0 -8
  136. package/note.md +0 -35
  137. package/research_results.md +0 -53
  138. package/src/tools/colors.ts +0 -31
  139. package/src/tools/registry.ts +0 -142
  140. package/src/tools/simple-tools.ts +0 -37
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/coolors-mcp.ts","../src/session.ts"],"sourcesContent":["import { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { EventEmitter } from \"events\";\nimport { StrictEventEmitter } from \"strict-event-emitter-types\";\n\nimport { CoolorsMCPSession } from \"./session.js\";\nimport {\n CoolorsMCPEvents,\n CoolorsMCPSessionAuth,\n ServerOptions,\n Tool,\n ToolParameters,\n} from \"./types.js\";\n\nexport class CoolorsMcp extends (EventEmitter as {\n new (): StrictEventEmitter<EventEmitter, CoolorsMCPEvents>;\n}) {\n #sessions: CoolorsMCPSession[] = [];\n #tools: Tool<CoolorsMCPSessionAuth>[] = [];\n\n constructor(public options: ServerOptions<CoolorsMCPSessionAuth>) {\n super();\n }\n\n public addTool<Params extends ToolParameters>(\n tool: Tool<CoolorsMCPSessionAuth, Params>,\n ) {\n this.#tools.push(tool as unknown as Tool<CoolorsMCPSessionAuth>);\n }\n\n public async start() {\n const transport = new StdioServerTransport();\n const session = new CoolorsMCPSession(this.options, this.#tools);\n this.#sessions.push(session);\n await session.connect(transport);\n this.emit(\"connect\", { session });\n }\n}\n","import { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { Transport } from \"@modelcontextprotocol/sdk/shared/transport.js\";\nimport {\n CallToolRequestSchema,\n ErrorCode,\n ListToolsRequestSchema,\n McpError,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport { EventEmitter } from \"events\";\nimport { StrictEventEmitter } from \"strict-event-emitter-types\";\nimport { toJsonSchema } from \"xsschema\";\n\nimport {\n CoolorsMCPSessionAuth,\n CoolorsMCPSessionEvents,\n ServerOptions,\n Tool,\n} from \"./types.js\";\n\nexport class CoolorsMCPSession extends (EventEmitter as {\n new (): StrictEventEmitter<EventEmitter, CoolorsMCPSessionEvents>;\n}) {\n #server: Server;\n #tools: Tool<CoolorsMCPSessionAuth>[];\n\n constructor(\n options: ServerOptions<CoolorsMCPSessionAuth>,\n tools: Tool<CoolorsMCPSessionAuth>[],\n ) {\n super();\n this.#server = new Server(\n { name: options.name, version: options.version },\n { capabilities: { tools: {} } },\n );\n this.#tools = tools;\n this.setupToolHandlers();\n }\n\n public async connect(transport: Transport) {\n await this.#server.connect(transport);\n this.emit(\"ready\");\n }\n\n private setupToolHandlers() {\n this.#server.setRequestHandler(ListToolsRequestSchema, async () => {\n return {\n tools: await Promise.all(\n this.#tools.map(async (tool) => {\n return {\n annotations: tool.annotations,\n description: tool.description,\n inputSchema: tool.parameters\n ? await toJsonSchema(tool.parameters)\n : {\n additionalProperties: false,\n properties: {},\n type: \"object\",\n },\n name: tool.name,\n };\n }),\n ),\n };\n });\n\n this.#server.setRequestHandler(CallToolRequestSchema, async (request) => {\n const tool = this.#tools.find(\n (tool) => tool.name === request.params.name,\n );\n\n if (!tool) {\n throw new McpError(\n ErrorCode.MethodNotFound,\n `Unknown tool: ${request.params.name}`,\n );\n }\n\n let args: unknown = undefined;\n\n if (tool.parameters) {\n const parsed = await tool.parameters[\"~standard\"].validate(\n request.params.arguments,\n );\n\n if (parsed.issues) {\n const friendlyErrors = parsed.issues\n .map((issue) => {\n const path = issue.path?.join(\".\") || \"root\";\n return `${path}: ${issue.message}`;\n })\n .join(\", \");\n\n throw new McpError(\n ErrorCode.InvalidParams,\n `Tool '${request.params.name}' parameter validation failed: ${friendlyErrors}. Please check the parameter types and values according to the tool's schema.`,\n );\n }\n\n args = parsed.value;\n }\n\n const result = await tool.execute(\n args as Parameters<typeof tool.execute>[0],\n {} as CoolorsMCPSessionAuth,\n );\n\n if (typeof result === \"string\") {\n return {\n content: [{ text: result, type: \"text\" }],\n };\n }\n\n return result;\n });\n }\n}\n"],"mappings":"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","names":["EventEmitter","tool","EventEmitter"]}
@@ -1,93 +0,0 @@
1
- import {
2
- __commonJS
3
- } from "./chunk-BUSYA2B4.js";
4
-
5
- // node_modules/@braintree/sanitize-url/dist/constants.js
6
- var require_constants = __commonJS({
7
- "node_modules/@braintree/sanitize-url/dist/constants.js"(exports) {
8
- "use strict";
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.BLANK_URL = exports.relativeFirstCharacters = exports.whitespaceEscapeCharsRegex = exports.urlSchemeRegex = exports.ctrlCharactersRegex = exports.htmlCtrlEntityRegex = exports.htmlEntitiesRegex = exports.invalidProtocolRegex = void 0;
11
- exports.invalidProtocolRegex = /^([^\w]*)(javascript|data|vbscript)/im;
12
- exports.htmlEntitiesRegex = /&#(\w+)(^\w|;)?/g;
13
- exports.htmlCtrlEntityRegex = /&(newline|tab);/gi;
14
- exports.ctrlCharactersRegex = /[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;
15
- exports.urlSchemeRegex = /^.+(:|&colon;)/gim;
16
- exports.whitespaceEscapeCharsRegex = /(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;
17
- exports.relativeFirstCharacters = [".", "/"];
18
- exports.BLANK_URL = "about:blank";
19
- }
20
- });
21
-
22
- // node_modules/@braintree/sanitize-url/dist/index.js
23
- var require_dist = __commonJS({
24
- "node_modules/@braintree/sanitize-url/dist/index.js"(exports) {
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.sanitizeUrl = void 0;
27
- var constants_1 = require_constants();
28
- function isRelativeUrlWithoutProtocol(url) {
29
- return constants_1.relativeFirstCharacters.indexOf(url[0]) > -1;
30
- }
31
- function decodeHtmlCharacters(str) {
32
- var removedNullByte = str.replace(constants_1.ctrlCharactersRegex, "");
33
- return removedNullByte.replace(constants_1.htmlEntitiesRegex, function(match, dec) {
34
- return String.fromCharCode(dec);
35
- });
36
- }
37
- function isValidUrl(url) {
38
- return URL.canParse(url);
39
- }
40
- function decodeURI(uri) {
41
- try {
42
- return decodeURIComponent(uri);
43
- } catch (e) {
44
- return uri;
45
- }
46
- }
47
- function sanitizeUrl(url) {
48
- if (!url) {
49
- return constants_1.BLANK_URL;
50
- }
51
- var charsToDecode;
52
- var decodedUrl = decodeURI(url.trim());
53
- do {
54
- decodedUrl = decodeHtmlCharacters(decodedUrl).replace(constants_1.htmlCtrlEntityRegex, "").replace(constants_1.ctrlCharactersRegex, "").replace(constants_1.whitespaceEscapeCharsRegex, "").trim();
55
- decodedUrl = decodeURI(decodedUrl);
56
- charsToDecode = decodedUrl.match(constants_1.ctrlCharactersRegex) || decodedUrl.match(constants_1.htmlEntitiesRegex) || decodedUrl.match(constants_1.htmlCtrlEntityRegex) || decodedUrl.match(constants_1.whitespaceEscapeCharsRegex);
57
- } while (charsToDecode && charsToDecode.length > 0);
58
- var sanitizedUrl = decodedUrl;
59
- if (!sanitizedUrl) {
60
- return constants_1.BLANK_URL;
61
- }
62
- if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {
63
- return sanitizedUrl;
64
- }
65
- var trimmedUrl = sanitizedUrl.trimStart();
66
- var urlSchemeParseResults = trimmedUrl.match(constants_1.urlSchemeRegex);
67
- if (!urlSchemeParseResults) {
68
- return sanitizedUrl;
69
- }
70
- var urlScheme = urlSchemeParseResults[0].toLowerCase().trim();
71
- if (constants_1.invalidProtocolRegex.test(urlScheme)) {
72
- return constants_1.BLANK_URL;
73
- }
74
- var backSanitized = trimmedUrl.replace(/\\/g, "/");
75
- if (urlScheme === "mailto:" || urlScheme.includes("://")) {
76
- return backSanitized;
77
- }
78
- if (urlScheme === "http:" || urlScheme === "https:") {
79
- if (!isValidUrl(backSanitized)) {
80
- return constants_1.BLANK_URL;
81
- }
82
- var url_1 = new URL(backSanitized);
83
- url_1.protocol = url_1.protocol.toLowerCase();
84
- url_1.hostname = url_1.hostname.toLowerCase();
85
- return url_1.toString();
86
- }
87
- return backSanitized;
88
- }
89
- exports.sanitizeUrl = sanitizeUrl;
90
- }
91
- });
92
- export default require_dist();
93
- //# sourceMappingURL=@braintree_sanitize-url.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../node_modules/@braintree/sanitize-url/dist/constants.js", "../../../../node_modules/@braintree/sanitize-url/dist/index.js"],
4
- "sourcesContent": ["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BLANK_URL = exports.relativeFirstCharacters = exports.whitespaceEscapeCharsRegex = exports.urlSchemeRegex = exports.ctrlCharactersRegex = exports.htmlCtrlEntityRegex = exports.htmlEntitiesRegex = exports.invalidProtocolRegex = void 0;\nexports.invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nexports.htmlEntitiesRegex = /&#(\\w+)(^\\w|;)?/g;\nexports.htmlCtrlEntityRegex = /&(newline|tab);/gi;\nexports.ctrlCharactersRegex = /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nexports.urlSchemeRegex = /^.+(:|&colon;)/gim;\nexports.whitespaceEscapeCharsRegex = /(\\\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;\nexports.relativeFirstCharacters = [\".\", \"/\"];\nexports.BLANK_URL = \"about:blank\";\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sanitizeUrl = void 0;\nvar constants_1 = require(\"./constants\");\nfunction isRelativeUrlWithoutProtocol(url) {\n return constants_1.relativeFirstCharacters.indexOf(url[0]) > -1;\n}\nfunction decodeHtmlCharacters(str) {\n var removedNullByte = str.replace(constants_1.ctrlCharactersRegex, \"\");\n return removedNullByte.replace(constants_1.htmlEntitiesRegex, function (match, dec) {\n return String.fromCharCode(dec);\n });\n}\nfunction isValidUrl(url) {\n return URL.canParse(url);\n}\nfunction decodeURI(uri) {\n try {\n return decodeURIComponent(uri);\n }\n catch (e) {\n // Ignoring error\n // It is possible that the URI contains a `%` not associated\n // with URI/URL-encoding.\n return uri;\n }\n}\nfunction sanitizeUrl(url) {\n if (!url) {\n return constants_1.BLANK_URL;\n }\n var charsToDecode;\n var decodedUrl = decodeURI(url.trim());\n do {\n decodedUrl = decodeHtmlCharacters(decodedUrl)\n .replace(constants_1.htmlCtrlEntityRegex, \"\")\n .replace(constants_1.ctrlCharactersRegex, \"\")\n .replace(constants_1.whitespaceEscapeCharsRegex, \"\")\n .trim();\n decodedUrl = decodeURI(decodedUrl);\n charsToDecode =\n decodedUrl.match(constants_1.ctrlCharactersRegex) ||\n decodedUrl.match(constants_1.htmlEntitiesRegex) ||\n decodedUrl.match(constants_1.htmlCtrlEntityRegex) ||\n decodedUrl.match(constants_1.whitespaceEscapeCharsRegex);\n } while (charsToDecode && charsToDecode.length > 0);\n var sanitizedUrl = decodedUrl;\n if (!sanitizedUrl) {\n return constants_1.BLANK_URL;\n }\n if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n return sanitizedUrl;\n }\n // Remove any leading whitespace before checking the URL scheme\n var trimmedUrl = sanitizedUrl.trimStart();\n var urlSchemeParseResults = trimmedUrl.match(constants_1.urlSchemeRegex);\n if (!urlSchemeParseResults) {\n return sanitizedUrl;\n }\n var urlScheme = urlSchemeParseResults[0].toLowerCase().trim();\n if (constants_1.invalidProtocolRegex.test(urlScheme)) {\n return constants_1.BLANK_URL;\n }\n var backSanitized = trimmedUrl.replace(/\\\\/g, \"/\");\n // Handle special cases for mailto: and custom deep-link protocols\n if (urlScheme === \"mailto:\" || urlScheme.includes(\"://\")) {\n return backSanitized;\n }\n // For http and https URLs, perform additional validation\n if (urlScheme === \"http:\" || urlScheme === \"https:\") {\n if (!isValidUrl(backSanitized)) {\n return constants_1.BLANK_URL;\n }\n var url_1 = new URL(backSanitized);\n url_1.protocol = url_1.protocol.toLowerCase();\n url_1.hostname = url_1.hostname.toLowerCase();\n return url_1.toString();\n }\n return backSanitized;\n}\nexports.sanitizeUrl = sanitizeUrl;\n"],
5
- "mappings": ";;;;;AAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,YAAY,QAAQ,0BAA0B,QAAQ,6BAA6B,QAAQ,iBAAiB,QAAQ,sBAAsB,QAAQ,sBAAsB,QAAQ,oBAAoB,QAAQ,uBAAuB;AAC3O,YAAQ,uBAAuB;AAC/B,YAAQ,oBAAoB;AAC5B,YAAQ,sBAAsB;AAC9B,YAAQ,sBAAsB;AAC9B,YAAQ,iBAAiB;AACzB,YAAQ,6BAA6B;AACrC,YAAQ,0BAA0B,CAAC,KAAK,GAAG;AAC3C,YAAQ,YAAY;AAAA;AAAA;;;ACVpB;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,cAAc;AACtB,QAAI,cAAc;AAClB,aAAS,6BAA6B,KAAK;AACvC,aAAO,YAAY,wBAAwB,QAAQ,IAAI,CAAC,CAAC,IAAI;AAAA,IACjE;AACA,aAAS,qBAAqB,KAAK;AAC/B,UAAI,kBAAkB,IAAI,QAAQ,YAAY,qBAAqB,EAAE;AACrE,aAAO,gBAAgB,QAAQ,YAAY,mBAAmB,SAAU,OAAO,KAAK;AAChF,eAAO,OAAO,aAAa,GAAG;AAAA,MAClC,CAAC;AAAA,IACL;AACA,aAAS,WAAW,KAAK;AACrB,aAAO,IAAI,SAAS,GAAG;AAAA,IAC3B;AACA,aAAS,UAAU,KAAK;AACpB,UAAI;AACA,eAAO,mBAAmB,GAAG;AAAA,MACjC,SACO,GAAG;AAIN,eAAO;AAAA,MACX;AAAA,IACJ;AACA,aAAS,YAAY,KAAK;AACtB,UAAI,CAAC,KAAK;AACN,eAAO,YAAY;AAAA,MACvB;AACA,UAAI;AACJ,UAAI,aAAa,UAAU,IAAI,KAAK,CAAC;AACrC,SAAG;AACC,qBAAa,qBAAqB,UAAU,EACvC,QAAQ,YAAY,qBAAqB,EAAE,EAC3C,QAAQ,YAAY,qBAAqB,EAAE,EAC3C,QAAQ,YAAY,4BAA4B,EAAE,EAClD,KAAK;AACV,qBAAa,UAAU,UAAU;AACjC,wBACI,WAAW,MAAM,YAAY,mBAAmB,KAC5C,WAAW,MAAM,YAAY,iBAAiB,KAC9C,WAAW,MAAM,YAAY,mBAAmB,KAChD,WAAW,MAAM,YAAY,0BAA0B;AAAA,MACnE,SAAS,iBAAiB,cAAc,SAAS;AACjD,UAAI,eAAe;AACnB,UAAI,CAAC,cAAc;AACf,eAAO,YAAY;AAAA,MACvB;AACA,UAAI,6BAA6B,YAAY,GAAG;AAC5C,eAAO;AAAA,MACX;AAEA,UAAI,aAAa,aAAa,UAAU;AACxC,UAAI,wBAAwB,WAAW,MAAM,YAAY,cAAc;AACvE,UAAI,CAAC,uBAAuB;AACxB,eAAO;AAAA,MACX;AACA,UAAI,YAAY,sBAAsB,CAAC,EAAE,YAAY,EAAE,KAAK;AAC5D,UAAI,YAAY,qBAAqB,KAAK,SAAS,GAAG;AAClD,eAAO,YAAY;AAAA,MACvB;AACA,UAAI,gBAAgB,WAAW,QAAQ,OAAO,GAAG;AAEjD,UAAI,cAAc,aAAa,UAAU,SAAS,KAAK,GAAG;AACtD,eAAO;AAAA,MACX;AAEA,UAAI,cAAc,WAAW,cAAc,UAAU;AACjD,YAAI,CAAC,WAAW,aAAa,GAAG;AAC5B,iBAAO,YAAY;AAAA,QACvB;AACA,YAAI,QAAQ,IAAI,IAAI,aAAa;AACjC,cAAM,WAAW,MAAM,SAAS,YAAY;AAC5C,cAAM,WAAW,MAAM,SAAS,YAAY;AAC5C,eAAO,MAAM,SAAS;AAAA,MAC1B;AACA,aAAO;AAAA,IACX;AACA,YAAQ,cAAc;AAAA;AAAA;",
6
- "names": []
7
- }
@@ -1,127 +0,0 @@
1
- {
2
- "hash": "b238d3de",
3
- "configHash": "5131fe82",
4
- "lockfileHash": "5dcae059",
5
- "browserHash": "e824103e",
6
- "optimized": {
7
- "vue": {
8
- "src": "../../../../node_modules/vue/dist/vue.runtime.esm-bundler.js",
9
- "file": "vue.js",
10
- "fileHash": "928a2568",
11
- "needsInterop": false
12
- },
13
- "vitepress > @vue/devtools-api": {
14
- "src": "../../../../node_modules/@vue/devtools-api/dist/index.js",
15
- "file": "vitepress___@vue_devtools-api.js",
16
- "fileHash": "16df9887",
17
- "needsInterop": false
18
- },
19
- "vitepress > @vueuse/core": {
20
- "src": "../../../../node_modules/@vueuse/core/index.mjs",
21
- "file": "vitepress___@vueuse_core.js",
22
- "fileHash": "ca0be31d",
23
- "needsInterop": false
24
- },
25
- "@braintree/sanitize-url": {
26
- "src": "../../../../node_modules/@braintree/sanitize-url/dist/index.js",
27
- "file": "@braintree_sanitize-url.js",
28
- "fileHash": "7e02544c",
29
- "needsInterop": true
30
- },
31
- "dayjs": {
32
- "src": "../../../../node_modules/dayjs/dayjs.min.js",
33
- "file": "dayjs.js",
34
- "fileHash": "af894476",
35
- "needsInterop": true
36
- },
37
- "debug": {
38
- "src": "../../../../node_modules/debug/src/browser.js",
39
- "file": "debug.js",
40
- "fileHash": "64e8b39d",
41
- "needsInterop": true
42
- },
43
- "cytoscape-cose-bilkent": {
44
- "src": "../../../../node_modules/cytoscape-cose-bilkent/cytoscape-cose-bilkent.js",
45
- "file": "cytoscape-cose-bilkent.js",
46
- "fileHash": "f30d644d",
47
- "needsInterop": true
48
- },
49
- "cytoscape": {
50
- "src": "../../../../node_modules/cytoscape/dist/cytoscape.esm.mjs",
51
- "file": "cytoscape.js",
52
- "fileHash": "b22d7f5a",
53
- "needsInterop": false
54
- },
55
- "vitepress > @vueuse/integrations/useFocusTrap": {
56
- "src": "../../../../node_modules/@vueuse/integrations/useFocusTrap.mjs",
57
- "file": "vitepress___@vueuse_integrations_useFocusTrap.js",
58
- "fileHash": "e6e2e240",
59
- "needsInterop": false
60
- },
61
- "vitepress > mark.js/src/vanilla.js": {
62
- "src": "../../../../node_modules/mark.js/src/vanilla.js",
63
- "file": "vitepress___mark__js_src_vanilla__js.js",
64
- "fileHash": "c956e466",
65
- "needsInterop": false
66
- },
67
- "vitepress > minisearch": {
68
- "src": "../../../../node_modules/minisearch/dist/es/index.js",
69
- "file": "vitepress___minisearch.js",
70
- "fileHash": "8beb61c4",
71
- "needsInterop": false
72
- },
73
- "prismjs": {
74
- "src": "../../../../node_modules/prismjs/prism.js",
75
- "file": "prismjs.js",
76
- "fileHash": "f6861f5f",
77
- "needsInterop": true
78
- },
79
- "prismjs/components/prism-bash": {
80
- "src": "../../../../node_modules/prismjs/components/prism-bash.js",
81
- "file": "prismjs_components_prism-bash.js",
82
- "fileHash": "d636ca5c",
83
- "needsInterop": true
84
- },
85
- "prismjs/components/prism-python": {
86
- "src": "../../../../node_modules/prismjs/components/prism-python.js",
87
- "file": "prismjs_components_prism-python.js",
88
- "fileHash": "901b1add",
89
- "needsInterop": true
90
- },
91
- "prismjs/components/prism-typescript": {
92
- "src": "../../../../node_modules/prismjs/components/prism-typescript.js",
93
- "file": "prismjs_components_prism-typescript.js",
94
- "fileHash": "c4bf171e",
95
- "needsInterop": true
96
- },
97
- "prismjs/components/prism-javascript": {
98
- "src": "../../../../node_modules/prismjs/components/prism-javascript.js",
99
- "file": "prismjs_components_prism-javascript.js",
100
- "fileHash": "63110d26",
101
- "needsInterop": true
102
- },
103
- "prismjs/components/prism-json": {
104
- "src": "../../../../node_modules/prismjs/components/prism-json.js",
105
- "file": "prismjs_components_prism-json.js",
106
- "fileHash": "58a15f2e",
107
- "needsInterop": true
108
- },
109
- "prismjs/components/prism-yaml": {
110
- "src": "../../../../node_modules/prismjs/components/prism-yaml.js",
111
- "file": "prismjs_components_prism-yaml.js",
112
- "fileHash": "b01ef0f8",
113
- "needsInterop": true
114
- }
115
- },
116
- "chunks": {
117
- "chunk-SYPOPCWC": {
118
- "file": "chunk-SYPOPCWC.js"
119
- },
120
- "chunk-JD3CXNQ6": {
121
- "file": "chunk-JD3CXNQ6.js"
122
- },
123
- "chunk-BUSYA2B4": {
124
- "file": "chunk-BUSYA2B4.js"
125
- }
126
- }
127
- }
@@ -1,9 +0,0 @@
1
- var __getOwnPropNames = Object.getOwnPropertyNames;
2
- var __commonJS = (cb, mod) => function __require() {
3
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
4
- };
5
-
6
- export {
7
- __commonJS
8
- };
9
- //# sourceMappingURL=chunk-BUSYA2B4.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }