Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
isekaidev committed Jan 9, 2023
0 parents commit 0c2c9d1
Show file tree
Hide file tree
Showing 23 changed files with 34,636 additions and 0 deletions.
7 changes: 7 additions & 0 deletions .editorconfig
@@ -0,0 +1,7 @@
[*.{js,jsx,ts,tsx,vue}]
indent_style = space
indent_size = 2
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 100
120 changes: 120 additions & 0 deletions .eslintrc.js
@@ -0,0 +1,120 @@
const INLINE_ELEMENTS = require('eslint-plugin-vue/lib/utils/inline-non-void-elements.json');

module.exports = {
root: true,
env: {
node: true,
},
extends: [
// https://github.com/vuejs/eslint-plugin-vue
'plugin:vue/recommended',

// https://github.com/vuejs/eslint-config-airbnb
// https://github.com/airbnb/javascript/tree/master/packages/eslint-config-airbnb-base
'@vue/airbnb',
],
parserOptions: {
parser: '@babel/eslint-parser',
},
rules: {
// [Overwrites plugin:vue/recommended]
// Enforce the maximum number of attributes per line
// https://eslint.vuejs.org/rules/max-attributes-per-line.html
'vue/max-attributes-per-line': ['error', {
singleline: {max: 5},
multiline: {max: 3},
}],

// [Overwrites plugin:vue/recommended]
// Require a line break before and after the contents of a singleline element
// https://eslint.vuejs.org/rules/singleline-html-element-content-newline.html
'vue/singleline-html-element-content-newline': ['error', {
ignoreWhenNoAttributes: true,
ignoreWhenEmpty: true,
ignores: ['sp-label', 'sp-detail', 'sp-body', 'pre', 'textarea', ...INLINE_ELEMENTS],
}],

// [Overwrites Airbnb]
// We need to disable standard `max-len` because it ignores `template` from `vue/max-len`
'max-len': 'off',
'vue/max-len': ['error', {
code: 120,
template: 140, // only for vue/max-len
tabWidth: 2,
ignorePattern: 'd="([\\s\\S]*?)"', // for svg
ignoreUrls: true,
ignoreComments: true,
ignoreRegExpLiterals: true,
ignoreTemplateLiterals: true,
ignoreStrings: true,

// ignoreHTMLAttributeValues: true,
// ignoreHTMLTextContents: false,
}],

// [Overwrites Airbnb because they disabled ForInStatement and ForOfStatement]
// Disallow specified syntax; Overwrites Airbnb
// https://eslint.vuejs.org/rules/no-restricted-syntax
// https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb-base/rules/style.js
// https://eslint.org/docs/rules/no-restricted-syntax
'no-restricted-syntax': ['error', 'LabeledStatement', 'WithStatement'],
'vue/no-restricted-syntax': ['error', 'LabeledStatement', 'WithStatement'],

// [Overwrites Airbnb]
// Enforce consistent spacing inside braces
// https://eslint.vuejs.org/rules/object-curly-spacing
// https://eslint.org/docs/rules/object-curly-spacing
'object-curly-spacing': ['error', 'never'],
'vue/object-curly-spacing': ['error', 'always'],

// [Overwrites Airbnb for properties of photoshop objects]
// Disallow dangling underscores in identifiers
// https://eslint.org/docs/latest/rules/no-underscore-dangle
'no-underscore-dangle': ['error', {allow: ['_value', '_id']}],

// [Overwrites Airbnb to disable minProperties]
// Enforce consistent line breaks inside braces
// https://eslint.vuejs.org/rules/object-curly-newline
// https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb-base/rules/style.js
// https://eslint.org/docs/rules/object-curly-newline
'object-curly-newline': ['error', {
ObjectExpression: {multiline: true, consistent: true},
ObjectPattern: {multiline: true, consistent: true},
ImportDeclaration: {multiline: true, consistent: true},
ExportDeclaration: {multiline: true, consistent: true},
}],
'vue/object-curly-newline': ['error', {
ObjectExpression: {multiline: true, consistent: true},
ObjectPattern: {multiline: true, consistent: true},
ImportDeclaration: {multiline: true, consistent: true},
ExportDeclaration: {multiline: true, consistent: true},
}],

// [Overwrites Airbnb to enforce stroustrup style]
// Require Brace Style
// https://eslint.vuejs.org/rules/brace-style
// https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb-base/rules/style.js
// https://eslint.org/docs/rules/brace-style
'brace-style': ['error', 'stroustrup', {allowSingleLine: true}],
'vue/brace-style': ['error', 'stroustrup', {allowSingleLine: true}],

// Disallow the use of console
// https://eslint.org/docs/rules/no-console
'no-console': process.env.NODE_ENV === 'production' ? ['error', {allow: ['warn', 'error']}] : 'off',

// https://github.com/vue-a11y/eslint-plugin-vuejs-accessibility
'vuejs-accessibility/alt-text': 'off',
'vuejs-accessibility/click-events-have-key-events': 'off',
},
overrides: [
{
files: [
'**/__tests__/*.{j,t}s?(x)',
'**/tests/unit/**/*.spec.{j,t}s?(x)',
],
env: {
jest: true,
},
},
],
};
25 changes: 25 additions & 0 deletions .gitignore
@@ -0,0 +1,25 @@
/public/icons-old
/releases

