1
0
mirror of https://gitlab.com/mickie1/share-freedom-extension synced 2024-12-12 16:06:44 +01:00

Rewritten the entire app to TS

This commit is contained in:
mickie 2021-08-17 23:57:59 -05:00
parent fa52828641
commit cd322127d6
76 changed files with 23118 additions and 5724 deletions

48
.all-contributorsrc Normal file
View File

@ -0,0 +1,48 @@
{
"files": [
"README.md"
],
"imageSize": 100,
"commit": false,
"contributors": [
{
"login": "davidnguyen179",
"name": "David Nguyen",
"avatar_url": "https://avatars.githubusercontent.com/u/6290720?v=4",
"profile": "https://www.dzungnguyen.dev",
"contributions": [
"code",
"doc",
"design",
"maintenance",
"review",
"test"
]
},
{
"login": "immint023",
"name": "Minh Ngo",
"avatar_url": "https://avatars.githubusercontent.com/u/38607460?v=4",
"profile": "https://github.com/immint023",
"contributions": [
"code",
"test"
]
},
{
"login": "3BenLee",
"name": "Ben Harned",
"avatar_url": "https://avatars.githubusercontent.com/u/35267414?v=4",
"profile": "http://benlee3.com",
"contributions": [
"doc"
]
}
],
"contributorsPerLine": 7,
"projectName": "web-extension-boilerplate",
"projectOwner": "davidnguyen179",
"repoType": "github",
"repoHost": "https://github.com",
"skipCi": true
}

63
.eslintrc.json Normal file
View File

@ -0,0 +1,63 @@
{
"env": {
"browser": true,
"es2021": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:import/errors",
"plugin:import/warnings"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 12,
"sourceType": "module"
},
"plugins": [
"@typescript-eslint",
"import"
],
"rules": {
"linebreak-style": [
"error",
"unix"
],
"quotes": [
"error",
"single"
],
"semi": [
"error",
"always"
],
"eol-last": [
"error",
"always"
],
"import/newline-after-import": [
"error",
{
"count": 1
}
],
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
"no-console": "error",
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/no-inferrable-types": "off",
"@typescript-eslint/no-unused-vars": "error"
},
"settings": {
"import/resolver": {
"node": {
"extensions": [
".js",
".jsx",
".ts",
".tsx"
]
}
}
}
}

View File

@ -0,0 +1,3 @@
#!/bin/bash
echo "Fixing eslint 🔧 🪚 🔨"
npm run code:lint-fix

View File

@ -0,0 +1,14 @@
#!/bin/bash
CHANGED_FILES=$(git diff --cached --name-only --diff-filter=ACMR "*.js" "*.jsx" "*.ts" "*.tsx" | sed 's| |\\ |g')
[[ -z "$CHANGED_FILES" ]] && exit 0
echo "Running prettier 🚀🚀"
echo "$CHANGED_FILES" | xargs ./node_modules/.bin/prettier --write
echo "$CHANGED_FILES" | xargs git add
echo "Done prettier ✨✨"
exit 0

View File

@ -0,0 +1,4 @@
#!/bin/bash
echo "Running eslint... 👀"
npm run code:lint

View File

@ -0,0 +1,4 @@
#!/bin/bash
echo "Running unit test... 🤞 🚑 💊"
npm run test:unit -- --coverage

View File

@ -0,0 +1,4 @@
#!/bin/bash
echo "Running typecheck... 🩺 🔬 🔭"
npm run code:typecheck

3
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,3 @@
# These are supported funding model platforms
custom: paypal.me/davidnguyen179

50
.github/workflows/workflow-config.yml vendored Normal file
View File

