platformicons 5.5.0 → 5.6.1
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.
- package/{src/index.tsx → build/index.d.ts} +2 -2
- package/build/index.esm.js +2 -0
- package/build/index.esm.js.map +1 -0
- package/build/index.js +1 -1
- package/build/index.js.map +1 -0
- package/build/index.modern.js +2 -0
- package/build/index.modern.js.map +1 -0
- package/build/index.umd.js +2 -0
- package/build/index.umd.js.map +1 -0
- package/build/platformIcon.d.ts +128 -0
- package/build/preload.d.ts +6 -0
- package/package.json +6 -1
- package/.craft.yml +0 -5
- package/.github/workflows/codeql-analysis.yml +0 -172
- package/.github/workflows/release.yml +0 -29
- package/scripts/craft-pre-release.sh +0 -10
- package/src/platformIcon.tsx +0 -216
- package/src/preload.tsx +0 -28
- package/tsconfig.json +0 -24
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { default as PlatformIcon } from "./platformIcon";
|
|
2
|
-
export { preloadIcons } from "./preload";
|
|
1
|
+
export { default as PlatformIcon } from "./platformIcon";
|
|
2
|
+
export { preloadIcons } from "./preload";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import a from"react";function t(){return(t=Object.assign||function(a){for(var t=1;t<arguments.length;t++){var e=arguments[t];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(a[r]=e[r])}return a}).apply(this,arguments)}var e={android:"android",apple:"apple",capacitor:"capacitor",clojure:"clojure",cocoa:"apple","cocoa-objc":"apple","cocoa-swift":"swift",cordova:"cordova",cpp:"cpp",cryengine:"cryengine",csharp:"csharp","csharp-aspnetcore":"csharp",dart:"dart",default:"default",dotnet:"dotnet","dotnet-aspnetcore":"dotnet","dotnet-aspnet":"dotnet","dotnet-awslambda":"aws","dotnet-blazor":"blazor","dotnet-csharp":"csharp","dotnet-gcpfunctions":"gcp","dotnet-maui":"maui","dotnet-uno":"uno","dotnet-xamarin":"xamarin",dotnetcore:"dotnetcore",dotnetfx:"dotnetfx",electron:"electron",elixir:"elixir",flutter:"flutter",fsharp:"fsharp",go:"go",godot:"godot",java:"java","java-appengine":"app-engine","java-android":"android","java-log4j":"java","java-log4j2":"java","java-logback":"logback","java-logging":"java","java-spring":"spring","java-spring-boot":"springboot",javascript:"javascript","javascript-angular":"angularjs","javascript-angularjs":"angularjs","javascript-backbone":"backbone","javascript-browser":"javascript","javascript-capacitor":"capacitor","javascript-cordova":"cordova","javascript-electron":"electron","javascript-ember":"ember","javascript-gatsby":"gatsby","javascript-ionic":"ionic","javascript-nextjs":"nextjs","javascript-react":"react","javascript-remix":"remix","javascript-svelte":"svelte","javascript-sveltekit":"svelte","javascript-vue":"vue","javascript-wasm":"wasm",ionic:"ionic",kotlin:"kotlin","kotlin-android":"android",native:"nativec","native-qt":"qt",node:"nodejs","node-awslambda":"aws","node-azurefunctions":"azure","node-connect":"nodejs","node-express":"express","node-gcpfunctions":"gcp","node-koa":"koa","node-serverlesscloud":"serverless",perl:"perl",php:"php","php-laravel":"laravel","php-monolog":"php","php-symfony2":"symfony","php-symfony":"symfony",python:"python","python-aiohttp":"aiohttp","python-awslambda":"aws","python-azurefunctions":"azure","python-bottle":"bottle","python-celery":"celery","python-chalice":"chalice","python-django":"django","python-falcon":"falcon","python-fastapi":"fastapi","python-flask":"flask","python-gcpfunctions":"gcp","python-pylons":"python","python-pyramid":"pyramid","python-pythonawslambda":"aws","python-rq":"redis","python-sanic":"python","python-serverless":"serverless","python-starlette":"starlette","python-tornado":"tornado","python-tryton":"tryton",qt:"qt","react-native":"react",ruby:"ruby","ruby-rack":"ruby","ruby-rails":"rails","ruby-sinatra":"sinatra",rust:"rust","rust-actix":"actix",scala:"scala",stride3d:"stride3d",swift:"swift",unity:"unity",ue4:"unreal",unreal:"unreal",unrealengine:"unreal",visualbasic:"visual-basic"};function r(a){return a.replace(".","-")}function n(a){var t=r(a);return e[t]||(t.includes("-")?o(t):"default")}function o(a){return n(r(a).split("-")[0])}var i=function(e){var r,i,s=e.platform,c=e.size,p=void 0===c?20:c,l=e.format,d=void 0===l?"sm":l,u=e.radius,v=void 0===u?3:u,g=e.withLanguageIcon,y=e.languageIconStyles,h=void 0===y?{}:y,f=e.style,j=void 0===f?{}:f,m=function(a,t){if(null==a)return{};var e,r,n={},o=Object.keys(a);for(r=0;r<o.length;r++)t.indexOf(e=o[r])>=0||(n[e]=a[e]);return n}(e,["platform","size","format","radius","withLanguageIcon","languageIconStyles","style"]),b=n(s),x=require("../"+("lg"===d?"svg_80x80":"svg")+"/"+b+".svg"),w=null!=(r=null==x?void 0:x.default)?r:x,k=o(s),q=require("../svg/"+k+".svg"),z=null!=(i=null==q?void 0:q.default)?i:q;return g&&k!==b&&"default"!==k?a.createElement("div",Object.assign({},m,{style:t({position:"relative"},j)}),a.createElement("img",{src:w,width:p,height:p,style:{borderRadius:v+"px"}}),a.createElement("img",{src:z,style:t({position:"absolute",bottom:"-1px",right:"-1px",height:"30%",width:"30%",borderRadius:"2px"},h)})):a.createElement("img",Object.assign({src:w,width:p,height:p},m,{style:t({borderRadius:v+"px"},j)}))};function s(a){var t,r=(a?[a]:["lg","sm"]).map(function(a){return Object.values(e).map(function(t){return require("../"+("lg"===a?"svg_80x80":"svg")+"/"+t+".svg")})}).flat();null==(t=document.querySelector("head"))||t.append.apply(t,r.map(function(a){var t=document.createElement("link");return t.rel="preload",t.as="image",t.href=a,t}))}export{i as PlatformIcon,s as preloadIcons};
|
|
2
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/platformIcon.tsx","../src/preload.tsx"],"sourcesContent":["import React from \"react\";\n\nexport const PLATFORM_TO_ICON = {\n android: \"android\",\n apple: \"apple\",\n capacitor: \"capacitor\",\n clojure: \"clojure\",\n cocoa: \"apple\",\n \"cocoa-objc\": \"apple\",\n \"cocoa-swift\": \"swift\",\n cordova: \"cordova\",\n cpp: \"cpp\",\n cryengine: \"cryengine\",\n csharp: \"csharp\",\n \"csharp-aspnetcore\": \"csharp\",\n dart: \"dart\",\n default: \"default\",\n dotnet: \"dotnet\",\n \"dotnet-aspnetcore\": \"dotnet\",\n \"dotnet-aspnet\": \"dotnet\",\n \"dotnet-awslambda\": \"aws\",\n \"dotnet-blazor\": \"blazor\",\n \"dotnet-csharp\": \"csharp\",\n \"dotnet-gcpfunctions\": \"gcp\",\n \"dotnet-maui\": \"maui\",\n \"dotnet-uno\": \"uno\",\n \"dotnet-xamarin\": \"xamarin\",\n dotnetcore: \"dotnetcore\",\n dotnetfx: \"dotnetfx\",\n electron: \"electron\",\n elixir: \"elixir\",\n flutter: \"flutter\",\n fsharp: \"fsharp\",\n go: \"go\",\n godot: \"godot\",\n java: \"java\",\n \"java-appengine\": \"app-engine\",\n \"java-android\": \"android\",\n \"java-log4j\": \"java\",\n \"java-log4j2\": \"java\",\n \"java-logback\": \"logback\",\n \"java-logging\": \"java\",\n \"java-spring\": \"spring\",\n \"java-spring-boot\": \"springboot\",\n javascript: \"javascript\",\n \"javascript-angular\": \"angularjs\",\n \"javascript-angularjs\": \"angularjs\",\n \"javascript-backbone\": \"backbone\",\n \"javascript-browser\": \"javascript\",\n \"javascript-capacitor\": \"capacitor\",\n \"javascript-cordova\": \"cordova\",\n \"javascript-electron\": \"electron\",\n \"javascript-ember\": \"ember\",\n \"javascript-gatsby\": \"gatsby\",\n \"javascript-ionic\": \"ionic\",\n \"javascript-nextjs\": \"nextjs\",\n \"javascript-react\": \"react\",\n \"javascript-remix\": \"remix\",\n \"javascript-svelte\": \"svelte\",\n \"javascript-sveltekit\": \"svelte\",\n \"javascript-vue\": \"vue\",\n \"javascript-wasm\": \"wasm\",\n ionic: \"ionic\",\n kotlin: \"kotlin\",\n \"kotlin-android\": \"android\",\n native: \"nativec\",\n \"native-qt\": \"qt\",\n node: \"nodejs\",\n \"node-awslambda\": \"aws\",\n \"node-azurefunctions\": \"azure\",\n \"node-connect\": \"nodejs\",\n \"node-express\": \"express\",\n \"node-gcpfunctions\": \"gcp\",\n \"node-koa\": \"koa\",\n \"node-serverlesscloud\": \"serverless\",\n perl: \"perl\",\n php: \"php\",\n \"php-laravel\": \"laravel\",\n \"php-monolog\": \"php\",\n \"php-symfony2\": \"symfony\",\n \"php-symfony\": \"symfony\",\n python: \"python\",\n \"python-aiohttp\": \"aiohttp\",\n \"python-awslambda\": \"aws\",\n \"python-azurefunctions\": \"azure\",\n \"python-bottle\": \"bottle\",\n \"python-celery\": \"celery\",\n \"python-chalice\": \"chalice\",\n \"python-django\": \"django\",\n \"python-falcon\": \"falcon\",\n \"python-fastapi\": \"fastapi\",\n \"python-flask\": \"flask\",\n \"python-gcpfunctions\": \"gcp\",\n \"python-pylons\": \"python\",\n \"python-pyramid\": \"pyramid\",\n \"python-pythonawslambda\": \"aws\",\n \"python-rq\": \"redis\",\n \"python-sanic\": \"python\",\n \"python-serverless\": \"serverless\",\n \"python-starlette\": \"starlette\",\n \"python-tornado\": \"tornado\",\n \"python-tryton\": \"tryton\",\n qt: \"qt\",\n \"react-native\": \"react\",\n ruby: \"ruby\",\n \"ruby-rack\": \"ruby\",\n \"ruby-rails\": \"rails\",\n \"ruby-sinatra\": \"sinatra\",\n rust: \"rust\",\n \"rust-actix\": \"actix\",\n scala: \"scala\",\n stride3d: \"stride3d\",\n swift: \"swift\",\n unity: \"unity\",\n // This will be deprecated in favor of 'unrealengine'\n ue4: \"unreal\",\n unreal: \"unreal\",\n unrealengine: \"unreal\",\n visualbasic: \"visual-basic\",\n // Don't add new platforms down here!\n // Please add them where they belong alphabetically\n} as const;\n\nfunction normalizePlatform(platform: string): string {\n // sentry uses format python-django, but docs uses python.django\n // this function normalizes that\n return platform.replace(\".\", \"-\");\n}\n\nfunction getIcon(platform: string): Platform {\n const normalizedPlatform = normalizePlatform(platform);\n const icon = PLATFORM_TO_ICON[normalizedPlatform];\n\n if (icon) {\n return icon;\n }\n\n if (normalizedPlatform.includes(\"-\")) {\n return getLanguageIcon(normalizedPlatform);\n }\n\n return \"default\";\n}\n\nfunction getLanguageIcon(platform: string): Platform {\n const [language] = normalizePlatform(platform).split(\"-\");\n\n return getIcon(language);\n}\n\ntype Platform = typeof PLATFORM_TO_ICON[keyof typeof PLATFORM_TO_ICON];\n\ntype Props = React.HTMLAttributes<HTMLDivElement | HTMLImageElement> & {\n platform: string;\n size?: string | number;\n format?: \"sm\" | \"lg\";\n radius?: number | null;\n withLanguageIcon?: boolean;\n languageIconStyles?: React.CSSProperties;\n};\n\nconst PlatformIcon = ({\n platform,\n size = 20,\n format = \"sm\",\n radius = 3,\n withLanguageIcon,\n languageIconStyles = {},\n style = {},\n ...otherProps\n}: Props) => {\n const icon = getIcon(platform);\n const iconPathRaw = require(`../${\n format === \"lg\" ? \"svg_80x80\" : \"svg\"\n }/${icon}.svg`);\n const iconPath = iconPathRaw?.default ?? iconPathRaw;\n\n const languageIcon = getLanguageIcon(platform);\n const languageIconPathRaw = require(`../svg/${languageIcon}.svg`);\n const languageIconPath = languageIconPathRaw?.default ?? languageIconPathRaw;\n\n if (withLanguageIcon && languageIcon !== icon && languageIcon !== \"default\") {\n return (\n <div {...otherProps} style={{ position: \"relative\", ...style }}>\n <img\n src={iconPath}\n width={size}\n height={size}\n style={{ borderRadius: `${radius}px` }}\n />\n <img\n src={languageIconPath}\n style={{\n position: \"absolute\",\n bottom: \"-1px\",\n right: \"-1px\",\n height: \"30%\",\n width: \"30%\",\n borderRadius: \"2px\",\n ...languageIconStyles,\n }}\n />\n </div>\n );\n }\n\n return (\n <img\n src={iconPath}\n width={size}\n height={size}\n {...otherProps}\n style={{ borderRadius: `${radius}px`, ...style }}\n />\n );\n};\n\nexport default PlatformIcon;\n","import { PLATFORM_TO_ICON } from \"./platformIcon\";\n\n/**\n * Insert <link ref=\"preload\" /> elements into the <head> node to preload\n * platfrom icons. Useful to avoid render blocking / jank when we know we'll be\n * showing platform icons on the next page.\n */\nexport function preloadIcons(format?: \"sm\" | \"lg\") {\n const formats = format ? [format] : [\"lg\", \"sm\"];\n\n const paths: string[] = formats\n .map((f) =>\n Object.values(PLATFORM_TO_ICON).map((icon) =>\n require(`../${f === \"lg\" ? \"svg_80x80\" : \"svg\"}/${icon}.svg`)\n )\n )\n .flat();\n\n document.querySelector(\"head\")?.append(\n ...paths.map((path) => {\n const link = document.createElement(\"link\");\n link.rel = \"preload\";\n link.as = \"image\";\n link.href = path;\n return link;\n })\n );\n}\n"],"names":["PLATFORM_TO_ICON","android","apple","capacitor","clojure","cocoa","cocoa-objc","cocoa-swift","cordova","cpp","cryengine","csharp","csharp-aspnetcore","dart","default","dotnet","dotnet-aspnetcore","dotnet-aspnet","dotnet-awslambda","dotnet-blazor","dotnet-csharp","dotnet-gcpfunctions","dotnet-maui","dotnet-uno","dotnet-xamarin","dotnetcore","dotnetfx","electron","elixir","flutter","fsharp","go","godot","java","java-appengine","java-android","java-log4j","java-log4j2","java-logback","java-logging","java-spring","java-spring-boot","javascript","javascript-angular","javascript-angularjs","javascript-backbone","javascript-browser","javascript-capacitor","javascript-cordova","javascript-electron","javascript-ember","javascript-gatsby","javascript-ionic","javascript-nextjs","javascript-react","javascript-remix","javascript-svelte","javascript-sveltekit","javascript-vue","javascript-wasm","ionic","kotlin","kotlin-android","native","native-qt","node","node-awslambda","node-azurefunctions","node-connect","node-express","node-gcpfunctions","node-koa","node-serverlesscloud","perl","php","php-laravel","php-monolog","php-symfony2","php-symfony","python","python-aiohttp","python-awslambda","python-azurefunctions","python-bottle","python-celery","python-chalice","python-django","python-falcon","python-fastapi","python-flask","python-gcpfunctions","python-pylons","python-pyramid","python-pythonawslambda","python-rq","python-sanic","python-serverless","python-starlette","python-tornado","python-tryton","qt","react-native","ruby","ruby-rack","ruby-rails","ruby-sinatra","rust","rust-actix","scala","stride3d","swift","unity","ue4","unreal","unrealengine","visualbasic","normalizePlatform","platform","replace","getIcon","normalizedPlatform","includes","getLanguageIcon","split","PlatformIcon","size","format","radius","withLanguageIcon","languageIconStyles","style","otherProps","icon","iconPathRaw","require","iconPath","languageIcon","languageIconPathRaw","languageIconPath","React","position","src","width","height","borderRadius","bottom","right","preloadIcons","paths","map","f","Object","values","flat","document","querySelector","append","path","link","createElement","rel","as","href"],"mappings":"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"}
|
package/build/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var a,t=(a=require("react"))&&"object"==typeof a&&"default"in a?a.default:a;function e(){return(e=Object.assign||function(a){for(var t=1;t<arguments.length;t++){var e=arguments[t];for(var
|
|
1
|
+
var a,t=(a=require("react"))&&"object"==typeof a&&"default"in a?a.default:a;function e(){return(e=Object.assign||function(a){for(var t=1;t<arguments.length;t++){var e=arguments[t];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(a[r]=e[r])}return a}).apply(this,arguments)}var r={android:"android",apple:"apple",capacitor:"capacitor",clojure:"clojure",cocoa:"apple","cocoa-objc":"apple","cocoa-swift":"swift",cordova:"cordova",cpp:"cpp",cryengine:"cryengine",csharp:"csharp","csharp-aspnetcore":"csharp",dart:"dart",default:"default",dotnet:"dotnet","dotnet-aspnetcore":"dotnet","dotnet-aspnet":"dotnet","dotnet-awslambda":"aws","dotnet-blazor":"blazor","dotnet-csharp":"csharp","dotnet-gcpfunctions":"gcp","dotnet-maui":"maui","dotnet-uno":"uno","dotnet-xamarin":"xamarin",dotnetcore:"dotnetcore",dotnetfx:"dotnetfx",electron:"electron",elixir:"elixir",flutter:"flutter",fsharp:"fsharp",go:"go",godot:"godot",java:"java","java-appengine":"app-engine","java-android":"android","java-log4j":"java","java-log4j2":"java","java-logback":"logback","java-logging":"java","java-spring":"spring","java-spring-boot":"springboot",javascript:"javascript","javascript-angular":"angularjs","javascript-angularjs":"angularjs","javascript-backbone":"backbone","javascript-browser":"javascript","javascript-capacitor":"capacitor","javascript-cordova":"cordova","javascript-electron":"electron","javascript-ember":"ember","javascript-gatsby":"gatsby","javascript-ionic":"ionic","javascript-nextjs":"nextjs","javascript-react":"react","javascript-remix":"remix","javascript-svelte":"svelte","javascript-sveltekit":"svelte","javascript-vue":"vue","javascript-wasm":"wasm",ionic:"ionic",kotlin:"kotlin","kotlin-android":"android",native:"nativec","native-qt":"qt",node:"nodejs","node-awslambda":"aws","node-azurefunctions":"azure","node-connect":"nodejs","node-express":"express","node-gcpfunctions":"gcp","node-koa":"koa","node-serverlesscloud":"serverless",perl:"perl",php:"php","php-laravel":"laravel","php-monolog":"php","php-symfony2":"symfony","php-symfony":"symfony",python:"python","python-aiohttp":"aiohttp","python-awslambda":"aws","python-azurefunctions":"azure","python-bottle":"bottle","python-celery":"celery","python-chalice":"chalice","python-django":"django","python-falcon":"falcon","python-fastapi":"fastapi","python-flask":"flask","python-gcpfunctions":"gcp","python-pylons":"python","python-pyramid":"pyramid","python-pythonawslambda":"aws","python-rq":"redis","python-sanic":"python","python-serverless":"serverless","python-starlette":"starlette","python-tornado":"tornado","python-tryton":"tryton",qt:"qt","react-native":"react",ruby:"ruby","ruby-rack":"ruby","ruby-rails":"rails","ruby-sinatra":"sinatra",rust:"rust","rust-actix":"actix",scala:"scala",stride3d:"stride3d",swift:"swift",unity:"unity",ue4:"unreal",unreal:"unreal",unrealengine:"unreal",visualbasic:"visual-basic"};function n(a){return a.replace(".","-")}function o(a){var t=n(a);return r[t]||(t.includes("-")?s(t):"default")}function s(a){return o(n(a).split("-")[0])}exports.PlatformIcon=function(a){var r,n,i=a.platform,c=a.size,p=void 0===c?20:c,l=a.format,d=void 0===l?"sm":l,u=a.radius,v=void 0===u?3:u,g=a.withLanguageIcon,y=a.languageIconStyles,h=void 0===y?{}:y,f=a.style,j=void 0===f?{}:f,m=function(a,t){if(null==a)return{};var e,r,n={},o=Object.keys(a);for(r=0;r<o.length;r++)t.indexOf(e=o[r])>=0||(n[e]=a[e]);return n}(a,["platform","size","format","radius","withLanguageIcon","languageIconStyles","style"]),b=o(i),x=require("../"+("lg"===d?"svg_80x80":"svg")+"/"+b+".svg"),w=null!=(r=null==x?void 0:x.default)?r:x,k=s(i),q=require("../svg/"+k+".svg"),z=null!=(n=null==q?void 0:q.default)?n:q;return g&&k!==b&&"default"!==k?t.createElement("div",Object.assign({},m,{style:e({position:"relative"},j)}),t.createElement("img",{src:w,width:p,height:p,style:{borderRadius:v+"px"}}),t.createElement("img",{src:z,style:e({position:"absolute",bottom:"-1px",right:"-1px",height:"30%",width:"30%",borderRadius:"2px"},h)})):t.createElement("img",Object.assign({src:w,width:p,height:p},m,{style:e({borderRadius:v+"px"},j)}))},exports.preloadIcons=function(a){var t,e=(a?[a]:["lg","sm"]).map(function(a){return Object.values(r).map(function(t){return require("../"+("lg"===a?"svg_80x80":"svg")+"/"+t+".svg")})}).flat();null==(t=document.querySelector("head"))||t.append.apply(t,e.map(function(a){var t=document.createElement("link");return t.rel="preload",t.as="image",t.href=a,t}))};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/platformIcon.tsx","../src/preload.tsx"],"sourcesContent":["import React from \"react\";\n\nexport const PLATFORM_TO_ICON = {\n android: \"android\",\n apple: \"apple\",\n capacitor: \"capacitor\",\n clojure: \"clojure\",\n cocoa: \"apple\",\n \"cocoa-objc\": \"apple\",\n \"cocoa-swift\": \"swift\",\n cordova: \"cordova\",\n cpp: \"cpp\",\n cryengine: \"cryengine\",\n csharp: \"csharp\",\n \"csharp-aspnetcore\": \"csharp\",\n dart: \"dart\",\n default: \"default\",\n dotnet: \"dotnet\",\n \"dotnet-aspnetcore\": \"dotnet\",\n \"dotnet-aspnet\": \"dotnet\",\n \"dotnet-awslambda\": \"aws\",\n \"dotnet-blazor\": \"blazor\",\n \"dotnet-csharp\": \"csharp\",\n \"dotnet-gcpfunctions\": \"gcp\",\n \"dotnet-maui\": \"maui\",\n \"dotnet-uno\": \"uno\",\n \"dotnet-xamarin\": \"xamarin\",\n dotnetcore: \"dotnetcore\",\n dotnetfx: \"dotnetfx\",\n electron: \"electron\",\n elixir: \"elixir\",\n flutter: \"flutter\",\n fsharp: \"fsharp\",\n go: \"go\",\n godot: \"godot\",\n java: \"java\",\n \"java-appengine\": \"app-engine\",\n \"java-android\": \"android\",\n \"java-log4j\": \"java\",\n \"java-log4j2\": \"java\",\n \"java-logback\": \"logback\",\n \"java-logging\": \"java\",\n \"java-spring\": \"spring\",\n \"java-spring-boot\": \"springboot\",\n javascript: \"javascript\",\n \"javascript-angular\": \"angularjs\",\n \"javascript-angularjs\": \"angularjs\",\n \"javascript-backbone\": \"backbone\",\n \"javascript-browser\": \"javascript\",\n \"javascript-capacitor\": \"capacitor\",\n \"javascript-cordova\": \"cordova\",\n \"javascript-electron\": \"electron\",\n \"javascript-ember\": \"ember\",\n \"javascript-gatsby\": \"gatsby\",\n \"javascript-ionic\": \"ionic\",\n \"javascript-nextjs\": \"nextjs\",\n \"javascript-react\": \"react\",\n \"javascript-remix\": \"remix\",\n \"javascript-svelte\": \"svelte\",\n \"javascript-sveltekit\": \"svelte\",\n \"javascript-vue\": \"vue\",\n \"javascript-wasm\": \"wasm\",\n ionic: \"ionic\",\n kotlin: \"kotlin\",\n \"kotlin-android\": \"android\",\n native: \"nativec\",\n \"native-qt\": \"qt\",\n node: \"nodejs\",\n \"node-awslambda\": \"aws\",\n \"node-azurefunctions\": \"azure\",\n \"node-connect\": \"nodejs\",\n \"node-express\": \"express\",\n \"node-gcpfunctions\": \"gcp\",\n \"node-koa\": \"koa\",\n \"node-serverlesscloud\": \"serverless\",\n perl: \"perl\",\n php: \"php\",\n \"php-laravel\": \"laravel\",\n \"php-monolog\": \"php\",\n \"php-symfony2\": \"symfony\",\n \"php-symfony\": \"symfony\",\n python: \"python\",\n \"python-aiohttp\": \"aiohttp\",\n \"python-awslambda\": \"aws\",\n \"python-azurefunctions\": \"azure\",\n \"python-bottle\": \"bottle\",\n \"python-celery\": \"celery\",\n \"python-chalice\": \"chalice\",\n \"python-django\": \"django\",\n \"python-falcon\": \"falcon\",\n \"python-fastapi\": \"fastapi\",\n \"python-flask\": \"flask\",\n \"python-gcpfunctions\": \"gcp\",\n \"python-pylons\": \"python\",\n \"python-pyramid\": \"pyramid\",\n \"python-pythonawslambda\": \"aws\",\n \"python-rq\": \"redis\",\n \"python-sanic\": \"python\",\n \"python-serverless\": \"serverless\",\n \"python-starlette\": \"starlette\",\n \"python-tornado\": \"tornado\",\n \"python-tryton\": \"tryton\",\n qt: \"qt\",\n \"react-native\": \"react\",\n ruby: \"ruby\",\n \"ruby-rack\": \"ruby\",\n \"ruby-rails\": \"rails\",\n \"ruby-sinatra\": \"sinatra\",\n rust: \"rust\",\n \"rust-actix\": \"actix\",\n scala: \"scala\",\n stride3d: \"stride3d\",\n swift: \"swift\",\n unity: \"unity\",\n // This will be deprecated in favor of 'unrealengine'\n ue4: \"unreal\",\n unreal: \"unreal\",\n unrealengine: \"unreal\",\n visualbasic: \"visual-basic\",\n // Don't add new platforms down here!\n // Please add them where they belong alphabetically\n} as const;\n\nfunction normalizePlatform(platform: string): string {\n // sentry uses format python-django, but docs uses python.django\n // this function normalizes that\n return platform.replace(\".\", \"-\");\n}\n\nfunction getIcon(platform: string): Platform {\n const normalizedPlatform = normalizePlatform(platform);\n const icon = PLATFORM_TO_ICON[normalizedPlatform];\n\n if (icon) {\n return icon;\n }\n\n if (normalizedPlatform.includes(\"-\")) {\n return getLanguageIcon(normalizedPlatform);\n }\n\n return \"default\";\n}\n\nfunction getLanguageIcon(platform: string): Platform {\n const [language] = normalizePlatform(platform).split(\"-\");\n\n return getIcon(language);\n}\n\ntype Platform = typeof PLATFORM_TO_ICON[keyof typeof PLATFORM_TO_ICON];\n\ntype Props = React.HTMLAttributes<HTMLDivElement | HTMLImageElement> & {\n platform: string;\n size?: string | number;\n format?: \"sm\" | \"lg\";\n radius?: number | null;\n withLanguageIcon?: boolean;\n languageIconStyles?: React.CSSProperties;\n};\n\nconst PlatformIcon = ({\n platform,\n size = 20,\n format = \"sm\",\n radius = 3,\n withLanguageIcon,\n languageIconStyles = {},\n style = {},\n ...otherProps\n}: Props) => {\n const icon = getIcon(platform);\n const iconPathRaw = require(`../${\n format === \"lg\" ? \"svg_80x80\" : \"svg\"\n }/${icon}.svg`);\n const iconPath = iconPathRaw?.default ?? iconPathRaw;\n\n const languageIcon = getLanguageIcon(platform);\n const languageIconPathRaw = require(`../svg/${languageIcon}.svg`);\n const languageIconPath = languageIconPathRaw?.default ?? languageIconPathRaw;\n\n if (withLanguageIcon && languageIcon !== icon && languageIcon !== \"default\") {\n return (\n <div {...otherProps} style={{ position: \"relative\", ...style }}>\n <img\n src={iconPath}\n width={size}\n height={size}\n style={{ borderRadius: `${radius}px` }}\n />\n <img\n src={languageIconPath}\n style={{\n position: \"absolute\",\n bottom: \"-1px\",\n right: \"-1px\",\n height: \"30%\",\n width: \"30%\",\n borderRadius: \"2px\",\n ...languageIconStyles,\n }}\n />\n </div>\n );\n }\n\n return (\n <img\n src={iconPath}\n width={size}\n height={size}\n {...otherProps}\n style={{ borderRadius: `${radius}px`, ...style }}\n />\n );\n};\n\nexport default PlatformIcon;\n","import { PLATFORM_TO_ICON } from \"./platformIcon\";\n\n/**\n * Insert <link ref=\"preload\" /> elements into the <head> node to preload\n * platfrom icons. Useful to avoid render blocking / jank when we know we'll be\n * showing platform icons on the next page.\n */\nexport function preloadIcons(format?: \"sm\" | \"lg\") {\n const formats = format ? [format] : [\"lg\", \"sm\"];\n\n const paths: string[] = formats\n .map((f) =>\n Object.values(PLATFORM_TO_ICON).map((icon) =>\n require(`../${f === \"lg\" ? \"svg_80x80\" : \"svg\"}/${icon}.svg`)\n )\n )\n .flat();\n\n document.querySelector(\"head\")?.append(\n ...paths.map((path) => {\n const link = document.createElement(\"link\");\n link.rel = \"preload\";\n link.as = \"image\";\n link.href = path;\n return link;\n })\n );\n}\n"],"names":["PLATFORM_TO_ICON","android","apple","capacitor","clojure","cocoa","cocoa-objc","cocoa-swift","cordova","cpp","cryengine","csharp","csharp-aspnetcore","dart","default","dotnet","dotnet-aspnetcore","dotnet-aspnet","dotnet-awslambda","dotnet-blazor","dotnet-csharp","dotnet-gcpfunctions","dotnet-maui","dotnet-uno","dotnet-xamarin","dotnetcore","dotnetfx","electron","elixir","flutter","fsharp","go","godot","java","java-appengine","java-android","java-log4j","java-log4j2","java-logback","java-logging","java-spring","java-spring-boot","javascript","javascript-angular","javascript-angularjs","javascript-backbone","javascript-browser","javascript-capacitor","javascript-cordova","javascript-electron","javascript-ember","javascript-gatsby","javascript-ionic","javascript-nextjs","javascript-react","javascript-remix","javascript-svelte","javascript-sveltekit","javascript-vue","javascript-wasm","ionic","kotlin","kotlin-android","native","native-qt","node","node-awslambda","node-azurefunctions","node-connect","node-express","node-gcpfunctions","node-koa","node-serverlesscloud","perl","php","php-laravel","php-monolog","php-symfony2","php-symfony","python","python-aiohttp","python-awslambda","python-azurefunctions","python-bottle","python-celery","python-chalice","python-django","python-falcon","python-fastapi","python-flask","python-gcpfunctions","python-pylons","python-pyramid","python-pythonawslambda","python-rq","python-sanic","python-serverless","python-starlette","python-tornado","python-tryton","qt","react-native","ruby","ruby-rack","ruby-rails","ruby-sinatra","rust","rust-actix","scala","stride3d","swift","unity","ue4","unreal","unrealengine","visualbasic","normalizePlatform","platform","replace","getIcon","normalizedPlatform","includes","getLanguageIcon","split","size","format","radius","withLanguageIcon","languageIconStyles","style","otherProps","icon","iconPathRaw","require","iconPath","languageIcon","languageIconPathRaw","languageIconPath","React","position","src","width","height","borderRadius","bottom","right","paths","map","f","Object","values","flat","document","querySelector","append","path","link","createElement","rel","as","href"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import a from"react";function t(){return(t=Object.assign||function(a){for(var t=1;t<arguments.length;t++){var e=arguments[t];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(a[n]=e[n])}return a}).apply(this,arguments)}const e={android:"android",apple:"apple",capacitor:"capacitor",clojure:"clojure",cocoa:"apple","cocoa-objc":"apple","cocoa-swift":"swift",cordova:"cordova",cpp:"cpp",cryengine:"cryengine",csharp:"csharp","csharp-aspnetcore":"csharp",dart:"dart",default:"default",dotnet:"dotnet","dotnet-aspnetcore":"dotnet","dotnet-aspnet":"dotnet","dotnet-awslambda":"aws","dotnet-blazor":"blazor","dotnet-csharp":"csharp","dotnet-gcpfunctions":"gcp","dotnet-maui":"maui","dotnet-uno":"uno","dotnet-xamarin":"xamarin",dotnetcore:"dotnetcore",dotnetfx:"dotnetfx",electron:"electron",elixir:"elixir",flutter:"flutter",fsharp:"fsharp",go:"go",godot:"godot",java:"java","java-appengine":"app-engine","java-android":"android","java-log4j":"java","java-log4j2":"java","java-logback":"logback","java-logging":"java","java-spring":"spring","java-spring-boot":"springboot",javascript:"javascript","javascript-angular":"angularjs","javascript-angularjs":"angularjs","javascript-backbone":"backbone","javascript-browser":"javascript","javascript-capacitor":"capacitor","javascript-cordova":"cordova","javascript-electron":"electron","javascript-ember":"ember","javascript-gatsby":"gatsby","javascript-ionic":"ionic","javascript-nextjs":"nextjs","javascript-react":"react","javascript-remix":"remix","javascript-svelte":"svelte","javascript-sveltekit":"svelte","javascript-vue":"vue","javascript-wasm":"wasm",ionic:"ionic",kotlin:"kotlin","kotlin-android":"android",native:"nativec","native-qt":"qt",node:"nodejs","node-awslambda":"aws","node-azurefunctions":"azure","node-connect":"nodejs","node-express":"express","node-gcpfunctions":"gcp","node-koa":"koa","node-serverlesscloud":"serverless",perl:"perl",php:"php","php-laravel":"laravel","php-monolog":"php","php-symfony2":"symfony","php-symfony":"symfony",python:"python","python-aiohttp":"aiohttp","python-awslambda":"aws","python-azurefunctions":"azure","python-bottle":"bottle","python-celery":"celery","python-chalice":"chalice","python-django":"django","python-falcon":"falcon","python-fastapi":"fastapi","python-flask":"flask","python-gcpfunctions":"gcp","python-pylons":"python","python-pyramid":"pyramid","python-pythonawslambda":"aws","python-rq":"redis","python-sanic":"python","python-serverless":"serverless","python-starlette":"starlette","python-tornado":"tornado","python-tryton":"tryton",qt:"qt","react-native":"react",ruby:"ruby","ruby-rack":"ruby","ruby-rails":"rails","ruby-sinatra":"sinatra",rust:"rust","rust-actix":"actix",scala:"scala",stride3d:"stride3d",swift:"swift",unity:"unity",ue4:"unreal",unreal:"unreal",unrealengine:"unreal",visualbasic:"visual-basic"};function n(a){return a.replace(".","-")}function r(a){const t=n(a);return e[t]||(t.includes("-")?o(t):"default")}function o(a){const[t]=n(a).split("-");return r(t)}const s=e=>{var n,s;let{platform:i,size:c=20,format:p="sm",radius:l=3,withLanguageIcon:d,languageIconStyles:u={},style:v={}}=e,g=function(a,t){if(null==a)return{};var e,n,r={},o=Object.keys(a);for(n=0;n<o.length;n++)t.indexOf(e=o[n])>=0||(r[e]=a[e]);return r}(e,["platform","size","format","radius","withLanguageIcon","languageIconStyles","style"]);const y=r(i),h=require(`../${"lg"===p?"svg_80x80":"svg"}/${y}.svg`),j=null!=(n=null==h?void 0:h.default)?n:h,f=o(i),m=require(`../svg/${f}.svg`),b=null!=(s=null==m?void 0:m.default)?s:m;return d&&f!==y&&"default"!==f?a.createElement("div",Object.assign({},g,{style:t({position:"relative"},v)}),a.createElement("img",{src:j,width:c,height:c,style:{borderRadius:l+"px"}}),a.createElement("img",{src:b,style:t({position:"absolute",bottom:"-1px",right:"-1px",height:"30%",width:"30%",borderRadius:"2px"},u)})):a.createElement("img",Object.assign({src:j,width:c,height:c},g,{style:t({borderRadius:l+"px"},v)}))};function i(a){var t;const n=(a?[a]:["lg","sm"]).map(a=>Object.values(e).map(t=>require(`../${"lg"===a?"svg_80x80":"svg"}/${t}.svg`))).flat();null==(t=document.querySelector("head"))||t.append(...n.map(a=>{const t=document.createElement("link");return t.rel="preload",t.as="image",t.href=a,t}))}export{s as PlatformIcon,i as preloadIcons};
|
|
2
|
+
//# sourceMappingURL=index.modern.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.modern.js","sources":["../src/platformIcon.tsx","../src/preload.tsx"],"sourcesContent":["import React from \"react\";\n\nexport const PLATFORM_TO_ICON = {\n android: \"android\",\n apple: \"apple\",\n capacitor: \"capacitor\",\n clojure: \"clojure\",\n cocoa: \"apple\",\n \"cocoa-objc\": \"apple\",\n \"cocoa-swift\": \"swift\",\n cordova: \"cordova\",\n cpp: \"cpp\",\n cryengine: \"cryengine\",\n csharp: \"csharp\",\n \"csharp-aspnetcore\": \"csharp\",\n dart: \"dart\",\n default: \"default\",\n dotnet: \"dotnet\",\n \"dotnet-aspnetcore\": \"dotnet\",\n \"dotnet-aspnet\": \"dotnet\",\n \"dotnet-awslambda\": \"aws\",\n \"dotnet-blazor\": \"blazor\",\n \"dotnet-csharp\": \"csharp\",\n \"dotnet-gcpfunctions\": \"gcp\",\n \"dotnet-maui\": \"maui\",\n \"dotnet-uno\": \"uno\",\n \"dotnet-xamarin\": \"xamarin\",\n dotnetcore: \"dotnetcore\",\n dotnetfx: \"dotnetfx\",\n electron: \"electron\",\n elixir: \"elixir\",\n flutter: \"flutter\",\n fsharp: \"fsharp\",\n go: \"go\",\n godot: \"godot\",\n java: \"java\",\n \"java-appengine\": \"app-engine\",\n \"java-android\": \"android\",\n \"java-log4j\": \"java\",\n \"java-log4j2\": \"java\",\n \"java-logback\": \"logback\",\n \"java-logging\": \"java\",\n \"java-spring\": \"spring\",\n \"java-spring-boot\": \"springboot\",\n javascript: \"javascript\",\n \"javascript-angular\": \"angularjs\",\n \"javascript-angularjs\": \"angularjs\",\n \"javascript-backbone\": \"backbone\",\n \"javascript-browser\": \"javascript\",\n \"javascript-capacitor\": \"capacitor\",\n \"javascript-cordova\": \"cordova\",\n \"javascript-electron\": \"electron\",\n \"javascript-ember\": \"ember\",\n \"javascript-gatsby\": \"gatsby\",\n \"javascript-ionic\": \"ionic\",\n \"javascript-nextjs\": \"nextjs\",\n \"javascript-react\": \"react\",\n \"javascript-remix\": \"remix\",\n \"javascript-svelte\": \"svelte\",\n \"javascript-sveltekit\": \"svelte\",\n \"javascript-vue\": \"vue\",\n \"javascript-wasm\": \"wasm\",\n ionic: \"ionic\",\n kotlin: \"kotlin\",\n \"kotlin-android\": \"android\",\n native: \"nativec\",\n \"native-qt\": \"qt\",\n node: \"nodejs\",\n \"node-awslambda\": \"aws\",\n \"node-azurefunctions\": \"azure\",\n \"node-connect\": \"nodejs\",\n \"node-express\": \"express\",\n \"node-gcpfunctions\": \"gcp\",\n \"node-koa\": \"koa\",\n \"node-serverlesscloud\": \"serverless\",\n perl: \"perl\",\n php: \"php\",\n \"php-laravel\": \"laravel\",\n \"php-monolog\": \"php\",\n \"php-symfony2\": \"symfony\",\n \"php-symfony\": \"symfony\",\n python: \"python\",\n \"python-aiohttp\": \"aiohttp\",\n \"python-awslambda\": \"aws\",\n \"python-azurefunctions\": \"azure\",\n \"python-bottle\": \"bottle\",\n \"python-celery\": \"celery\",\n \"python-chalice\": \"chalice\",\n \"python-django\": \"django\",\n \"python-falcon\": \"falcon\",\n \"python-fastapi\": \"fastapi\",\n \"python-flask\": \"flask\",\n \"python-gcpfunctions\": \"gcp\",\n \"python-pylons\": \"python\",\n \"python-pyramid\": \"pyramid\",\n \"python-pythonawslambda\": \"aws\",\n \"python-rq\": \"redis\",\n \"python-sanic\": \"python\",\n \"python-serverless\": \"serverless\",\n \"python-starlette\": \"starlette\",\n \"python-tornado\": \"tornado\",\n \"python-tryton\": \"tryton\",\n qt: \"qt\",\n \"react-native\": \"react\",\n ruby: \"ruby\",\n \"ruby-rack\": \"ruby\",\n \"ruby-rails\": \"rails\",\n \"ruby-sinatra\": \"sinatra\",\n rust: \"rust\",\n \"rust-actix\": \"actix\",\n scala: \"scala\",\n stride3d: \"stride3d\",\n swift: \"swift\",\n unity: \"unity\",\n // This will be deprecated in favor of 'unrealengine'\n ue4: \"unreal\",\n unreal: \"unreal\",\n unrealengine: \"unreal\",\n visualbasic: \"visual-basic\",\n // Don't add new platforms down here!\n // Please add them where they belong alphabetically\n} as const;\n\nfunction normalizePlatform(platform: string): string {\n // sentry uses format python-django, but docs uses python.django\n // this function normalizes that\n return platform.replace(\".\", \"-\");\n}\n\nfunction getIcon(platform: string): Platform {\n const normalizedPlatform = normalizePlatform(platform);\n const icon = PLATFORM_TO_ICON[normalizedPlatform];\n\n if (icon) {\n return icon;\n }\n\n if (normalizedPlatform.includes(\"-\")) {\n return getLanguageIcon(normalizedPlatform);\n }\n\n return \"default\";\n}\n\nfunction getLanguageIcon(platform: string): Platform {\n const [language] = normalizePlatform(platform).split(\"-\");\n\n return getIcon(language);\n}\n\ntype Platform = typeof PLATFORM_TO_ICON[keyof typeof PLATFORM_TO_ICON];\n\ntype Props = React.HTMLAttributes<HTMLDivElement | HTMLImageElement> & {\n platform: string;\n size?: string | number;\n format?: \"sm\" | \"lg\";\n radius?: number | null;\n withLanguageIcon?: boolean;\n languageIconStyles?: React.CSSProperties;\n};\n\nconst PlatformIcon = ({\n platform,\n size = 20,\n format = \"sm\",\n radius = 3,\n withLanguageIcon,\n languageIconStyles = {},\n style = {},\n ...otherProps\n}: Props) => {\n const icon = getIcon(platform);\n const iconPathRaw = require(`../${\n format === \"lg\" ? \"svg_80x80\" : \"svg\"\n }/${icon}.svg`);\n const iconPath = iconPathRaw?.default ?? iconPathRaw;\n\n const languageIcon = getLanguageIcon(platform);\n const languageIconPathRaw = require(`../svg/${languageIcon}.svg`);\n const languageIconPath = languageIconPathRaw?.default ?? languageIconPathRaw;\n\n if (withLanguageIcon && languageIcon !== icon && languageIcon !== \"default\") {\n return (\n <div {...otherProps} style={{ position: \"relative\", ...style }}>\n <img\n src={iconPath}\n width={size}\n height={size}\n style={{ borderRadius: `${radius}px` }}\n />\n <img\n src={languageIconPath}\n style={{\n position: \"absolute\",\n bottom: \"-1px\",\n right: \"-1px\",\n height: \"30%\",\n width: \"30%\",\n borderRadius: \"2px\",\n ...languageIconStyles,\n }}\n />\n </div>\n );\n }\n\n return (\n <img\n src={iconPath}\n width={size}\n height={size}\n {...otherProps}\n style={{ borderRadius: `${radius}px`, ...style }}\n />\n );\n};\n\nexport default PlatformIcon;\n","import { PLATFORM_TO_ICON } from \"./platformIcon\";\n\n/**\n * Insert <link ref=\"preload\" /> elements into the <head> node to preload\n * platfrom icons. Useful to avoid render blocking / jank when we know we'll be\n * showing platform icons on the next page.\n */\nexport function preloadIcons(format?: \"sm\" | \"lg\") {\n const formats = format ? [format] : [\"lg\", \"sm\"];\n\n const paths: string[] = formats\n .map((f) =>\n Object.values(PLATFORM_TO_ICON).map((icon) =>\n require(`../${f === \"lg\" ? \"svg_80x80\" : \"svg\"}/${icon}.svg`)\n )\n )\n .flat();\n\n document.querySelector(\"head\")?.append(\n ...paths.map((path) => {\n const link = document.createElement(\"link\");\n link.rel = \"preload\";\n link.as = \"image\";\n link.href = path;\n return link;\n })\n );\n}\n"],"names":["PLATFORM_TO_ICON","android","apple","capacitor","clojure","cocoa","cocoa-objc","cocoa-swift","cordova","cpp","cryengine","csharp","csharp-aspnetcore","dart","default","dotnet","dotnet-aspnetcore","dotnet-aspnet","dotnet-awslambda","dotnet-blazor","dotnet-csharp","dotnet-gcpfunctions","dotnet-maui","dotnet-uno","dotnet-xamarin","dotnetcore","dotnetfx","electron","elixir","flutter","fsharp","go","godot","java","java-appengine","java-android","java-log4j","java-log4j2","java-logback","java-logging","java-spring","java-spring-boot","javascript","javascript-angular","javascript-angularjs","javascript-backbone","javascript-browser","javascript-capacitor","javascript-cordova","javascript-electron","javascript-ember","javascript-gatsby","javascript-ionic","javascript-nextjs","javascript-react","javascript-remix","javascript-svelte","javascript-sveltekit","javascript-vue","javascript-wasm","ionic","kotlin","kotlin-android","native","native-qt","node","node-awslambda","node-azurefunctions","node-connect","node-express","node-gcpfunctions","node-koa","node-serverlesscloud","perl","php","php-laravel","php-monolog","php-symfony2","php-symfony","python","python-aiohttp","python-awslambda","python-azurefunctions","python-bottle","python-celery","python-chalice","python-django","python-falcon","python-fastapi","python-flask","python-gcpfunctions","python-pylons","python-pyramid","python-pythonawslambda","python-rq","python-sanic","python-serverless","python-starlette","python-tornado","python-tryton","qt","react-native","ruby","ruby-rack","ruby-rails","ruby-sinatra","rust","rust-actix","scala","stride3d","swift","unity","ue4","unreal","unrealengine","visualbasic","normalizePlatform","platform","replace","getIcon","normalizedPlatform","includes","getLanguageIcon","language","split","PlatformIcon","size","format","radius","withLanguageIcon","languageIconStyles","style","otherProps","icon","iconPathRaw","require","iconPath","languageIcon","languageIconPathRaw","languageIconPath","React","position","src","width","height","borderRadius","bottom","right","preloadIcons","paths","map","f","Object","values","flat","document","querySelector","append","path","link","createElement","rel","as","href"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
!function(a,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t((a=a||self).platformicons={},a.react)}(this,function(a,t){function e(){return(e=Object.assign||function(a){for(var t=1;t<arguments.length;t++){var e=arguments[t];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(a[n]=e[n])}return a}).apply(this,arguments)}t=t&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t;var n={android:"android",apple:"apple",capacitor:"capacitor",clojure:"clojure",cocoa:"apple","cocoa-objc":"apple","cocoa-swift":"swift",cordova:"cordova",cpp:"cpp",cryengine:"cryengine",csharp:"csharp","csharp-aspnetcore":"csharp",dart:"dart",default:"default",dotnet:"dotnet","dotnet-aspnetcore":"dotnet","dotnet-aspnet":"dotnet","dotnet-awslambda":"aws","dotnet-blazor":"blazor","dotnet-csharp":"csharp","dotnet-gcpfunctions":"gcp","dotnet-maui":"maui","dotnet-uno":"uno","dotnet-xamarin":"xamarin",dotnetcore:"dotnetcore",dotnetfx:"dotnetfx",electron:"electron",elixir:"elixir",flutter:"flutter",fsharp:"fsharp",go:"go",godot:"godot",java:"java","java-appengine":"app-engine","java-android":"android","java-log4j":"java","java-log4j2":"java","java-logback":"logback","java-logging":"java","java-spring":"spring","java-spring-boot":"springboot",javascript:"javascript","javascript-angular":"angularjs","javascript-angularjs":"angularjs","javascript-backbone":"backbone","javascript-browser":"javascript","javascript-capacitor":"capacitor","javascript-cordova":"cordova","javascript-electron":"electron","javascript-ember":"ember","javascript-gatsby":"gatsby","javascript-ionic":"ionic","javascript-nextjs":"nextjs","javascript-react":"react","javascript-remix":"remix","javascript-svelte":"svelte","javascript-sveltekit":"svelte","javascript-vue":"vue","javascript-wasm":"wasm",ionic:"ionic",kotlin:"kotlin","kotlin-android":"android",native:"nativec","native-qt":"qt",node:"nodejs","node-awslambda":"aws","node-azurefunctions":"azure","node-connect":"nodejs","node-express":"express","node-gcpfunctions":"gcp","node-koa":"koa","node-serverlesscloud":"serverless",perl:"perl",php:"php","php-laravel":"laravel","php-monolog":"php","php-symfony2":"symfony","php-symfony":"symfony",python:"python","python-aiohttp":"aiohttp","python-awslambda":"aws","python-azurefunctions":"azure","python-bottle":"bottle","python-celery":"celery","python-chalice":"chalice","python-django":"django","python-falcon":"falcon","python-fastapi":"fastapi","python-flask":"flask","python-gcpfunctions":"gcp","python-pylons":"python","python-pyramid":"pyramid","python-pythonawslambda":"aws","python-rq":"redis","python-sanic":"python","python-serverless":"serverless","python-starlette":"starlette","python-tornado":"tornado","python-tryton":"tryton",qt:"qt","react-native":"react",ruby:"ruby","ruby-rack":"ruby","ruby-rails":"rails","ruby-sinatra":"sinatra",rust:"rust","rust-actix":"actix",scala:"scala",stride3d:"stride3d",swift:"swift",unity:"unity",ue4:"unreal",unreal:"unreal",unrealengine:"unreal",visualbasic:"visual-basic"};function r(a){return a.replace(".","-")}function o(a){var t=r(a);return n[t]||(t.includes("-")?i(t):"default")}function i(a){return o(r(a).split("-")[0])}a.PlatformIcon=function(a){var n,r,s=a.platform,c=a.size,p=void 0===c?20:c,l=a.format,d=void 0===l?"sm":l,u=a.radius,v=void 0===u?3:u,y=a.withLanguageIcon,f=a.languageIconStyles,g=void 0===f?{}:f,h=a.style,j=void 0===h?{}:h,m=function(a,t){if(null==a)return{};var e,n,r={},o=Object.keys(a);for(n=0;n<o.length;n++)t.indexOf(e=o[n])>=0||(r[e]=a[e]);return r}(a,["platform","size","format","radius","withLanguageIcon","languageIconStyles","style"]),b=o(s),x=require("../"+("lg"===d?"svg_80x80":"svg")+"/"+b+".svg"),w=null!=(n=null==x?void 0:x.default)?n:x,k=i(s),q=require("../svg/"+k+".svg"),O=null!=(r=null==q?void 0:q.default)?r:q;return y&&k!==b&&"default"!==k?t.createElement("div",Object.assign({},m,{style:e({position:"relative"},j)}),t.createElement("img",{src:w,width:p,height:p,style:{borderRadius:v+"px"}}),t.createElement("img",{src:O,style:e({position:"absolute",bottom:"-1px",right:"-1px",height:"30%",width:"30%",borderRadius:"2px"},g)})):t.createElement("img",Object.assign({src:w,width:p,height:p},m,{style:e({borderRadius:v+"px"},j)}))},a.preloadIcons=function(a){var t,e=(a?[a]:["lg","sm"]).map(function(a){return Object.values(n).map(function(t){return require("../"+("lg"===a?"svg_80x80":"svg")+"/"+t+".svg")})}).flat();null==(t=document.querySelector("head"))||t.append.apply(t,e.map(function(a){var t=document.createElement("link");return t.rel="preload",t.as="image",t.href=a,t}))}});
|
|
2
|
+
//# sourceMappingURL=index.umd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../src/platformIcon.tsx","../src/preload.tsx"],"sourcesContent":["import React from \"react\";\n\nexport const PLATFORM_TO_ICON = {\n android: \"android\",\n apple: \"apple\",\n capacitor: \"capacitor\",\n clojure: \"clojure\",\n cocoa: \"apple\",\n \"cocoa-objc\": \"apple\",\n \"cocoa-swift\": \"swift\",\n cordova: \"cordova\",\n cpp: \"cpp\",\n cryengine: \"cryengine\",\n csharp: \"csharp\",\n \"csharp-aspnetcore\": \"csharp\",\n dart: \"dart\",\n default: \"default\",\n dotnet: \"dotnet\",\n \"dotnet-aspnetcore\": \"dotnet\",\n \"dotnet-aspnet\": \"dotnet\",\n \"dotnet-awslambda\": \"aws\",\n \"dotnet-blazor\": \"blazor\",\n \"dotnet-csharp\": \"csharp\",\n \"dotnet-gcpfunctions\": \"gcp\",\n \"dotnet-maui\": \"maui\",\n \"dotnet-uno\": \"uno\",\n \"dotnet-xamarin\": \"xamarin\",\n dotnetcore: \"dotnetcore\",\n dotnetfx: \"dotnetfx\",\n electron: \"electron\",\n elixir: \"elixir\",\n flutter: \"flutter\",\n fsharp: \"fsharp\",\n go: \"go\",\n godot: \"godot\",\n java: \"java\",\n \"java-appengine\": \"app-engine\",\n \"java-android\": \"android\",\n \"java-log4j\": \"java\",\n \"java-log4j2\": \"java\",\n \"java-logback\": \"logback\",\n \"java-logging\": \"java\",\n \"java-spring\": \"spring\",\n \"java-spring-boot\": \"springboot\",\n javascript: \"javascript\",\n \"javascript-angular\": \"angularjs\",\n \"javascript-angularjs\": \"angularjs\",\n \"javascript-backbone\": \"backbone\",\n \"javascript-browser\": \"javascript\",\n \"javascript-capacitor\": \"capacitor\",\n \"javascript-cordova\": \"cordova\",\n \"javascript-electron\": \"electron\",\n \"javascript-ember\": \"ember\",\n \"javascript-gatsby\": \"gatsby\",\n \"javascript-ionic\": \"ionic\",\n \"javascript-nextjs\": \"nextjs\",\n \"javascript-react\": \"react\",\n \"javascript-remix\": \"remix\",\n \"javascript-svelte\": \"svelte\",\n \"javascript-sveltekit\": \"svelte\",\n \"javascript-vue\": \"vue\",\n \"javascript-wasm\": \"wasm\",\n ionic: \"ionic\",\n kotlin: \"kotlin\",\n \"kotlin-android\": \"android\",\n native: \"nativec\",\n \"native-qt\": \"qt\",\n node: \"nodejs\",\n \"node-awslambda\": \"aws\",\n \"node-azurefunctions\": \"azure\",\n \"node-connect\": \"nodejs\",\n \"node-express\": \"express\",\n \"node-gcpfunctions\": \"gcp\",\n \"node-koa\": \"koa\",\n \"node-serverlesscloud\": \"serverless\",\n perl: \"perl\",\n php: \"php\",\n \"php-laravel\": \"laravel\",\n \"php-monolog\": \"php\",\n \"php-symfony2\": \"symfony\",\n \"php-symfony\": \"symfony\",\n python: \"python\",\n \"python-aiohttp\": \"aiohttp\",\n \"python-awslambda\": \"aws\",\n \"python-azurefunctions\": \"azure\",\n \"python-bottle\": \"bottle\",\n \"python-celery\": \"celery\",\n \"python-chalice\": \"chalice\",\n \"python-django\": \"django\",\n \"python-falcon\": \"falcon\",\n \"python-fastapi\": \"fastapi\",\n \"python-flask\": \"flask\",\n \"python-gcpfunctions\": \"gcp\",\n \"python-pylons\": \"python\",\n \"python-pyramid\": \"pyramid\",\n \"python-pythonawslambda\": \"aws\",\n \"python-rq\": \"redis\",\n \"python-sanic\": \"python\",\n \"python-serverless\": \"serverless\",\n \"python-starlette\": \"starlette\",\n \"python-tornado\": \"tornado\",\n \"python-tryton\": \"tryton\",\n qt: \"qt\",\n \"react-native\": \"react\",\n ruby: \"ruby\",\n \"ruby-rack\": \"ruby\",\n \"ruby-rails\": \"rails\",\n \"ruby-sinatra\": \"sinatra\",\n rust: \"rust\",\n \"rust-actix\": \"actix\",\n scala: \"scala\",\n stride3d: \"stride3d\",\n swift: \"swift\",\n unity: \"unity\",\n // This will be deprecated in favor of 'unrealengine'\n ue4: \"unreal\",\n unreal: \"unreal\",\n unrealengine: \"unreal\",\n visualbasic: \"visual-basic\",\n // Don't add new platforms down here!\n // Please add them where they belong alphabetically\n} as const;\n\nfunction normalizePlatform(platform: string): string {\n // sentry uses format python-django, but docs uses python.django\n // this function normalizes that\n return platform.replace(\".\", \"-\");\n}\n\nfunction getIcon(platform: string): Platform {\n const normalizedPlatform = normalizePlatform(platform);\n const icon = PLATFORM_TO_ICON[normalizedPlatform];\n\n if (icon) {\n return icon;\n }\n\n if (normalizedPlatform.includes(\"-\")) {\n return getLanguageIcon(normalizedPlatform);\n }\n\n return \"default\";\n}\n\nfunction getLanguageIcon(platform: string): Platform {\n const [language] = normalizePlatform(platform).split(\"-\");\n\n return getIcon(language);\n}\n\ntype Platform = typeof PLATFORM_TO_ICON[keyof typeof PLATFORM_TO_ICON];\n\ntype Props = React.HTMLAttributes<HTMLDivElement | HTMLImageElement> & {\n platform: string;\n size?: string | number;\n format?: \"sm\" | \"lg\";\n radius?: number | null;\n withLanguageIcon?: boolean;\n languageIconStyles?: React.CSSProperties;\n};\n\nconst PlatformIcon = ({\n platform,\n size = 20,\n format = \"sm\",\n radius = 3,\n withLanguageIcon,\n languageIconStyles = {},\n style = {},\n ...otherProps\n}: Props) => {\n const icon = getIcon(platform);\n const iconPathRaw = require(`../${\n format === \"lg\" ? \"svg_80x80\" : \"svg\"\n }/${icon}.svg`);\n const iconPath = iconPathRaw?.default ?? iconPathRaw;\n\n const languageIcon = getLanguageIcon(platform);\n const languageIconPathRaw = require(`../svg/${languageIcon}.svg`);\n const languageIconPath = languageIconPathRaw?.default ?? languageIconPathRaw;\n\n if (withLanguageIcon && languageIcon !== icon && languageIcon !== \"default\") {\n return (\n <div {...otherProps} style={{ position: \"relative\", ...style }}>\n <img\n src={iconPath}\n width={size}\n height={size}\n style={{ borderRadius: `${radius}px` }}\n />\n <img\n src={languageIconPath}\n style={{\n position: \"absolute\",\n bottom: \"-1px\",\n right: \"-1px\",\n height: \"30%\",\n width: \"30%\",\n borderRadius: \"2px\",\n ...languageIconStyles,\n }}\n />\n </div>\n );\n }\n\n return (\n <img\n src={iconPath}\n width={size}\n height={size}\n {...otherProps}\n style={{ borderRadius: `${radius}px`, ...style }}\n />\n );\n};\n\nexport default PlatformIcon;\n","import { PLATFORM_TO_ICON } from \"./platformIcon\";\n\n/**\n * Insert <link ref=\"preload\" /> elements into the <head> node to preload\n * platfrom icons. Useful to avoid render blocking / jank when we know we'll be\n * showing platform icons on the next page.\n */\nexport function preloadIcons(format?: \"sm\" | \"lg\") {\n const formats = format ? [format] : [\"lg\", \"sm\"];\n\n const paths: string[] = formats\n .map((f) =>\n Object.values(PLATFORM_TO_ICON).map((icon) =>\n require(`../${f === \"lg\" ? \"svg_80x80\" : \"svg\"}/${icon}.svg`)\n )\n )\n .flat();\n\n document.querySelector(\"head\")?.append(\n ...paths.map((path) => {\n const link = document.createElement(\"link\");\n link.rel = \"preload\";\n link.as = \"image\";\n link.href = path;\n return link;\n })\n );\n}\n"],"names":["PLATFORM_TO_ICON","android","apple","capacitor","clojure","cocoa","cocoa-objc","cocoa-swift","cordova","cpp","cryengine","csharp","csharp-aspnetcore","dart","default","dotnet","dotnet-aspnetcore","dotnet-aspnet","dotnet-awslambda","dotnet-blazor","dotnet-csharp","dotnet-gcpfunctions","dotnet-maui","dotnet-uno","dotnet-xamarin","dotnetcore","dotnetfx","electron","elixir","flutter","fsharp","go","godot","java","java-appengine","java-android","java-log4j","java-log4j2","java-logback","java-logging","java-spring","java-spring-boot","javascript","javascript-angular","javascript-angularjs","javascript-backbone","javascript-browser","javascript-capacitor","javascript-cordova","javascript-electron","javascript-ember","javascript-gatsby","javascript-ionic","javascript-nextjs","javascript-react","javascript-remix","javascript-svelte","javascript-sveltekit","javascript-vue","javascript-wasm","ionic","kotlin","kotlin-android","native","native-qt","node","node-awslambda","node-azurefunctions","node-connect","node-express","node-gcpfunctions","node-koa","node-serverlesscloud","perl","php","php-laravel","php-monolog","php-symfony2","php-symfony","python","python-aiohttp","python-awslambda","python-azurefunctions","python-bottle","python-celery","python-chalice","python-django","python-falcon","python-fastapi","python-flask","python-gcpfunctions","python-pylons","python-pyramid","python-pythonawslambda","python-rq","python-sanic","python-serverless","python-starlette","python-tornado","python-tryton","qt","react-native","ruby","ruby-rack","ruby-rails","ruby-sinatra","rust","rust-actix","scala","stride3d","swift","unity","ue4","unreal","unrealengine","visualbasic","normalizePlatform","platform","replace","getIcon","normalizedPlatform","includes","getLanguageIcon","split","size","format","radius","withLanguageIcon","languageIconStyles","style","otherProps","icon","iconPathRaw","require","iconPath","languageIcon","languageIconPathRaw","languageIconPath","React","position","src","width","height","borderRadius","bottom","right","paths","map","f","Object","values","flat","document","querySelector","append","path","link","createElement","rel","as","href"],"mappings":"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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export declare const PLATFORM_TO_ICON: {
|
|
3
|
+
readonly android: "android";
|
|
4
|
+
readonly apple: "apple";
|
|
5
|
+
readonly capacitor: "capacitor";
|
|
6
|
+
readonly clojure: "clojure";
|
|
7
|
+
readonly cocoa: "apple";
|
|
8
|
+
readonly "cocoa-objc": "apple";
|
|
9
|
+
readonly "cocoa-swift": "swift";
|
|
10
|
+
readonly cordova: "cordova";
|
|
11
|
+
readonly cpp: "cpp";
|
|
12
|
+
readonly cryengine: "cryengine";
|
|
13
|
+
readonly csharp: "csharp";
|
|
14
|
+
readonly "csharp-aspnetcore": "csharp";
|
|
15
|
+
readonly dart: "dart";
|
|
16
|
+
readonly default: "default";
|
|
17
|
+
readonly dotnet: "dotnet";
|
|
18
|
+
readonly "dotnet-aspnetcore": "dotnet";
|
|
19
|
+
readonly "dotnet-aspnet": "dotnet";
|
|
20
|
+
readonly "dotnet-awslambda": "aws";
|
|
21
|
+
readonly "dotnet-blazor": "blazor";
|
|
22
|
+
readonly "dotnet-csharp": "csharp";
|
|
23
|
+
readonly "dotnet-gcpfunctions": "gcp";
|
|
24
|
+
readonly "dotnet-maui": "maui";
|
|
25
|
+
readonly "dotnet-uno": "uno";
|
|
26
|
+
readonly "dotnet-xamarin": "xamarin";
|
|
27
|
+
readonly dotnetcore: "dotnetcore";
|
|
28
|
+
readonly dotnetfx: "dotnetfx";
|
|
29
|
+
readonly electron: "electron";
|
|
30
|
+
readonly elixir: "elixir";
|
|
31
|
+
readonly flutter: "flutter";
|
|
32
|
+
readonly fsharp: "fsharp";
|
|
33
|
+
readonly go: "go";
|
|
34
|
+
readonly godot: "godot";
|
|
35
|
+
readonly java: "java";
|
|
36
|
+
readonly "java-appengine": "app-engine";
|
|
37
|
+
readonly "java-android": "android";
|
|
38
|
+
readonly "java-log4j": "java";
|
|
39
|
+
readonly "java-log4j2": "java";
|
|
40
|
+
readonly "java-logback": "logback";
|
|
41
|
+
readonly "java-logging": "java";
|
|
42
|
+
readonly "java-spring": "spring";
|
|
43
|
+
readonly "java-spring-boot": "springboot";
|
|
44
|
+
readonly javascript: "javascript";
|
|
45
|
+
readonly "javascript-angular": "angularjs";
|
|
46
|
+
readonly "javascript-angularjs": "angularjs";
|
|
47
|
+
readonly "javascript-backbone": "backbone";
|
|
48
|
+
readonly "javascript-browser": "javascript";
|
|
49
|
+
readonly "javascript-capacitor": "capacitor";
|
|
50
|
+
readonly "javascript-cordova": "cordova";
|
|
51
|
+
readonly "javascript-electron": "electron";
|
|
52
|
+
readonly "javascript-ember": "ember";
|
|
53
|
+
readonly "javascript-gatsby": "gatsby";
|
|
54
|
+
readonly "javascript-ionic": "ionic";
|
|
55
|
+
readonly "javascript-nextjs": "nextjs";
|
|
56
|
+
readonly "javascript-react": "react";
|
|
57
|
+
readonly "javascript-remix": "remix";
|
|
58
|
+
readonly "javascript-svelte": "svelte";
|
|
59
|
+
readonly "javascript-sveltekit": "svelte";
|
|
60
|
+
readonly "javascript-vue": "vue";
|
|
61
|
+
readonly "javascript-wasm": "wasm";
|
|
62
|
+
readonly ionic: "ionic";
|
|
63
|
+
readonly kotlin: "kotlin";
|
|
64
|
+
readonly "kotlin-android": "android";
|
|
65
|
+
readonly native: "nativec";
|
|
66
|
+
readonly "native-qt": "qt";
|
|
67
|
+
readonly node: "nodejs";
|
|
68
|
+
readonly "node-awslambda": "aws";
|
|
69
|
+
readonly "node-azurefunctions": "azure";
|
|
70
|
+
readonly "node-connect": "nodejs";
|
|
71
|
+
readonly "node-express": "express";
|
|
72
|
+
readonly "node-gcpfunctions": "gcp";
|
|
73
|
+
readonly "node-koa": "koa";
|
|
74
|
+
readonly "node-serverlesscloud": "serverless";
|
|
75
|
+
readonly perl: "perl";
|
|
76
|
+
readonly php: "php";
|
|
77
|
+
readonly "php-laravel": "laravel";
|
|
78
|
+
readonly "php-monolog": "php";
|
|
79
|
+
readonly "php-symfony2": "symfony";
|
|
80
|
+
readonly "php-symfony": "symfony";
|
|
81
|
+
readonly python: "python";
|
|
82
|
+
readonly "python-aiohttp": "aiohttp";
|
|
83
|
+
readonly "python-awslambda": "aws";
|
|
84
|
+
readonly "python-azurefunctions": "azure";
|
|
85
|
+
readonly "python-bottle": "bottle";
|
|
86
|
+
readonly "python-celery": "celery";
|
|
87
|
+
readonly "python-chalice": "chalice";
|
|
88
|
+
readonly "python-django": "django";
|
|
89
|
+
readonly "python-falcon": "falcon";
|
|
90
|
+
readonly "python-fastapi": "fastapi";
|
|
91
|
+
readonly "python-flask": "flask";
|
|
92
|
+
readonly "python-gcpfunctions": "gcp";
|
|
93
|
+
readonly "python-pylons": "python";
|
|
94
|
+
readonly "python-pyramid": "pyramid";
|
|
95
|
+
readonly "python-pythonawslambda": "aws";
|
|
96
|
+
readonly "python-rq": "redis";
|
|
97
|
+
readonly "python-sanic": "python";
|
|
98
|
+
readonly "python-serverless": "serverless";
|
|
99
|
+
readonly "python-starlette": "starlette";
|
|
100
|
+
readonly "python-tornado": "tornado";
|
|
101
|
+
readonly "python-tryton": "tryton";
|
|
102
|
+
readonly qt: "qt";
|
|
103
|
+
readonly "react-native": "react";
|
|
104
|
+
readonly ruby: "ruby";
|
|
105
|
+
readonly "ruby-rack": "ruby";
|
|
106
|
+
readonly "ruby-rails": "rails";
|
|
107
|
+
readonly "ruby-sinatra": "sinatra";
|
|
108
|
+
readonly rust: "rust";
|
|
109
|
+
readonly "rust-actix": "actix";
|
|
110
|
+
readonly scala: "scala";
|
|
111
|
+
readonly stride3d: "stride3d";
|
|
112
|
+
readonly swift: "swift";
|
|
113
|
+
readonly unity: "unity";
|
|
114
|
+
readonly ue4: "unreal";
|
|
115
|
+
readonly unreal: "unreal";
|
|
116
|
+
readonly unrealengine: "unreal";
|
|
117
|
+
readonly visualbasic: "visual-basic";
|
|
118
|
+
};
|
|
119
|
+
declare type Props = React.HTMLAttributes<HTMLDivElement | HTMLImageElement> & {
|
|
120
|
+
platform: string;
|
|
121
|
+
size?: string | number;
|
|
122
|
+
format?: "sm" | "lg";
|
|
123
|
+
radius?: number | null;
|
|
124
|
+
withLanguageIcon?: boolean;
|
|
125
|
+
languageIconStyles?: React.CSSProperties;
|
|
126
|
+
};
|
|
127
|
+
declare const PlatformIcon: ({ platform, size, format, radius, withLanguageIcon, languageIconStyles, style, ...otherProps }: Props) => JSX.Element;
|
|
128
|
+
export default PlatformIcon;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Insert <link ref="preload" /> elements into the <head> node to preload
|
|
3
|
+
* platfrom icons. Useful to avoid render blocking / jank when we know we'll be
|
|
4
|
+
* showing platform icons on the next page.
|
|
5
|
+
*/
|
|
6
|
+
export declare function preloadIcons(format?: "sm" | "lg"): void;
|
package/package.json
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "platformicons",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.6.1",
|
|
4
4
|
"description": "Web Platform and Framework Logo Set",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"build/",
|
|
9
|
+
"svg/",
|
|
10
|
+
"svg_80x80/"
|
|
11
|
+
],
|
|
7
12
|
"source": "src/index.tsx",
|
|
8
13
|
"repository": {
|
|
9
14
|
"type": "git",
|
package/.craft.yml
DELETED
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
# For most projects, this workflow file will not need changing; you simply need
|
|
2
|
-
# to commit it to your repository.
|
|
3
|
-
#
|
|
4
|
-
# You may wish to alter this file to override the set of languages analyzed,
|
|
5
|
-
# or to provide custom queries or build logic.
|
|
6
|
-
#
|
|
7
|
-
# ******** NOTE ********
|
|
8
|
-
# We have attempted to detect the languages in your repository. Please check
|
|
9
|
-
# the `language` matrix defined below to confirm you have the correct set of
|
|
10
|
-
# supported CodeQL languages.
|
|
11
|
-
#
|
|
12
|
-
name: "Build"
|
|
13
|
-
|
|
14
|
-
env:
|
|
15
|
-
CACHED_DEPENDENCY_PATHS: |
|
|
16
|
-
${{ github.workspace }}/node_modules
|
|
17
|
-
|
|
18
|
-
CACHED_BUILD_PATHS: |
|
|
19
|
-
${{ github.workspace }}/build
|
|
20
|
-
|
|
21
|
-
BUILD_CACHE_KEY: ${{ github.sha }}
|
|
22
|
-
|
|
23
|
-
on:
|
|
24
|
-
push:
|
|
25
|
-
branches:
|
|
26
|
-
- master
|
|
27
|
-
- release/**
|
|
28
|
-
pull_request:
|
|
29
|
-
# The branches below must be a subset of the branches above
|
|
30
|
-
branches:
|
|
31
|
-
- master
|
|
32
|
-
- release/**
|
|
33
|
-
schedule:
|
|
34
|
-
- cron: '18 1 * * 0'
|
|
35
|
-
|
|
36
|
-
jobs:
|
|
37
|
-
analyze:
|
|
38
|
-
name: Analyze CodeQL
|
|
39
|
-
runs-on: ubuntu-latest
|
|
40
|
-
permissions:
|
|
41
|
-
actions: read
|
|
42
|
-
contents: read
|
|
43
|
-
security-events: write
|
|
44
|
-
|
|
45
|
-
strategy:
|
|
46
|
-
fail-fast: false
|
|
47
|
-
matrix:
|
|
48
|
-
language: [ 'javascript' ]
|
|
49
|
-
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
|
50
|
-
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
|
|
51
|
-
|
|
52
|
-
steps:
|
|
53
|
-
- name: Checkout repository
|
|
54
|
-
uses: actions/checkout@v3
|
|
55
|
-
|
|
56
|
-
# Initializes the CodeQL tools for scanning.
|
|
57
|
-
- name: Initialize CodeQL
|
|
58
|
-
uses: github/codeql-action/init@v2
|
|
59
|
-
with:
|
|
60
|
-
languages: ${{ matrix.language }}
|
|
61
|
-
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
62
|
-
# By default, queries listed here will override any specified in a config file.
|
|
63
|
-
# Prefix the list here with "+" to use these queries and those in the config file.
|
|
64
|
-
|
|
65
|
-
# Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
|
|
66
|
-
# queries: security-extended,security-and-quality
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
|
70
|
-
# If this step fails, then you should remove it and run the build manually (see below)
|
|
71
|
-
- name: Autobuild
|
|
72
|
-
uses: github/codeql-action/autobuild@v2
|
|
73
|
-
|
|
74
|
-
# ℹ️ Command-line programs to run using the OS shell.
|
|
75
|
-
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
|
76
|
-
|
|
77
|
-
# If the Autobuild fails above, remove it and uncomment the following three lines.
|
|
78
|
-
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
|
|
79
|
-
|
|
80
|
-
# - run: |
|
|
81
|
-
# echo "Run, Build Application using script"
|
|
82
|
-
# ./location_of_script_within_repo/buildscript.sh
|
|
83
|
-
|
|
84
|
-
- name: Perform CodeQL Analysis
|
|
85
|
-
uses: github/codeql-action/analyze@v2
|
|
86
|
-
|
|
87
|
-
job_install_deps:
|
|
88
|
-
name: Install Dependencies
|
|
89
|
-
runs-on: ubuntu-latest
|
|
90
|
-
timeout-minutes: 15
|
|
91
|
-
steps:
|
|
92
|
-
- name: Check out current commit (${{ github.sha }})
|
|
93
|
-
uses: actions/checkout@v2
|
|
94
|
-
- name: Set up Node
|
|
95
|
-
uses: actions/setup-node@v1
|
|
96
|
-
# we use a hash of yarn.lock as our cache key, because if it hasn't changed, our dependencies haven't changed,
|
|
97
|
-
# so no need to reinstall them
|
|
98
|
-
- name: Compute dependency cache key
|
|
99
|
-
id: compute_lockfile_hash
|
|
100
|
-
run: echo "hash=${{ hashFiles('yarn.lock') }}" >> "$GITHUB_OUTPUT"
|
|
101
|
-
- name: Check dependency cache
|
|
102
|
-
uses: actions/cache@v2
|
|
103
|
-
id: cache_dependencies
|
|
104
|
-
with:
|
|
105
|
-
path: ${{ env.CACHED_DEPENDENCY_PATHS }}
|
|
106
|
-
key: ${{ steps.compute_lockfile_hash.outputs.hash }}
|
|
107
|
-
- name: Install dependencies
|
|
108
|
-
if: steps.cache_dependencies.outputs.cache-hit == ''
|
|
109
|
-
run: yarn install
|
|
110
|
-
outputs:
|
|
111
|
-
dependency_cache_key: ${{ steps.compute_lockfile_hash.outputs.hash }}
|
|
112
|
-
|
|
113
|
-
job_build:
|
|
114
|
-
name: Build
|
|
115
|
-
needs: job_install_deps
|
|
116
|
-
runs-on: ubuntu-latest
|
|
117
|
-
timeout-minutes: 15
|
|
118
|
-
steps:
|
|
119
|
-
- name: Check out current commit (${{ github.sha }})
|
|
120
|
-
uses: actions/checkout@v2
|
|
121
|
-
- name: Set up Node
|
|
122
|
-
uses: actions/setup-node@v1
|
|
123
|
-
- name: Check dependency cache
|
|
124
|
-
uses: actions/cache@v2
|
|
125
|
-
with:
|
|
126
|
-
path: ${{ env.CACHED_DEPENDENCY_PATHS }}
|
|
127
|
-
key: ${{ needs.job_install_deps.outputs.dependency_cache_key }}
|
|
128
|
-
- name: Check build cache
|
|
129
|
-
uses: actions/cache@v2
|
|
130
|
-
id: cache_built_packages
|
|
131
|
-
with:
|
|
132
|
-
path: ${{ env.CACHED_BUILD_PATHS }}
|
|
133
|
-
key: ${{ env.BUILD_CACHE_KEY }}
|
|
134
|
-
- name: Build packages
|
|
135
|
-
# Under normal circumstances, using the git SHA as a cache key, there shouldn't ever be a cache hit on the built
|
|
136
|
-
# packages, and so `yarn build` should always run. This `if` check is therefore only there for testing CI issues
|
|
137
|
-
# where the built packages are beside the point. In that case, you can change `BUILD_CACHE_KEY` (at the top of
|
|
138
|
-
# this file) to a constant and skip rebuilding all of the packages each time CI runs.
|
|
139
|
-
if: steps.cache_built_packages.outputs.cache-hit == ''
|
|
140
|
-
run: yarn build
|
|
141
|
-
outputs:
|
|
142
|
-
# this needs to be passed on, because the `needs` context only looks at direct ancestors (so steps which depend on
|
|
143
|
-
# `job_build` can't see `job_install_deps` and what it returned)
|
|
144
|
-
dependency_cache_key: ${{ needs.job_install_deps.outputs.dependency_cache_key }}
|
|
145
|
-
|
|
146
|
-
job_artifacts:
|
|
147
|
-
name: Upload Artifacts
|
|
148
|
-
needs: job_build
|
|
149
|
-
runs-on: ubuntu-latest
|
|
150
|
-
steps:
|
|
151
|
-
- name: Check out current commit (${{ github.sha }})
|
|
152
|
-
uses: actions/checkout@v2
|
|
153
|
-
- name: Set up Node
|
|
154
|
-
uses: actions/setup-node@v1
|
|
155
|
-
- name: Check dependency cache
|
|
156
|
-
uses: actions/cache@v2
|
|
157
|
-
with:
|
|
158
|
-
path: ${{ env.CACHED_DEPENDENCY_PATHS }}
|
|
159
|
-
key: ${{ needs.job_build.outputs.dependency_cache_key }}
|
|
160
|
-
- name: Check build cache
|
|
161
|
-
uses: actions/cache@v2
|
|
162
|
-
with:
|
|
163
|
-
path: ${{ env.CACHED_BUILD_PATHS }}
|
|
164
|
-
key: ${{ env.BUILD_CACHE_KEY }}
|
|
165
|
-
- name: Pack
|
|
166
|
-
run: yarn pack
|
|
167
|
-
- name: Archive artifacts
|
|
168
|
-
uses: actions/upload-artifact@v2
|
|
169
|
-
with:
|
|
170
|
-
name: ${{ github.sha }}
|
|
171
|
-
path: |
|
|
172
|
-
${{ github.workspace }}/**/*.tgz
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
name: Release
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
workflow_dispatch:
|
|
5
|
-
inputs:
|
|
6
|
-
version:
|
|
7
|
-
description: Version to release
|
|
8
|
-
required: true
|
|
9
|
-
force:
|
|
10
|
-
description: Force a release even when there are release-blockers (optional)
|
|
11
|
-
required: false
|
|
12
|
-
|
|
13
|
-
jobs:
|
|
14
|
-
release:
|
|
15
|
-
runs-on: ubuntu-latest
|
|
16
|
-
name: 'Release a new version'
|
|
17
|
-
steps:
|
|
18
|
-
- uses: actions/checkout@v2
|
|
19
|
-
with:
|
|
20
|
-
token: ${{ secrets.GH_RELEASE_PAT }}
|
|
21
|
-
fetch-depth: 0
|
|
22
|
-
|
|
23
|
-
- name: Prepare release
|
|
24
|
-
uses: getsentry/action-prepare-release@v1
|
|
25
|
-
env:
|
|
26
|
-
GITHUB_TOKEN: ${{ secrets.GH_RELEASE_PAT }}
|
|
27
|
-
with:
|
|
28
|
-
version: ${{ github.event.inputs.version }}
|
|
29
|
-
force: ${{ github.event.inputs.force }}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
set -eux
|
|
3
|
-
# Move to the project root
|
|
4
|
-
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
5
|
-
cd $SCRIPT_DIR/..
|
|
6
|
-
OLD_VERSION="${1}"
|
|
7
|
-
NEW_VERSION="${2}"
|
|
8
|
-
# Do not tag and commit changes made by "npm version"
|
|
9
|
-
export npm_config_git_tag_version=false
|
|
10
|
-
npm version "${NEW_VERSION}"
|
package/src/platformIcon.tsx
DELETED
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
|
|
3
|
-
export const PLATFORM_TO_ICON = {
|
|
4
|
-
android: "android",
|
|
5
|
-
apple: "apple",
|
|
6
|
-
capacitor: "capacitor",
|
|
7
|
-
clojure: "clojure",
|
|
8
|
-
cocoa: "apple",
|
|
9
|
-
"cocoa-objc": "apple",
|
|
10
|
-
"cocoa-swift": "swift",
|
|
11
|
-
cordova: "cordova",
|
|
12
|
-
cpp: "cpp",
|
|
13
|
-
cryengine: "cryengine",
|
|
14
|
-
csharp: "csharp",
|
|
15
|
-
"csharp-aspnetcore": "csharp",
|
|
16
|
-
dart: "dart",
|
|
17
|
-
default: "default",
|
|
18
|
-
dotnet: "dotnet",
|
|
19
|
-
"dotnet-aspnetcore": "dotnet",
|
|
20
|
-
"dotnet-aspnet": "dotnet",
|
|
21
|
-
"dotnet-awslambda": "aws",
|
|
22
|
-
"dotnet-blazor": "blazor",
|
|
23
|
-
"dotnet-csharp": "csharp",
|
|
24
|
-
"dotnet-gcpfunctions": "gcp",
|
|
25
|
-
"dotnet-maui": "maui",
|
|
26
|
-
"dotnet-uno": "uno",
|
|
27
|
-
"dotnet-xamarin": "xamarin",
|
|
28
|
-
dotnetcore: "dotnetcore",
|
|
29
|
-
dotnetfx: "dotnetfx",
|
|
30
|
-
electron: "electron",
|
|
31
|
-
elixir: "elixir",
|
|
32
|
-
flutter: "flutter",
|
|
33
|
-
fsharp: "fsharp",
|
|
34
|
-
go: "go",
|
|
35
|
-
godot: "godot",
|
|
36
|
-
java: "java",
|
|
37
|
-
"java-appengine": "app-engine",
|
|
38
|
-
"java-android": "android",
|
|
39
|
-
"java-log4j": "java",
|
|
40
|
-
"java-log4j2": "java",
|
|
41
|
-
"java-logback": "logback",
|
|
42
|
-
"java-logging": "java",
|
|
43
|
-
"java-spring": "spring",
|
|
44
|
-
"java-spring-boot": "springboot",
|
|
45
|
-
javascript: "javascript",
|
|
46
|
-
"javascript-angular": "angularjs",
|
|
47
|
-
"javascript-angularjs": "angularjs",
|
|
48
|
-
"javascript-backbone": "backbone",
|
|
49
|
-
"javascript-browser": "javascript",
|
|
50
|
-
"javascript-capacitor": "capacitor",
|
|
51
|
-
"javascript-cordova": "cordova",
|
|
52
|
-
"javascript-electron": "electron",
|
|
53
|
-
"javascript-ember": "ember",
|
|
54
|
-
"javascript-gatsby": "gatsby",
|
|
55
|
-
"javascript-ionic": "ionic",
|
|
56
|
-
"javascript-nextjs": "nextjs",
|
|
57
|
-
"javascript-react": "react",
|
|
58
|
-
"javascript-remix": "remix",
|
|
59
|
-
"javascript-svelte": "svelte",
|
|
60
|
-
"javascript-vue": "vue",
|
|
61
|
-
"javascript-wasm": "wasm",
|
|
62
|
-
ionic: "ionic",
|
|
63
|
-
kotlin: "kotlin",
|
|
64
|
-
"kotlin-android": "android",
|
|
65
|
-
native: "nativec",
|
|
66
|
-
"native-qt": "qt",
|
|
67
|
-
node: "nodejs",
|
|
68
|
-
"node-awslambda": "aws",
|
|
69
|
-
"node-azurefunctions": "azure",
|
|
70
|
-
"node-connect": "nodejs",
|
|
71
|
-
"node-express": "express",
|
|
72
|
-
"node-gcpfunctions": "gcp",
|
|
73
|
-
"node-koa": "koa",
|
|
74
|
-
perl: "perl",
|
|
75
|
-
php: "php",
|
|
76
|
-
"php-laravel": "laravel",
|
|
77
|
-
"php-monolog": "php",
|
|
78
|
-
"php-symfony2": "symfony",
|
|
79
|
-
"php-symfony": "symfony",
|
|
80
|
-
python: "python",
|
|
81
|
-
"python-aiohttp": "aiohttp",
|
|
82
|
-
"python-awslambda": "aws",
|
|
83
|
-
"python-azurefunctions": "azure",
|
|
84
|
-
"python-bottle": "bottle",
|
|
85
|
-
"python-celery": "celery",
|
|
86
|
-
"python-chalice": "chalice",
|
|
87
|
-
"python-django": "django",
|
|
88
|
-
"python-falcon": "falcon",
|
|
89
|
-
"python-fastapi": "fastapi",
|
|
90
|
-
"python-flask": "flask",
|
|
91
|
-
"python-gcpfunctions": "gcp",
|
|
92
|
-
"python-pylons": "python",
|
|
93
|
-
"python-pyramid": "pyramid",
|
|
94
|
-
"python-pythonawslambda": "aws",
|
|
95
|
-
"python-rq": "redis",
|
|
96
|
-
"python-sanic": "python",
|
|
97
|
-
"python-serverless": "serverless",
|
|
98
|
-
"python-starlette": "starlette",
|
|
99
|
-
"python-tornado": "tornado",
|
|
100
|
-
"python-tryton": "tryton",
|
|
101
|
-
qt: "qt",
|
|
102
|
-
"react-native": "react",
|
|
103
|
-
ruby: "ruby",
|
|
104
|
-
"ruby-rack": "ruby",
|
|
105
|
-
"ruby-rails": "rails",
|
|
106
|
-
"ruby-sinatra": "sinatra",
|
|
107
|
-
rust: "rust",
|
|
108
|
-
"rust-actix": "actix",
|
|
109
|
-
scala: "scala",
|
|
110
|
-
stride3d: "stride3d",
|
|
111
|
-
swift: "swift",
|
|
112
|
-
unity: "unity",
|
|
113
|
-
// This will be deprecated in favor of 'unrealengine'
|
|
114
|
-
ue4: "unreal",
|
|
115
|
-
unreal: "unreal",
|
|
116
|
-
unrealengine: "unreal",
|
|
117
|
-
visualbasic: "visual-basic",
|
|
118
|
-
// Don't add new platforms down here!
|
|
119
|
-
// Please add them where they belong alphabetically
|
|
120
|
-
} as const;
|
|
121
|
-
|
|
122
|
-
function normalizePlatform(platform: string): string {
|
|
123
|
-
// sentry uses format python-django, but docs uses python.django
|
|
124
|
-
// this function normalizes that
|
|
125
|
-
return platform.replace(".", "-");
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
function getIcon(platform: string): Platform {
|
|
129
|
-
const normalizedPlatform = normalizePlatform(platform);
|
|
130
|
-
const icon = PLATFORM_TO_ICON[normalizedPlatform];
|
|
131
|
-
|
|
132
|
-
if (icon) {
|
|
133
|
-
return icon;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
if (normalizedPlatform.includes("-")) {
|
|
137
|
-
return getLanguageIcon(normalizedPlatform);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
return "default";
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
function getLanguageIcon(platform: string): Platform {
|
|
144
|
-
const [language] = normalizePlatform(platform).split("-");
|
|
145
|
-
|
|
146
|
-
return getIcon(language);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
type Platform = typeof PLATFORM_TO_ICON[keyof typeof PLATFORM_TO_ICON];
|
|
150
|
-
|
|
151
|
-
type Props = React.HTMLAttributes<HTMLDivElement | HTMLImageElement> & {
|
|
152
|
-
platform: string;
|
|
153
|
-
size?: string | number;
|
|
154
|
-
format?: "sm" | "lg";
|
|
155
|
-
radius?: number | null;
|
|
156
|
-
withLanguageIcon?: boolean;
|
|
157
|
-
languageIconStyles?: React.CSSProperties;
|
|
158
|
-
};
|
|
159
|
-
|
|
160
|
-
const PlatformIcon = ({
|
|
161
|
-
platform,
|
|
162
|
-
size = 20,
|
|
163
|
-
format = "sm",
|
|
164
|
-
radius = 3,
|
|
165
|
-
withLanguageIcon,
|
|
166
|
-
languageIconStyles = {},
|
|
167
|
-
style = {},
|
|
168
|
-
...otherProps
|
|
169
|
-
}: Props) => {
|
|
170
|
-
const icon = getIcon(platform);
|
|
171
|
-
const iconPathRaw = require(`../${
|
|
172
|
-
format === "lg" ? "svg_80x80" : "svg"
|
|
173
|
-
}/${icon}.svg`);
|
|
174
|
-
const iconPath = iconPathRaw?.default ?? iconPathRaw;
|
|
175
|
-
|
|
176
|
-
const languageIcon = getLanguageIcon(platform);
|
|
177
|
-
const languageIconPathRaw = require(`../svg/${languageIcon}.svg`);
|
|
178
|
-
const languageIconPath = languageIconPathRaw?.default ?? languageIconPathRaw;
|
|
179
|
-
|
|
180
|
-
if (withLanguageIcon && languageIcon !== icon && languageIcon !== "default") {
|
|
181
|
-
return (
|
|
182
|
-
<div {...otherProps} style={{ position: "relative", ...style }}>
|
|
183
|
-
<img
|
|
184
|
-
src={iconPath}
|
|
185
|
-
width={size}
|
|
186
|
-
height={size}
|
|
187
|
-
style={{ borderRadius: `${radius}px` }}
|
|
188
|
-
/>
|
|
189
|
-
<img
|
|
190
|
-
src={languageIconPath}
|
|
191
|
-
style={{
|
|
192
|
-
position: "absolute",
|
|
193
|
-
bottom: "-1px",
|
|
194
|
-
right: "-1px",
|
|
195
|
-
height: "30%",
|
|
196
|
-
width: "30%",
|
|
197
|
-
borderRadius: "2px",
|
|
198
|
-
...languageIconStyles,
|
|
199
|
-
}}
|
|
200
|
-
/>
|
|
201
|
-
</div>
|
|
202
|
-
);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
return (
|
|
206
|
-
<img
|
|
207
|
-
src={iconPath}
|
|
208
|
-
width={size}
|
|
209
|
-
height={size}
|
|
210
|
-
{...otherProps}
|
|
211
|
-
style={{ borderRadius: `${radius}px`, ...style }}
|
|
212
|
-
/>
|
|
213
|
-
);
|
|
214
|
-
};
|
|
215
|
-
|
|
216
|
-
export default PlatformIcon;
|
package/src/preload.tsx
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { PLATFORM_TO_ICON } from "./platformIcon";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Insert <link ref="preload" /> elements into the <head> node to preload
|
|
5
|
-
* platfrom icons. Useful to avoid render blocking / jank when we know we'll be
|
|
6
|
-
* showing platform icons on the next page.
|
|
7
|
-
*/
|
|
8
|
-
export function preloadIcons(format?: "sm" | "lg") {
|
|
9
|
-
const formats = format ? [format] : ["lg", "sm"];
|
|
10
|
-
|
|
11
|
-
const paths: string[] = formats
|
|
12
|
-
.map((f) =>
|
|
13
|
-
Object.values(PLATFORM_TO_ICON).map((icon) =>
|
|
14
|
-
require(`../${f === "lg" ? "svg_80x80" : "svg"}/${icon}.svg`)
|
|
15
|
-
)
|
|
16
|
-
)
|
|
17
|
-
.flat();
|
|
18
|
-
|
|
19
|
-
document.querySelector("head")?.append(
|
|
20
|
-
...paths.map((path) => {
|
|
21
|
-
const link = document.createElement("link");
|
|
22
|
-
link.rel = "preload";
|
|
23
|
-
link.as = "image";
|
|
24
|
-
link.href = path;
|
|
25
|
-
return link;
|
|
26
|
-
})
|
|
27
|
-
);
|
|
28
|
-
}
|
package/tsconfig.json
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"outDir": "build",
|
|
4
|
-
"module": "esnext",
|
|
5
|
-
"target": "es5",
|
|
6
|
-
"lib": ["esnext", "dom"],
|
|
7
|
-
"sourceMap": true,
|
|
8
|
-
"allowJs": false,
|
|
9
|
-
"jsx": "react",
|
|
10
|
-
"declaration": true,
|
|
11
|
-
"moduleResolution": "node",
|
|
12
|
-
"forceConsistentCasingInFileNames": true,
|
|
13
|
-
"noImplicitReturns": true,
|
|
14
|
-
"noImplicitThis": true,
|
|
15
|
-
"noImplicitAny": true,
|
|
16
|
-
"strictNullChecks": true,
|
|
17
|
-
"suppressImplicitAnyIndexErrors": true,
|
|
18
|
-
"noUnusedLocals": true,
|
|
19
|
-
"noUnusedParameters": true,
|
|
20
|
-
"allowSyntheticDefaultImports": true
|
|
21
|
-
},
|
|
22
|
-
"include": ["src"],
|
|
23
|
-
"exclude": ["node_modules", "build"]
|
|
24
|
-
}
|