{"version":3,"mappings":"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","names":["svgTagMultiple","execBatch","nodes","response","spawnDialog","defineAsyncComponent","__vitePreload","action","t","TagMultipleSvg","isPublicShare","node","Permission","context","result","tagSvg","registerFileSidebarAction","registerSidebarAction","colors","key","colorNames","reverseNames","name","cs","string","prefix","value","model","abbr","hex","rgba","per","keyword","rgb","match","i","hexAlpha","i2","clamp","hsl","alpha","h","s","l","a","hwb","w","b","hexDouble","r","g","hsla","hwba","number_","min","max","string_","cssKeywords","reverseKeywords","convert","LAB_FT","srgbNonlinearTransform","c","cc","srgbNonlinearTransformInv","channels","labels","delta","rdif","gdif","bdif","v","diff","diffc","lp","mp","sp","aa","bb","k","m","y","comparativeDistance","x","reversed","currentClosestDistance","currentClosestKeyword","distance","z","xyz","t3","t2","t1","smin","lmin","sv","hsv","hi","f","p","q","vmin","sl","wh","bl","ratio","n","cmyk","oklab","ll","oklch","lab","y2","x2","z2","lch","hr","args","saturation","ansi","color","mult","rem","colorString","char","integer","chroma","hue","grayscale","hcg","pure","mg","apple","gray","buildGraph","graph","models","conversions","length","deriveBFS","fromModel","queue","current","adjacents","adjacent","link","from","to","wrapConversion","toModel","path","fn","cur","route","conversion","wrapRaw","wrappedFn","arg0","wrapRounded","routes","routeModels","skippedModels","hashedModelKeys","limiters","Color","object","newArray","zeroArray","keys","hashedKeys","limit","places","self","arguments_","roundToPlace","getset","maxfn","rgbArray","alphaHex","lum","element","chan","color2","lum1","lum2","contrastRatio","degrees","mixinColor","weight","color1","w1","w2","assertArray","roundTo","number","channel","modifier","array","isDarkModeEnabled","darkModePreference","isHighContrastModeEnabled","highContrastPreference","invertTextColor","colorContrast","isBrightColor","calculateLuma","elementColor","backgroundColor","brightBackground","blurredBackground","mix","contrast","minContrast","iteration","epsilon","hexToHSL","hslToHex","factor","hexToRGB","red","green","blue","luminance1","luminance2","cache","renderInline","subscribe","updateSystemTagsHtml","addTag","removeTag","updateTag","systemTagsHtml","tag","index","updateSystemTagsColorAttribute","renderTag","isMore","tagElement","cachedTag","mainBackgroundColor","primaryElement","tags","getNodeSystemTags","systemTagsElement","fetchTags","error","logger","moreTagElement","rootPath","client","getClient","formatReportPayload","tagId","getDavNameSpaces","getDavProperties","tagToNode","Folder","getRemoteURL","getCurrentUser","getContents","tagsCache","tagIdStr","folder","contentsResponse","getRootPath","stat","resultToNode","systemTagsViewId","registerSystemTagsView","getNavigation","View","view","FileType","dir","DefaultType","registerDavProperty","registerFileAction","bulkSystemTagsAction","inlineSystemTagsAction","openInFilesAction"],"ignoreList":[0,2,4,5,6,7,8,9,10],"sources":["../node_modules/@mdi/svg/svg/tag-multiple-outline.svg?raw","../build/frontend/apps/systemtags/src/files_actions/bulkSystemTagsAction.ts","../node_modules/@mdi/svg/svg/tag-outline.svg?raw","../build/frontend/apps/systemtags/src/files_actions/filesSidebarAction.ts","../node_modules/color-string/node_modules/color-name/index.js","../node_modules/color-string/index.js","../node_modules/color/node_modules/color-name/index.js","../node_modules/color/node_modules/color-convert/conversions.js","../node_modules/color/node_modules/color-convert/route.js","../node_modules/color/node_modules/color-convert/index.js","../node_modules/color/index.js","../build/frontend/apps/systemtags/src/utils/colorUtils.ts","../build/frontend/apps/systemtags/src/files_actions/inlineSystemTagsAction.ts","../build/frontend/apps/systemtags/src/services/systemtags.ts","../build/frontend/apps/systemtags/src/files_views/systemtagsView.ts","../build/frontend/apps/systemtags/src/files_actions/openInFilesAction.ts","../build/frontend/apps/systemtags/src/init.ts"],"sourcesContent":["export default \"\"","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { ActionContext, ActionContextSingle, IFileAction } from '@nextcloud/files'\n\nimport TagMultipleSvg from '@mdi/svg/svg/tag-multiple-outline.svg?raw'\nimport { Permission } from '@nextcloud/files'\nimport { t } from '@nextcloud/l10n'\nimport { isPublicShare } from '@nextcloud/sharing/public'\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog'\nimport { defineAsyncComponent } from 'vue'\n\n/**\n * Spawn a dialog to add or remove tags from multiple nodes.\n *\n * @param context - The action context\n * @param context.nodes - Nodes to modify tags for\n */\nasync function execBatch({ nodes }: ActionContext | ActionContextSingle): Promise<(null | boolean)[]> {\n\tconst response = await spawnDialog(\n\t\tdefineAsyncComponent(() => import('../components/SystemTagPicker.vue')),\n\t\t{\n\t\t\tnodes,\n\t\t},\n\t)\n\treturn Array(nodes.length)\n\t\t.fill(response)\n}\n\nexport const action: IFileAction = {\n\tid: 'systemtags:bulk',\n\tdisplayName: () => t('systemtags', 'Manage tags'),\n\ticonSvgInline: () => TagMultipleSvg,\n\n\t// If the app is disabled, the action is not available anyway\n\tenabled({ nodes }) {\n\t\tif (isPublicShare()) {\n\t\t\treturn false\n\t\t}\n\n\t\tif (nodes.length === 0) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Disabled for non dav resources\n\t\tif (nodes.some((node) => !node.isDavResource)) {\n\t\t\treturn false\n\t\t}\n\n\t\t// We need to have the update permission on all nodes\n\t\treturn !nodes.some((node) => (node.permissions & Permission.UPDATE) === 0)\n\t},\n\n\tasync exec(context: ActionContextSingle) {\n\t\tconst [result] = await execBatch(context)\n\t\treturn result!\n\t},\n\n\texecBatch,\n\n\thotkey: {\n\t\tdescription: t('systemtags', 'Manage tags'),\n\t\tkey: 't',\n\t},\n}\n","export default \"\"","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport tagSvg from '@mdi/svg/svg/tag-outline.svg?raw'\nimport { registerSidebarAction } from '@nextcloud/files'\nimport { t } from '@nextcloud/l10n'\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog'\nimport { defineAsyncComponent } from 'vue'\n\n/**\n * Register the \"Add tags\" action in the file sidebar\n */\nexport function registerFileSidebarAction() {\n\tregisterSidebarAction({\n\t\tid: 'systemtags',\n\t\torder: 20,\n\t\tdisplayName() {\n\t\t\treturn t('systemtags', 'Add tags')\n\t\t},\n\t\tenabled() {\n\t\t\treturn true\n\t\t},\n\t\ticonSvgInline() {\n\t\t\treturn tagSvg\n\t\t},\n\t\tonClick({ node }) {\n\t\t\treturn spawnDialog(\n\t\t\t\tdefineAsyncComponent(() => import('../components/SystemTagPicker.vue')),\n\t\t\t\t{\n\t\t\t\t\tnodes: [node],\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\t})\n}\n","const colors = {\n\taliceblue: [240, 248, 255],\n\tantiquewhite: [250, 235, 215],\n\taqua: [0, 255, 255],\n\taquamarine: [127, 255, 212],\n\tazure: [240, 255, 255],\n\tbeige: [245, 245, 220],\n\tbisque: [255, 228, 196],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [255, 235, 205],\n\tblue: [0, 0, 255],\n\tblueviolet: [138, 43, 226],\n\tbrown: [165, 42, 42],\n\tburlywood: [222, 184, 135],\n\tcadetblue: [95, 158, 160],\n\tchartreuse: [127, 255, 0],\n\tchocolate: [210, 105, 30],\n\tcoral: [255, 127, 80],\n\tcornflowerblue: [100, 149, 237],\n\tcornsilk: [255, 248, 220],\n\tcrimson: [220, 20, 60],\n\tcyan: [0, 255, 255],\n\tdarkblue: [0, 0, 139],\n\tdarkcyan: [0, 139, 139],\n\tdarkgoldenrod: [184, 134, 11],\n\tdarkgray: [169, 169, 169],\n\tdarkgreen: [0, 100, 0],\n\tdarkgrey: [169, 169, 169],\n\tdarkkhaki: [189, 183, 107],\n\tdarkmagenta: [139, 0, 139],\n\tdarkolivegreen: [85, 107, 47],\n\tdarkorange: [255, 140, 0],\n\tdarkorchid: [153, 50, 204],\n\tdarkred: [139, 0, 0],\n\tdarksalmon: [233, 150, 122],\n\tdarkseagreen: [143, 188, 143],\n\tdarkslateblue: [72, 61, 139],\n\tdarkslategray: [47, 79, 79],\n\tdarkslategrey: [47, 79, 79],\n\tdarkturquoise: [0, 206, 209],\n\tdarkviolet: [148, 0, 211],\n\tdeeppink: [255, 20, 147],\n\tdeepskyblue: [0, 191, 255],\n\tdimgray: [105, 105, 105],\n\tdimgrey: [105, 105, 105],\n\tdodgerblue: [30, 144, 255],\n\tfirebrick: [178, 34, 34],\n\tfloralwhite: [255, 250, 240],\n\tforestgreen: [34, 139, 34],\n\tfuchsia: [255, 0, 255],\n\tgainsboro: [220, 220, 220],\n\tghostwhite: [248, 248, 255],\n\tgold: [255, 215, 0],\n\tgoldenrod: [218, 165, 32],\n\tgray: [128, 128, 128],\n\tgreen: [0, 128, 0],\n\tgreenyellow: [173, 255, 47],\n\tgrey: [128, 128, 128],\n\thoneydew: [240, 255, 240],\n\thotpink: [255, 105, 180],\n\tindianred: [205, 92, 92],\n\tindigo: [75, 0, 130],\n\tivory: [255, 255, 240],\n\tkhaki: [240, 230, 140],\n\tlavender: [230, 230, 250],\n\tlavenderblush: [255, 240, 245],\n\tlawngreen: [124, 252, 0],\n\tlemonchiffon: [255, 250, 205],\n\tlightblue: [173, 216, 230],\n\tlightcoral: [240, 128, 128],\n\tlightcyan: [224, 255, 255],\n\tlightgoldenrodyellow: [250, 250, 210],\n\tlightgray: [211, 211, 211],\n\tlightgreen: [144, 238, 144],\n\tlightgrey: [211, 211, 211],\n\tlightpink: [255, 182, 193],\n\tlightsalmon: [255, 160, 122],\n\tlightseagreen: [32, 178, 170],\n\tlightskyblue: [135, 206, 250],\n\tlightslategray: [119, 136, 153],\n\tlightslategrey: [119, 136, 153],\n\tlightsteelblue: [176, 196, 222],\n\tlightyellow: [255, 255, 224],\n\tlime: [0, 255, 0],\n\tlimegreen: [50, 205, 50],\n\tlinen: [250, 240, 230],\n\tmagenta: [255, 0, 255],\n\tmaroon: [128, 0, 0],\n\tmediumaquamarine: [102, 205, 170],\n\tmediumblue: [0, 0, 205],\n\tmediumorchid: [186, 85, 211],\n\tmediumpurple: [147, 112, 219],\n\tmediumseagreen: [60, 179, 113],\n\tmediumslateblue: [123, 104, 238],\n\tmediumspringgreen: [0, 250, 154],\n\tmediumturquoise: [72, 209, 204],\n\tmediumvioletred: [199, 21, 133],\n\tmidnightblue: [25, 25, 112],\n\tmintcream: [245, 255, 250],\n\tmistyrose: [255, 228, 225],\n\tmoccasin: [255, 228, 181],\n\tnavajowhite: [255, 222, 173],\n\tnavy: [0, 0, 128],\n\toldlace: [253, 245, 230],\n\tolive: [128, 128, 0],\n\tolivedrab: [107, 142, 35],\n\torange: [255, 165, 0],\n\torangered: [255, 69, 0],\n\torchid: [218, 112, 214],\n\tpalegoldenrod: [238, 232, 170],\n\tpalegreen: [152, 251, 152],\n\tpaleturquoise: [175, 238, 238],\n\tpalevioletred: [219, 112, 147],\n\tpapayawhip: [255, 239, 213],\n\tpeachpuff: [255, 218, 185],\n\tperu: [205, 133, 63],\n\tpink: [255, 192, 203],\n\tplum: [221, 160, 221],\n\tpowderblue: [176, 224, 230],\n\tpurple: [128, 0, 128],\n\trebeccapurple: [102, 51, 153],\n\tred: [255, 0, 0],\n\trosybrown: [188, 143, 143],\n\troyalblue: [65, 105, 225],\n\tsaddlebrown: [139, 69, 19],\n\tsalmon: [250, 128, 114],\n\tsandybrown: [244, 164, 96],\n\tseagreen: [46, 139, 87],\n\tseashell: [255, 245, 238],\n\tsienna: [160, 82, 45],\n\tsilver: [192, 192, 192],\n\tskyblue: [135, 206, 235],\n\tslateblue: [106, 90, 205],\n\tslategray: [112, 128, 144],\n\tslategrey: [112, 128, 144],\n\tsnow: [255, 250, 250],\n\tspringgreen: [0, 255, 127],\n\tsteelblue: [70, 130, 180],\n\ttan: [210, 180, 140],\n\tteal: [0, 128, 128],\n\tthistle: [216, 191, 216],\n\ttomato: [255, 99, 71],\n\tturquoise: [64, 224, 208],\n\tviolet: [238, 130, 238],\n\twheat: [245, 222, 179],\n\twhite: [255, 255, 255],\n\twhitesmoke: [245, 245, 245],\n\tyellow: [255, 255, 0],\n\tyellowgreen: [154, 205, 50],\n}\n\nfor (const key in colors) Object.freeze(colors[key]);\nexport default Object.freeze(colors);","import colorNames from 'color-name';\n\nconst reverseNames = Object.create(null);\n\n// Create a list of reverse color names\nfor (const name in colorNames) {\n\tif (Object.hasOwn(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nconst cs = {\n\tto: {},\n\tget: {},\n};\n\ncs.get = function (string) {\n\tconst prefix = string.slice(0, 3).toLowerCase();\n\tlet value;\n\tlet model;\n\tswitch (prefix) {\n\t\tcase 'hsl': {\n\t\t\tvalue = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'hwb': {\n\t\t\tvalue = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tvalue = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (!value) {\n\t\treturn null;\n\t}\n\n\treturn {model, value};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst abbr = /^#([a-f\\d]{3,4})$/i;\n\tconst hex = /^#([a-f\\d]{6})([a-f\\d]{2})?$/i;\n\tconst rgba = /^rgba?\\(\\s*([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(?=[\\s,])\\s*(?:,\\s*)?([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(?=[\\s,])\\s*(?:,\\s*)?([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)\\s*(?:[\\s,|/]\\s*([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(%?)\\s*)?\\)$/i;\n\tconst per = /^rgba?\\(\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[\\s,|/]\\s*([+-]?[\\d.]+)(%?)\\s*)?\\)$/i;\n\tconst keyword = /^(\\w+)$/;\n\n\tlet rgb = [0, 0, 0, 1];\n\tlet match;\n\tlet i;\n\tlet hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tconst i2 = i * 2;\n\t\t\trgb[i] = Number.parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Number.parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Number.parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Number.parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Number.parseFloat(match[i + 1]);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(Number.parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.toLowerCase().match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!Object.hasOwn(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// eslint-disable-next-line unicorn/prefer-spread\n\t\trgb = colorNames[match[1]].slice();\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[,|/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:e[+-]?\\d+)?)\\s*)?\\)$/i;\n\tconst match = string.match(hsl);\n\n\tif (match) {\n\t\tconst alpha = Number.parseFloat(match[4]);\n\t\tconst h = ((Number.parseFloat(match[1]) % 360) + 360) % 360;\n\t\tconst s = clamp(Number.parseFloat(match[2]), 0, 100);\n\t\tconst l = clamp(Number.parseFloat(match[3]), 0, 100);\n\t\tconst a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*[\\s,]\\s*([+-]?[\\d.]+)%\\s*[\\s,]\\s*([+-]?[\\d.]+)%\\s*(?:[\\s,]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:e[+-]?\\d+)?)\\s*)?\\)$/i;\n\tconst match = string.match(hwb);\n\n\tif (match) {\n\t\tconst alpha = Number.parseFloat(match[4]);\n\t\tconst h = ((Number.parseFloat(match[1]) % 360) + 360) % 360;\n\t\tconst w = clamp(Number.parseFloat(match[2]), 0, 100);\n\t\tconst b = clamp(Number.parseFloat(match[3]), 0, 100);\n\t\tconst a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function (...rgba) {\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function (...rgba) {\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function (...rgba) {\n\tconst r = Math.round(rgba[0] / 255 * 100);\n\tconst g = Math.round(rgba[1] / 255 * 100);\n\tconst b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function (...hsla) {\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// Hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function (...hwba) {\n\tlet a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (...rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// Helpers\nfunction clamp(number_, min, max) {\n\treturn Math.min(Math.max(min, number_), max);\n}\n\nfunction hexDouble(number_) {\n\tconst string_ = Math.round(number_).toString(16).toUpperCase();\n\treturn (string_.length < 2) ? '0' + string_ : string_;\n}\n\nexport default cs;\n","const colors = {\n\taliceblue: [240, 248, 255],\n\tantiquewhite: [250, 235, 215],\n\taqua: [0, 255, 255],\n\taquamarine: [127, 255, 212],\n\tazure: [240, 255, 255],\n\tbeige: [245, 245, 220],\n\tbisque: [255, 228, 196],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [255, 235, 205],\n\tblue: [0, 0, 255],\n\tblueviolet: [138, 43, 226],\n\tbrown: [165, 42, 42],\n\tburlywood: [222, 184, 135],\n\tcadetblue: [95, 158, 160],\n\tchartreuse: [127, 255, 0],\n\tchocolate: [210, 105, 30],\n\tcoral: [255, 127, 80],\n\tcornflowerblue: [100, 149, 237],\n\tcornsilk: [255, 248, 220],\n\tcrimson: [220, 20, 60],\n\tcyan: [0, 255, 255],\n\tdarkblue: [0, 0, 139],\n\tdarkcyan: [0, 139, 139],\n\tdarkgoldenrod: [184, 134, 11],\n\tdarkgray: [169, 169, 169],\n\tdarkgreen: [0, 100, 0],\n\tdarkgrey: [169, 169, 169],\n\tdarkkhaki: [189, 183, 107],\n\tdarkmagenta: [139, 0, 139],\n\tdarkolivegreen: [85, 107, 47],\n\tdarkorange: [255, 140, 0],\n\tdarkorchid: [153, 50, 204],\n\tdarkred: [139, 0, 0],\n\tdarksalmon: [233, 150, 122],\n\tdarkseagreen: [143, 188, 143],\n\tdarkslateblue: [72, 61, 139],\n\tdarkslategray: [47, 79, 79],\n\tdarkslategrey: [47, 79, 79],\n\tdarkturquoise: [0, 206, 209],\n\tdarkviolet: [148, 0, 211],\n\tdeeppink: [255, 20, 147],\n\tdeepskyblue: [0, 191, 255],\n\tdimgray: [105, 105, 105],\n\tdimgrey: [105, 105, 105],\n\tdodgerblue: [30, 144, 255],\n\tfirebrick: [178, 34, 34],\n\tfloralwhite: [255, 250, 240],\n\tforestgreen: [34, 139, 34],\n\tfuchsia: [255, 0, 255],\n\tgainsboro: [220, 220, 220],\n\tghostwhite: [248, 248, 255],\n\tgold: [255, 215, 0],\n\tgoldenrod: [218, 165, 32],\n\tgray: [128, 128, 128],\n\tgreen: [0, 128, 0],\n\tgreenyellow: [173, 255, 47],\n\tgrey: [128, 128, 128],\n\thoneydew: [240, 255, 240],\n\thotpink: [255, 105, 180],\n\tindianred: [205, 92, 92],\n\tindigo: [75, 0, 130],\n\tivory: [255, 255, 240],\n\tkhaki: [240, 230, 140],\n\tlavender: [230, 230, 250],\n\tlavenderblush: [255, 240, 245],\n\tlawngreen: [124, 252, 0],\n\tlemonchiffon: [255, 250, 205],\n\tlightblue: [173, 216, 230],\n\tlightcoral: [240, 128, 128],\n\tlightcyan: [224, 255, 255],\n\tlightgoldenrodyellow: [250, 250, 210],\n\tlightgray: [211, 211, 211],\n\tlightgreen: [144, 238, 144],\n\tlightgrey: [211, 211, 211],\n\tlightpink: [255, 182, 193],\n\tlightsalmon: [255, 160, 122],\n\tlightseagreen: [32, 178, 170],\n\tlightskyblue: [135, 206, 250],\n\tlightslategray: [119, 136, 153],\n\tlightslategrey: [119, 136, 153],\n\tlightsteelblue: [176, 196, 222],\n\tlightyellow: [255, 255, 224],\n\tlime: [0, 255, 0],\n\tlimegreen: [50, 205, 50],\n\tlinen: [250, 240, 230],\n\tmagenta: [255, 0, 255],\n\tmaroon: [128, 0, 0],\n\tmediumaquamarine: [102, 205, 170],\n\tmediumblue: [0, 0, 205],\n\tmediumorchid: [186, 85, 211],\n\tmediumpurple: [147, 112, 219],\n\tmediumseagreen: [60, 179, 113],\n\tmediumslateblue: [123, 104, 238],\n\tmediumspringgreen: [0, 250, 154],\n\tmediumturquoise: [72, 209, 204],\n\tmediumvioletred: [199, 21, 133],\n\tmidnightblue: [25, 25, 112],\n\tmintcream: [245, 255, 250],\n\tmistyrose: [255, 228, 225],\n\tmoccasin: [255, 228, 181],\n\tnavajowhite: [255, 222, 173],\n\tnavy: [0, 0, 128],\n\toldlace: [253, 245, 230],\n\tolive: [128, 128, 0],\n\tolivedrab: [107, 142, 35],\n\torange: [255, 165, 0],\n\torangered: [255, 69, 0],\n\torchid: [218, 112, 214],\n\tpalegoldenrod: [238, 232, 170],\n\tpalegreen: [152, 251, 152],\n\tpaleturquoise: [175, 238, 238],\n\tpalevioletred: [219, 112, 147],\n\tpapayawhip: [255, 239, 213],\n\tpeachpuff: [255, 218, 185],\n\tperu: [205, 133, 63],\n\tpink: [255, 192, 203],\n\tplum: [221, 160, 221],\n\tpowderblue: [176, 224, 230],\n\tpurple: [128, 0, 128],\n\trebeccapurple: [102, 51, 153],\n\tred: [255, 0, 0],\n\trosybrown: [188, 143, 143],\n\troyalblue: [65, 105, 225],\n\tsaddlebrown: [139, 69, 19],\n\tsalmon: [250, 128, 114],\n\tsandybrown: [244, 164, 96],\n\tseagreen: [46, 139, 87],\n\tseashell: [255, 245, 238],\n\tsienna: [160, 82, 45],\n\tsilver: [192, 192, 192],\n\tskyblue: [135, 206, 235],\n\tslateblue: [106, 90, 205],\n\tslategray: [112, 128, 144],\n\tslategrey: [112, 128, 144],\n\tsnow: [255, 250, 250],\n\tspringgreen: [0, 255, 127],\n\tsteelblue: [70, 130, 180],\n\ttan: [210, 180, 140],\n\tteal: [0, 128, 128],\n\tthistle: [216, 191, 216],\n\ttomato: [255, 99, 71],\n\tturquoise: [64, 224, 208],\n\tviolet: [238, 130, 238],\n\twheat: [245, 222, 179],\n\twhite: [255, 255, 255],\n\twhitesmoke: [245, 245, 245],\n\tyellow: [255, 255, 0],\n\tyellowgreen: [154, 205, 50],\n}\n\nfor (const key in colors) Object.freeze(colors[key]);\nexport default Object.freeze(colors);","/* MIT license */\n/* eslint-disable no-mixed-operators */\nimport cssKeywords from 'color-name';\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\toklab: {channels: 3, labels: ['okl', 'oka', 'okb']},\n\tlch: {channels: 3, labels: 'lch'},\n\toklch: {channels: 3, labels: ['okl', 'okc', 'okh']},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']},\n};\n\nexport default convert;\n\n// LAB f(t) constant\nconst LAB_FT = (6 / 29) ** 3;\n\n// SRGB non-linear transform functions\nfunction srgbNonlinearTransform(c) {\n\tconst cc = c > 0.003_130_8\n\t\t? ((1.055 * (c ** (1 / 2.4))) - 0.055)\n\t\t: c * 12.92;\n\treturn Math.min(Math.max(0, cc), 1);\n}\n\nfunction srgbNonlinearTransformInv(c) {\n\treturn c > 0.040_45 ? (((c + 0.055) / 1.055) ** 2.4) : (c / 12.92);\n}\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tswitch (max) {\n\t\tcase min: {\n\t\t\th = 0;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase r: {\n\t\t\th = (g - b) / delta;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase g: {\n\t\t\th = 2 + (b - r) / delta;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase b: {\n\t\t\th = 4 + (r - g) / delta;\n\n\t\t\tbreak;\n\t\t}\n\t// No default\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tswitch (v) {\n\t\t\tcase r: {\n\t\t\t\th = bdif - gdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase g: {\n\t\t\t\th = (1 / 3) + rdif - bdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase b: {\n\t\t\t\th = (2 / 3) + gdif - rdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t// No default\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100,\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.oklab = function (rgb) {\n\t// Assume sRGB\n\tconst r = srgbNonlinearTransformInv(rgb[0] / 255);\n\tconst g = srgbNonlinearTransformInv(rgb[1] / 255);\n\tconst b = srgbNonlinearTransformInv(rgb[2] / 255);\n\n\tconst lp = Math.cbrt(0.412_221_470_8 * r + 0.536_332_536_3 * g + 0.051_445_992_9 * b);\n\tconst mp = Math.cbrt(0.211_903_498_2 * r + 0.680_699_545_1 * g + 0.107_396_956_6 * b);\n\tconst sp = Math.cbrt(0.088_302_461_9 * r + 0.281_718_837_6 * g + 0.629_978_700_5 * b);\n\n\tconst l = 0.210_454_255_3 * lp + 0.793_617_785 * mp - 0.004_072_046_8 * sp;\n\tconst aa = 1.977_998_495_1 * lp - 2.428_592_205 * mp + 0.450_593_709_9 * sp;\n\tconst bb = 0.025_904_037_1 * lp + 0.782_771_766_2 * mp - 0.808_675_766 * sp;\n\n\treturn [l * 100, aa * 100, bb * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Number.POSITIVE_INFINITY;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn [...cssKeywords[keyword]];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\t// Assume sRGB\n\tconst r = srgbNonlinearTransformInv(rgb[0] / 255);\n\tconst g = srgbNonlinearTransformInv(rgb[1] / 255);\n\tconst b = srgbNonlinearTransformInv(rgb[2] / 255);\n\n\tconst x = (r * 0.412_456_4) + (g * 0.357_576_1) + (b * 0.180_437_5);\n\tconst y = (r * 0.212_672_9) + (g * 0.715_152_2) + (b * 0.072_175);\n\tconst z = (r * 0.019_333_9) + (g * 0.119_192) + (b * 0.950_304_1);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > LAB_FT ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > LAB_FT ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > LAB_FT ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t3;\n\tlet value;\n\n\tif (s === 0) {\n\t\tvalue = l * 255;\n\t\treturn [value, value, value];\n\t}\n\n\tconst t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tvalue = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tvalue = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tvalue = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tvalue = t1;\n\t\t}\n\n\t\trgb[i] = value * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0: {\n\t\t\treturn [v, t, p];\n\t\t}\n\n\t\tcase 1: {\n\t\t\treturn [q, v, p];\n\t\t}\n\n\t\tcase 2: {\n\t\t\treturn [p, v, t];\n\t\t}\n\n\t\tcase 3: {\n\t\t\treturn [p, q, v];\n\t\t}\n\n\t\tcase 4: {\n\t\t\treturn [t, p, v];\n\t\t}\n\n\t\tcase 5: {\n\t\t\treturn [v, p, q];\n\t\t}\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\t// eslint-disable-next-line no-bitwise\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces, default-case-last */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: { r = v; g = n; b = wh; break;\n\t\t}\n\n\t\tcase 1: { r = n; g = v; b = wh; break;\n\t\t}\n\n\t\tcase 2: { r = wh; g = v; b = n; break;\n\t\t}\n\n\t\tcase 3: { r = wh; g = n; b = v; break;\n\t\t}\n\n\t\tcase 4: { r = n; g = wh; b = v; break;\n\t\t}\n\n\t\tcase 5: { r = v; g = wh; b = n; break;\n\t\t}\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces, default-case-last */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.240_454_2) + (y * -1.537_138_5) + (z * -0.498_531_4);\n\tg = (x * -0.969_266) + (y * 1.876_010_8) + (z * 0.041_556);\n\tb = (x * 0.055_643_4) + (y * -0.204_025_9) + (z * 1.057_225_2);\n\n\t// Assume sRGB\n\tr = srgbNonlinearTransform(r);\n\tg = srgbNonlinearTransform(g);\n\tb = srgbNonlinearTransform(b);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > LAB_FT ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > LAB_FT ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > LAB_FT ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.xyz.oklab = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\n\tconst lp = Math.cbrt(0.818_933_010_1 * x + 0.361_866_742_4 * y - 0.128_859_713_7 * z);\n\tconst mp = Math.cbrt(0.032_984_543_6 * x + 0.929_311_871_5 * y + 0.036_145_638_7 * z);\n\tconst sp = Math.cbrt(0.048_200_301_8 * x + 0.264_366_269_1 * y + 0.633_851_707 * z);\n\n\tconst l = 0.210_454_255_3 * lp + 0.793_617_785 * mp - 0.004_072_046_8 * sp;\n\tconst a = 1.977_998_495_1 * lp - 2.428_592_205 * mp + 0.450_593_709_9 * sp;\n\tconst b = 0.025_904_037_1 * lp + 0.782_771_766_2 * mp - 0.808_675_766 * sp;\n\n\treturn [l * 100, a * 100, b * 100];\n};\n\nconvert.oklab.oklch = function (oklab) {\n\treturn convert.lab.lch(oklab);\n};\n\nconvert.oklab.xyz = function (oklab) {\n\tconst ll = oklab[0] / 100;\n\tconst a = oklab[1] / 100;\n\tconst b = oklab[2] / 100;\n\n\tconst l = (0.999_999_998 * ll + 0.396_337_792 * a + 0.215_803_758 * b) ** 3;\n\tconst m = (1.000_000_008 * ll - 0.105_561_342 * a - 0.063_854_175 * b) ** 3;\n\tconst s = (1.000_000_055 * ll - 0.089_484_182 * a - 1.291_485_538 * b) ** 3;\n\n\tconst x = 1.227_013_851 * l - 0.557_799_98 * m + 0.281_256_149 * s;\n\tconst y = -0.040_580_178 * l + 1.112_256_87 * m - 0.071_676_679 * s;\n\tconst z = -0.076_381_285 * l - 0.421_481_978 * m + 1.586_163_22 * s;\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.oklab.rgb = function (oklab) {\n\tconst ll = oklab[0] / 100;\n\tconst aa = oklab[1] / 100;\n\tconst bb = oklab[2] / 100;\n\n\tconst l = (ll + 0.396_337_777_4 * aa + 0.215_803_757_3 * bb) ** 3;\n\tconst m = (ll - 0.105_561_345_8 * aa - 0.063_854_172_8 * bb) ** 3;\n\tconst s = (ll - 0.089_484_177_5 * aa - 1.291_485_548 * bb) ** 3;\n\n\t// Assume sRGB\n\tconst r = srgbNonlinearTransform(4.076_741_662_1 * l - 3.307_711_591_3 * m + 0.230_969_929_2 * s);\n\tconst g = srgbNonlinearTransform(-1.268_438_004_6 * l + 2.609_757_401_1 * m - 0.341_319_396_5 * s);\n\tconst b = srgbNonlinearTransform(-0.004_196_086_3 * l - 0.703_418_614_7 * m + 1.707_614_701 * s);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.oklch.oklab = function (oklch) {\n\treturn convert.lch.lab(oklch);\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > LAB_FT ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > LAB_FT ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > LAB_FT ? z2 : (z - 16 / 116) / 7.787;\n\n\t// Illuminant D65 XYZ Tristrimulus Values\n\t// https://en.wikipedia.org/wiki/CIE_1931_color_space\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t/* eslint-disable no-bitwise */\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\t\t/* eslint-enable no-bitwise */\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\t// eslint-disable-next-line no-bitwise\n\tif (r >> 4 === g >> 4 && g >> 4 === b >> 4) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\targs = args[0];\n\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (Math.trunc(args > 50) + 1) * 0.5;\n\t/* eslint-disable no-bitwise */\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\t/* eslint-enable no-bitwise */\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\targs = args[0];\n\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\t/* eslint-disable no-bitwise */\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\t/* eslint-enable no-bitwise */\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.slice(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f\\d]{6}|[a-f\\d]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = [...colorString].map(char => char + char).join('');\n\t}\n\n\tconst integer = Number.parseInt(colorString, 16);\n\t/* eslint-disable no-bitwise */\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\t/* eslint-enable no-bitwise */\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet hue;\n\n\tconst grayscale = chroma < 1 ? min / (1 - chroma) : 0;\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else if (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else if (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2 * s * l) : (2 * s * (1 - l));\n\n\tlet f = 0;\n\tif (c < 1) {\n\t\tf = (l - 0.5 * c) / (1 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0: {\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\t}\n\n\t\tcase 1: {\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\t}\n\n\t\tcase 2: {\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\t}\n\n\t\tcase 3: {\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\t}\n\n\t\tcase 4: {\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\t}\n\n\t\tdefault: {\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t\t}\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255,\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1 - c);\n\tlet f = 0;\n\n\tif (v > 0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else if (l >= 0.5 && l < 1) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65_535) * 255, (apple[1] / 65_535) * 255, (apple[2] / 65_535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65_535, (rgb[1] / 255) * 65_535, (rgb[2] / 255) * 65_535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\t/* eslint-disable no-bitwise */\n\tconst value = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (value << 16) + (value << 8) + value;\n\t/* eslint-enable no-bitwise */\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.slice(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst value = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [value / 255 * 100];\n};\n","import conversions from './conversions.js';\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let {length} = models, i = 0; i < length; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null,\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length > 0) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let {length} = adjacents, i = 0; i < length; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nfunction route(fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let {length} = models, i = 0; i < length; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n}\n\nexport default route;\n","import conversions from './conversions.js';\nimport route from './route.js';\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let {length} = result, i = 0; i < length; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfor (const fromModel of models) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\tfor (const toModel of routeModels) {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t}\n}\n\nexport default convert;\n","import colorString from 'color-string';\nimport convert from 'color-convert';\n\nconst skippedModels = [\n\t// To be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// Gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// Shouldn't really be in color-convert either...\n\t'hex',\n];\n\nconst hashedModelKeys = {};\nfor (const model of Object.keys(convert)) {\n\thashedModelKeys[[...convert[model].labels].sort().join('')] = model;\n}\n\nconst limiters = {};\n\nfunction Color(object, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(object, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tlet i;\n\tlet channels;\n\n\tif (object == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (object instanceof Color) {\n\t\tthis.model = object.model;\n\t\tthis.color = [...object.color];\n\t\tthis.valpha = object.valpha;\n\t} else if (typeof object === 'string') {\n\t\tconst result = colorString.get(object);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + object);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (object.length > 0) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tconst newArray = Array.prototype.slice.call(object, 0, channels);\n\t\tthis.color = zeroArray(newArray, channels);\n\t\tthis.valpha = typeof object[channels] === 'number' ? object[channels] : 1;\n\t} else if (typeof object === 'number') {\n\t\t// This is always RGB - can be converted later on.\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(object >> 16) & 0xFF,\n\t\t\t(object >> 8) & 0xFF,\n\t\t\tobject & 0xFF,\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tconst keys = Object.keys(object);\n\t\tif ('alpha' in object) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof object.alpha === 'number' ? object.alpha : 0;\n\t\t}\n\n\t\tconst hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(object));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tconst {labels} = convert[this.model];\n\t\tconst color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(object[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// Perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tconst limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString() {\n\t\treturn this.string();\n\t},\n\n\ttoJSON() {\n\t\treturn this[this.model]();\n\t},\n\n\tstring(places) {\n\t\tlet self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tconst arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to[self.model](...arguments_);\n\t},\n\n\tpercentString(places) {\n\t\tconst self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tconst arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to.rgb.percent(...arguments_);\n\t},\n\n\tarray() {\n\t\treturn this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];\n\t},\n\n\tobject() {\n\t\tconst result = {};\n\t\tconst {channels} = convert[this.model];\n\t\tconst {labels} = convert[this.model];\n\n\t\tfor (let i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray() {\n\t\tconst rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject() {\n\t\tconst rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround(places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);\n\t},\n\n\talpha(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// Rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, value => ((value % 360) + 360) % 360),\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(95.047)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(108.833)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn colorString.to.hex(...this.rgb().round().color);\n\t},\n\n\thexa(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\tconst rgbArray = this.rgb().round().color;\n\n\t\tlet alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();\n\t\tif (alphaHex.length === 1) {\n\t\t\talphaHex = '0' + alphaHex;\n\t\t}\n\n\t\treturn colorString.to.hex(...rgbArray) + alphaHex;\n\t},\n\n\trgbNumber() {\n\t\tconst rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity() {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tconst rgb = this.rgb().color;\n\n\t\tconst lum = [];\n\t\tfor (const [i, element] of rgb.entries()) {\n\t\t\tconst chan = element / 255;\n\t\t\tlum[i] = (chan <= 0.04045) ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast(color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tconst lum1 = this.luminosity();\n\t\tconst lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel(color2) {\n\t\t// https://www.w3.org/TR/WCAG/#contrast-enhanced\n\t\tconst contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark() {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tconst rgb = this.rgb().color;\n\t\tconst yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 10000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight() {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate() {\n\t\tconst rgb = this.rgb();\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tlighten(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale() {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_colour_to_grayscale\n\t\tconst rgb = this.rgb().color;\n\t\tconst value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(value, value, value);\n\t},\n\n\tfade(ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer(ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate(degrees) {\n\t\tconst hsl = this.hsl();\n\t\tlet hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix(mixinColor, weight) {\n\t\t// Ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\n\t\tconst color1 = mixinColor.rgb();\n\t\tconst color2 = this.rgb();\n\t\tconst p = weight === undefined ? 0.5 : weight;\n\n\t\tconst w = 2 * p - 1;\n\t\tconst a = color1.alpha() - color2.alpha();\n\n\t\tconst w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2;\n\t\tconst w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n};\n\n// Model conversion methods and static constructors\nfor (const model of Object.keys(convert)) {\n\tif (skippedModels.includes(model)) {\n\t\tcontinue;\n\t}\n\n\tconst {channels} = convert[model];\n\n\t// Conversion methods\n\tColor.prototype[model] = function (...arguments_) {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments_.length > 0) {\n\t\t\treturn new Color(arguments_, model);\n\t\t}\n\n\t\treturn new Color([...assertArray(convert[this.model][model].raw(this.color)), this.valpha], model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (...arguments_) {\n\t\tlet color = arguments_[0];\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(arguments_, channels);\n\t\t}\n\n\t\treturn new Color(color, model);\n\t};\n}\n\nfunction roundTo(number, places) {\n\treturn Number(number.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (number) {\n\t\treturn roundTo(number, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tfor (const m of model) {\n\t\t(limiters[m] ||= [])[channel] = modifier;\n\t}\n\n\tmodel = model[0];\n\n\treturn function (value) {\n\t\tlet result;\n\n\t\tif (value !== undefined) {\n\t\t\tif (modifier) {\n\t\t\t\tvalue = modifier(value);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = value;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\nfunction zeroArray(array, length) {\n\tfor (let i = 0; i < length; i++) {\n\t\tif (typeof array[i] !== 'number') {\n\t\t\tarray[i] = 0;\n\t\t}\n\t}\n\n\treturn array;\n}\n\nexport default Color;\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Color from 'color'\n\ntype hexColor = `#${string & (\n `${string}${string}${string}`\n | `${string}${string}${string}${string}${string}${string}`\n)}`\n\n/**\n * Is the current theme dark?\n */\nexport function isDarkModeEnabled() {\n\tconst darkModePreference = window?.matchMedia?.('(prefers-color-scheme: dark)')?.matches\n\tconst darkModeSetting = document.body.getAttribute('data-themes')?.includes('dark')\n\treturn darkModeSetting || darkModePreference || false\n}\n\n/**\n * Is the current theme high contrast?\n */\nexport function isHighContrastModeEnabled() {\n\tconst highContrastPreference = window?.matchMedia?.('(forced-colors: active)')?.matches\n\tconst highContrastSetting = document.body.getAttribute('data-themes')?.includes('highcontrast')\n\treturn highContrastSetting || highContrastPreference || false\n}\n\n/**\n * Should we invert the text on this background color?\n *\n * @param color RGB color value as a hex string\n * @return boolean\n */\nexport function invertTextColor(color: hexColor): boolean {\n\treturn colorContrast(color, '#ffffff') < 4.5\n}\n\n/**\n * Is this color too bright?\n *\n * @param color RGB color value as a hex string\n * @return boolean\n */\nexport function isBrightColor(color: hexColor): boolean {\n\treturn calculateLuma(color) > 0.6\n}\n\n/**\n * Get color for on-page elements\n * theme color by default, grey if theme color is too bright.\n *\n * @param color the color to contrast against, e.g. #ffffff\n * @param backgroundColor the background color to contrast against, e.g. #000000\n */\nexport function elementColor(\n\tcolor: hexColor,\n\tbackgroundColor: hexColor,\n): hexColor {\n\tconst brightBackground = isBrightColor(backgroundColor)\n\tconst blurredBackground = mix(\n\t\tbackgroundColor,\n\t\tbrightBackground ? color : '#ffffff',\n\t\t66,\n\t)\n\n\tlet contrast = colorContrast(color, blurredBackground)\n\tconst minContrast = isHighContrastModeEnabled() ? 5.6 : 3.2\n\n\tlet iteration = 0\n\tlet result = color\n\tconst epsilon = (brightBackground ? -100 : 100) / 255\n\twhile (contrast < minContrast && iteration++ < 100) {\n\t\tconst hsl = hexToHSL(result)\n\t\tconst l = Math.max(\n\t\t\t0,\n\t\t\tMath.min(255, hsl.l + epsilon),\n\t\t)\n\t\tresult = hslToHex({ h: hsl.h, s: hsl.s, l })\n\t\tcontrast = colorContrast(result, blurredBackground)\n\t}\n\n\treturn result\n}\n\n/**\n * Get color for on-page text:\n * black if background is bright, white if background is dark.\n *\n * @param color1 the color to contrast against, e.g. #ffffff\n * @param color2 the background color to contrast against, e.g. #000000\n * @param factor the factor to mix the colors between -100 and 100, e.g. 66\n */\nexport function mix(color1: hexColor, color2: hexColor, factor: number): hexColor {\n\tif (factor < -100 || factor > 100) {\n\t\tthrow new RangeError('Factor must be between -100 and 100')\n\t}\n\treturn new Color(color2).mix(new Color(color1), (factor + 100) / 200).hex()\n}\n\n/**\n * Lighten a color by a factor\n *\n * @param color the color to lighten, e.g. #000000\n * @param factor the factor to lighten the color by between -100 and 100, e.g. -41\n */\nexport function lighten(color: hexColor, factor: number): hexColor {\n\tif (factor < -100 || factor > 100) {\n\t\tthrow new RangeError('Factor must be between -100 and 100')\n\t}\n\treturn new Color(color).lighten((factor + 100) / 200).hex()\n}\n\n/**\n * Darken a color by a factor\n *\n * @param color the color to darken, e.g. #ffffff\n * @param factor the factor to darken the color by between -100 and 100, e.g. 32\n */\nexport function darken(color: hexColor, factor: number): hexColor {\n\tif (factor < -100 || factor > 100) {\n\t\tthrow new RangeError('Factor must be between -100 and 100')\n\t}\n\treturn new Color(color).darken((factor + 100) / 200).hex()\n}\n\n/**\n * Calculate the luminance of a color\n *\n * @param color the color to calculate the luminance of, e.g. #ffffff\n */\nexport function calculateLuminance(color: hexColor): number {\n\treturn hexToHSL(color).l\n}\n\n/**\n * Calculate the luma of a color\n *\n * @param color the color to calculate the luma of, e.g. #ffffff\n */\nexport function calculateLuma(color: hexColor): number {\n\tconst rgb = hexToRGB(color).map((value) => {\n\t\tvalue /= 255\n\t\treturn value <= 0.03928\n\t\t\t? value / 12.92\n\t\t\t: Math.pow((value + 0.055) / 1.055, 2.4)\n\t})\n\tconst [red, green, blue] = rgb\n\treturn 0.2126 * red + 0.7152 * green + 0.0722 * blue\n}\n\n/**\n * Calculate the contrast between two colors\n *\n * @param color1 the first color to calculate the contrast of, e.g. #ffffff\n * @param color2 the second color to calculate the contrast of, e.g. #000000\n */\nexport function colorContrast(color1: hexColor, color2: hexColor): number {\n\tconst luminance1 = calculateLuma(color1) + 0.05\n\tconst luminance2 = calculateLuma(color2) + 0.05\n\treturn Math.max(luminance1, luminance2) / Math.min(luminance1, luminance2)\n}\n\n/**\n * Convert hex color to RGB\n *\n * @param color RGB color value as a hex string\n */\nexport function hexToRGB(color: hexColor): [number, number, number] {\n\treturn new Color(color).rgb().array()\n}\n\n/**\n * Convert RGB color to hex\n *\n * @param color RGB color value as a hex string\n */\nexport function hexToHSL(color: hexColor): { h: number, s: number, l: number } {\n\tconst hsl = new Color(color).hsl()\n\treturn { h: hsl.color[0], s: hsl.color[1], l: hsl.color[2] }\n}\n\n/**\n * Convert HSL color to hex\n *\n * @param hsl HSL color value as an object\n * @param hsl.h hue\n * @param hsl.s saturation\n * @param hsl.l lightness\n */\nexport function hslToHex(hsl: { h: number, s: number, l: number }): hexColor {\n\treturn new Color(hsl).hex()\n}\n\n/**\n * Convert RGB color to hex\n *\n * @param r red\n * @param g green\n * @param b blue\n */\nexport function rgbToHex(r: number, g: number, b: number): hexColor {\n\tconst hex = ((1 << 24) | (r << 16) | (g << 8) | b).toString(16).slice(1)\n\treturn `#${hex}`\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileAction, INode } from '@nextcloud/files'\nimport type { TagWithId } from '../types.ts'\n\nimport { subscribe } from '@nextcloud/event-bus'\nimport { t } from '@nextcloud/l10n'\nimport logger from '../logger.ts'\nimport { fetchTags } from '../services/api.ts'\nimport { getNodeSystemTags } from '../utils.ts'\nimport { elementColor, isDarkModeEnabled } from '../utils/colorUtils.ts'\n\nimport '../css/fileEntryInlineSystemTags.scss'\n\n// Init tag cache\nconst cache: TagWithId[] = []\n\nexport const action: IFileAction = {\n\tid: 'system-tags',\n\tdisplayName: () => '',\n\ticonSvgInline: () => '',\n\n\tenabled({ nodes }) {\n\t\t// Only show the action on single nodes\n\t\tif (nodes.length !== 1) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Always show the action, even if there are no tags\n\t\t// This will render an empty tag list and allow events to update it\n\t\treturn true\n\t},\n\n\texec: async () => null,\n\trenderInline: ({ nodes }) => {\n\t\tif (nodes.length !== 1 || !nodes[0]) {\n\t\t\treturn Promise.resolve(null)\n\t\t}\n\t\treturn renderInline(nodes[0])\n\t},\n\n\torder: 0,\n}\n\n// Subscribe to the events\nsubscribe('systemtags:node:updated', updateSystemTagsHtml)\nsubscribe('systemtags:tag:created', addTag)\nsubscribe('systemtags:tag:deleted', removeTag)\nsubscribe('systemtags:tag:updated', updateTag)\n\n/**\n * Update the system tags html when the node is updated\n *\n * @param node - The updated node\n */\nfunction updateSystemTagsHtml(node: INode) {\n\trenderInline(node).then((systemTagsHtml) => {\n\t\tdocument.querySelectorAll(`[data-systemtags-fileid=\"${node.fileid}\"]`).forEach((element) => {\n\t\t\telement.replaceWith(systemTagsHtml)\n\t\t})\n\t})\n}\n\n/**\n * Add and remove tags from the cache\n *\n * @param tag - The tag to add\n */\nfunction addTag(tag: TagWithId) {\n\tcache.push(tag)\n}\n\n/**\n * Remove a tag from the cache\n *\n * @param tag - The tag to remove\n */\nfunction removeTag(tag: TagWithId) {\n\tcache.splice(cache.findIndex((t) => t.id === tag.id), 1)\n}\n\n/**\n * Update a tag in the cache\n *\n * @param tag - The tag to update\n */\nfunction updateTag(tag: TagWithId) {\n\tconst index = cache.findIndex((t) => t.id === tag.id)\n\tif (index !== -1) {\n\t\tcache[index] = tag\n\t}\n\tupdateSystemTagsColorAttribute(tag)\n}\n\n/**\n * Update the color attribute of the system tags\n *\n * @param tag - The tag to update\n */\nfunction updateSystemTagsColorAttribute(tag: TagWithId) {\n\tdocument.querySelectorAll(`[data-systemtag-name=\"${tag.displayName}\"]`).forEach((element) => {\n\t\t(element as HTMLElement).style.setProperty('--systemtag-color', `#${tag.color}`)\n\t})\n}\n\n/**\n * Render a single tag element\n *\n * @param tag - The tag to render\n * @param isMore - Whether this is a \"more\" tag\n */\nfunction renderTag(tag: string, isMore = false): HTMLElement {\n\tconst tagElement = document.createElement('li')\n\ttagElement.classList.add('files-list__system-tag')\n\ttagElement.setAttribute('data-systemtag-name', tag)\n\ttagElement.textContent = tag\n\n\t// Set the color if it exists\n\tconst cachedTag = cache.find((t) => t.displayName === tag)\n\tif (cachedTag?.color) {\n\t\t// Make sure contrast is good and follow WCAG guidelines\n\t\tconst mainBackgroundColor = getComputedStyle(document.body)\n\t\t\t.getPropertyValue('--color-main-background')\n\t\t\t.replace('#', '') || (isDarkModeEnabled() ? '000000' : 'ffffff')\n\t\tconst primaryElement = elementColor(`#${cachedTag.color}`, `#${mainBackgroundColor}`)\n\t\ttagElement.style.setProperty('--systemtag-color', primaryElement)\n\t\ttagElement.setAttribute('data-systemtag-color', 'true')\n\t}\n\n\tif (isMore) {\n\t\ttagElement.classList.add('files-list__system-tag--more')\n\t}\n\n\treturn tagElement\n}\n\n/**\n * Render the inline system tags for a node\n *\n * @param node - The node to render the tags for\n */\nasync function renderInline(node: INode): Promise {\n\t// Ensure we have the system tags as an array\n\tconst tags = getNodeSystemTags(node)\n\n\tconst systemTagsElement = document.createElement('ul')\n\tsystemTagsElement.classList.add('files-list__system-tags')\n\tsystemTagsElement.setAttribute('aria-label', t('files', 'Assigned collaborative tags'))\n\tsystemTagsElement.setAttribute('data-systemtags-fileid', node.fileid?.toString() || '')\n\n\tif (tags.length === 0) {\n\t\treturn systemTagsElement\n\t}\n\n\t// Fetch the tags if the cache is empty\n\tif (cache.length === 0) {\n\t\ttry {\n\t\t\t// Best would be to support attributes from webdav,\n\t\t\t// but currently the library does not support it\n\t\t\tcache.push(...await fetchTags())\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to fetch tags', { error })\n\t\t}\n\t}\n\n\tsystemTagsElement.append(renderTag(tags[0]!))\n\tif (tags.length === 2) {\n\t\t// Special case only two tags:\n\t\t// the overflow fake tag would take the same space as this, so render it\n\t\tsystemTagsElement.append(renderTag(tags[1]!))\n\t} else if (tags.length > 1) {\n\t\t// More tags than the one we're showing\n\t\t// So we add a overflow element indicating there are more tags\n\t\tconst moreTagElement = renderTag('+' + (tags.length - 1), true)\n\t\tmoreTagElement.setAttribute('title', tags.slice(1).join(', '))\n\t\t// because the title is not accessible we hide this element for screen readers (see alternative below)\n\t\tmoreTagElement.setAttribute('aria-hidden', 'true')\n\t\tmoreTagElement.setAttribute('role', 'presentation')\n\t\tsystemTagsElement.append(moreTagElement)\n\n\t\t// For accessibility the tags are listed, as the title is not accessible\n\t\t// but those tags are visually hidden\n\t\tfor (const tag of tags.slice(1)) {\n\t\t\tconst tagElement = renderTag(tag)\n\t\t\ttagElement.classList.add('hidden-visually')\n\t\t\tsystemTagsElement.append(tagElement)\n\t\t}\n\t}\n\n\treturn systemTagsElement\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { ContentsWithRoot } from '@nextcloud/files'\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\nimport type { TagWithId } from '../types.ts'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { Folder, Permission } from '@nextcloud/files'\nimport { getClient, getDavNameSpaces, getDavProperties, getRemoteURL, getRootPath, resultToNode } from '@nextcloud/files/dav'\nimport { fetchTags } from './api.ts'\n\nconst rootPath = '/systemtags'\n\nconst client = getClient()\n\n/**\n * Format the REPORT payload to filter files by tag\n *\n * @param tagId - The tag ID\n */\nfunction formatReportPayload(tagId: number) {\n\treturn `\n\n\t\n\t\t${getDavProperties()}\n\t\n\t\n\t\t${tagId}\n\t\n`\n}\n\n/**\n * Convert a tag to a Folder node\n *\n * @param tag - The tag\n */\nfunction tagToNode(tag: TagWithId): Folder {\n\treturn new Folder({\n\t\tid: tag.id,\n\t\tsource: `${getRemoteURL()}${rootPath}/${tag.id}`,\n\t\towner: String(getCurrentUser()?.uid ?? 'anonymous'),\n\t\troot: rootPath,\n\t\tdisplayname: tag.displayName,\n\t\tpermissions: Permission.READ,\n\t\tattributes: {\n\t\t\t...tag,\n\t\t\t'is-tag': true,\n\t\t},\n\t})\n}\n\n/**\n * Get the contents of a folder or tag\n *\n * @param path - The path to the folder or tag\n */\nexport async function getContents(path = '/'): Promise {\n\t// List tags in the root\n\tconst tagsCache = (await fetchTags()).filter((tag) => tag.userVisible) as TagWithId[]\n\n\tif (path === '/') {\n\t\treturn {\n\t\t\tfolder: new Folder({\n\t\t\t\tid: 0,\n\t\t\t\tsource: `${getRemoteURL()}${rootPath}`,\n\t\t\t\towner: getCurrentUser()?.uid as string,\n\t\t\t\troot: rootPath,\n\t\t\t\tpermissions: Permission.NONE,\n\t\t\t}),\n\t\t\tcontents: tagsCache.map(tagToNode),\n\t\t}\n\t}\n\n\tconst tagIdStr = path.split('/', 2)[1]\n\tif (!tagIdStr || isNaN(parseInt(tagIdStr))) {\n\t\tthrow new Error('Invalid tag ID')\n\t}\n\n\tconst tagId = parseInt(tagIdStr)\n\tconst tag = tagsCache.find((tag) => tag.id === tagId)\n\tif (!tag) {\n\t\tthrow new Error('Tag not found')\n\t}\n\n\tconst folder = tagToNode(tag)\n\tconst contentsResponse = await client.getDirectoryContents(getRootPath(), {\n\t\tdetails: true,\n\t\t// Only filter favorites if we're at the root\n\t\tdata: formatReportPayload(tagId),\n\t\theaders: {\n\t\t\t// Patched in WebdavClient.ts\n\t\t\tmethod: 'REPORT',\n\t\t},\n\t}) as ResponseDataDetailed\n\n\treturn {\n\t\tfolder,\n\t\tcontents: contentsResponse.data.map((stat) => resultToNode(stat)),\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport svgTagMultiple from '@mdi/svg/svg/tag-multiple-outline.svg?raw'\nimport { getNavigation, View } from '@nextcloud/files'\nimport { translate as t } from '@nextcloud/l10n'\nimport { getContents } from '../services/systemtags.ts'\n\nexport const systemTagsViewId = 'tags'\n\n/**\n * Register the system tags files view\n */\nexport function registerSystemTagsView() {\n\tconst Navigation = getNavigation()\n\tNavigation.register(new View({\n\t\tid: systemTagsViewId,\n\t\tname: t('systemtags', 'Tags'),\n\t\tcaption: t('systemtags', 'List of tags and their associated files and folders.'),\n\n\t\temptyTitle: t('systemtags', 'No tags found'),\n\t\temptyCaption: t('systemtags', 'Tags you have created will show up here.'),\n\n\t\ticon: svgTagMultiple,\n\t\torder: 25,\n\n\t\tgetContents,\n\t}))\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileAction } from '@nextcloud/files'\n\nimport { DefaultType, FileType } from '@nextcloud/files'\nimport { t } from '@nextcloud/l10n'\nimport { systemTagsViewId } from '../files_views/systemtagsView.ts'\n\nexport const action: IFileAction = {\n\tid: 'systemtags:open-in-files',\n\tdisplayName: () => t('systemtags', 'Open in Files'),\n\ticonSvgInline: () => '',\n\n\tenabled({ nodes, view }) {\n\t\t// Only for the system tags view\n\t\tif (view.id !== systemTagsViewId) {\n\t\t\treturn false\n\t\t}\n\t\t// Only for single nodes\n\t\tif (nodes.length !== 1 || !nodes[0]) {\n\t\t\treturn false\n\t\t}\n\t\t// Do not open tags (keep the default action) and only open folders\n\t\treturn nodes[0].attributes['is-tag'] !== true\n\t\t\t&& nodes[0].type === FileType.Folder\n\t},\n\n\tasync exec({ nodes }) {\n\t\tif (!nodes[0] || nodes.length !== 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tlet dir = nodes[0].dirname\n\t\tif (nodes[0].type === FileType.Folder) {\n\t\t\tdir = nodes[0].path\n\t\t}\n\n\t\twindow.OCP.Files.Router.goToRoute(\n\t\t\tnull, // use default route\n\t\t\t{ view: 'files', fileid: String(nodes[0].fileid) },\n\t\t\t{ dir, openfile: 'true' },\n\t\t)\n\t\treturn null\n\t},\n\n\t// Before openFolderAction\n\torder: -1000,\n\tdefault: DefaultType.HIDDEN,\n}\n","/*!\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { registerFileAction } from '@nextcloud/files'\nimport { registerDavProperty } from '@nextcloud/files/dav'\nimport { action as bulkSystemTagsAction } from './files_actions/bulkSystemTagsAction.ts'\nimport { registerFileSidebarAction } from './files_actions/filesSidebarAction.ts'\nimport { action as inlineSystemTagsAction } from './files_actions/inlineSystemTagsAction.ts'\nimport { action as openInFilesAction } from './files_actions/openInFilesAction.ts'\nimport { registerSystemTagsView } from './files_views/systemtagsView.ts'\n\nregisterDavProperty('nc:system-tags')\nregisterFileAction(bulkSystemTagsAction)\nregisterFileAction(inlineSystemTagsAction)\nregisterFileAction(openInFilesAction)\n\nregisterSystemTagsView()\nregisterFileSidebarAction()\n"],"file":"systemtags-init.mjs"}