Compare commits
No commits in common. "gauntlet/release" and "main" have entirely different histories.
gauntlet/r
...
main
9 changed files with 2079 additions and 33 deletions
26
.forgejo/workflows/build.yaml
Normal file
26
.forgejo/workflows/build.yaml
Normal file
|
@ -0,0 +1,26 @@
|
|||
name: Build Plugins
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build plugins
|
||||
runs-on: docker
|
||||
container: catthehacker/ubuntu:act-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 18
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
- name: Build plugins
|
||||
run: npm run build
|
32
.forgejo/workflows/publish.yaml
Normal file
32
.forgejo/workflows/publish.yaml
Normal file
|
@ -0,0 +1,32 @@
|
|||
name: Publish Plugins to Release Branch
|
||||
|
||||
on: workflow_dispatch
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
name: Publish plugins
|
||||
runs-on: docker
|
||||
container: catthehacker/ubuntu:act-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Set up SSH key
|
||||
uses: actions/ssh-agent@forgejo
|
||||
with:
|
||||
ssh-private-key: ${{ secrets.DEPLOY_KEY }}
|
||||
instance-urls: "www.coastalcommits.com"
|
||||
- name: Add instance URLs to known_hosts
|
||||
run: ssh-keyscan -H www.coastalcommits.com >> ~/.ssh/known_hosts
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 18
|
||||
- name: Configure Git
|
||||
run: |
|
||||
git config --global user.name "${GITHUB_ACTOR}"
|
||||
git config --global user.email "${GITHUB_ACTOR}@noreply@coastalcommits.com"
|
||||
git remote set-url origin git@www.coastalcommits.com:${{ github.repository }}
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
- name: Publish plugins to Release branch
|
||||
run: npm run publish
|
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
dist
|
||||
node_modules
|
||||
.idea
|
|
@ -1,25 +0,0 @@
|
|||
import { jsxs, jsx } from 'react/jsx-runtime';
|
||||
import { Inline, ActionPanel, Action, Content, Icons } from '@project-gauntlet/api/components';
|
||||
import { Clipboard, showHud } from '@project-gauntlet/api/helpers';
|
||||
import { g as getEmojis } from './vendor.js';
|
||||
|
||||
// @ts-expect-error
|
||||
Deno[Deno.internal].core;
|
||||
function EmojiPicker(props) {
|
||||
const text = props.text.trim();
|
||||
if (text.length < 3) {
|
||||
return undefined;
|
||||
}
|
||||
const emoji = getEmojis().find(emoji => emoji.keywords.includes(text));
|
||||
if (!emoji) {
|
||||
return undefined;
|
||||
}
|
||||
return (jsxs(Inline, { actions: jsx(ActionPanel, { children: jsx(Action, { label: `Copy ${emoji.emoji} to clipboard`, onAction: async () => {
|
||||
console.log(emoji.emoji);
|
||||
await Clipboard.writeText(emoji.emoji);
|
||||
showHud(`${emoji.emoji} copied to clipboard`);
|
||||
} }) }), children: [jsx(Inline.Left, { children: jsx(Content.H3, { children: text }) }), jsx(Inline.Separator, { icon: Icons.ArrowRight }), jsx(Inline.Right, { children: jsx(Content.H3, { children: emoji.emoji }) })] }));
|
||||
}
|
||||
|
||||
export { EmojiPicker as default };
|
||||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamlwaWNrZXIuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9
|
File diff suppressed because one or more lines are too long
1937
package-lock.json
generated
Normal file
1937
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
20
package.json
Normal file
20
package.json
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"name": "cswimr-gauntlet-plugins",
|
||||
"scripts": {
|
||||
"publish": "gauntlet publish",
|
||||
"build": "gauntlet build",
|
||||
"dev": "gauntlet dev"
|
||||
},
|
||||
"dependencies": {
|
||||
"@project-gauntlet/api": "0.10.0",
|
||||
"@project-gauntlet/deno": "0.10.0",
|
||||
"unicode-emoji": "^2.5.0",
|
||||
"which": "^5.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@project-gauntlet/tools": "^0.9.0",
|
||||
"@types/react": "^18.3.3",
|
||||
"@types/which": "^3.0.4",
|
||||
"typescript": "^5.5.4"
|
||||
}
|
||||
}
|
49
src/emojipicker.tsx
Normal file
49
src/emojipicker.tsx
Normal file
|
@ -0,0 +1,49 @@
|
|||
import { Action, ActionPanel, Content, Icons, Inline } from "@project-gauntlet/api/components";
|
||||
import { ReactNode } from "react";
|
||||
import { Clipboard, showHud } from "@project-gauntlet/api/helpers";
|
||||
import * as UnicodeEmoji from "unicode-emoji";
|
||||
|
||||
// @ts-expect-error
|
||||
const denoCore: DenoCore = Deno[Deno.internal].core;
|
||||
|
||||
export default function EmojiPicker(props: { text: string }): ReactNode | undefined {
|
||||
const text = props.text.trim();
|
||||
|
||||
if (text.length < 3) {
|
||||
return undefined
|
||||
};
|
||||
|
||||
const emoji = UnicodeEmoji.getEmojis().find(emoji => emoji.keywords.includes(text));
|
||||
if (!emoji) {
|
||||
return undefined
|
||||
};
|
||||
|
||||
return (
|
||||
<Inline
|
||||
actions={
|
||||
<ActionPanel>
|
||||
<Action
|
||||
label={`Copy ${emoji.emoji} to clipboard`}
|
||||
onAction={async () => {
|
||||
console.log(emoji.emoji)
|
||||
await Clipboard.writeText(emoji.emoji);
|
||||
showHud(`${emoji.emoji} copied to clipboard`);
|
||||
}}
|
||||
/>
|
||||
</ActionPanel>
|
||||
}
|
||||
>
|
||||
<Inline.Left>
|
||||
<Content.H3>
|
||||
{text}
|
||||
</Content.H3>
|
||||
</Inline.Left>
|
||||
<Inline.Separator icon={Icons.ArrowRight}/>
|
||||
<Inline.Right>
|
||||
<Content.H3>
|
||||
{emoji.emoji}
|
||||
</Content.H3>
|
||||
</Inline.Right>
|
||||
</Inline>
|
||||
);
|
||||
};
|
12
tsconfig.json
Normal file
12
tsconfig.json
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"strict": true,
|
||||
"module": "ES2022",
|
||||
"esModuleInterop": true,
|
||||
"target": "ES2022",
|
||||
"moduleResolution": "bundler",
|
||||
"jsx": "react-jsx",
|
||||
"types": ["@project-gauntlet/deno"]
|
||||
},
|
||||
"lib": ["ES2020"]
|
||||
}
|
Loading…
Reference in a new issue