.DS_Store
node_modules
/dist

# local env files
.env.local
.env.*.local

# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
58 changes: 58 additions & 0 deletions README.md
@@ -0,0 +1,58 @@
# Stable.art 🖼

Stable.art is an open-source plugin for Photoshop (v23.3.0+) that allows you to use Stable Diffusion (with Automatic1111 as a backend) to accelerate your art workflow. Say goodbye to tedious art processes and hello to seamless creativity with Stable.art.

## How to install

0. Download the CCX file.
1. Open the Creative Cloud desktop app and ensure it is running and up to date.
2. Make sure you have the latest version of Photoshop installed. If not, update it through the Creative Cloud desktop app.
3. Open Photoshop.
4. Double-click on the downloaded CCX file.
5. Follow the prompts and the plugin panel should appear in Photoshop. If it does not, go to Plugins > Stable.art.

### Start API server

To use Stable.art you need to enable an API for your Automatic1111:

* If you use Automatic1111 locally, then you need to follow this [guide](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/API).

* If you want to use Google Colab, then you can use [fast-stable-diffusion](https://github.com/TheLastBen/fast-stable-diffusion). You need to edit the last cell (double-click on it) and change `Enable_API = False` to `Enable_API = True`.

Lastly, enter the url of your Automatic1111 server (e.g. `http://127.0.0.1:7860`, `https://***.gradio.live`, `https://***.loca.lt`, `https://***.gradio.app`, etc) in the "Endpoint" field.

## Features

### Lexica.art Integration

If you need help coming up with ideas or finding assistance with prompts, you can use the Lexica.art search engine right inside the plugin for inspiration.

### txt2img

By default, txt2img generates an image with a size of 512x512. If you want to generate an image with a specific size, you can use the rectangular marquee tool and specify any size (with any ratio!) you desire.

### img2img/inpaint

To use img2img/inpaint, simply select an area of your image using any selection tool. Yes, you can use any selection tool (e.g. rectangular marquee, lasso, quick selection, magic wand, or any other selection tool). Then to generate an image, simply click the "Generate" button. It is that easy - no masks or any other complicated steps are required.

### outpaint

Coming Soon.

## Development

1. Install dependencies.

```bash
npm install
```

2. Start a server to compile and hot-reload the plugin.

```bash
npm run serve
```

3. Open Photoshop, then open "Adobe UXP Developer Tool", click "Add plugin", and select `manifest-dev.json`, which is located in the `/public` folder. Note: during development, you should only use `manifest-dev.json` because `manifest.json` (which will be located in the `/dist` folder) should be used only for final builds after running `npm run build` (and you can just ignore `manifest.json` that is located in the `/public` folder). Two manifests are required to conveniently test final builds - "UXP Developer Tool" does not support adding multiple plugins with the same ids.

4. You will get the plugin with id `dev.stable.art`, click on its Actions and then click "Load".
5 changes: 5 additions & 0 deletions babel.config.js
@@ -0,0 +1,5 @@
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset',
],
};
19 changes: 19 additions & 0 deletions jsconfig.json
@@ -0,0 +1,19 @@
{
"compilerOptions": {
"target": "es5",
"module": "esnext",
"baseUrl": "./",
"moduleResolution": "node",
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
}
}

0 comments on commit 0c2c9d1

Please sign in to comment.