@ -0,0 +1,50 @@
name: 'ci/cd'
# This workflow is triggered on pushes to the repository.
on: [push, pull_request]
jobs:
test:
# Job name
name: test
# This job runs on Linux
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
steps:
- name: Checkout repository
uses: actions/checkout@v2
id: checkout
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Cache node_modules
uses: actions/cache@v2
id: cache
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: |
**/node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
- name: Installing packages...🏃‍♂️ 🏃‍♂️ 🏃‍♂️
if: steps.cache.outputs.cache-hit != 'true'
run: npm ci
- name: Running typecheck... 🩺 🔬 🔭
run: npm run code:typecheck
- name: Running eslint... 👀
run: npm run code:lint
- name: Running unit test... 🤞 🚑 💊
run: npm run test:unit -- --runInBand --coverage
- name: Trigger codecov
run: bash <(curl -s https://codecov.io/bash)
- name: Run build Chrome
run: npm run app:chrome
- name: Run build Firefox
run: npm run app:firefox
- name: Run build Edge
run: npm run app:edge

10
.gitignore vendored
View File

@ -1,5 +1,5 @@
web-ext-artifacts
web-ext-artifacts.*
src.*
*.org
node_modules/
dist/
node_modules/
coverage/
.DS_Store
.log/

1
.prettierignore Normal file
View File

@ -0,0 +1 @@
node_modules/

5
.prettierrc.json Normal file
View File

@ -0,0 +1,5 @@
{
"printWidth": 120,
"singleQuote": true,
"trailingComma": "es5"
}

20
PRIVACY_POLICY.txt Normal file
View File

@ -0,0 +1,20 @@
Chrome Web Store & Mozilla Add-on Store & Microsoft Edge Add-on Store Privacy Policies.
======================================================================================================
Introduction
============
Introduce your web extension
Information We Collect
======================
Does your web extension collect data?
- I collect data
- I don't collect data
How it uses cookies
========================
If your web extension uses cookies, describe where your extension uses cookies and why?

138
README.md
View File

@ -21,35 +21,6 @@ Supported services/protocols:
- Osada / Zap / Zot6
- XMPP
## Screenshots
![img](/src/img/screenshot-1.png)
![img](/src/img/screenshot-2.png)
![img](/src/img/screenshot-3.png)
## Build
You need Node.js/npm
`npm install` then
`npm install --global web-ext`
Use the next command to generate the package (.zip file)
`web-ext build`
See [web-ext page](https://extensionworkshop.com/documentation/develop/getting-started-with-web-ext/).
**Optional:** Add-ons Linter by Mozilla
`npm install -g addons-linter`
See [repo](https://github.com/mozilla/addons-linter).
## Contributing
You can contribute in the following ways:
@ -88,3 +59,112 @@ Copyleft (ɔ) 2021 - Miguel (mickie)
See LICENSE file for more information.
## TODO
This boilerplate provides a skeleton to start developing cross-browser web extensions.
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-3-orange.svg?style=flat-square)](#contributors-)
<!-- ALL-CONTRIBUTORS-BADGE:END -->
[![jest](https://jestjs.io/img/jest-badge.svg)](https://github.com/facebook/jest) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://github.com/davidnguyen179/web-extension-boilerplate/pulls)
![ci/cd](https://github.com/davidnguyen179/web-extension-boilerplate/workflows/ci/cd/badge.svg)
## Development
```bash
npm i
```
**Chrome**
```bash
npm run app:chrome-dev
```
**Edge**
```bash
npm run app:edge-dev
```
**Firefox**
```bash
npm run app:firefox-dev
```
## Production
```bash
npm i
```
```bash
npm run app:chrome
```
**Edge**
```bash
npm run app:edge
```
**Firefox**
```bash
npm run app:firefox
```
## Load package to browsers
**Chrome**
1. Go to the browser's URL address bar
2. Enter `chrome://extensions/`
3. Switch to "**Developer mode**"
4. Load extension by clicking "**Load unpacked**"
5. Browse to `dist/` in source code
6. Done!
Check here for more detail: [https://developer.chrome.com/extensions/getstarted](https://developer.chrome.com/extensions/getstarted)
**Edge**
1. Go to the browser's URL address bar
2. Enter `edge://extensions/`
3. Turn on `Developer mode`
4. Load extension by clicking "**Load unpacked**"
5. Browse to `dist/` in source code
6. Done!
**Firefox**
1. Go to the browser's URL address bar
2. Enter `about:debugging#/runtime/this-firefox`
3. Click **Load Temporary Add-on...**
4. Browse to your `manifest.json` & click **Open**
5. Done!
Check here for more details: [https://extensionworkshop.com/documentation/develop/temporary-installation-in-firefox/](https://extensionworkshop.com/documentation/develop/temporary-installation-in-firefox/)
## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center"><a href="https://www.dzungnguyen.dev"><img src="https://avatars.githubusercontent.com/u/6290720?v=4?s=100" width="100px;" alt=""/><br /><sub><b>David Nguyen</b></sub></a><br /><a href="https://github.com/davidnguyen179/web-extension-boilerplate/commits?author=davidnguyen179" title="Code">💻</a> <a href="https://github.com/davidnguyen179/web-extension-boilerplate/commits?author=davidnguyen179" title="Documentation">📖</a> <a href="#design-davidnguyen179" title="Design">🎨</a> <a href="#maintenance-davidnguyen179" title="Maintenance">🚧</a> <a href="https://github.com/davidnguyen179/web-extension-boilerplate/pulls?q=is%3Apr+reviewed-by%3Adavidnguyen179" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/davidnguyen179/web-extension-boilerplate/commits?author=davidnguyen179" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/immint023"><img src="https://avatars.githubusercontent.com/u/38607460?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Minh Ngo</b></sub></a><br /><a href="https://github.com/davidnguyen179/web-extension-boilerplate/commits?author=immint023" title="Code">💻</a> <a href="https://github.com/davidnguyen179/web-extension-boilerplate/commits?author=immint023" title="Tests">⚠️</a></td>
<td align="center"><a href="http://benlee3.com"><img src="https://avatars.githubusercontent.com/u/35267414?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ben Harned</b></sub></a><br /><a href="https://github.com/davidnguyen179/web-extension-boilerplate/commits?author=3BenLee" title="Documentation">📖</a></td>
</tr>
</table>
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!

7
babel.config.js Normal file
View File

@ -0,0 +1,7 @@
// babel.config.js
module.exports = {
presets: [
['@babel/preset-env', { targets: { node: 'current' } }],
'@babel/preset-typescript',
],
};

24
jest.config.js Normal file
View File

@ -0,0 +1,24 @@
const ignores = ['/node_modules/', '__mocks__'];
module.exports = {
collectCoverageFrom: ['src/lib/app.ts', 'src/lib/utils.ts'],
testMatch: ['**/test/**/*.spec.+(ts|tsx|js)'],
testPathIgnorePatterns: [...ignores],
coveragePathIgnorePatterns: [...ignores, 'src/(umd|cjs|esm)-entry.js$'],
transformIgnorePatterns: ['[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$'],
coverageDirectory: './coverage',
coverageThreshold: {
global: {
branches: 80,
functions: 100,
lines: 100,
statements: 100,
},
},
moduleFileExtensions: ['ts', 'tsx', 'js'],
transform: {
'^.+\\.(ts|tsx)$': 'ts-jest',
},
verbose: true,
setupFilesAfterEnv: ['./jest.setup.js'],
};

1
jest.setup.js Normal file
View File

@ -0,0 +1 @@
require('whatwg-fetch');

View File

@ -1,59 +0,0 @@
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"lib": ["es6"],
// "allowJs": true,
// "checkJs": true,
// "jsx": "preserve",
"declaration": true,
// "declarationMap": true,
// "sourceMap": true,
// "outFile": "./",
"outDir": "./dist",
// "rootDir": "./",
// "composite": true,
"removeComments": true,
// "noEmit": true,
// "importHelpers": true,
"downlevelIteration": true,
// "isolatedModules": true,
/* Strict Type-Checking Options */
"strict": true,
"noImplicitAny": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"strictPropertyInitialization": true,
"noImplicitThis": true,
"alwaysStrict": true,
/* Additional Checks */
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
/* Module Resolution Options */
// "moduleResolution": "node",
// "baseUrl": "./",
// "paths": {},
// "rootDirs": [],
// "typeRoots": [],
// "types": [],
// "allowSyntheticDefaultImports": true,
"esModuleInterop": true,
// "preserveSymlinks": true,
/* Source Map Options */
// "sourceRoot": "./",
// "mapRoot": "./",
// "inlineSourceMap": true,
// "inlineSources": true,
/* Experimental Options */
// "experimentalDecorators": true,
// "emitDecoratorMetadata": true,
},
"include": ["./src"]
}

View File

@ -1,63 +0,0 @@
{
"manifest_version": 2,
"name": "Share Freedom",
"description": "share the current tab on the fediverse",
"version": "2.1.3",
"author": "Miguel",
"background": {
"scripts": ["src/js/background.js"],
"persistent": true
},
"browser_action": {
"default_icon": "src/img/icon-32-dark.png",
"default_popup": "src/html/index.html",
"default_title": "Share freedom",
"theme_icons": [{
"light": "src/img/icon-16-light.png",
"dark": "src/img/icon-16-dark.png",
"size": 16
}, {
"light": "src/img/icon-32-light.png",
"dark": "src/img/icon-32-dark.png",
"size": 32
}]
},
"icons": {
"16":"src/img/icon-16-dark.png",
"32":"src/img/icon-32-dark.png"
},
"commands": {
"_execute_browser_action": {
"suggested_key": {
"default": "Ctrl+Shift+U"
},
"description": "Execute the extension"
}
},
"options_ui": {
"page": "src/html/options.html",
"browser_style": true,
"chrome_style": true
},
"applications": {
"gecko": {
"id": "{c5880375-5496-4d02-ba27-7830809dbf08}",
"strict_min_version": "59.0"
}
},
"permissions": [
"tabs",
"activeTab",
"https://*/*",
"storage"
]
}

25548
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,29 +1,73 @@
{
"name": "share-freedom",
"version": "2.2.0",
"name": "fedishare",
"version": "0.9.0",
"description": "Share the current tab on the fediverse",
"main": "index.js",
"main": "background.js",
"scripts": {
"build:css": "postcss ./src/css/styles.css -o ./src/css/main.css",
"build": "NODE_ENV=production postcss ./src/css/styles.css -o ./src/css/main.css"
"code:lint": "eslint '**/**/*.{ts,tsx}'",
"code:lint-fix": "eslint --fix '**/**/*.{ts,tsx}'",
"code:prettier": "prettier --write '**/**/*.{ts,tsx}'",
"code:typecheck": "./node_modules/.bin/tsc --noEmit",
"app:chrome": "rimraf dist && cross-env BROWSER='chrome' webpack --config webpack/webpack.prod.js",
"app:chrome-dev": "cross-env BROWSER='chrome' webpack --config webpack/webpack.dev.js --watch",
"app:edge": "rimraf dist && cross-env BROWSER='edge' webpack --config webpack/webpack.prod.js",
"app:edge-dev": "cross-env BROWSER='edge' webpack --config webpack/webpack.dev.js --watch",
"app:firefox": "rimraf dist && cross-env BROWSER='firefox' webpack --config webpack/webpack.prod.js",
"app:firefox-dev": "cross-env BROWSER='firefox' webpack --config webpack/webpack.dev.js --watch",
"test:unit": "jest",
"build:css": "postcss ./public/css/styles.css -o ./dist/css/main.css",
"build": "NODE_ENV=production postcss ./public/css/styles.css -o ./dist/css/main.css"
},
"repository": {
"type": "git",
"url": "git+https://gitlab.com/mugcake/share-freedom-extension.git"
"url": "git+https://gitlab.com/mugcake/fedishare.git"
},
"keywords": [
"share",
"fediverse"
"chrome extension",
"microsoft edge extension",
"firefox addon",
"web extension",
"typescript",
"ts",
"jest",
"sinon"
],
"author": "Mickie",
"author": "Mickie <millet@tuta.io>",
"license": "GPL-3.0",
"bugs": {
"url": "https://gitlab.com/mugcake/share-freedom-extension/issues"
"url": "https://gitlab.com/mugcake/fedishare/issues"
},
"homepage": "https://gitlab.com/mugcake/share-freedom-extension#readme",
"dependencies": {
"autoprefixer": "^10.2.5",
"homepage": "https://gitlab.com/mugcake/fedishare#readme",
"devDependencies": {
"@babel/preset-env": "7.12.11",
"@babel/preset-typescript": "7.12.7",
"@types/chrome": "0.0.135",
"@types/jest": "26.0.20",
"@types/sinon": "^10.0.0",
"@typescript-eslint/eslint-plugin": "4.17.0",
"@typescript-eslint/parser": "4.17.0",
"autoprefixer": "^10.3.1",
"babel-jest": "26.6.3",
"copy-webpack-plugin": "^8.1.1",
"cross-env": "7.0.3",
"eslint": "7.21.0",
"eslint-plugin-import": "2.22.1",
"git-hooks-plus": "1.0.1",
"jest": "26.6.3",
"postcss": "^8.3.6",
"postcss-cli": "^8.3.1",
"tailwindcss": "^2.0.4"
"prettier": "2.2.1",
"rimraf": "3.0.2",
"sinon": "^10.0.0",
"tailwindcss": "^2.2.7",
"terser-webpack-plugin": "5.1.1",
"ts-jest": "26.4.4",
"ts-loader": "^9.1.1",
"typescript": "^4.2.4",
"web-ext-types": "3.2.1",
"webpack": "5.18.0",
"webpack-cli": "4.4.0",
"webpack-merge": "5.7.3",
"whatwg-fetch": "3.0.0"
}
}

View File

@ -1,6 +1,6 @@
module.exports ={
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {}
}
}
autoprefixer: {},
},
};

View File

@ -0,0 +1,27 @@
{
"name": "datetime",
"version": "1.0",
"description": "Build a Datetime Extension!",
"permissions": [
"declarativeContent"
],
"manifest_version": 3,
"background": {
"service_worker": "background.js"
},
"action": {
"default_popup": "popup.html",
"default_icon": {
"16": "images/logo/date-time-16.png",
"32": "images/logo/date-time-32.png",
"48": "images/logo/date-time-48.png",
"128": "images/logo/date-time-128.png"
}
},
"icons": {
"16": "images/logo/date-time-16.png",
"32": "images/logo/date-time-32.png",
"48": "images/logo/date-time-48.png",
"128": "images/logo/date-time-128.png"
}
}

12
public/css/fork-awesome.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

58
public/css/styles.css Normal file
View File

@ -0,0 +1,58 @@
@tailwind base;
@tailwind components;
/* popout */
.button {
@apply bg-white text-gray-800 font-bold py-3 px-3;
}
.icon {
@apply text-xl;
}
.btn-mastodon {
@apply hover:bg-blue-200 hover:text-blue-700 active:bg-blue-400;
}
.btn-pleroma {
@apply hover:bg-yellow-400 hover:text-white active:bg-yellow-500;
}
.btn-diaspora {
@apply hover:bg-gray-900 hover:text-white active:bg-gray-700;
}
.btn-friendica {
@apply hover:bg-blue-700 hover:text-yellow-300 active:bg-blue-800;
}
.btn-hubzilla {
@apply hover:bg-indigo-800 hover:text-white active:bg-indigo-900;
}
.btn-lemmy {
@apply hover:bg-green-700 hover:text-white active:bg-green-800;
}
.btn-socialhome {
@apply hover:bg-gray-700 hover:text-green-300 active:bg-gray-800;
}
.btn-gnusocial {
@apply hover:bg-red-200 hover:text-red-800 active:bg-red-400;
}
.btn-xmpp {
@apply hover:bg-gray-200 hover:text-green-500 active:bg-gray-300;
}
.btn-options {
@apply cursor-pointer hover:bg-gray-100 hover:text-black active:bg-gray-300;
}
/* options */
.span-custom {
@apply text-xl text-blue-700 border border-2 font-bold rounded-l px-4 py-2 bg-white;
}
.text-custom {
@apply border px-4 py-2 w-full;
}
.checkbox-custom {
@apply m-3;
}
.btn-save {
@apply bg-blue-500 text-xl hover:bg-pink-500 active:bg-pink-700 text-white font-bold py-2 px-4 rounded-full w-44 text-center;
}
@tailwind utilities;

446
public/css/v5-compat.css Normal file
View File

@ -0,0 +1,446 @@
/*!
Fork Awesome 1.1.7
License - https://forkaweso.me/Fork-Awesome/license
Copyright 2018 Dave Gandy & Fork Awesome
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
.fas,
.fab,
.far {
display: inline-block;
font: normal normal normal 14px/1 ForkAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.fas.fa-chart-area:before {
content: "\f1fe";
}
.fas.fa-arrows-alt:before {
content: "\f047";
}
.fas.fa-expand-arrows-alt:before {
content: "\f0b2";
}
.fas.fa-arrows-alt-h:before {
content: "\f07e";
}
.fas.fa-arrows-alt-v:before {
content: "\f07d";
}
.fas.fa-calendar-alt:before {
content: "\f073";
}
.fas.fa-circle-notch:before {
content: "\f1ce";
}
.fas.fa-cloud-download-alt:before {
content: "\f0ed";
}
.fas.fa-cloud-upload-alt:before {
content: "\f0ee";
}
.fas.fa-credit-card:before {
content: "\f283";
}
.fas.fa-dollar-sign:before {
content: "\f155";
}
.fas.fa-euro-sign:before {
content: "\f153";
}
.fas.fa-exchange-alt:before {
content: "\f0ec";
}
.fas.fa-external-link-alt:before {
content: "\f08e";
}
.fas.fa-external-link-square-alt:before {
content: "\f14c";
}
.fas.fa-eye-dropper:before {
content: "\f1fb";
}
.fas.fa-pound-sign:before {
content: "\f154";
}
.fas.fa-glass-martini:before {
content: "\f000";
}
.fas.fa-shekel-sign:before {
content: "\f20b";
}
.fas.fa-rupee-sign:before {
content: "\f156";
}
.fas.fa-won-sign:before {
content: "\f159";
}
.fas.fa-level-down-alt:before {
content: "\f149";
}
.fas.fa-level-up-alt:before {
content: "\f148";
}
.fas.fa-chart-line:before {
content: "\f201";
}
.fas.fa-long-arrow-alt-down:before {
content: "\f175";
}
.fas.fa-long-arrow-alt-left:before {
content: "\f177";
}
.fas.fa-long-arrow-alt-right:before {
content: "\f178";
}
.fas.fa-long-arrow-alt-up:before {
content: "\f176";
}
.fas.fa-map-marker-alt:before {
content: "\f041";
}
.fas.fa-mobile-alt:before {
content: "\f10b";
}
.fas.fa-pencil-alt:before {
content: "\f040";
}
.fas.fa-pen-square:before {
content: "\f14b";
}
.fas.fa-chart-pie:before {
content: "\f200";
}
.fas.fa-yen-sign:before {
content: "\f157";
}
.fas.fa-ruble-sign:before {
content: "\f158";
}
.fas.fa-shield-alt:before {
content: "\f132";
}
.fas.fa-sign-in-alt:before {
content: "\f090";
}
.fas.fa-sign-out-alt:before {
content: "\f08b";
}
.fas.fa-sliders-h:before {
content: "\f1de";
}
.fas.fa-tablet-alt:before {
content: "\f10a";
}
.fas.fa-tachometer-alt:before {
content: "\f0e4";
}
.fas.fa-thumbtack:before {
content: "\f08d";
}
.fas.fa-ticket-alt:before {
content: "\f145";
}
.fas.fa-trash-alt:before {
content: "\f1f8";
}
.fas.fa-lira-sign:before {
content: "\f195";
}
.fab.fa-linkedin-in:before {
content: "\fe01";
}
.fab.fa-linkedin:before {
content: "\f08c";
}
.far.fa-address-book:before {
content: "\f2ba";
}
.far.fa-address-card:before {
content: "\f2bc";
}
.far.fa-arrow-alt-circle-down:before {
content: "\f01a";
}
.far.fa-arrow-alt-circle-left:before {
content: "\f190";
}
.far.fa-arrow-alt-circle-right:before {
content: "\f18e";
}
.far.fa-arrow-alt-circle-up:before {
content: "\f01b";
}
.far.fa-bell:before {
content: "\f0f3";
}
.far.fa-bell-slash:before {
content: "\f1f7";
}
.far.fa-bookmark:before {
content: "\f097";
}
.far.fa-building:before {
content: "\f0f7";
}
.far.fa-calendar-check:before {
content: "\f274";
}
.far.fa-calendar-minus:before {
content: "\f272";
}
.far.fa-calendar:before {
content: "\f133";
}
.far.fa-calendar-plus:before {
content: "\f271";
}
.far.fa-calendar-times:before {
content: "\f273";
}
.far.fa-caret-square-down:before {
content: "\f150";
}
.far.fa-caret-square-left:before {
content: "\f191";
}
.far.fa-caret-square-right:before {
content: "\f152";
}
.far.fa-caret-square-up:before {
content: "\f151";
}
.far.fa-check-circle:before {
content: "\f05d";
}
.far.fa-check-square:before {
content: "\f046";
}
.far.fa-circle:before {
content: "\f10c";
}
.far.fa-clock:before {
content: "\f017";
}
.far.fa-comment:before {
content: "\f0e5";
}
.far.fa-comment-dots:before {
content: "\f27b";
}
.far.fa-comments:before {
content: "\f0e6";
}
.far.fa-dot-circle:before {
content: "\f192";
}
.far.fa-id-card:before {
content: "\f2c3";
}
.far.fa-envelope:before {
content: "\f003";
}
.far.fa-envelope-open:before {
content: "\f2b7";
}
.far.fa-file-archive:before {
content: "\f1c6";
}
.far.fa-file-audio:before {
content: "\f1c7";
}
.far.fa-file-code:before {
content: "\f1c9";
}
.far.fa-file-excel:before {
content: "\f1c3";
}
.far.fa-file-image:before {
content: "\f1c5";
}
.far.fa-file-video:before {
content: "\f1c8";
}
.far.fa-copy:before,
.far.fa-file:before {
content: "\f016";
}
.far.fa-file-pdf:before {
content: "\f1c1";
}
.far.fa-file-powerpoint:before {
content: "\f1c4";
}
.far.fa-file-alt:before {
content: "\f0f6";
}
.far.fa-file-word:before {
content: "\f1c2";
}
.far.fa-flag:before {
content: "\f11d";
}
.far.fa-save:before {
content: "\f0c7";
}
.far.fa-folder:before {
content: "\f114";
}
.far.fa-folder-open:before {
content: "\f115";
}
.far.fa-frown:before {
content: "\f119";
}
.far.fa-futbol:before {
content: "\f1e3";
}
.far.fa-hand-rock:before {
content: "\f255";
}
.far.fa-hand-lizard:before {
content: "\f258";
}
.far.fa-hand-point-down:before {
content: "\f0a7";
}
.far.fa-hand-point-left:before {
content: "\f0a5";
}
.far.fa-hand-point-right:before {
content: "\f0a4";
}
.far.fa-hand-point-up:before {
content: "\f0a6";
}
.far.fa-hand-paper:before {
content: "\256";
}
.far.fa-hand-pointer:before {
content: "\f25a";
}
.far.fa-hand-scissors:before {
content: "\f257";
}
.far.fa-hand-spock:before {
content: "\f259";
}
.far.fa-handshake:before {
content: "\f2b5";
}
.far.fa-hdd:before {
content: "\f0a0";
}
.far.fa-heart:before {
content: "\f08a";
}
.far.fa-hospital:before {
content: "\f0f8";
}
.far.fa-hourglass:before {
content: "\f250";
}
.far.fa-id-card:before {
content: "\f2c3";
}
.far.fa-keyboard:before {
content: "\f11c";
}
.far.fa-lemon:before {
content: "\f094";
}
.far.fa-lightbulb:before {
content: "\f0eb";
}
.far.fa-meh:before {
content: "\f11a";
}
.far.fa-minus-square:before {
content: "\f147";
}
.far.fa-money-bill-alt:before {
content: "\f0d6";
}
.far.fa-moon:before {
content: "\f186";
}
.far.fa-newspaper:before {
content: "\f1ea";
}
.far.fa-paper-plane:before {
content: "\f1d9";
}
.far.fa-pause-circle:before {
content: "\f28c";
}
.far.fa-edit:before {
content: "\f044";
}
.far.fa-image:before {
content: "\f03e";
}
.far.fa-play-circle:before {
content: "\f01d";
}
.far.fa-plus-square:before {
content: "\f196";
}
.far.fa-question-circle:before {
content: "\f92c";
}
.far.fa-share-square:before {
content: "\f045";
}
.far.fa-smile:before {
content: "\f118";
}
.far.fa-snowflake:before {
content: "\f2dc";
}
.far.fa-futbol:before {
content: "\f1e3";
}
.far.fa-star-half:before {
content: "\f089";
}
.far.fa-star:before {
content: "\f006";
}
.far.fa-sticky-note:before {
content: "\f24a";
}
.far.fa-stop-circle:before {
content: "\f28e";
}
.far.fa-sun:before {
content: "\f185";
}
.far.fa-thumbs-down:before {
content: "\f088";
}
.far.fa-thumbs-up:before {
content: "\f087";
}
.far.fa-times-circle:before {
content: "\f05c";
}
.far.fa-window-close:before {
content: "\f2d4";
}
.far.fa-trash-alt:before {
content: "\f014";
}
.far.fa-user-circle:before {
content: "\f2be";
}
.far.fa-user:before {
content: "\f2c0";
}

12
public/css/v5-compat.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"version":3,"sources":["v5-compat.css"],"names":[],"mappings":"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"}

27
public/edge_manifest.json Normal file
View File

@ -0,0 +1,27 @@
{
"name": "datetime",
"version": "1.0",
"description": "Build a Datetime Extension!",
"permissions": [
"declarativeContent"
],
"manifest_version": 2,
"background": {
"content_scripts": "background.js"
},
"browser_action": {
"default_popup": "popup.html",
"default_icon": {
"16": "images/logo/date-time-16.png",
"32": "images/logo/date-time-32.png",
"48": "images/logo/date-time-48.png",
"128": "images/logo/date-time-128.png"
}
},
"icons": {
"16": "images/logo/date-time-16.png",
"32": "images/logo/date-time-32.png",
"48": "images/logo/date-time-48.png",
"128": "images/logo/date-time-128.png"
}
}

View File

@ -0,0 +1,21 @@
{
"name": "Fedishare",
"version": "0.9.0",
"description": "Share the current tab on the fediverse",
"permissions": ["tabs", "activeTab", "https://*/*", "storage"],
"manifest_version": 2,
"browser_action": {
"default_popup": "popup.html",
"default_icon": "images/logo/logo.svg",
"default_title": "Fedishare"
},
"options_ui": {
"page": "options.html"
},
"applications": {
"gecko": {
"id": "{c5880375-5496-4d02-ba27-7830809dbf08}",
"strict_min_version": "59.0"
}
}
}

View File

Before

Width:  |  Height:  |  Size: 470 KiB

After

Width:  |  Height:  |  Size: 470 KiB

170
public/images/logo/logo.svg Normal file
View File

@ -0,0 +1,170 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="64.139938mm"
height="64.139938mm"
viewBox="0 0 64.139939 64.139939"
version="1.1"
id="svg5"
inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
sodipodi:docname="logo1.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#111111"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:document-units="mm"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="0.53183923"
inkscape:cx="187.08661"
inkscape:cy="331.86721"
inkscape:window-width="1366"
inkscape:window-height="722"
inkscape:window-x="1366"
inkscape:window-y="46"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs2" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-36.247858,-3.9111803)">
<g
id="g1977"
transform="matrix(0.34447216,0,0,0.34447216,-23.727704,18.906576)"
style="display:inline">
<circle
style="display:inline;fill:#374548;stroke-width:9.68693"
id="path426-0"
cx="267.20746"
cy="49.567352"
r="93.098869" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ccff00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:11;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 217.45324,24.073894 a 18.227783,18.227783 0 0 1 -7.79591,7.759731 l 42.79842,42.96534 10.31823,-5.22914 z m 56.45236,56.670441 -10.31823,5.22914 21.68601,21.770755 a 18.227783,18.227783 0 0 1 7.79746,-7.760755 z"
id="path9722-62"
inkscape:connector-curvature="0" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:11;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 323.42299,41.074404 -24.22953,12.279355 1.78646,11.427206 27.41486,-13.894239 a 18.227783,18.227783 0 0 1 -4.97179,-9.812322 z m -38.29533,19.407603 -57.28901,29.033888 a 18.227783,18.227783 0 0 1 4.97282,9.81335 l 54.10264,-27.41951 z"
id="path9729-6"
inkscape:connector-curvature="0" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:11;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 266.70398,-11.036108 -27.6438,53.967247 8.16178,8.193299 29.26901,-57.13863 a 18.227783,18.227783 0 0 1 -9.78699,-5.021916 z M 231.87044,56.967491 217.8682,84.302775 a 18.227783,18.227783 0 0 1 9.78596,5.0214 l 12.37754,-24.1639 z"
id="path9713-1"
inkscape:connector-curvature="0" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:11;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 209.41962,31.953516 a 18.227783,18.227783 0 0 1 -9.10591,1.903759 18.227783,18.227783 0 0 1 -1.75958,-0.183967 l 8.17625,52.298097 a 18.227783,18.227783 0 0 1 9.1059,-1.90376 18.227783,18.227783 0 0 1 1.75855,0.18397 z"
id="path1015-8"
inkscape:connector-curvature="0" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:11;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 232.85488,99.588145 a 18.227783,18.227783 0 0 1 0.19069,3.671605 18.227783,18.227783 0 0 1 -1.92289,7.19129 l 52.28932,8.39072 a 18.227783,18.227783 0 0 1 -0.1912,-3.67214 18.227783,18.227783 0 0 1 1.92339,-7.19077 z"
id="path1674-7"
inkscape:connector-curvature="0" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:11;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 328.57875,51.07793 -24.13496,47.117535 a 18.227783,18.227783 0 0 1 9.78803,5.022425 l 24.13445,-47.117012 a 18.227783,18.227783 0 0 1 -9.78752,-5.022948 z"
id="path1676-9"
inkscape:connector-curvature="0" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:11;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 295.6619,-15.562446 a 18.227783,18.227783 0 0 1 -7.79746,7.760766 l 37.37653,37.520708 a 18.227783,18.227783 0 0 1 7.79694,-7.760769 z"
id="path1678-20"
inkscape:connector-curvature="0" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:11;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 261.5477,-21.039115 214.29942,2.905161 a 18.227783,18.227783 0 0 1 4.97231,9.812319 l 47.24776,-23.945308 a 18.227783,18.227783 0 0 1 -4.97179,-9.811287 z"
id="path1680-2"
inkscape:connector-curvature="0" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:11;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 287.77814,-7.758272 a 18.227783,18.227783 0 0 1 -9.25576,1.979723 18.227783,18.227783 0 0 1 -1.59526,-0.167431 l 4.18528,26.799916 11.41997,1.832446 z m -4.23333,44.192652 9.89552,63.363055 a 18.227783,18.227783 0 0 1 8.97309,-1.8371 18.227783,18.227783 0 0 1 1.90686,0.20929 L 294.9653,38.266307 Z"
id="path9758-3"
inkscape:connector-curvature="0" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ccff00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:11;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 219.30532,12.918502 a 18.227783,18.227783 0 0 1 0.2005,3.729487 18.227783,18.227783 0 0 1 -1.89445,7.139099 l 26.82058,4.307747 5.27151,-10.294461 z m 45.96774,7.381978 -5.27203,10.295496 63.37132,10.177674 a 18.227783,18.227783 0 0 1 -0.18397,-3.629753 18.227783,18.227783 0 0 1 1.94459,-7.229533 z"
id="path9760-7"
inkscape:connector-curvature="0" />
<circle
style="display:inline;fill:#ffffff;fill-opacity:0.995968;stroke:none;stroke-width:0.264583;stroke-opacity:0.960784"
id="path817-5"
cx="277.79572"
cy="-39.146599"
r="16.570711"
transform="rotate(3.1178174)" />
<circle
id="path819-9"
style="display:inline;fill:#ccff00;fill-opacity:0.995968;stroke:none;stroke-width:0.264583;stroke-opacity:0.960784"
cx="342.95813"
cy="19.511126"
r="16.570711"
transform="rotate(3.1178174)" />
<circle
id="path823-2"
style="display:inline;fill:#ccff00;fill-opacity:0.995968;stroke:none;stroke-width:0.264583;stroke-opacity:0.960784"
cx="307.29355"
cy="99.594879"
r="16.570711"
transform="rotate(3.1178174)" />
<circle
style="display:inline;fill:#ffffff;fill-opacity:0.995968;stroke:none;stroke-width:0.264583;stroke-opacity:0.960784"
id="path825-2"
cx="220.08923"
cy="90.431641"
r="16.570711"
transform="rotate(3.1178174)" />
<circle
id="path827-8"
style="display:inline;fill:#ccff00;fill-opacity:0.995968;stroke:none;stroke-width:0.264583;stroke-opacity:0.960784"
cx="201.85857"
cy="4.6846833"
r="16.570711"
transform="rotate(3.1178174)" />
</g>
</g>
<metadata
id="metadata65">
<rdf:RDF>
<cc:Work
rdf:about="">
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Notice" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Attribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
</svg>

After

Width:  |  Height:  |  Size: 19 KiB