First demo of image editor

This commit is contained in:
behnamrhp 2024-01-16 17:23:08 +03:00
commit 7899310a58
431 changed files with 80765 additions and 0 deletions

18
.eslintrc.cjs Normal file
View File

@ -0,0 +1,18 @@
module.exports = {
root: true,
env: { browser: true, es2020: true },
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:react-hooks/recommended',
],
ignorePatterns: ['dist', '.eslintrc.cjs', "src/components/@pqina/**"],
parser: '@typescript-eslint/parser',
plugins: ['react-refresh'],
rules: {
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
],
},
}

24
.gitignore vendored Normal file
View File

@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

41
Dockerfile Normal file
View File

@ -0,0 +1,41 @@
# ---------------------------------------------------------------------------- #
# Base image for building from
FROM node:18-alpine AS base
# ---------------------------------------------------------------------------- #
# Install dependencies of project
# Choosing the right package manager
FROM base AS deps
RUN apk add --no-cache libc6-compat git
WORKDIR /app
ARG YARN_CACHE_FOLDER=/var/yarn/.cache
RUN yarn config set cache-folder $YARN_CACHE_FOLDER # just to be explicit
RUN --mount=type=cache,mode=0777,target=$YARN_CACHE_FOLDER yarn cache list
COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./
RUN --mount=type=cache,mode=0777,target=$YARN_CACHE_FOLDER \
if [ -f yarn.lock ]; then YARN_CACHE_FOLDER=$YARN_CACHE_FOLDER yarn --frozen-lockfile; \
elif [ -f package-lock.json ]; then npm ci; \
elif [ -f pnpm-lock.yaml ]; then yarn global add pnpm && pnpm i --frozen-lockfile; \
else echo "Lockfile not found." && exit 1; \
fi
# ---------------------------------------------------------------------------- #
# Rebuild the source code only when needed
FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN yarn build
# ---------------------------------------------------------------------------- #
FROM nginx:1.23.1-alpine
COPY ./nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /app/dist /usr/share/nginx/html
RUN touch /var/run/nginx.pid
RUN chown -R nginx:nginx /var/run/nginx.pid /var/cache/nginx /var/log/nginx /etc/nginx/conf.d
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

30
README.md Normal file
View File

@ -0,0 +1,30 @@
# React + TypeScript + Vite
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
## Expanding the ESLint configuration
If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:
- Configure the top-level `parserOptions` property like this:
```js
export default {
// other rules...
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
project: ['./tsconfig.json', './tsconfig.node.json'],
tsconfigRootDir: __dirname,
},
}
```
- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked`
- Optionally add `plugin:@typescript-eslint/stylistic-type-checked`
- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list

6
docker-compose.yml Normal file
View File

@ -0,0 +1,6 @@
version: "3.3"
services:
kaiser-demo-image-editor:
ports:
- 8000:80
build: .

13
index.html Normal file
View File

@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Kaiser Demo Image editor</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>

10
nginx/conf.d/default.conf Normal file
View File

@ -0,0 +1,10 @@
server_tokens off;
server {
listen 80;
root /usr/share/nginx/html;
index index.html;
server_name localhost;
location / {
try_files $uri $uri/ /index.html;
}
}

3177
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

37
package.json Normal file
View File

@ -0,0 +1,37 @@
{
"name": "react-test",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
"preview": "vite preview"
},
"dependencies": {
"@pqina/pintura": "^8.71.2",
"@pqina/react-pintura": "^9.0.3",
"@pqina/filepond-plugin-image-editor": "^9.0.3",
"i": "^0.3.7",
"filepond": "^4.x",
"filepond-plugin-file-poster": "^2.x",
"filepond-plugin-file-validate-type": "^1.2.8",
"npm": "^10.3.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"styled-components": "^6.1.1"
},
"devDependencies": {
"@types/react": "^18.2.37",
"@types/react-dom": "^18.2.15",
"@typescript-eslint/eslint-plugin": "^6.10.0",
"@typescript-eslint/parser": "^6.10.0",
"@vitejs/plugin-react-swc": "^3.5.0",
"eslint": "^8.53.0",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.4",
"typescript": "^5.2.2",
"vite": "^5.0.0"
}
}

BIN
public/image.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

1
public/vite.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

86
src/app-image.tsx Normal file
View File

@ -0,0 +1,86 @@
import './components/@pqina/pintura/pintura.css';
import { useRef, useState } from 'react';
// react-pintura
import { PinturaEditor } from './components/@pqina/react-pintura';
// pintura
import './components/@pqina/pintura/pintura.css';
import {
// editor
locale_en_gb,
createDefaultImageReader,
createDefaultImageWriter,
createDefaultShapePreprocessor,
// plugins
setPlugins,
plugin_crop,
plugin_crop_locale_en_gb,
plugin_finetune,
plugin_finetune_locale_en_gb,
plugin_finetune_defaults,
plugin_filter,
plugin_filter_locale_en_gb,
plugin_filter_defaults,
plugin_annotate,
plugin_annotate_locale_en_gb,
markup_editor_defaults,
markup_editor_locale_en_gb,
} from './components/@pqina/pintura';
setPlugins(plugin_crop, plugin_finetune, plugin_filter, plugin_annotate);
const editorDefaults = {
imageReader: createDefaultImageReader(),
imageWriter: createDefaultImageWriter(),
shapePreprocessor: createDefaultShapePreprocessor(),
...plugin_finetune_defaults,
...plugin_filter_defaults,
...markup_editor_defaults,
locale: {
...locale_en_gb,
...plugin_crop_locale_en_gb,
...plugin_finetune_locale_en_gb,
...plugin_filter_locale_en_gb,
...plugin_annotate_locale_en_gb,
...markup_editor_locale_en_gb,
},
};
export default function AppImage() {
const [inlineResult, setInlineResult] = useState("");
const editorRef = useRef<PinturaEditor>(null);
return (
<div style={{
height: "80dvh",
width: "100dvw"
}}>
<PinturaEditor
{...editorDefaults}
src="./image.jpeg"
ref={editorRef}
onLoad={() => {
// not yet set
if (!editorRef.current) return;
// Example using editor ref
const { editor } = editorRef.current;
// Now we can access properties and methods
editor.imageCropAspectRatio = 1;
}}
onProcess={(res: {dest: File}) => {
setInlineResult(URL.createObjectURL(res.dest))
}
}
/>
{inlineResult && <img src={inlineResult} alt="" />}
</div>
);
}

View File

@ -0,0 +1,20 @@
# FilePond Plugin Image Editor
This package makes it easy to connect [FilePond](https://pqina.nl/filepond) with [Pintura](https://pqina.nl/pintura).
Visit https://pqina.nl/pintura for more details.
Example projects:
- https://github.com/pqina/pintura-example-javascript
- https://github.com/pqina/pintura-example-jquery
- https://github.com/pqina/pintura-example-react
- https://github.com/pqina/pintura-example-react-typescript
- https://github.com/pqina/pintura-example-vue-2
- https://github.com/pqina/pintura-example-vue-3
- https://github.com/pqina/pintura-example-angular
- https://github.com/pqina/pintura-example-nextjs
- https://github.com/pqina/pintura-example-nuxt-2
- https://github.com/pqina/pintura-example-nuxt-3
- https://github.com/pqina/pintura-example-svelte
- https://github.com/pqina/pintura-example-sveltekit

View File

@ -0,0 +1,28 @@
{
"name": "@pqina/filepond-plugin-image-editor",
"version": "9.0.3",
"browser": "dist/FilePondPluginImageEditor.js",
"main": "dist/FilePondPluginImageEditor.js",
"types": "dist/FilePondPluginImageEditor.d.ts",
"author": "Rik Schennink at PQINA",
"homepage": "https://pqina.nl/pintura/",
"license": "https://pqina.nl/pintura/license/",
"description": "A FilePond plugin to connect with Pintura",
"type": "module",
"files": [
"dist"
],
"scripts": {
"dev": "vite",
"build": "vite build && cp -rf src/FilePondPluginImageEditor.d.ts dist/FilePondPluginImageEditor.d.ts",
"preview": "vite preview"
},
"peerDependencies": {
"filepond": "4.x"
},
"devDependencies": {
"vite": "^4.3.5",
"tslib": "^2.5.0",
"typescript": "^5.0.4"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,113 @@
# Pintura Test Version
This package is for testing Pintura in your project. This version of Pintura will overlay a watermark on top of the editor and output image. You can purchase a license on the [Pintura product page](https://pqina.nl/pintura/).
Documentation: https://pqina.nl/pintura/docs/
## Installation
```bash
npm install @pqina/pintura
```
If you're using Svelte, Vue, React, or Angular, you can install the matching adapter components like this.
```bash
npm install @pqina/svelte-pintura
```
## Example implementations
Use one of the example projects below as a starting point or guideline.
JavaScript:
- [JavaScript](https://github.com/pqina/pintura-example-javascript)
- [PinturaInput](https://github.com/pqina/pintura-example-pintura-input)
- [CustomElement](https://github.com/pqina/pintura-example-custom-element)
Frameworks:
- [jQuery](https://github.com/pqina/pintura-example-jquery)
- [Angular](https://github.com/pqina/pintura-example-angular)
- [Vue 2](https://github.com/pqina/pintura-example-vue-2)
- [Vue 3](https://github.com/pqina/pintura-example-vue-3)
- [Nuxt 2](https://github.com/pqina/pintura-example-nuxt-2)
- [Nuxt 3](https://github.com/pqina/pintura-example-nuxt-3)
- [Svelte](https://github.com/pqina/pintura-example-svelte)
- [SvelteKit](https://github.com/pqina/pintura-example-sveltekit)
- [React](https://github.com/pqina/pintura-example-react)
- [React TypeScript](https://github.com/pqina/pintura-example-react-typescript)
- [NextJS](https://github.com/pqina/pintura-example-nextjs)
- [React Native](https://github.com/pqina/pintura-example-react-native)
- [React Native TypeScript](https://github.com/pqina/pintura-example-react-native-typescript)
- [Cordova](https://github.com/pqina/pintura-example-cordova)
- [Capacitor](https://github.com/pqina/pintura-example-capacitor)
- [Ionic 6](https://github.com/pqina/pintura-example-ionic-6)
File upload libraries:
- [FilePond](https://github.com/pqina/pintura-example-filepond)
- [jQuery File Upload](https://github.com/pqina/pintura-example-jquery-file-upload)
- [React Dropzone](https://github.com/pqina/pintura-example-react-dropzone)
- [Dropzone](https://github.com/pqina/pintura-example-dropzone)
- [Uppy](https://github.com/pqina/pintura-example-uppy)
## Components and Adapters
Individual components can be found below:
- [PinturaInput](https://github.com/pqina/pintura-component-pintura-input)
- [Vue](https://github.com/pqina/pintura-component-vue)
- [React](https://github.com/pqina/pintura-component-react)
- [Angular](https://github.com/pqina/pintura-component-angular)
- [Svelte](https://github.com/pqina/pintura-component-svelte)
- [React Native](https://github.com/pqina/pintura-component-react-native)
Adapters can be found here:
- [jQuery](https://github.com/pqina/pintura-adapter-jquery)
- [FilePond](https://github.com/pqina/filepond-plugin-image-editor)
- [Uppy](https://github.com/pqina/pintura-adapter-uppy)
- [Dropzone](https://github.com/pqina/pintura-adapter-dropzone)
## Compatibility
Pintura works on all modern browsers and devices.
- Chrome
- Firefox
- Edge 18+
- Safari 10+
- Opera
- Chrome for Android
- Firefox Android
- iOS Safari 10+
- Chrome for iOS
- Firefox iOS
### Safari 11 and 12
- Safari 11 (global usage 0.05%)
- Safari 12 (global usage 0.01%)
To add support for these browsers we need to polyfill Pointer Events.
Download polyfill here: https://github.com/Rich-Harris/Points
### Safari 10 and Edge 18
- Safari 10 (global usage 0.01%)
- Edge 18 (global usage 0.23%)
These browsers don't fully support JavaScript modules and will require polyfills to function correctly. To make Pintura Image Editor work on these browsers you'll need to load the IIFE version or transpile a compatible version yourself.
Required polyfills for Edge 18:
- Symbol.asyncIterator
- HTMLCanvasElement.prototype.toBlob
Include this URL in your page to polyfill both the APIs above: https://polyfill.io/v3/polyfill.min.js?features=Symbol.asyncIterator%2CHTMLCanvasElement.prototype.toBlob
### Internet Explorer 11
Internet Explorer 11 is not supported, global usage is at around 0.5%, it is end of life.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,5 @@
export default {
annotateLabel: 'Anmerken',
annotateIcon:
'<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M17.086 2.914a2.828 2.828 0 1 1 4 4l-14.5 14.5-5.5 1.5 1.5-5.5 14.5-14.5z"/></g>',
};

View File

@ -0,0 +1 @@
export { default } from './de_DE.js';

View File

@ -0,0 +1,235 @@
const IconCross =
'<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M18 6L6 18M6 6l12 12"></path></path></g>';
const CharacterA =
'<path fill="none" d="M9 15 L12 9 L15 15 M10 13.5 h3" stroke="currentColor" stroke-width=".125em"/>';
export default {
// generic
labelReset: 'Zurücksetzen',
labelDefault: 'Standard',
labelAuto: 'Autom.',
labelNone: 'Keine',
labelEdit: 'Bearbeiten',
labelClose: 'Schließen',
labelSupportError: (features) =>
`${features.join(', ')} wird in diesem Browser nicht unterstützt`,
// defaults
labelColor: 'Farbe',
labelWidth: 'Breite',
labelSize: 'Größe',
labelOffset: 'Versatz',
labelAmount: 'Betragen',
labelInset: 'Vertiefung',
labelRadius: 'Radius',
// controls
labelColorPalette: 'Farbpalette',
// sizes
labelSizeExtraSmall: 'Extraklein',
labelSizeSmall: 'Klein',
labelSizeMediumSmall: 'Mittelklein',
labelSizeMedium: 'Mittel',
labelSizeMediumLarge: 'Mittelgroß',
labelSizeLarge: 'Groß',
labelSizeExtraLarge: 'Extragroß',
// unused?
labelButtonRevert: 'Rückgängig',
labelButtonCancel: 'Abbrechen',
labelButtonUndo: 'Zurücknehmen',
labelButtonRedo: 'Erneut durchführen',
labelButtonExport: 'Fertig',
// zoom
labelZoomIn: 'Hineinzoomen',
labelZoomOut: 'Rauszoomen',
labelZoomFit: 'Zoom passen',
labelZoomActual: 'Tatsächlichen Größe',
iconZoomIn: '<path stroke="currentColor" stroke-width=".125em" d="M8 12 h8 M12 8 v8" />',
iconZoomOut: '<path stroke="currentColor" stroke-width=".125em" d="M9 12 h6" />',
// icon
iconSupportError: `<g fill="none" stroke="currentColor" stroke-width="2"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><g><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></g>`,
iconButtonClose: IconCross,
iconButtonRevert: `<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M7.388 18.538a8 8 0 10-2.992-9.03"/><path fill="currentColor" d="M2.794 11.696L2.37 6.714l5.088 3.18z"/><path d="M12 8v4M12 12l4 2"/></g>`,
iconButtonUndo: `<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M10 8h4c2.485 0 5 2 5 5s-2.515 5-5 5h-4"/><path fill="currentColor" d="M5 8l4-3v6z"/></g>`,
iconButtonRedo: `<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M14 8h-4c-2.485 0-5 2-5 5s2.515 5 5 5h4"/><path fill="currentColor" d="M19 8l-4-3v6z"/></g>`,
iconButtonExport: `<polyline points="20 6 9 17 4 12" fill="none" stroke="currentColor" stroke-width=".125em"></polyline>`,
// status
statusLabelButtonClose: 'Schließen',
statusIconButtonClose: IconCross,
statusLabelLoadImage: (state) => {
if (!state || !state.task) return 'Warten auf Bild';
if (state.error)
return state.error.code === 'IMAGE_TOO_SMALL'
? 'Mindestgröße ist {minWidth} &times; {minHeight}'
: 'Fehler beim Laden des Bilds';
if (state.task === 'blob-to-bitmap') return 'Bild wird geladen&hellip;';
return 'Vorschau wird erstellt&hellip;';
},
// processing status message
statusLabelProcessImage: (state) => {
if (!state || !state.task) return undefined;
if (state.task === 'store') {
if (state.error) return 'Fehler beim Hochladen des Bilds';
return 'Bild wird hochgeladen&hellip;';
}
if (state.error) return 'Fehler bei Bildverarbeitung';
return 'Bild wird verarbeitet&hellip;';
},
};
export const MarkupEditor = {
shapeLabelButtonSelectSticker: 'Bild wählen',
shapeIconButtonSelectSticker: `<g fill="none" stroke="currentColor" stroke-width="0.0625em"><path d="M8 21 L15 11 L19 15"/><path d="M15 2 v5 h5"/><path d="M8 2 h8 l4 4 v12 q0 4 -4 4 h-8 q-4 0 -4 -4 v-12 q0 -4 4 -4z"/></g><circle fill="currentColor" cx="10" cy="8" r="1.5"/>`,
shapeIconButtonFlipHorizontal: `<g stroke="currentColor" stroke-width=".125em"><path fill="none" d="M6 6.5h5v11H6z"/><path fill="currentColor" d="M15 6.5h3v11h-3z"/><path d="M11 4v16" fill="currentColor"/></g>`,
shapeIconButtonFlipVertical: `<g stroke="currentColor" stroke-width=".125em"><rect x="7" y="8" width="11" height="5" fill="none"/><rect x="7" y="17" width="11" height="2" fill="currentColor"/><line x1="5" y1="13" x2="20" y2="13"/></g>`,
shapeIconButtonRemove: `<g fill="none" fill-rule="evenodd"><path stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M7.5 7h9z"/><path d="M7.916 9h8.168a1 1 0 01.99 1.14l-.972 6.862a2 2 0 01-1.473 1.653c-.877.23-1.753.345-2.629.345-.876 0-1.752-.115-2.628-.345a2 2 0 01-1.473-1.653l-.973-6.862A1 1 0 017.916 9z" fill="currentColor"/><rect fill="currentColor" x="10" y="5" width="4" height="3" rx="1"/></g>`,
shapeIconButtonDuplicate: `<g fill="none" fill-rule="evenodd"><path d="M15 13.994V16a2 2 0 01-2 2H8a2 2 0 01-2-2v-5a2 2 0 012-2h2.142" stroke="currentColor" stroke-width=".125em"/><path d="M15 9V8a1 1 0 00-2 0v1h-1a1 1 0 000 2h1v1a1 1 0 002 0v-1h1a1 1 0 000-2h-1zm-4-4h6a2 2 0 012 2v6a2 2 0 01-2 2h-6a2 2 0 01-2-2V7a2 2 0 012-2z" fill="currentColor"/></g>`,
shapeIconButtonMoveToFront: `<g fill="none" fill-rule="evenodd"><rect fill="currentColor" x="11" y="13" width="8" height="2" rx="1"/><rect fill="currentColor" x="9" y="17" width="10" height="2" rx="1"/><path d="M11.364 8H10a5 5 0 000 10M12 6.5L14.5 8 12 9.5z" stroke="currentColor" stroke-width=".125em" stroke-linecap="round"/></g>`,
shapeIconButtonTextLayoutAutoWidth: `${CharacterA}`,
shapeIconButtonTextLayoutAutoHeight: `<g fill="currentColor"><circle cx="4" cy="12" r="1.5"/><circle cx="20" cy="12" r="1.5"/></g>${CharacterA}`,
shapeIconButtonTextLayoutFixedSize: `<g fill="currentColor"><circle cx="5" cy="6" r="1.5"/><circle cx="19" cy="6" r="1.5"/><circle cx="19" cy="19" r="1.5"/><circle cx="5" cy="19" r="1.5"/></g>${CharacterA}`,
shapeTitleButtonTextLayoutAutoWidth: 'Autom. Breite',
shapeTitleButtonTextLayoutAutoHeight: 'Autom. Höhe',
shapeTitleButtonTextLayoutFixedSize: 'Fixierte Größe',
shapeTitleButtonFlipHorizontal: 'Horizontal spiegeln',
shapeTitleButtonFlipVertical: 'Vertikal spiegeln',
shapeTitleButtonRemove: 'Entfernen',
shapeTitleButtonDuplicate: 'Duplizieren',
shapeTitleButtonMoveToFront: 'Nach vorne bewegen',
shapeLabelInputText: 'Text bearbeiten',
shapeIconInputCancel: `<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M18 6L6 18M6 6l12 12"/></g>`,
shapeIconInputConfirm: `<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><polyline points="20 6 9 17 4 12"/></g>`,
shapeLabelInputCancel: 'Abbrechen',
shapeLabelInputConfirm: 'Bestätigen',
shapeLabelStrokeNone: 'Keine Kontur',
shapeLabelFontStyleNormal: 'Normal',
shapeLabelFontStyleBold: 'Fett',
shapeLabelFontStyleItalic: 'Kursiv',
shapeLabelFontStyleItalicBold: 'Fett kursiv',
shapeTitleBackgroundColor: 'Füllfarbe',
shapeTitleCornerRadius: 'Eckenradius',
shapeTitleFontFamily: 'Schriftart',
shapeTitleFontSize: 'Schriftgröße',
shapeTitleFontStyle: 'Schriftstil',
shapeTitleLineHeight: 'Zeilenhöhe',
shapeTitleLineStart: 'Start',
shapeTitleLineEnd: 'Ende',
shapeTitleStrokeWidth: 'Linienbreite',
shapeTitleStrokeColor: 'Linienfarbe',
shapeTitleLineDecorationBar: 'Balken',
shapeTitleLineDecorationCircle: 'Kreis',
shapeTitleLineDecorationSquare: 'Quadrat',
shapeTitleLineDecorationArrow: 'Pfeil',
shapeTitleLineDecorationCircleSolid: 'Vollfarbe-Kreis',
shapeTitleLineDecorationSquareSolid: 'Vollfarbe-Quadrat',
shapeTitleLineDecorationArrowSolid: 'Vollfarbe-Pfeil',
shapeIconLineDecorationBar: `<g stroke="currentColor" stroke-linecap="round" stroke-width=".125em"><path d="M5,12 H16"/><path d="M16,8 V16"/></g>`,
shapeIconLineDecorationCircle: `<g stroke="currentColor" stroke-linecap="round"><path stroke-width=".125em" d="M5,12 H12"/><circle fill="none" stroke-width=".125em" cx="16" cy="12" r="4"/></g>`,
shapeIconLineDecorationSquare: `<g stroke="currentColor" stroke-linecap="round"><path stroke-width=".125em" d="M5,12 H12"/><rect fill="none" stroke-width=".125em" x="12" y="8" width="8" height="8"/></g>`,
shapeIconLineDecorationArrow: `<g stroke="currentColor" stroke-linecap="round" stroke-width=".125em"><path d="M5,12 H16 M13,7 l6,5 l-6,5" fill="none"/></g>`,
shapeIconLineDecorationCircleSolid: `<g stroke="currentColor" stroke-linecap="round"><path stroke-width=".125em" d="M5,12 H12"/><circle fill="currentColor" cx="16" cy="12" r="4"/></g>`,
shapeIconLineDecorationSquareSolid: `<g stroke="currentColor" stroke-linecap="round"><path stroke-width=".125em" d="M5,12 H12"/><rect fill="currentColor" x="12" y="8" width="8" height="8"/></g>`,
shapeIconLineDecorationArrowSolid: `<g stroke="currentColor" stroke-linecap="round" stroke-width=".125em"><path d="M5,12 H16"/><path d="M13,7 l6,5 l-6,5z" fill="currentColor"/></g>`,
shapeTitleColorTransparent: 'Transparent',
shapeTitleColorWhite: 'Weiß',
shapeTitleColorSilver: 'Silber',
shapeTitleColorGray: 'Grau',
shapeTitleColorBlack: 'Schwarz',
shapeTitleColorNavy: 'Marineblau',
shapeTitleColorBlue: 'Blau',
shapeTitleColorAqua: 'Aquamarin',
shapeTitleColorTeal: 'Blaugrün',
shapeTitleColorOlive: 'Olive',
shapeTitleColorGreen: 'Grün',
shapeTitleColorYellow: 'Gelb',
shapeTitleColorOrange: 'Orange',
shapeTitleColorRed: 'Rot',
shapeTitleColorMaroon: 'Kastanienbraun',
shapeTitleColorFuchsia: 'Purpurrot',
shapeTitleColorPurple: 'Lila',
shapeTitleTextOutline: 'Textumriss',
shapeTitleTextOutlineWidth: 'Breite',
shapeTitleTextShadow: 'Textschatten',
shapeTitleTextShadowBlur: 'Unschärfe',
shapeTitleTextColor: 'Schriftfarbe',
shapeTitleTextAlign: 'Textausrichtung',
shapeTitleTextAlignLeft: 'Text links ausrichten',
shapeTitleTextAlignCenter: 'Text zentrieren',
shapeTitleTextAlignRight: 'Text rechts ausrichten',
shapeIconTextAlignLeft: `<g stroke-width=".125em" stroke="currentColor"><line x1="5" y1="8" x2="15" y2="8"/><line x1="5" y1="12" x2="19" y2="12"/><line x1="5" y1="16" x2="14" y2="16"/></g>`,
shapeIconTextAlignCenter: `<g stroke-width=".125em" stroke="currentColor"><line x1="7" y1="8" x2="17" y2="8"/><line x1="5" y1="12" x2="19" y2="12"/><line x1="8" y1="16" x2="16" y2="16"/></g>`,
shapeIconTextAlignRight: `<g stroke-width=".125em" stroke="currentColor"><line x1="9" y1="8" x2="19" y2="8"/><line x1="5" y1="12" x2="19" y2="12"/><line x1="11" y1="16" x2="19" y2="16"/></g>`,
shapeLabelToolMove: 'Verschieben',
shapeLabelToolView: 'Sehen',
shapeLabelToolSharpie: 'Marker',
shapeLabelToolEraser: 'Radierer',
shapeLabelToolPath: 'Pfad',
shapeLabelToolRectangle: 'Rechteck',
shapeLabelToolEllipse: 'Ellipse',
shapeLabelToolArrow: 'Pfeil',
shapeLabelToolLine: 'Linie',
shapeLabelToolText: 'Text',
shapeLabelToolPreset: 'Sticker',
shapeIconToolView: `<g stroke-width=".125em" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M10.98 9.703V2.567c0-1.19 1.19-1.785 1.784-1.785.595 0 1.784.595 1.784 1.785v3.568"/><path d="M14.548 9.703V4.35c0-1.19 1.19-1.784 1.784-1.784.595 0 1.784.594 1.784 1.784v2.973"/><path d="M18.116 10.244V7.271c0-1.19 1.19-1.784 1.784-1.784.595 0 1.785.595 1.785 1.784 0 1.19 0 8.92-1.19 12.488-1.19 3.569-10.704 4.758-13.678 0-2.973-4.757-2.973-4.757-4.163-6.541-1.189-1.784-1.153-2.974-.594-3.568.558-.595 1.784-1.19 2.973.594 1.277 1.916 2.07 2.907 2.379 2.974V5.487c0-1.19 1.19-1.784 1.784-1.784.595 0 1.784.595 1.784 1.784V8.46"/></g>`,
shapeIconToolMove: `<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M6 2 L6 19 L18 13 Z M13 18 L16 24" stroke="currentColor" stroke-width=".125em" fill="none" fill-rule="evenodd" stroke-linejoin="round"/></g>`,
shapeIconToolSharpie: `<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M2.025 5c5.616-2.732 8.833-3.857 9.65-3.374C12.903 2.351.518 12.666 2.026 14 3.534 15.334 16.536.566 17.73 2.566 18.924 4.566 3.98 17.187 4.831 18c.851.813 9.848-6 11.643-6 1.087 0-2.53 5.11-2.92 7-.086.41 3.323-1.498 4.773-1 .494.17.64 2.317 1.319 3 .439.443 1.332.776 2.679 1" stroke="currentColor" stroke-width=".125em" fill="none" fill-rule="evenodd" stroke-linejoin="round"/></g>`,
shapeIconToolEraser: `<g stroke-width=".125em" stroke="currentColor" stroke-linecap="round" fill="none"><g transform="translate(3, 15) rotate(-45)"><rect x="0" y="0" width="18" height="10" rx="3"/></g><line x1="11" y1="21" x2="18" y2="21"/><line x1="20" y1="21" x2="22" y2="21"/></g>`,
shapeIconToolPath: `<g stroke-width=".125em" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none"><circle cx="21" cy="3" r="2"/><circle cx="9" cy="9" r="2"/><circle cx="3" cy="21" r="2"/><path d="M19 4 11 8 M8 11 4 19"/></g>`,
shapeIconToolRectangle: `<g stroke-width=".125em" stroke="currentColor" fill="none"><rect x="1" y="1" width="22" height="22" rx="4"/></g>`,
shapeIconToolEllipse: `<g stroke-width=".125em" stroke="currentColor" fill="none"><circle cx="12" cy="12" r="11"/></g>`,
shapeIconToolArrow: `<g stroke-width=".125em" stroke="currentColor" fill="none"><line x1="20" y1="3" x2="6" y2="21"/><path d="m10 6 L21.5 1 L20 13.5" fill="currentColor" stroke="none"/></g>`,
shapeIconToolLine: `<g stroke-width=".125em" stroke="currentColor" fill="none"><line x1="20" y1="3" x2="6" y2="21"/></g>`,
shapeIconToolText: `<g stroke="none" fill="currentColor" transform="translate(6,0)"><path d="M8.14 20.085c.459 0 .901-.034 1.329-.102a8.597 8.597 0 001.015-.21v1.984c-.281.135-.695.247-1.242.336a9.328 9.328 0 01-1.477.133c-3.312 0-4.968-1.745-4.968-5.235V6.804H.344v-1.25l2.453-1.078L3.89.819h1.5v3.97h4.97v2.015H5.39v10.078c0 1.031.245 1.823.735 2.375s1.161.828 2.015.828z"/>`,
shapeIconToolPreset: `<g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M12 22c2.773 0 1.189-5.177 3-7 1.796-1.808 7-.25 7-3 0-5.523-4.477-10-10-10S2 6.477 2 12s4.477 10 10 10z"></path><path d="M20 17c-3 3-5 5-8 5"></path></g>`,
shapeTitleSelectionMode: 'Auswahlmodus',
shapeTitleBrushSize: 'Pinselgröße',
shapeLabelSelectionModeNew: 'Neu',
shapeLabelSelectionModeAdd: 'Hinzufügen',
shapeLabelSelectionModeSubtract: 'Entfernen',
shapeLabelToolSelectionBrush: 'Pinsel',
shapeLabelToolSelectionLassoo: 'Lasso',
shapeLabelToolSelectionRectangle: 'Rechteckauswahl',
shapeLabelToolSelectionEllipse: 'Ellipsenauswahl',
shapeIconSelectionModeNew: `<g fill="none" fill-rule="evenodd" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M6.5 17H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v1.5"/><rect width="12" height="12" x="9" y="9" fill="currentColor" fill-opacity=".25" rx="2"/></g>`,
shapeIconSelectionModeAdd: `<g fill="none" fill-rule="evenodd" stroke="currentColor"><path fill="currentColor" fill-opacity=".25" stroke-linecap="round" stroke-linejoin="round" d="M15 3a2 2 0 0 1 2 2v4h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-8a2 2 0 0 1-2-2v-2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h10Z"/><path d="M13 15h4M15 13v4"/></g>`,
shapeIconSelectionModeSubtract: `<g fill="none" fill-rule="evenodd" stroke="currentColor"><path fill="currentColor" fill-opacity=".25" stroke-linecap="round" stroke-linejoin="round" d="M15 3a2 2 0 0 1 2 2v4h-6a2 2 0 0 0-1.995 1.85L9 11v6H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h10Z"/><rect width="12" height="12" x="9" y="9" stroke-linecap="round" stroke-linejoin="round" rx="2"/><path d="M13 15h4"/></g>`,
shapeIconToolSelectionBrush: `<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M2.025 5c5.616-2.732 8.833-3.857 9.65-3.374C12.903 2.351.518 12.666 2.026 14 3.534 15.334 16.536.566 17.73 2.566 18.924 4.566 3.98 17.187 4.831 18c.851.813 9.848-6 11.643-6 1.087 0-2.53 5.11-2.92 7-.086.41 3.323-1.498 4.773-1 .494.17.64 2.317 1.319 3 .439.443 1.332.776 2.679 1" stroke="currentColor" fill-rule="evenodd" stroke-linejoin="round"/></g>`,
shapeIconToolSelectionLassoo: `<g fill="none" fill-rule="evenodd" stroke-width=".125em" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M11.428 17.702a18.46 18.46 0 0 0 4.085-1.595c5.851-3.112 9.019-8.599 7.074-12.256-1.945-3.657-8.265-4.1-14.116-.988C2.619 5.974-.55 11.46 1.396 15.118c.63 1.186 1.72 2.033 3.105 2.532"/><ellipse cx="8" cy="18.5" rx="3.5" ry="2.833" transform="rotate(-15 8 18.5)"/><path stroke-linecap="round" d="M5 18c3.347 1.048 5.514 1.881 6.5 2.5.859.54 1.517.994 1.5 2.364"/></g>`,
shapeIconToolSelectionRectangle: `<g stroke-width=".125em" stroke="currentColor"><path d="M9 1 h6 m4 0 h4v4 m0 4 v6 m0 4 v4h-4 m-4 0 h-6 m-4 0 h-4v-4 m0 -4 v-6 m0 -4 v-4h4" fill="none" /></g>`,
shapeIconToolSelectionEllipse: `<path stroke-width=".125em" stroke="currentColor" d="M1.21 9.853a11.054 11.054 0 0 0 0 4.294m1.643 3.965a11.054 11.054 0 0 0 3.035 3.035m3.965 1.644a11.054 11.054 0 0 0 4.294 0m3.965-1.644a11.054 11.054 0 0 0 3.035-3.035m1.644-3.965a11.054 11.054 0 0 0 0-4.294m-1.644-3.965a11.054 11.054 0 0 0-3.035-3.035m-3.965-1.644a11.054 11.054 0 0 0-4.294 0M5.888 2.853a11.054 11.054 0 0 0-3.035 3.035"/>`,
};
// deprecated
export const ShapeEditor = MarkupEditor;

View File

@ -0,0 +1 @@
export { default, MarkupEditor } from './de_DE.js';

View File

@ -0,0 +1,54 @@
export default {
cropLabel: 'Zuschneiden',
cropIcon:
'<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M23 17H9a2 2 0 0 1-2-2v-5m0-3V1 M1 7h14a2 2 0 0 1 2 2v7m0 4v3"/></g>',
cropIconButtonRecenter: `<path stroke="currentColor" fill="none" stroke-width="2" stroke-linejoin="bevel" d="M1.5 7.5v-6h6M1.5 16.5v6h6M22.5 16.5v6h-6M22.5 7.5v-6h-6"/><circle cx="12" cy="12" r="3.5" fill="currentColor" stroke="none"/>`,
cropIconButtonRotateLeft:
'<g stroke="none" fill="currentColor"><path fill="none" d="M-1-1h582v402H-1z"/><rect x="3" rx="1" height="12" width="12" y="9"/><path d="M15 5h-1a5 5 0 015 5 1 1 0 002 0 7 7 0 00-7-7h-1.374l.747-.747A1 1 0 0011.958.84L9.603 3.194a1 1 0 000 1.415l2.355 2.355a1 1 0 001.415-1.414l-.55-.55H15z"/></g>',
cropIconButtonRotateRight:
'<g stroke="none" fill="currentColor"><path fill="none" d="M-1-1h582v402H-1z"/><path d="M11.177 5H10a5 5 0 00-5 5 1 1 0 01-2 0 7 7 0 017-7h1.374l-.747-.747A1 1 0 0112.042.84l2.355 2.355a1 1 0 010 1.415l-2.355 2.354a1 1 0 01-1.415-1.414l.55-.55z"/><rect rx="1" height="12" width="12" y="9" x="9"/></g>',
cropIconButtonFlipVertical:
'<g stroke="none" fill="currentColor"><path d="M19.993 12.143H7a1 1 0 0 1-1-1V5.994a1 1 0 0 1 1.368-.93l12.993 5.15a1 1 0 0 1-.368 1.93z"/><path d="M19.993 14a1 1 0 0 1 .368 1.93L7.368 21.078A1 1 0 0 1 6 20.148V15a1 1 0 0 1 1-1h12.993z" opacity=".6"/></g>',
cropIconButtonFlipHorizontal:
'<g stroke="none" fill="currentColor"><path d="M11.93 7.007V20a1 1 0 0 1-1 1H5.78a1 1 0 0 1-.93-1.368l5.15-12.993a1 1 0 0 1 1.929.368z"/><path d="M14 7.007V20a1 1 0 0 0 1 1h5.149a1 1 0 0 0 .93-1.368l-5.15-12.993A1 1 0 0 0 14 7.007z" opacity=".6"/></g>',
cropIconSelectPreset: (locale, aspectRatio) => {
const [a, b, c] = !aspectRatio
? [0.2, 0.3, 0.4]
: [
aspectRatio < 1 ? 1 : 0.3,
aspectRatio === 1 ? 0.85 : 0.5,
aspectRatio > 1 ? 1 : 0.3,
];
return `<g fill="currentColor">
<rect opacity="${a}" x="2" y="4" width="10" height="18" rx="1"/>
<rect opacity="${b}" x="4" y="8" width="14" height="14" rx="1"/>
<rect opacity="${c}" x="6" y="12" width="17" height="10" rx="1"/>
</g>`;
},
cropIconCropBoundary: (locale, isBoundToImage) => {
const [a, b, c, d] = isBoundToImage ? [0.3, 1, 0, 0] : [0, 0, 0.3, 1];
return `<g fill="currentColor">
<rect opacity="${a}" x="2" y="3" width="20" height="20" rx="1"/>
<rect opacity="${b}" x="7" y="8" width="10" height="10" rx="1"/>
<rect opacity="${c}" x="4" y="8" width="14" height="14" rx="1"/>
<rect opacity="${d}" x="12" y="4" width="10" height="10" rx="1"/>
</g>`;
},
cropLabelButtonRecenter: 'Neu zentrieren',
cropLabelButtonRotateLeft: 'Nach links drehen',
cropLabelButtonRotateRight: 'Nach rechts drehen',
cropLabelButtonFlipHorizontal: 'Horizontal spiegeln',
cropLabelButtonFlipVertical: 'Vertikal spiegeln',
cropLabelSelectPreset: 'Form zuschneiden',
cropLabelCropBoundary: 'Rand zuschneiden',
cropLabelCropBoundaryEdge: 'Bildkante',
cropLabelCropBoundaryNone: 'Keine',
cropLabelTabRotation: 'Drehung',
cropLabelTabZoom: 'Skalieren',
};

View File

@ -0,0 +1 @@
export { default } from './de_DE.js';

View File

@ -0,0 +1,5 @@
export default {
decorateLabel: 'Verzieren',
decorateIcon:
'<g fill="none" fill-rule="evenodd"><path stroke="currentColor" stroke-width=".125em" stroke-linecap="round" stroke-linejoin="round" d="M12 18.5l-6.466 3.4 1.235-7.2-5.23-5.1 7.228-1.05L12 2l3.233 6.55 7.229 1.05-5.231 5.1 1.235 7.2z"/></g>',
};

View File

@ -0,0 +1 @@
export { default } from './de_DE.js';

View File

@ -0,0 +1,12 @@
export default {
fillLabel: 'Füllen',
fillIcon: `
<g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em">
<g transform="rotate(60, 12, 12)">
<rect x="4" y="4" width="14" height="16" rx="3"/>
</g>
<path d="M21 13 L21 21"></path>
<path d="M4.5 12.5 L19 12.5"></path>
</g>
`,
};

View File

@ -0,0 +1 @@
export { default } from './de_DE.js';

View File

@ -0,0 +1,19 @@
export default {
filterLabel: 'Filter',
filterIcon:
'<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M18.347 9.907a6.5 6.5 0 1 0-1.872 3.306M3.26 11.574a6.5 6.5 0 1 0 2.815-1.417 M10.15 17.897A6.503 6.503 0 0 0 16.5 23a6.5 6.5 0 1 0-6.183-8.51"/></g>',
filterLabelChrome: 'Chrom',
filterLabelFade: 'Verblassen',
filterLabelCold: 'Kalt',
filterLabelWarm: 'Warm',
filterLabelPastel: 'Pastell',
filterLabelMonoDefault: 'Mono',
filterLabelMonoNoir: 'Noir',
filterLabelMonoWash: 'Verwaschen',
filterLabelMonoStark: 'Hart',
filterLabelSepiaDefault: 'Sepia',
filterLabelSepiaBlues: 'Blues',
filterLabelSepiaRust: 'Rost',
filterLabelSepiaColor: 'Farbe',
};

View File

@ -0,0 +1 @@
export { default } from './de_DE.js';

View File

@ -0,0 +1,14 @@
export default {
finetuneLabel: 'Feinabstimmung',
finetuneIcon:
'<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M4 1v5.5m0 3.503V23M12 1v10.5m0 3.5v8M20 1v15.5m0 3.5v3M2 7h4M10 12h4M18 17h4"/></g>',
finetuneLabelBrightness: 'Helligkeit',
finetuneLabelContrast: 'Kontrast',
finetuneLabelSaturation: 'Sättigung',
finetuneLabelExposure: 'Belichtung',
finetuneLabelTemperature: 'Temperatur',
finetuneLabelGamma: 'Gamma',
finetuneLabelClarity: 'Schärfe',
finetuneLabelVignette: 'Vignette',
};

View File

@ -0,0 +1 @@
export { default } from './de_DE.js';

View File

@ -0,0 +1,17 @@
export default {
frameLabel: 'Rahmen',
frameIcon: `<g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em">
<rect x="2" y="2" width="20" height="20" rx="4"/>
<rect x="6" y="6" width="12" height="12" rx="1"/>
</g>`,
frameLabelMatSharp: 'Matt',
frameLabelMatRound: 'Abgeschrägt',
frameLabelLineSingle: 'Linie',
frameLabelLineMultiple: 'Zebra',
frameLabelEdgeSeparate: 'Vertiefung',
frameLabelEdgeOverlap: 'Plus',
frameLabelEdgeCross: 'Holz',
frameLabelCornerHooks: 'Haken',
frameLabelPolaroid: 'Polaroid',
};

View File

@ -0,0 +1 @@
export { default } from './de_DE.js';

View File

@ -0,0 +1,15 @@
export const LocaleAnnotate: { [key: string]: any };
export const LocaleCore: { [key: string]: any };
export const LocaleCrop: { [key: string]: any };
export const LocaleDecorate: { [key: string]: any };
export const LocaleFilter: { [key: string]: any };
export const LocaleFinetune: { [key: string]: any };
export const LocaleFrame: { [key: string]: any };
export const LocaleResize: { [key: string]: any };
export const LocaleRedact: { [key: string]: any };
export const LocaleSticker: { [key: string]: any };
export const LocaleTrim: { [key: string]: any };
export const LocaleFill: { [key: string]: any };
export const LocaleMarkupEditor: { [key: string]: any };
export {};

View File

@ -0,0 +1,42 @@
import Annotate from './annotate/index.js';
import Core, { MarkupEditor } from './core/index.js';
import Crop from './crop/index.js';
import Decorate from './decorate/index.js';
import Filter from './filter/index.js';
import Finetune from './finetune/index.js';
import Frame from './frame/index.js';
import Resize from './resize/index.js';
import Redact from './redact/index.js';
import Sticker from './sticker/index.js';
import Trim from './trim/index.js';
import Fill from './fill/index.js';
export const LocaleAnnotate = Annotate;
export const LocaleCore = Core;
export const LocaleCrop = Crop;
export const LocaleDecorate = Decorate;
export const LocaleFilter = Filter;
export const LocaleFinetune = Finetune;
export const LocaleFrame = Frame;
export const LocaleResize = Resize;
export const LocaleRedact = Redact;
export const LocaleSticker = Sticker;
export const LocaleTrim = Trim;
export const LocaleFill = Fill;
export const LocaleMarkupEditor = MarkupEditor;
export default {
...Core,
...MarkupEditor,
...Annotate,
...Crop,
...Decorate,
...Filter,
...Finetune,
...Frame,
...Resize,
...Redact,
...Sticker,
...Fill,
...Trim,
};

View File

@ -0,0 +1,4 @@
export default {
redactLabel: 'Redigieren',
redactIcon: `<g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M 4 5 l 1 -1"/><path d="M 4 10 l 6 -6"/><path d="M 4 15 l 11 -11"/><path d="M 4 20 l 16 -16"/><path d="M 9 20 l 11 -11"/><path d="M 14 20 l 6 -6"/><path d="M 19 20 l 1 -1"/></g>`,
};

View File

@ -0,0 +1 @@
export { default } from './de_DE.js';

View File

@ -0,0 +1,19 @@
export default {
resizeLabel: 'Skalieren',
resizeIcon:
'<g stroke-width=".125em" stroke="currentColor" fill="none"><rect x="2" y="12" width="10" height="10" rx="2"/><path d="M4 11.5V4a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-5.5"/><path d="M14 10l3.365-3.365M14 6h4v4"/></g>',
resizeLabelFormCaption: 'Bildausgabe-Größe',
resizeLabelInputWidth: 'b',
resizeTitleInputWidth: 'Breite',
resizeLabelInputHeight: 'h',
resizeTitleInputHeight: 'Höhe',
resizeTitleButtonMaintainAspectRatio: 'Seitenverhältnis bewahren',
resizeIconButtonMaintainAspectRatio: (active, activeFraction) =>
`<defs><mask id="mask1" x="0" y="0" width="24" height="24" ><rect x="0" y="0" width="24" height="10" fill="#fff" stroke="none"/></mask></defs><g fill="none" fill-rule="evenodd"><g mask="url(#mask1)"><path transform="translate(0 ${
(activeFraction - 1) * 3
})" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M9.401 10.205v-.804a2.599 2.599 0 0 1 5.198 0V17"/></g><rect fill="currentColor" x="7" y="10" width="10" height="7" rx="1.5"/></g>`,
};

View File

@ -0,0 +1 @@
export { default } from './de_DE.js';

View File

@ -0,0 +1,6 @@
export default {
retouchLabel: 'Retuschieren',
retouchIcon: `
<g fill="none" fill-rule="evenodd"><path fill="currentColor" d="m17 6-2-1-2 1 1-2-1-2 2 1 2-1-1 2zM5.5 5.5 3 4 .5 5.5 2 3 .5.5 3 2 5.5.5 4 3zM9 21l-3-1.5L3 21l1.5-3L3 15l3 1.5L9 15l-1.5 3z"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m9.266 6.705 13.529 13.529c-.071.78-.34 1.371-.765 1.796-.425.425-1.015.694-1.796.765h0L6.705 9.266c.071-.78.34-1.371.765-1.796.425-.425 1.015-.694 1.796-.765h0Z"/><path stroke="currentColor" stroke-width="1.5" d="M12 9.5c-.657.323-1.157.657-1.5 1-.343.343-.677.843-1 1.5"/></g>
`,
};

View File

@ -0,0 +1 @@
export { default } from './en_GB.js';

View File

@ -0,0 +1,5 @@
export default {
stickerLabel: 'Sticker',
stickerIcon:
'<g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M12 22c2.773 0 1.189-5.177 3-7 1.796-1.808 7-.25 7-3 0-5.523-4.477-10-10-10S2 6.477 2 12s4.477 10 10 10z"/><path d="M20 17c-3 3-5 5-8 5"/></g>',
};

View File

@ -0,0 +1 @@
export { default } from './de_DE.js';

View File

@ -0,0 +1,60 @@
export default {
trimLabel: 'Schneiden',
trimIcon: `<g stroke-width=".125em" stroke="currentColor" fill="none"><path d=" M1 3 v18 M5 3 v2 M9 3 v2 M5 18 v2 M9 18 v2 M1 3 h12 M1 6 h10 M1 18 h9 M1 21 h8 M14 0 l-4 24 M18 3 h5 M17.5 6 h6 M15.5 18 h7 M15 21 h8 M19 3 v2 M15 18 v2 M19 18 v2 M23 3 v18"/></g>`,
trimLabelPlay: 'Abspielen',
trimLabelPause: 'Pausieren',
trimLabelMute: 'Stummschalten',
trimLabelUnmute: 'Stummschaltung aufheben',
trimLabelSplit: 'Split',
trimLabelMerge: 'Zusammenführen',
trimIconButtonMute:
'<g stroke-width=".125em" stroke="currentColor"><polygon fill="currentColor" points="2 16 2 8 8 8 15 1 15 23 8 16"/><path d="M19.3781212,15.2166107 C20.3621122,14.4879168 21,13.3184517 21,12 C21,10.6815483 20.3621122,9.51208318 19.3781212,8.78338927"/></g>',
trimIconButtonUnmute:
'<g stroke-width=".125em" stroke="currentColor"><polygon fill="currentColor" points="2 16 2 8 3 8 15 20 15 23 8 16"/><polygon fill="currentColor" points="8 8 15 1 15 15"/><line x1="1" y1="1" x2="23" y2="23"/></g>',
trimIconButtonPlay: '<polygon fill="currentColor" points="7 3, 21 12, 7 21"/>',
trimIconButtonPause:
'<g fill="currentColor"><rect x="6" y="4" width="4" height="16"/><rect x="14" y="4" width="4" height="16"/></g>',
trimIconButtonSplit: `<g stroke="currentColor" stroke-width=".125em">
<path d="M12 4 V20"/>
<path fill="currentColor" d="M6 8 L6 16 L2 12 Z M18 8 L22 12 L18 16 Z"/>
</g>`,
trimIconButtonMerge: `<g stroke="currentColor" stroke-width=".125em">
<path d="M1 4 V20 M23 4 V20"/>
<path fill="currentColor" d="M6 8 L10 12 L6 16 Z M18 8 L14 12 L18 16 Z"/>
</g>`,
// overrides
statusLabelLoadImage: (state) => {
if (!state || !state.task) return 'Warten auf Medium';
if (state.error) {
if (state.error.code === 'IMAGE_TOO_SMALL') {
return 'Mindestgröße ist {minWidth} &times; {minHeight}';
} else if (state.error.code === 'VIDEO_TOO_SHORT') {
const unit = state.error.metadata.minDuration === 1 ? 'Sekunde' : 'Sekunden';
return `Die Mindestvideodauer beträgt {minDuration} ${unit}`;
} else {
return 'Fehler beim Laden des Medium';
}
}
if (state.task === 'blob-to-bitmap') return 'Medium wird geladen&hellip;';
return 'Vorschau wird erstellt&hellip;';
},
statusLabelProcessImage: (state) => {
if (!state || !state.task) return undefined;
if (state.task === 'store') {
if (state.error) return 'Fehler beim Hochladen des Medium';
return 'Medium wird hochgeladen&hellip;';
}
if (state.error) return 'Fehler bei Medienverarbeitung';
return 'Medium wird verarbeitet&hellip;';
},
cropLabelCropBoundaryEdge: 'Rand der Medium',
};

View File

@ -0,0 +1 @@
export { default } from './de_DE.js';

View File

@ -0,0 +1,5 @@
export default {
annotateLabel: 'Annotate',
annotateIcon:
'<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M17.086 2.914a2.828 2.828 0 1 1 4 4l-14.5 14.5-5.5 1.5 1.5-5.5 14.5-14.5z"/></g>',
};

View File

@ -0,0 +1 @@
export { default } from './en_GB.js';

View File

@ -0,0 +1,235 @@
const IconCross =
'<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M18 6L6 18M6 6l12 12"></path></path></g>';
const CharacterA =
'<path fill="none" d="M9 15 L12 9 L15 15 M10 13.5 h3" stroke="currentColor" stroke-width=".125em"/>';
export default {
// generic
labelReset: 'Reset',
labelDefault: 'Default',
labelAuto: 'Auto',
labelNone: 'None',
labelEdit: 'Edit',
labelClose: 'Close',
labelSupportError: (features) => `${features.join(', ')} not supported on this browser`,
// defaults
labelColor: 'Color',
labelWidth: 'Width',
labelSize: 'Size',
labelOffset: 'Offset',
labelAmount: 'Amount',
labelInset: 'Inset',
labelRadius: 'Radius',
// controls
labelColorPalette: 'Color palette',
// sizes
labelSizeExtraSmall: 'Extra small',
labelSizeSmall: 'Small',
labelSizeMediumSmall: 'Medium small',
labelSizeMedium: 'Medium',
labelSizeMediumLarge: 'Medium large',
labelSizeLarge: 'Large',
labelSizeExtraLarge: 'Extra large',
// default buttons
labelButtonCancel: 'Cancel',
labelButtonUndo: 'Undo',
labelButtonRedo: 'Redo',
labelButtonRevert: 'Revert',
labelButtonExport: 'Done',
// zoom
labelZoomIn: 'Zoom in',
labelZoomOut: 'Zoom out',
labelZoomFit: 'Fit to view',
labelZoomActual: 'Actual size',
iconZoomIn: '<path stroke="currentColor" stroke-width=".125em" d="M8 12 h8 M12 8 v8" />',
iconZoomOut: '<path stroke="currentColor" stroke-width=".125em" d="M9 12 h6" />',
// icons
iconSupportError: `<g fill="none" stroke="currentColor" stroke-width="2"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><g><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></g>`,
iconButtonClose: IconCross,
iconButtonRevert: `<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M7.388 18.538a8 8 0 10-2.992-9.03"/><path fill="currentColor" d="M2.794 11.696L2.37 6.714l5.088 3.18z"/><path d="M12 8v4M12 12l4 2"/></g>`,
iconButtonUndo: `<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M10 8h4c2.485 0 5 2 5 5s-2.515 5-5 5h-4"/><path fill="currentColor" d="M5 8l4-3v6z"/></g>`,
iconButtonRedo: `<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M14 8h-4c-2.485 0-5 2-5 5s2.515 5 5 5h4"/><path fill="currentColor" d="M19 8l-4-3v6z"/></g>`,
iconButtonExport: `<polyline points="20 6 9 17 4 12" fill="none" stroke="currentColor" stroke-width=".125em"></polyline>`,
// status
statusLabelButtonClose: 'Close',
statusIconButtonClose: IconCross,
statusLabelLoadImage: (state) => {
if (!state || !state.task) return 'Waiting for image';
if (state.error)
return state.error.code === 'IMAGE_TOO_SMALL'
? 'Minimum image size is {minWidth} &times; {minHeight}'
: 'Error loading image';
if (state.task === 'blob-to-bitmap') return 'Preparing image&hellip;';
return 'Loading image&hellip;';
},
// processing status message
statusLabelProcessImage: (state) => {
if (!state || !state.task) return undefined;
if (state.task === 'store') {
if (state.error) return 'Error uploading image';
return 'Uploading image&hellip;';
}
if (state.error) return 'Error processing image';
return 'Processing image&hellip;';
},
};
export const MarkupEditor = {
shapeLabelButtonSelectSticker: 'Select image',
shapeIconButtonSelectSticker: `<g fill="none" stroke="currentColor" stroke-width="0.0625em"><path d="M8 21 L15 11 L19 15"/><path d="M15 2 v5 h5"/><path d="M8 2 h8 l4 4 v12 q0 4 -4 4 h-8 q-4 0 -4 -4 v-12 q0 -4 4 -4z"/></g><circle fill="currentColor" cx="10" cy="8" r="1.5"/>`,
shapeIconButtonFlipHorizontal: `<g stroke="currentColor" stroke-width=".125em"><path fill="none" d="M6 6.5h5v11H6z"/><path fill="currentColor" d="M15 6.5h3v11h-3z"/><path d="M11 4v16" fill="currentColor"/></g>`,
shapeIconButtonFlipVertical: `<g stroke="currentColor" stroke-width=".125em"><rect x="7" y="8" width="11" height="5" fill="none"/><rect x="7" y="17" width="11" height="2" fill="currentColor"/><line x1="5" y1="13" x2="20" y2="13"/></g>`,
shapeIconButtonRemove: `<g fill="none" fill-rule="evenodd"><path stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M7.5 7h9z"/><path d="M7.916 9h8.168a1 1 0 01.99 1.14l-.972 6.862a2 2 0 01-1.473 1.653c-.877.23-1.753.345-2.629.345-.876 0-1.752-.115-2.628-.345a2 2 0 01-1.473-1.653l-.973-6.862A1 1 0 017.916 9z" fill="currentColor"/><rect fill="currentColor" x="10" y="5" width="4" height="3" rx="1"/></g>`,
shapeIconButtonDuplicate: `<g fill="none" fill-rule="evenodd"><path d="M15 13.994V16a2 2 0 01-2 2H8a2 2 0 01-2-2v-5a2 2 0 012-2h2.142" stroke="currentColor" stroke-width=".125em"/><path d="M15 9V8a1 1 0 00-2 0v1h-1a1 1 0 000 2h1v1a1 1 0 002 0v-1h1a1 1 0 000-2h-1zm-4-4h6a2 2 0 012 2v6a2 2 0 01-2 2h-6a2 2 0 01-2-2V7a2 2 0 012-2z" fill="currentColor"/></g>`,
shapeIconButtonMoveToFront: `<g fill="none" fill-rule="evenodd"><rect fill="currentColor" x="11" y="13" width="8" height="2" rx="1"/><rect fill="currentColor" x="9" y="17" width="10" height="2" rx="1"/><path d="M11.364 8H10a5 5 0 000 10M12 6.5L14.5 8 12 9.5z" stroke="currentColor" stroke-width=".125em" stroke-linecap="round"/></g>`,
shapeIconButtonTextLayoutAutoWidth: `${CharacterA}`,
shapeIconButtonTextLayoutAutoHeight: `<g fill="currentColor"><circle cx="4" cy="12" r="1.5"/><circle cx="20" cy="12" r="1.5"/></g>${CharacterA}`,
shapeIconButtonTextLayoutFixedSize: `<g fill="currentColor"><circle cx="5" cy="6" r="1.5"/><circle cx="19" cy="6" r="1.5"/><circle cx="19" cy="19" r="1.5"/><circle cx="5" cy="19" r="1.5"/></g>${CharacterA}`,
shapeTitleButtonTextLayoutAutoWidth: 'Auto width',
shapeTitleButtonTextLayoutAutoHeight: 'Auto height',
shapeTitleButtonTextLayoutFixedSize: 'Fixed size',
shapeTitleButtonFlipHorizontal: 'Flip Horizontal',
shapeTitleButtonFlipVertical: 'Flip Vertical',
shapeTitleButtonRemove: 'Remove',
shapeTitleButtonDuplicate: 'Duplicate',
shapeTitleButtonMoveToFront: 'Move to front',
shapeLabelInputText: 'Edit text',
shapeIconInputCancel: `<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M18 6L6 18M6 6l12 12"/></g>`,
shapeIconInputConfirm: `<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><polyline points="20 6 9 17 4 12"/></g>`,
shapeLabelInputCancel: 'Cancel',
shapeLabelInputConfirm: 'Confirm',
shapeLabelStrokeNone: 'No outline',
shapeLabelFontStyleNormal: 'Normal',
shapeLabelFontStyleBold: 'Bold',
shapeLabelFontStyleItalic: 'Italic',
shapeLabelFontStyleItalicBold: 'Bold Italic',
shapeTitleBackgroundColor: 'Fill color',
shapeTitleCornerRadius: 'Corner radius',
shapeTitleFontFamily: 'Font',
shapeTitleFontSize: 'Font size',
shapeTitleFontStyle: 'Font style',
shapeTitleLineHeight: 'Line height',
shapeTitleLineStart: 'Start',
shapeTitleLineEnd: 'End',
shapeTitleStrokeWidth: 'Line width',
shapeTitleStrokeColor: 'Line color',
shapeTitleLineDecorationBar: 'Bar',
shapeTitleLineDecorationCircle: 'Circle',
shapeTitleLineDecorationSquare: 'Square',
shapeTitleLineDecorationArrow: 'Arrow',
shapeTitleLineDecorationCircleSolid: 'Circle solid',
shapeTitleLineDecorationSquareSolid: 'Square solid',
shapeTitleLineDecorationArrowSolid: 'Arrow solid',
shapeIconLineDecorationBar: `<g stroke="currentColor" stroke-linecap="round" stroke-width=".125em"><path d="M5,12 H16"/><path d="M16,8 V16"/></g>`,
shapeIconLineDecorationCircle: `<g stroke="currentColor" stroke-linecap="round"><path stroke-width=".125em" d="M5,12 H12"/><circle fill="none" stroke-width=".125em" cx="16" cy="12" r="4"/></g>`,
shapeIconLineDecorationSquare: `<g stroke="currentColor" stroke-linecap="round"><path stroke-width=".125em" d="M5,12 H12"/><rect fill="none" stroke-width=".125em" x="12" y="8" width="8" height="8"/></g>`,
shapeIconLineDecorationArrow: `<g stroke="currentColor" stroke-linecap="round" stroke-width=".125em"><path d="M5,12 H16 M13,7 l6,5 l-6,5" fill="none"/></g>`,
shapeIconLineDecorationCircleSolid: `<g stroke="currentColor" stroke-linecap="round"><path stroke-width=".125em" d="M5,12 H12"/><circle fill="currentColor" cx="16" cy="12" r="4"/></g>`,
shapeIconLineDecorationSquareSolid: `<g stroke="currentColor" stroke-linecap="round"><path stroke-width=".125em" d="M5,12 H12"/><rect fill="currentColor" x="12" y="8" width="8" height="8"/></g>`,
shapeIconLineDecorationArrowSolid: `<g stroke="currentColor" stroke-linecap="round" stroke-width=".125em"><path d="M5,12 H16"/><path d="M13,7 l6,5 l-6,5z" fill="currentColor"/></g>`,
shapeTitleColorTransparent: 'Transparent',
shapeTitleColorWhite: 'White',
shapeTitleColorSilver: 'Silver',
shapeTitleColorGray: 'Gray',
shapeTitleColorBlack: 'Black',
shapeTitleColorNavy: 'Navy',
shapeTitleColorBlue: 'Blue',
shapeTitleColorAqua: 'Aqua',
shapeTitleColorTeal: 'Teal',
shapeTitleColorOlive: 'Olive',
shapeTitleColorGreen: 'Green',
shapeTitleColorYellow: 'Yellow',
shapeTitleColorOrange: 'Orange',
shapeTitleColorRed: 'Red',
shapeTitleColorMaroon: 'Maroon',
shapeTitleColorFuchsia: 'Fuchsia',
shapeTitleColorPurple: 'Purple',
shapeTitleTextOutline: 'Text outline',
shapeTitleTextOutlineWidth: 'Width',
shapeTitleTextShadow: 'Text shadow',
shapeTitleTextShadowBlur: 'Blur',
shapeTitleTextColor: 'Font color',
shapeTitleTextAlign: 'Text align',
shapeTitleTextAlignLeft: 'Left align text',
shapeTitleTextAlignCenter: 'Center align text',
shapeTitleTextAlignRight: 'Right align text',
shapeIconTextAlignLeft: `<g stroke-width=".125em" stroke="currentColor"><line x1="5" y1="8" x2="15" y2="8"/><line x1="5" y1="12" x2="19" y2="12"/><line x1="5" y1="16" x2="14" y2="16"/></g>`,
shapeIconTextAlignCenter: `<g stroke-width=".125em" stroke="currentColor"><line x1="7" y1="8" x2="17" y2="8"/><line x1="5" y1="12" x2="19" y2="12"/><line x1="8" y1="16" x2="16" y2="16"/></g>`,
shapeIconTextAlignRight: `<g stroke-width=".125em" stroke="currentColor"><line x1="9" y1="8" x2="19" y2="8"/><line x1="5" y1="12" x2="19" y2="12"/><line x1="11" y1="16" x2="19" y2="16"/></g>`,
shapeLabelToolMove: 'Move',
shapeLabelToolView: 'View',
shapeLabelToolSharpie: 'Sharpie',
shapeLabelToolEraser: 'Eraser',
shapeLabelToolPath: 'Path',
shapeLabelToolRectangle: 'Rectangle',
shapeLabelToolEllipse: 'Ellipse',
shapeLabelToolArrow: 'Arrow',
shapeLabelToolLine: 'Line',
shapeLabelToolText: 'Text',
shapeLabelToolPreset: 'Stickers',
shapeIconToolView: `<g stroke-width=".125em" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M10.98 9.703V2.567c0-1.19 1.19-1.785 1.784-1.785.595 0 1.784.595 1.784 1.785v3.568"/><path d="M14.548 9.703V4.35c0-1.19 1.19-1.784 1.784-1.784.595 0 1.784.594 1.784 1.784v2.973"/><path d="M18.116 10.244V7.271c0-1.19 1.19-1.784 1.784-1.784.595 0 1.785.595 1.785 1.784 0 1.19 0 8.92-1.19 12.488-1.19 3.569-10.704 4.758-13.678 0-2.973-4.757-2.973-4.757-4.163-6.541-1.189-1.784-1.153-2.974-.594-3.568.558-.595 1.784-1.19 2.973.594 1.277 1.916 2.07 2.907 2.379 2.974V5.487c0-1.19 1.19-1.784 1.784-1.784.595 0 1.784.595 1.784 1.784V8.46"/></g>`,
shapeIconToolMove: `<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M6 2 L6 19 L18 13 Z M13 18 L16 24" stroke="currentColor" stroke-width=".125em" fill="none" fill-rule="evenodd" stroke-linejoin="round"/></g>`,
shapeIconToolSharpie: `<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M2.025 5c5.616-2.732 8.833-3.857 9.65-3.374C12.903 2.351.518 12.666 2.026 14 3.534 15.334 16.536.566 17.73 2.566 18.924 4.566 3.98 17.187 4.831 18c.851.813 9.848-6 11.643-6 1.087 0-2.53 5.11-2.92 7-.086.41 3.323-1.498 4.773-1 .494.17.64 2.317 1.319 3 .439.443 1.332.776 2.679 1" stroke="currentColor" stroke-width=".125em" fill="none" fill-rule="evenodd" stroke-linejoin="round"/></g>`,
shapeIconToolEraser: `<g stroke-width=".125em" stroke="currentColor" stroke-linecap="round" fill="none"><g transform="translate(3, 15) rotate(-45)"><rect x="0" y="0" width="18" height="10" rx="3"/></g><line x1="11" y1="21" x2="18" y2="21"/><line x1="20" y1="21" x2="22" y2="21"/></g>`,
shapeIconToolPath: `<g stroke-width=".125em" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none"><circle cx="21" cy="3" r="2"/><circle cx="9" cy="9" r="2"/><circle cx="3" cy="21" r="2"/><path d="M19 4 11 8 M8 11 4 19"/></g>`,
shapeIconToolRectangle: `<g stroke-width=".125em" stroke="currentColor" fill="none"><rect x="1" y="1" width="22" height="22" rx="4"/></g>`,
shapeIconToolEllipse: `<g stroke-width=".125em" stroke="currentColor" fill="none"><circle cx="12" cy="12" r="11"/></g>`,
shapeIconToolArrow: `<g stroke-width=".125em" stroke="currentColor" fill="none"><line x1="20" y1="3" x2="6" y2="21"/><path d="m10 6 L21.5 1 L20 13.5" fill="currentColor" stroke="none"/></g>`,
shapeIconToolLine: `<g stroke-width=".125em" stroke="currentColor" fill="none"><line x1="20" y1="3" x2="6" y2="21"/></g>`,
shapeIconToolText: `<g stroke="none" fill="currentColor" transform="translate(6,0)"><path d="M8.14 20.085c.459 0 .901-.034 1.329-.102a8.597 8.597 0 001.015-.21v1.984c-.281.135-.695.247-1.242.336a9.328 9.328 0 01-1.477.133c-3.312 0-4.968-1.745-4.968-5.235V6.804H.344v-1.25l2.453-1.078L3.89.819h1.5v3.97h4.97v2.015H5.39v10.078c0 1.031.245 1.823.735 2.375s1.161.828 2.015.828z"/>`,
shapeIconToolPreset: `<g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M12 22c2.773 0 1.189-5.177 3-7 1.796-1.808 7-.25 7-3 0-5.523-4.477-10-10-10S2 6.477 2 12s4.477 10 10 10z"></path><path d="M20 17c-3 3-5 5-8 5"></path></g>`,
shapeTitleSelectionMode: 'Selection mode',
shapeTitleBrushSize: 'Brush size',
shapeLabelSelectionModeNew: 'New',
shapeLabelSelectionModeAdd: 'Add',
shapeLabelSelectionModeSubtract: 'Remove',
shapeLabelToolSelectionBrush: 'Brush',
shapeLabelToolSelectionLassoo: 'Lassoo',
shapeLabelToolSelectionRectangle: 'Rectangle marquee',
shapeLabelToolSelectionEllipse: 'Ellipse marquee',
shapeIconSelectionModeNew: `<g fill="none" fill-rule="evenodd" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M6.5 17H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v1.5"/><rect width="12" height="12" x="9" y="9" fill="currentColor" fill-opacity=".25" rx="2"/></g>`,
shapeIconSelectionModeAdd: `<g fill="none" fill-rule="evenodd" stroke="currentColor"><path fill="currentColor" fill-opacity=".25" stroke-linecap="round" stroke-linejoin="round" d="M15 3a2 2 0 0 1 2 2v4h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-8a2 2 0 0 1-2-2v-2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h10Z"/><path d="M13 15h4M15 13v4"/></g>`,
shapeIconSelectionModeSubtract: `<g fill="none" fill-rule="evenodd" stroke="currentColor"><path fill="currentColor" fill-opacity=".25" stroke-linecap="round" stroke-linejoin="round" d="M15 3a2 2 0 0 1 2 2v4h-6a2 2 0 0 0-1.995 1.85L9 11v6H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h10Z"/><rect width="12" height="12" x="9" y="9" stroke-linecap="round" stroke-linejoin="round" rx="2"/><path d="M13 15h4"/></g>`,
shapeIconToolSelectionBrush: `<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M2.025 5c5.616-2.732 8.833-3.857 9.65-3.374C12.903 2.351.518 12.666 2.026 14 3.534 15.334 16.536.566 17.73 2.566 18.924 4.566 3.98 17.187 4.831 18c.851.813 9.848-6 11.643-6 1.087 0-2.53 5.11-2.92 7-.086.41 3.323-1.498 4.773-1 .494.17.64 2.317 1.319 3 .439.443 1.332.776 2.679 1" stroke="currentColor" fill-rule="evenodd" stroke-linejoin="round"/></g>`,
shapeIconToolSelectionLassoo: `<g fill="none" fill-rule="evenodd" stroke-width=".125em" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M11.428 17.702a18.46 18.46 0 0 0 4.085-1.595c5.851-3.112 9.019-8.599 7.074-12.256-1.945-3.657-8.265-4.1-14.116-.988C2.619 5.974-.55 11.46 1.396 15.118c.63 1.186 1.72 2.033 3.105 2.532"/><ellipse cx="8" cy="18.5" rx="3.5" ry="2.833" transform="rotate(-15 8 18.5)"/><path stroke-linecap="round" d="M5 18c3.347 1.048 5.514 1.881 6.5 2.5.859.54 1.517.994 1.5 2.364"/></g>`,
shapeIconToolSelectionRectangle: `<g stroke-width=".125em" stroke="currentColor"><path d="M9 1 h6 m4 0 h4v4 m0 4 v6 m0 4 v4h-4 m-4 0 h-6 m-4 0 h-4v-4 m0 -4 v-6 m0 -4 v-4h4" fill="none" /></g>`,
shapeIconToolSelectionEllipse: `<path stroke-width=".125em" stroke="currentColor" d="M1.21 9.853a11.054 11.054 0 0 0 0 4.294m1.643 3.965a11.054 11.054 0 0 0 3.035 3.035m3.965 1.644a11.054 11.054 0 0 0 4.294 0m3.965-1.644a11.054 11.054 0 0 0 3.035-3.035m1.644-3.965a11.054 11.054 0 0 0 0-4.294m-1.644-3.965a11.054 11.054 0 0 0-3.035-3.035m-3.965-1.644a11.054 11.054 0 0 0-4.294 0M5.888 2.853a11.054 11.054 0 0 0-3.035 3.035"/>`,
};
// deprecated
export const ShapeEditor = MarkupEditor;

View File

@ -0,0 +1 @@
export { default, MarkupEditor } from './en_GB.js';

View File

@ -0,0 +1,54 @@
export default {
cropLabel: 'Crop',
cropIcon:
'<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M23 17H9a2 2 0 0 1-2-2v-5m0-3V1 M1 7h14a2 2 0 0 1 2 2v7m0 4v3"/></g>',
cropIconButtonRecenter: `<path stroke="currentColor" fill="none" stroke-width="2" stroke-linejoin="bevel" d="M1.5 7.5v-6h6M1.5 16.5v6h6M22.5 16.5v6h-6M22.5 7.5v-6h-6"/><circle cx="12" cy="12" r="3.5" fill="currentColor" stroke="none"/>`,
cropIconButtonRotateLeft:
'<g stroke="none" fill="currentColor"><path fill="none" d="M-1-1h582v402H-1z"/><rect x="3" rx="1" height="12" width="12" y="9"/><path d="M15 5h-1a5 5 0 015 5 1 1 0 002 0 7 7 0 00-7-7h-1.374l.747-.747A1 1 0 0011.958.84L9.603 3.194a1 1 0 000 1.415l2.355 2.355a1 1 0 001.415-1.414l-.55-.55H15z"/></g>',
cropIconButtonRotateRight:
'<g stroke="none" fill="currentColor"><path fill="none" d="M-1-1h582v402H-1z"/><path d="M11.177 5H10a5 5 0 00-5 5 1 1 0 01-2 0 7 7 0 017-7h1.374l-.747-.747A1 1 0 0112.042.84l2.355 2.355a1 1 0 010 1.415l-2.355 2.354a1 1 0 01-1.415-1.414l.55-.55z"/><rect rx="1" height="12" width="12" y="9" x="9"/></g>',
cropIconButtonFlipVertical:
'<g stroke="none" fill="currentColor"><path d="M19.993 12.143H7a1 1 0 0 1-1-1V5.994a1 1 0 0 1 1.368-.93l12.993 5.15a1 1 0 0 1-.368 1.93z"/><path d="M19.993 14a1 1 0 0 1 .368 1.93L7.368 21.078A1 1 0 0 1 6 20.148V15a1 1 0 0 1 1-1h12.993z" opacity=".6"/></g>',
cropIconButtonFlipHorizontal:
'<g stroke="none" fill="currentColor"><path d="M11.93 7.007V20a1 1 0 0 1-1 1H5.78a1 1 0 0 1-.93-1.368l5.15-12.993a1 1 0 0 1 1.929.368z"/><path d="M14 7.007V20a1 1 0 0 0 1 1h5.149a1 1 0 0 0 .93-1.368l-5.15-12.993A1 1 0 0 0 14 7.007z" opacity=".6"/></g>',
cropIconSelectPreset: (locale, aspectRatio) => {
const [a, b, c] = !aspectRatio
? [0.2, 0.3, 0.4]
: [
aspectRatio < 1 ? 1 : 0.3,
aspectRatio === 1 ? 0.85 : 0.5,
aspectRatio > 1 ? 1 : 0.3,
];
return `<g fill="currentColor">
<rect opacity="${a}" x="2" y="4" width="10" height="18" rx="1"/>
<rect opacity="${b}" x="4" y="8" width="14" height="14" rx="1"/>
<rect opacity="${c}" x="6" y="12" width="17" height="10" rx="1"/>
</g>`;
},
cropIconCropBoundary: (locale, isBoundToImage) => {
const [a, b, c, d] = isBoundToImage ? [0.3, 1, 0, 0] : [0, 0, 0.3, 1];
return `<g fill="currentColor">
<rect opacity="${a}" x="2" y="3" width="20" height="20" rx="1"/>
<rect opacity="${b}" x="7" y="8" width="10" height="10" rx="1"/>
<rect opacity="${c}" x="4" y="8" width="14" height="14" rx="1"/>
<rect opacity="${d}" x="12" y="4" width="10" height="10" rx="1"/>
</g>`;
},
cropLabelButtonRecenter: 'Recenter',
cropLabelButtonRotateLeft: 'Rotate left',
cropLabelButtonRotateRight: 'Rotate right',
cropLabelButtonFlipHorizontal: 'Flip horizontal',
cropLabelButtonFlipVertical: 'Flip vertical',
cropLabelSelectPreset: 'Crop shape',
cropLabelCropBoundary: 'Crop boundary',
cropLabelCropBoundaryEdge: 'Edge of image',
cropLabelCropBoundaryNone: 'None',
cropLabelTabRotation: 'Rotation',
cropLabelTabZoom: 'Scale',
};

View File

@ -0,0 +1 @@
export { default } from './en_GB.js';

View File

@ -0,0 +1,5 @@
export default {
decorateLabel: 'Decorate',
decorateIcon:
'<g fill="none" fill-rule="evenodd"><path stroke="currentColor" stroke-width=".125em" stroke-linecap="round" stroke-linejoin="round" d="M12 18.5l-6.466 3.4 1.235-7.2-5.23-5.1 7.228-1.05L12 2l3.233 6.55 7.229 1.05-5.231 5.1 1.235 7.2z"/></g>',
};

View File

@ -0,0 +1 @@
export { default } from './en_GB.js';

View File

@ -0,0 +1,12 @@
export default {
fillLabel: 'Fill',
fillIcon: `
<g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em">
<g transform="rotate(60, 12, 12)">
<rect x="4" y="4" width="14" height="16" rx="3"/>
</g>
<path d="M21 13 L21 21"></path>
<path d="M4.5 12.5 L19 12.5"></path>
</g>
`,
};

View File

@ -0,0 +1 @@
export { default } from './en_GB.js';

View File

@ -0,0 +1,18 @@
export default {
filterLabel: 'Filter',
filterIcon:
'<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M18.347 9.907a6.5 6.5 0 1 0-1.872 3.306M3.26 11.574a6.5 6.5 0 1 0 2.815-1.417 M10.15 17.897A6.503 6.503 0 0 0 16.5 23a6.5 6.5 0 1 0-6.183-8.51"/></g>',
filterLabelChrome: 'Chrome',
filterLabelFade: 'Fade',
filterLabelCold: 'Cold',
filterLabelWarm: 'Warm',
filterLabelPastel: 'Pastel',
filterLabelMonoDefault: 'Mono',
filterLabelMonoNoir: 'Noir',
filterLabelMonoWash: 'Wash',
filterLabelMonoStark: 'Stark',
filterLabelSepiaDefault: 'Sepia',
filterLabelSepiaBlues: 'Blues',
filterLabelSepiaRust: 'Rust',
filterLabelSepiaColor: 'Color',
};

View File

@ -0,0 +1 @@
export { default } from './en_GB.js';

View File

@ -0,0 +1,14 @@
export default {
finetuneLabel: 'Finetune',
finetuneIcon:
'<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M4 1v5.5m0 3.503V23M12 1v10.5m0 3.5v8M20 1v15.5m0 3.5v3M2 7h4M10 12h4M18 17h4"/></g>',
finetuneLabelBrightness: 'Brightness',
finetuneLabelContrast: 'Contrast',
finetuneLabelSaturation: 'Saturation',
finetuneLabelExposure: 'Exposure',
finetuneLabelTemperature: 'Temperature',
finetuneLabelGamma: 'Gamma',
finetuneLabelClarity: 'Clarity',
finetuneLabelVignette: 'Vignette',
};

View File

@ -0,0 +1 @@
export { default } from './en_GB.js';

View File

@ -0,0 +1,17 @@
export default {
frameLabel: 'Frame',
frameIcon: `<g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em">
<rect x="2" y="2" width="20" height="20" rx="4"/>
<rect x="6" y="6" width="12" height="12" rx="1"/>
</g>`,
frameLabelMatSharp: 'Mat',
frameLabelMatRound: 'Bevel',
frameLabelLineSingle: 'Line',
frameLabelLineMultiple: 'Zebra',
frameLabelEdgeSeparate: 'Inset',
frameLabelEdgeOverlap: 'Plus',
frameLabelEdgeCross: 'Lumber',
frameLabelCornerHooks: 'Hook',
frameLabelPolaroid: 'Polaroid',
};

View File

@ -0,0 +1 @@
export { default } from './en_GB.js';

View File

@ -0,0 +1,15 @@
export const LocaleAnnotate: { [key: string]: any };
export const LocaleCore: { [key: string]: any };
export const LocaleCrop: { [key: string]: any };
export const LocaleDecorate: { [key: string]: any };
export const LocaleFilter: { [key: string]: any };
export const LocaleFinetune: { [key: string]: any };
export const LocaleFrame: { [key: string]: any };
export const LocaleResize: { [key: string]: any };
export const LocaleRedact: { [key: string]: any };
export const LocaleSticker: { [key: string]: any };
export const LocaleTrim: { [key: string]: any };
export const LocaleFill: { [key: string]: any };
export const LocaleMarkupEditor: { [key: string]: any };
export {};

View File

@ -0,0 +1,42 @@
import Annotate from './annotate/index.js';
import Core, { MarkupEditor } from './core/index.js';
import Crop from './crop/index.js';
import Decorate from './decorate/index.js';
import Filter from './filter/index.js';
import Finetune from './finetune/index.js';
import Frame from './frame/index.js';
import Resize from './resize/index.js';
import Redact from './redact/index.js';
import Sticker from './sticker/index.js';
import Trim from './trim/index.js';
import Fill from './fill/index.js';
export const LocaleAnnotate = Annotate;
export const LocaleCore = Core;
export const LocaleCrop = Crop;
export const LocaleDecorate = Decorate;
export const LocaleFilter = Filter;
export const LocaleFinetune = Finetune;
export const LocaleFrame = Frame;
export const LocaleResize = Resize;
export const LocaleRedact = Redact;
export const LocaleSticker = Sticker;
export const LocaleTrim = Trim;
export const LocaleFill = Fill;
export const LocaleMarkupEditor = MarkupEditor;
export default {
...Core,
...MarkupEditor,
...Annotate,
...Crop,
...Decorate,
...Filter,
...Finetune,
...Frame,
...Resize,
...Redact,
...Sticker,
...Fill,
...Trim,
};

View File

@ -0,0 +1,4 @@
export default {
redactLabel: 'Redact',
redactIcon: `<g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M 4 5 l 1 -1"/><path d="M 4 10 l 6 -6"/><path d="M 4 15 l 11 -11"/><path d="M 4 20 l 16 -16"/><path d="M 9 20 l 11 -11"/><path d="M 14 20 l 6 -6"/><path d="M 19 20 l 1 -1"/></g>`,
};

View File

@ -0,0 +1 @@
export { default } from './en_GB.js';

View File

@ -0,0 +1,19 @@
export default {
resizeLabel: 'Resize',
resizeIcon:
'<g stroke-width=".125em" stroke="currentColor" fill="none"><rect x="2" y="12" width="10" height="10" rx="2"/><path d="M4 11.5V4a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-5.5"/><path d="M14 10l3.365-3.365M14 6h4v4"/></g>',
resizeLabelFormCaption: 'Image output size',
resizeLabelInputWidth: 'w',
resizeTitleInputWidth: 'Width',
resizeLabelInputHeight: 'h',
resizeTitleInputHeight: 'Height',
resizeTitleButtonMaintainAspectRatio: 'Maintain aspectratio',
resizeIconButtonMaintainAspectRatio: (active, activeFraction) =>
`<defs><mask id="mask1" x="0" y="0" width="24" height="24" ><rect x="0" y="0" width="24" height="10" fill="#fff" stroke="none"/></mask></defs><g fill="none" fill-rule="evenodd"><g mask="url(#mask1)"><path transform="translate(0 ${
(activeFraction - 1) * 3
})" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M9.401 10.205v-.804a2.599 2.599 0 0 1 5.198 0V17"/></g><rect fill="currentColor" x="7" y="10" width="10" height="7" rx="1.5"/></g>`,
};

View File

@ -0,0 +1 @@
export { default } from './en_GB.js';

View File

@ -0,0 +1,6 @@
export default {
retouchLabel: 'Retouch',
retouchIcon: `
<g fill="none" fill-rule="evenodd"><path fill="currentColor" d="m17 6-2-1-2 1 1-2-1-2 2 1 2-1-1 2zM5.5 5.5 3 4 .5 5.5 2 3 .5.5 3 2 5.5.5 4 3zM9 21l-3-1.5L3 21l1.5-3L3 15l3 1.5L9 15l-1.5 3z"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m9.266 6.705 13.529 13.529c-.071.78-.34 1.371-.765 1.796-.425.425-1.015.694-1.796.765h0L6.705 9.266c.071-.78.34-1.371.765-1.796.425-.425 1.015-.694 1.796-.765h0Z"/><path stroke="currentColor" stroke-width="1.5" d="M12 9.5c-.657.323-1.157.657-1.5 1-.343.343-.677.843-1 1.5"/></g>
`,
};

View File

@ -0,0 +1 @@
export { default } from './en_GB.js';

View File

@ -0,0 +1,5 @@
export default {
stickerLabel: 'Sticker',
stickerIcon:
'<g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M12 22c2.773 0 1.189-5.177 3-7 1.796-1.808 7-.25 7-3 0-5.523-4.477-10-10-10S2 6.477 2 12s4.477 10 10 10z"/><path d="M20 17c-3 3-5 5-8 5"/></g>',
};

View File

@ -0,0 +1 @@
export { default } from './en_GB.js';

View File

@ -0,0 +1,60 @@
export default {
trimLabel: 'Trim',
trimIcon: `<g stroke-width=".125em" stroke="currentColor" fill="none"><path d=" M1 3 v18 M5 3 v2 M9 3 v2 M5 18 v2 M9 18 v2 M1 3 h12 M1 6 h10 M1 18 h9 M1 21 h8 M14 0 l-4 24 M18 3 h5 M17.5 6 h6 M15.5 18 h7 M15 21 h8 M19 3 v2 M15 18 v2 M19 18 v2 M23 3 v18"/></g>`,
trimLabelPlay: 'Play',
trimLabelPause: 'Pause',
trimLabelMute: 'Mute',
trimLabelUnmute: 'Unmute',
trimLabelSplit: 'Split',
trimLabelMerge: 'Merge',
trimIconButtonMute:
'<g stroke-width=".125em" stroke="currentColor"><polygon fill="currentColor" points="2 16 2 8 8 8 15 1 15 23 8 16"/><path d="M19.3781212,15.2166107 C20.3621122,14.4879168 21,13.3184517 21,12 C21,10.6815483 20.3621122,9.51208318 19.3781212,8.78338927"/></g>',
trimIconButtonUnmute:
'<g stroke-width=".125em" stroke="currentColor"><polygon fill="currentColor" points="2 16 2 8 3 8 15 20 15 23 8 16"/><polygon fill="currentColor" points="8 8 15 1 15 15"/><line x1="1" y1="1" x2="23" y2="23"/></g>',
trimIconButtonPlay: '<polygon fill="currentColor" points="7 3, 21 12, 7 21"/>',
trimIconButtonPause:
'<g fill="currentColor"><rect x="6" y="4" width="4" height="16"/><rect x="14" y="4" width="4" height="16"/></g>',
trimIconButtonSplit: `<g stroke="currentColor" stroke-width=".125em">
<path d="M12 4 V20"/>
<path fill="currentColor" d="M6 8 L6 16 L2 12 Z M18 8 L22 12 L18 16 Z"/>
</g>`,
trimIconButtonMerge: `<g stroke="currentColor" stroke-width=".125em">
<path d="M1 4 V20 M23 4 V20"/>
<path fill="currentColor" d="M6 8 L10 12 L6 16 Z M18 8 L14 12 L18 16 Z"/>
</g>`,
// overrides, replace image with media
statusLabelLoadImage: (state) => {
if (!state || !state.task) return 'Waiting for media';
if (state.error) {
if (state.error.code === 'IMAGE_TOO_SMALL') {
return 'Minimum media size is {minWidth} &times; {minHeight}';
} else if (state.error.code === 'VIDEO_TOO_SHORT') {
const unit = state.error.metadata.minDuration === 1 ? 'second' : 'seconds';
return `Minimum video duration is {minDuration} ${unit}`;
} else {
return 'Error loading media';
}
}
if (state.task === 'blob-to-bitmap') return 'Preparing media&hellip;';
return 'Loading media&hellip;';
},
statusLabelProcessImage: (state) => {
if (!state || !state.task) return undefined;
if (state.task === 'store') {
if (state.error) return 'Error uploading media';
return 'Uploading media&hellip;';
}
if (state.error) return 'Error processing media';
return 'Processing media&hellip;';
},
cropLabelCropBoundaryEdge: 'Edge of media',
};

View File

@ -0,0 +1 @@
export { default } from './en_GB.js';

View File

@ -0,0 +1,5 @@
export default {
annotateLabel: 'Añadir nota',
annotateIcon:
'<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M17.086 2.914a2.828 2.828 0 1 1 4 4l-14.5 14.5-5.5 1.5 1.5-5.5 14.5-14.5z"/></g>',
};

View File

@ -0,0 +1 @@
export { default } from './es_ES.js';

View File

@ -0,0 +1,231 @@
const IconCross =
'<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M18 6L6 18M6 6l12 12"></path></path></g>';
const CharacterA =
'<path fill="none" d="M9 15 L12 9 L15 15 M10 13.5 h3" stroke="currentColor" stroke-width=".125em"/>';
export default {
// generic
labelReset: 'Restaurar',
labelDefault: 'Predeterminado',
labelAuto: 'Automático',
labelNone: 'Ninguno',
labelEdit: 'Editar',
labelClose: 'Cerrar',
labelSupportError: (features) => `Este navegador no soporta ${features.join(', ')}`,
// defaults
labelColor: 'Color',
labelWidth: 'Ancho',
labelSize: 'Tamaño',
labelOffset: 'Desplazamiento',
labelAmount: 'Monto',
labelInset: 'Insertar',
labelRadius: 'Radio',
// controls
labelColorPalette: 'Paleta de color',
// sizes
labelSizeExtraSmall: 'Extra pequeña',
labelSizeSmall: 'Pequeña',
labelSizeMediumSmall: 'Mediana pequeña',
labelSizeMedium: 'Mediano',
labelSizeMediumLarge: 'Mediano grande',
labelSizeLarge: 'Grande',
labelSizeExtraLarge: 'Extra grande',
// unused?
labelButtonRevert: 'Revertir',
labelButtonCancel: 'Cancelar',
labelButtonUndo: 'Deshacer',
labelButtonRedo: 'Rehacer',
labelButtonExport: 'Finalizado',
// zoom
labelZoomIn: 'Dar un golpe de zoom',
labelZoomOut: 'Disminuir el zoom',
labelZoomFit: 'Zoom para ajustar',
labelZoomActual: 'Tamaño real',
iconZoomIn: '<path stroke="currentColor" stroke-width=".125em" d="M8 12 h8 M12 8 v8" />',
iconZoomOut: '<path stroke="currentColor" stroke-width=".125em" d="M9 12 h6" />',
iconSupportError: `<g fill="none" stroke="currentColor" stroke-width="2"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><g><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></g>`,
iconButtonClose: IconCross,
iconButtonRevert: `<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M7.388 18.538a8 8 0 10-2.992-9.03"/><path fill="currentColor" d="M2.794 11.696L2.37 6.714l5.088 3.18z"/><path d="M12 8v4M12 12l4 2"/></g>`,
iconButtonUndo: `<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M10 8h4c2.485 0 5 2 5 5s-2.515 5-5 5h-4"/><path fill="currentColor" d="M5 8l4-3v6z"/></g>`,
iconButtonRedo: `<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M14 8h-4c-2.485 0-5 2-5 5s2.515 5 5 5h4"/><path fill="currentColor" d="M19 8l-4-3v6z"/></g>`,
iconButtonExport: `<polyline points="20 6 9 17 4 12" fill="none" stroke="currentColor" stroke-width=".125em"></polyline>`,
// status
statusLabelButtonClose: 'Cerrar',
statusIconButtonClose: IconCross,
statusLabelLoadImage: (state) => {
if (!state || !state.task) return 'Esperando imagen';
if (state.error)
return state.error.code === 'IMAGE_TOO_SMALL'
? 'Tamaño mínmo de {minWidth} &times; {minHeight}'
: 'Error de carga de la imagen';
if (state.task === 'blob-to-bitmap') return 'Preparando imagen&hellip;';
return 'Cargando imagen&hellip;';
},
// processing status message
statusLabelProcessImage: (state) => {
if (!state || !state.task) return undefined;
if (state.task === 'store') {
if (state.error) return 'Error de subida de imagen';
return 'Subiendo imagen&hellip;';
}
if (state.error) return 'Error de proceso de imagen';
return 'Procesando imagen&hellip;';
},
};
export const MarkupEditor = {
shapeLabelButtonSelectSticker: 'Seleccionar imagen',
shapeIconButtonSelectSticker: `<g fill="none" stroke="currentColor" stroke-width="0.0625em"><path d="M8 21 L15 11 L19 15"/><path d="M15 2 v5 h5"/><path d="M8 2 h8 l4 4 v12 q0 4 -4 4 h-8 q-4 0 -4 -4 v-12 q0 -4 4 -4z"/></g><circle fill="currentColor" cx="10" cy="8" r="1.5"/>`,
shapeIconButtonFlipHorizontal: `<g stroke="currentColor" stroke-width=".125em"><path fill="none" d="M6 6.5h5v11H6z"/><path fill="currentColor" d="M15 6.5h3v11h-3z"/><path d="M11 4v16" fill="currentColor"/></g>`,
shapeIconButtonFlipVertical: `<g stroke="currentColor" stroke-width=".125em"><rect x="7" y="8" width="11" height="5" fill="none"/><rect x="7" y="17" width="11" height="2" fill="currentColor"/><line x1="5" y1="13" x2="20" y2="13"/></g>`,
shapeIconButtonRemove: `<g fill="none" fill-rule="evenodd"><path stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M7.5 7h9z"/><path d="M7.916 9h8.168a1 1 0 01.99 1.14l-.972 6.862a2 2 0 01-1.473 1.653c-.877.23-1.753.345-2.629.345-.876 0-1.752-.115-2.628-.345a2 2 0 01-1.473-1.653l-.973-6.862A1 1 0 017.916 9z" fill="currentColor"/><rect fill="currentColor" x="10" y="5" width="4" height="3" rx="1"/></g>`,
shapeIconButtonDuplicate: `<g fill="none" fill-rule="evenodd"><path d="M15 13.994V16a2 2 0 01-2 2H8a2 2 0 01-2-2v-5a2 2 0 012-2h2.142" stroke="currentColor" stroke-width=".125em"/><path d="M15 9V8a1 1 0 00-2 0v1h-1a1 1 0 000 2h1v1a1 1 0 002 0v-1h1a1 1 0 000-2h-1zm-4-4h6a2 2 0 012 2v6a2 2 0 01-2 2h-6a2 2 0 01-2-2V7a2 2 0 012-2z" fill="currentColor"/></g>`,
shapeIconButtonMoveToFront: `<g fill="none" fill-rule="evenodd"><rect fill="currentColor" x="11" y="13" width="8" height="2" rx="1"/><rect fill="currentColor" x="9" y="17" width="10" height="2" rx="1"/><path d="M11.364 8H10a5 5 0 000 10M12 6.5L14.5 8 12 9.5z" stroke="currentColor" stroke-width=".125em" stroke-linecap="round"/></g>`,
shapeIconButtonTextLayoutAutoWidth: `${CharacterA}`,
shapeIconButtonTextLayoutAutoHeight: `<g fill="currentColor"><circle cx="4" cy="12" r="1.5"/><circle cx="20" cy="12" r="1.5"/></g>${CharacterA}`,
shapeIconButtonTextLayoutFixedSize: `<g fill="currentColor"><circle cx="5" cy="6" r="1.5"/><circle cx="19" cy="6" r="1.5"/><circle cx="19" cy="19" r="1.5"/><circle cx="5" cy="19" r="1.5"/></g>${CharacterA}`,
shapeTitleButtonTextLayoutAutoWidth: 'Ancho automático',
shapeTitleButtonTextLayoutAutoHeight: 'Alto automático',
shapeTitleButtonTextLayoutFixedSize: 'Tamaño fijo',
shapeTitleButtonFlipHorizontal: 'Posición horizontal',
shapeTitleButtonFlipVertical: 'Posición vertical',
shapeTitleButtonRemove: 'Eliminar',
shapeTitleButtonDuplicate: 'Duplicar',
shapeTitleButtonMoveToFront: 'Enviar al fondo',
shapeLabelInputText: 'Editar texto',
shapeIconInputCancel: `<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M18 6L6 18M6 6l12 12"/></g>`,
shapeIconInputConfirm: `<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><polyline points="20 6 9 17 4 12"/></g>`,
shapeLabelInputCancel: 'Cancelar',
shapeLabelInputConfirm: 'Confirmar',
shapeLabelStrokeNone: 'Sin contorno',
shapeLabelFontStyleNormal: 'Normal',
shapeLabelFontStyleBold: 'Negrita',
shapeLabelFontStyleItalic: 'Itálica',
shapeLabelFontStyleItalicBold: 'Negrita itálica',
shapeTitleBackgroundColor: 'Color de relleno',
shapeTitleCornerRadius: 'Radio de esquina',
shapeTitleFontFamily: 'Fuente',
shapeTitleFontSize: 'Tamaño de fuente',
shapeTitleFontStyle: 'Estilo de fuente',
shapeTitleLineHeight: 'Linipaŝo',
shapeTitleLineStart: 'Comienzo',
shapeTitleLineEnd: 'Fin',
shapeTitleStrokeWidth: 'Ancho de línea',
shapeTitleStrokeColor: 'Color de línea',
shapeTitleLineDecorationBar: 'Barra',
shapeTitleLineDecorationCircle: 'Círculo',
shapeTitleLineDecorationSquare: 'Cuadrado',
shapeTitleLineDecorationArrow: 'Flecha',
shapeTitleLineDecorationCircleSolid: 'Círculo sólido',
shapeTitleLineDecorationSquareSolid: 'Cuadrado sólido',
shapeTitleLineDecorationArrowSolid: 'Flecha sólida',
shapeIconLineDecorationBar: `<g stroke="currentColor" stroke-linecap="round" stroke-width=".125em"><path d="M5,12 H16"/><path d="M16,8 V16"/></g>`,
shapeIconLineDecorationCircle: `<g stroke="currentColor" stroke-linecap="round"><path stroke-width=".125em" d="M5,12 H12"/><circle fill="none" stroke-width=".125em" cx="16" cy="12" r="4"/></g>`,
shapeIconLineDecorationSquare: `<g stroke="currentColor" stroke-linecap="round"><path stroke-width=".125em" d="M5,12 H12"/><rect fill="none" stroke-width=".125em" x="12" y="8" width="8" height="8"/></g>`,
shapeIconLineDecorationArrow: `<g stroke="currentColor" stroke-linecap="round" stroke-width=".125em"><path d="M5,12 H16 M13,7 l6,5 l-6,5" fill="none"/></g>`,
shapeIconLineDecorationCircleSolid: `<g stroke="currentColor" stroke-linecap="round"><path stroke-width=".125em" d="M5,12 H12"/><circle fill="currentColor" cx="16" cy="12" r="4"/></g>`,
shapeIconLineDecorationSquareSolid: `<g stroke="currentColor" stroke-linecap="round"><path stroke-width=".125em" d="M5,12 H12"/><rect fill="currentColor" x="12" y="8" width="8" height="8"/></g>`,
shapeIconLineDecorationArrowSolid: `<g stroke="currentColor" stroke-linecap="round" stroke-width=".125em"><path d="M5,12 H16"/><path d="M13,7 l6,5 l-6,5z" fill="currentColor"/></g>`,
shapeTitleColorTransparent: 'Transparente',
shapeTitleColorWhite: 'Blanco',
shapeTitleColorSilver: 'Plateado',
shapeTitleColorGray: 'Gris',
shapeTitleColorBlack: 'Negro',
shapeTitleColorNavy: 'Azul marino',
shapeTitleColorBlue: 'Azul',
shapeTitleColorAqua: 'Cian vívido',
shapeTitleColorTeal: 'Verde petróleo',
shapeTitleColorOlive: 'Oliva',
shapeTitleColorGreen: 'Verde',
shapeTitleColorYellow: 'Amarillo',
shapeTitleColorOrange: 'Naranja',
shapeTitleColorRed: 'Rojo',
shapeTitleColorMaroon: 'Marrón',
shapeTitleColorFuchsia: 'Fucsia',
shapeTitleColorPurple: 'Violeta',
shapeTitleTextOutline: 'Contorno del texto',
shapeTitleTextOutlineWidth: 'Anchura',
shapeTitleTextShadow: 'Sombra del texto',
shapeTitleTextShadowBlur: 'Desenfoque',
shapeTitleTextColor: 'Color de fuente',
shapeTitleTextAlign: 'Alinear texto',
shapeTitleTextAlignLeft: 'Alinear texto a la izquierda',
shapeTitleTextAlignCenter: 'Alinear texto al centro',
shapeTitleTextAlignRight: 'Alinear texto a la derecha',
shapeIconTextAlignLeft: `<g stroke-width=".125em" stroke="currentColor"><line x1="5" y1="8" x2="15" y2="8"/><line x1="5" y1="12" x2="19" y2="12"/><line x1="5" y1="16" x2="14" y2="16"/></g>`,
shapeIconTextAlignCenter: `<g stroke-width=".125em" stroke="currentColor"><line x1="7" y1="8" x2="17" y2="8"/><line x1="5" y1="12" x2="19" y2="12"/><line x1="8" y1="16" x2="16" y2="16"/></g>`,
shapeIconTextAlignRight: `<g stroke-width=".125em" stroke="currentColor"><line x1="9" y1="8" x2="19" y2="8"/><line x1="5" y1="12" x2="19" y2="12"/><line x1="11" y1="16" x2="19" y2="16"/></g>`,
shapeLabelToolMove: 'Mover',
shapeLabelToolView: 'Mirar',
shapeLabelToolSharpie: 'Puntero',
shapeLabelToolEraser: 'Borrador',
shapeLabelToolPath: 'Camino',
shapeLabelToolRectangle: 'Rectángulo',
shapeLabelToolEllipse: 'Elipse',
shapeLabelToolArrow: 'Flecha',
shapeLabelToolLine: 'Línea',
shapeLabelToolText: 'Texto',
shapeLabelToolPreset: 'Sticker',
shapeIconToolView: `<g stroke-width=".125em" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M10.98 9.703V2.567c0-1.19 1.19-1.785 1.784-1.785.595 0 1.784.595 1.784 1.785v3.568"/><path d="M14.548 9.703V4.35c0-1.19 1.19-1.784 1.784-1.784.595 0 1.784.594 1.784 1.784v2.973"/><path d="M18.116 10.244V7.271c0-1.19 1.19-1.784 1.784-1.784.595 0 1.785.595 1.785 1.784 0 1.19 0 8.92-1.19 12.488-1.19 3.569-10.704 4.758-13.678 0-2.973-4.757-2.973-4.757-4.163-6.541-1.189-1.784-1.153-2.974-.594-3.568.558-.595 1.784-1.19 2.973.594 1.277 1.916 2.07 2.907 2.379 2.974V5.487c0-1.19 1.19-1.784 1.784-1.784.595 0 1.784.595 1.784 1.784V8.46"/></g>`,
shapeIconToolMove: `<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M6 2 L6 19 L18 13 Z M13 18 L16 24" stroke="currentColor" stroke-width=".125em" fill="none" fill-rule="evenodd" stroke-linejoin="round"/></g>`,
shapeIconToolSharpie: `<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M2.025 5c5.616-2.732 8.833-3.857 9.65-3.374C12.903 2.351.518 12.666 2.026 14 3.534 15.334 16.536.566 17.73 2.566 18.924 4.566 3.98 17.187 4.831 18c.851.813 9.848-6 11.643-6 1.087 0-2.53 5.11-2.92 7-.086.41 3.323-1.498 4.773-1 .494.17.64 2.317 1.319 3 .439.443 1.332.776 2.679 1" stroke="currentColor" stroke-width=".125em" fill="none" fill-rule="evenodd" stroke-linejoin="round"/></g>`,
shapeIconToolEraser: `<g stroke-width=".125em" stroke="currentColor" stroke-linecap="round" fill="none"><g transform="translate(3, 15) rotate(-45)"><rect x="0" y="0" width="18" height="10" rx="3"/></g><line x1="11" y1="21" x2="18" y2="21"/><line x1="20" y1="21" x2="22" y2="21"/></g>`,
shapeIconToolPath: `<g stroke-width=".125em" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none"><circle cx="21" cy="3" r="2"/><circle cx="9" cy="9" r="2"/><circle cx="3" cy="21" r="2"/><path d="M19 4 11 8 M8 11 4 19"/></g>`,
shapeIconToolRectangle: `<g stroke-width=".125em" stroke="currentColor" fill="none"><rect x="1" y="1" width="22" height="22" rx="4"/></g>`,
shapeIconToolEllipse: `<g stroke-width=".125em" stroke="currentColor" fill="none"><circle cx="12" cy="12" r="11"/></g>`,
shapeIconToolArrow: `<g stroke-width=".125em" stroke="currentColor" fill="none"><line x1="20" y1="3" x2="6" y2="21"/><path d="m10 6 L21.5 1 L20 13.5" fill="currentColor" stroke="none"/></g>`,
shapeIconToolLine: `<g stroke-width=".125em" stroke="currentColor" fill="none"><line x1="20" y1="3" x2="6" y2="21"/></g>`,
shapeIconToolText: `<g stroke="none" fill="currentColor" transform="translate(6,0)"><path d="M8.14 20.085c.459 0 .901-.034 1.329-.102a8.597 8.597 0 001.015-.21v1.984c-.281.135-.695.247-1.242.336a9.328 9.328 0 01-1.477.133c-3.312 0-4.968-1.745-4.968-5.235V6.804H.344v-1.25l2.453-1.078L3.89.819h1.5v3.97h4.97v2.015H5.39v10.078c0 1.031.245 1.823.735 2.375s1.161.828 2.015.828z"/>`,
shapeIconToolPreset: `<g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M12 22c2.773 0 1.189-5.177 3-7 1.796-1.808 7-.25 7-3 0-5.523-4.477-10-10-10S2 6.477 2 12s4.477 10 10 10z"></path><path d="M20 17c-3 3-5 5-8 5"></path></g>`,
shapeTitleSelectionMode: 'Modo de selección',
shapeTitleBrushSize: 'Tamaño del pincel',
shapeLabelSelectionModeNew: 'Nuevo',
shapeLabelSelectionModeAdd: 'Añadir',
shapeLabelSelectionModeSubtract: 'Eliminar',
shapeLabelToolSelectionBrush: 'Pincel',
shapeLabelToolSelectionLassoo: 'Lazo',
shapeLabelToolSelectionRectangle: 'Selección rectangular',
shapeLabelToolSelectionEllipse: 'Selección elíptica',
shapeIconSelectionModeNew: `<g fill="none" fill-rule="evenodd" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M6.5 17H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v1.5"/><rect width="12" height="12" x="9" y="9" fill="currentColor" fill-opacity=".25" rx="2"/></g>`,
shapeIconSelectionModeAdd: `<g fill="none" fill-rule="evenodd" stroke="currentColor"><path fill="currentColor" fill-opacity=".25" stroke-linecap="round" stroke-linejoin="round" d="M15 3a2 2 0 0 1 2 2v4h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-8a2 2 0 0 1-2-2v-2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h10Z"/><path d="M13 15h4M15 13v4"/></g>`,
shapeIconSelectionModeSubtract: `<g fill="none" fill-rule="evenodd" stroke="currentColor"><path fill="currentColor" fill-opacity=".25" stroke-linecap="round" stroke-linejoin="round" d="M15 3a2 2 0 0 1 2 2v4h-6a2 2 0 0 0-1.995 1.85L9 11v6H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h10Z"/><rect width="12" height="12" x="9" y="9" stroke-linecap="round" stroke-linejoin="round" rx="2"/><path d="M13 15h4"/></g>`,
shapeIconToolSelectionBrush: `<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M2.025 5c5.616-2.732 8.833-3.857 9.65-3.374C12.903 2.351.518 12.666 2.026 14 3.534 15.334 16.536.566 17.73 2.566 18.924 4.566 3.98 17.187 4.831 18c.851.813 9.848-6 11.643-6 1.087 0-2.53 5.11-2.92 7-.086.41 3.323-1.498 4.773-1 .494.17.64 2.317 1.319 3 .439.443 1.332.776 2.679 1" stroke="currentColor" fill-rule="evenodd" stroke-linejoin="round"/></g>`,
shapeIconToolSelectionLassoo: `<g fill="none" fill-rule="evenodd" stroke-width=".125em" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M11.428 17.702a18.46 18.46 0 0 0 4.085-1.595c5.851-3.112 9.019-8.599 7.074-12.256-1.945-3.657-8.265-4.1-14.116-.988C2.619 5.974-.55 11.46 1.396 15.118c.63 1.186 1.72 2.033 3.105 2.532"/><ellipse cx="8" cy="18.5" rx="3.5" ry="2.833" transform="rotate(-15 8 18.5)"/><path stroke-linecap="round" d="M5 18c3.347 1.048 5.514 1.881 6.5 2.5.859.54 1.517.994 1.5 2.364"/></g>`,
shapeIconToolSelectionRectangle: `<g stroke-width=".125em" stroke="currentColor"><path d="M9 1 h6 m4 0 h4v4 m0 4 v6 m0 4 v4h-4 m-4 0 h-6 m-4 0 h-4v-4 m0 -4 v-6 m0 -4 v-4h4" fill="none" /></g>`,
shapeIconToolSelectionEllipse: `<path stroke-width=".125em" stroke="currentColor" d="M1.21 9.853a11.054 11.054 0 0 0 0 4.294m1.643 3.965a11.054 11.054 0 0 0 3.035 3.035m3.965 1.644a11.054 11.054 0 0 0 4.294 0m3.965-1.644a11.054 11.054 0 0 0 3.035-3.035m1.644-3.965a11.054 11.054 0 0 0 0-4.294m-1.644-3.965a11.054 11.054 0 0 0-3.035-3.035m-3.965-1.644a11.054 11.054 0 0 0-4.294 0M5.888 2.853a11.054 11.054 0 0 0-3.035 3.035"/>`,
};
// deprecated
export const ShapeEditor = MarkupEditor;

View File

@ -0,0 +1 @@
export { default, MarkupEditor } from './es_ES.js';

View File

@ -0,0 +1,54 @@
export default {
cropLabel: 'Recortar',
cropIcon:
'<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M23 17H9a2 2 0 0 1-2-2v-5m0-3V1 M1 7h14a2 2 0 0 1 2 2v7m0 4v3"/></g>',
cropIconButtonRecenter: `<path stroke="currentColor" fill="none" stroke-width="2" stroke-linejoin="bevel" d="M1.5 7.5v-6h6M1.5 16.5v6h6M22.5 16.5v6h-6M22.5 7.5v-6h-6"/><circle cx="12" cy="12" r="3.5" fill="currentColor" stroke="none"/>`,
cropIconButtonRotateLeft:
'<g stroke="none" fill="currentColor"><path fill="none" d="M-1-1h582v402H-1z"/><rect x="3" rx="1" height="12" width="12" y="9"/><path d="M15 5h-1a5 5 0 015 5 1 1 0 002 0 7 7 0 00-7-7h-1.374l.747-.747A1 1 0 0011.958.84L9.603 3.194a1 1 0 000 1.415l2.355 2.355a1 1 0 001.415-1.414l-.55-.55H15z"/></g>',
cropIconButtonRotateRight:
'<g stroke="none" fill="currentColor"><path fill="none" d="M-1-1h582v402H-1z"/><path d="M11.177 5H10a5 5 0 00-5 5 1 1 0 01-2 0 7 7 0 017-7h1.374l-.747-.747A1 1 0 0112.042.84l2.355 2.355a1 1 0 010 1.415l-2.355 2.354a1 1 0 01-1.415-1.414l.55-.55z"/><rect rx="1" height="12" width="12" y="9" x="9"/></g>',
cropIconButtonFlipVertical:
'<g stroke="none" fill="currentColor"><path d="M19.993 12.143H7a1 1 0 0 1-1-1V5.994a1 1 0 0 1 1.368-.93l12.993 5.15a1 1 0 0 1-.368 1.93z"/><path d="M19.993 14a1 1 0 0 1 .368 1.93L7.368 21.078A1 1 0 0 1 6 20.148V15a1 1 0 0 1 1-1h12.993z" opacity=".6"/></g>',
cropIconButtonFlipHorizontal:
'<g stroke="none" fill="currentColor"><path d="M11.93 7.007V20a1 1 0 0 1-1 1H5.78a1 1 0 0 1-.93-1.368l5.15-12.993a1 1 0 0 1 1.929.368z"/><path d="M14 7.007V20a1 1 0 0 0 1 1h5.149a1 1 0 0 0 .93-1.368l-5.15-12.993A1 1 0 0 0 14 7.007z" opacity=".6"/></g>',
cropIconSelectPreset: (locale, aspectRatio) => {
const [a, b, c] = !aspectRatio
? [0.2, 0.3, 0.4]
: [
aspectRatio < 1 ? 1 : 0.3,
aspectRatio === 1 ? 0.85 : 0.5,
aspectRatio > 1 ? 1 : 0.3,
];
return `<g fill="currentColor">
<rect opacity="${a}" x="2" y="4" width="10" height="18" rx="1"/>
<rect opacity="${b}" x="4" y="8" width="14" height="14" rx="1"/>
<rect opacity="${c}" x="6" y="12" width="17" height="10" rx="1"/>
</g>`;
},
cropIconCropBoundary: (locale, isBoundToImage) => {
const [a, b, c, d] = isBoundToImage ? [0.3, 1, 0, 0] : [0, 0, 0.3, 1];
return `<g fill="currentColor">
<rect opacity="${a}" x="2" y="3" width="20" height="20" rx="1"/>
<rect opacity="${b}" x="7" y="8" width="10" height="10" rx="1"/>
<rect opacity="${c}" x="4" y="8" width="14" height="14" rx="1"/>
<rect opacity="${d}" x="12" y="4" width="10" height="10" rx="1"/>
</g>`;
},
cropLabelButtonRecenter: 'Recentrar',
cropLabelButtonRotateLeft: 'Rotar a la izquierda',
cropLabelButtonRotateRight: 'Rotar a la derecha',
cropLabelButtonFlipHorizontal: 'Posición horizontal',
cropLabelButtonFlipVertical: 'Posición vertical',
cropLabelSelectPreset: 'Recortar forma',
cropLabelCropBoundary: 'Límite de recorte',
cropLabelCropBoundaryEdge: 'Borde de imagen',
cropLabelCropBoundaryNone: 'Ninguno',
cropLabelTabRotation: 'Rotación',
cropLabelTabZoom: 'Escalar',
};

View File

@ -0,0 +1 @@
export { default } from './es_ES.js';

View File

@ -0,0 +1,5 @@
export default {
decorateLabel: 'Decorar',
decorateIcon:
'<g fill="none" fill-rule="evenodd"><path stroke="currentColor" stroke-width=".125em" stroke-linecap="round" stroke-linejoin="round" d="M12 18.5l-6.466 3.4 1.235-7.2-5.23-5.1 7.228-1.05L12 2l3.233 6.55 7.229 1.05-5.231 5.1 1.235 7.2z"/></g>',
};

View File

@ -0,0 +1 @@
export { default } from './es_ES.js';

View File

@ -0,0 +1,12 @@
export default {
fillLabel: 'Rellenar',
fillIcon: `
<g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em">
<g transform="rotate(60, 12, 12)">
<rect x="4" y="4" width="14" height="16" rx="3"/>
</g>
<path d="M21 13 L21 21"></path>
<path d="M4.5 12.5 L19 12.5"></path>
</g>
`,
};

View File

@ -0,0 +1 @@
export { default } from './es_ES.js';

View File

@ -0,0 +1,18 @@
export default {
filterLabel: 'Filtro',
filterIcon:
'<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M18.347 9.907a6.5 6.5 0 1 0-1.872 3.306M3.26 11.574a6.5 6.5 0 1 0 2.815-1.417 M10.15 17.897A6.503 6.503 0 0 0 16.5 23a6.5 6.5 0 1 0-6.183-8.51"/></g>',
filterLabelChrome: 'Cromado',
filterLabelFade: 'Atenuar',
filterLabelCold: 'Frío',
filterLabelWarm: 'Cálido',
filterLabelPastel: 'Pastel',
filterLabelMonoDefault: 'Mono',
filterLabelMonoNoir: 'Negro',
filterLabelMonoWash: 'Lavado',
filterLabelMonoStark: 'Dorado',
filterLabelSepiaDefault: 'Sepia',
filterLabelSepiaBlues: 'Azules',
filterLabelSepiaRust: 'Óxido',
filterLabelSepiaColor: 'Color',
};

View File

@ -0,0 +1 @@
export { default } from './es_ES.js';

View File

@ -0,0 +1,14 @@
export default {
finetuneLabel: 'Ajuste fino',
finetuneIcon:
'<g stroke-width=".125em" stroke="currentColor" fill="none"><path d="M4 1v5.5m0 3.503V23M12 1v10.5m0 3.5v8M20 1v15.5m0 3.5v3M2 7h4M10 12h4M18 17h4"/></g>',
finetuneLabelBrightness: 'Brillo',
finetuneLabelContrast: 'Contraste',
finetuneLabelSaturation: 'Saturación',
finetuneLabelExposure: 'Exposición',
finetuneLabelTemperature: 'Temperatura',
finetuneLabelGamma: 'Gama',
finetuneLabelClarity: 'Nitidez',
finetuneLabelVignette: 'Viñeta',
};

View File

@ -0,0 +1 @@
export { default } from './es_ES.js';

View File

@ -0,0 +1,17 @@
export default {
frameLabel: 'Marco',
frameIcon: `<g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em">
<rect x="2" y="2" width="20" height="20" rx="4"/>
<rect x="6" y="6" width="12" height="12" rx="1"/>
</g>`,
frameLabelMatSharp: 'Mate',
frameLabelMatRound: 'Biselado',
frameLabelLineSingle: 'Línea',
frameLabelLineMultiple: 'Cebra',
frameLabelEdgeSeparate: 'Insertar',
frameLabelEdgeOverlap: 'Más',
frameLabelEdgeCross: 'Madera',
frameLabelCornerHooks: 'Gancho',
frameLabelPolaroid: 'Polaroid',
};

View File

@ -0,0 +1 @@
export { default } from './es_ES.js';

View File

@ -0,0 +1,15 @@
export const LocaleAnnotate: { [key: string]: any };
export const LocaleCore: { [key: string]: any };
export const LocaleCrop: { [key: string]: any };
export const LocaleDecorate: { [key: string]: any };
export const LocaleFilter: { [key: string]: any };
export const LocaleFinetune: { [key: string]: any };
export const LocaleFrame: { [key: string]: any };
export const LocaleResize: { [key: string]: any };
export const LocaleRedact: { [key: string]: any };
export const LocaleSticker: { [key: string]: any };
export const LocaleTrim: { [key: string]: any };
export const LocaleFill: { [key: string]: any };
export const LocaleMarkupEditor: { [key: string]: any };
export {};

View File

@ -0,0 +1,42 @@
import Annotate from './annotate/index.js';
import Core, { MarkupEditor } from './core/index.js';
import Crop from './crop/index.js';
import Decorate from './decorate/index.js';
import Filter from './filter/index.js';
import Finetune from './finetune/index.js';
import Frame from './frame/index.js';
import Resize from './resize/index.js';
import Redact from './redact/index.js';
import Sticker from './sticker/index.js';
import Trim from './trim/index.js';
import Fill from './fill/index.js';
export const LocaleAnnotate = Annotate;
export const LocaleCore = Core;
export const LocaleCrop = Crop;
export const LocaleDecorate = Decorate;
export const LocaleFilter = Filter;
export const LocaleFinetune = Finetune;
export const LocaleFrame = Frame;
export const LocaleResize = Resize;
export const LocaleRedact = Redact;
export const LocaleSticker = Sticker;
export const LocaleTrim = Trim;
export const LocaleFill = Fill;
export const LocaleMarkupEditor = MarkupEditor;
export default {
...Core,
...MarkupEditor,
...Annotate,
...Crop,
...Decorate,
...Filter,
...Finetune,
...Frame,
...Resize,
...Redact,
...Sticker,
...Fill,
...Trim,
};

View File

@ -0,0 +1,4 @@
export default {
redactLabel: 'Redactar',
redactIcon: `<g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M 4 5 l 1 -1"/><path d="M 4 10 l 6 -6"/><path d="M 4 15 l 11 -11"/><path d="M 4 20 l 16 -16"/><path d="M 9 20 l 11 -11"/><path d="M 14 20 l 6 -6"/><path d="M 19 20 l 1 -1"/></g>`,
};

View File

@ -0,0 +1 @@
export { default } from './es_ES.js';

View File

@ -0,0 +1,19 @@
export default {
resizeLabel: 'Redimensionar',
resizeIcon:
'<g stroke-width=".125em" stroke="currentColor" fill="none"><rect x="2" y="12" width="10" height="10" rx="2"/><path d="M4 11.5V4a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-5.5"/><path d="M14 10l3.365-3.365M14 6h4v4"/></g>',
resizeLabelFormCaption: 'Tamaño de imagen de salida',
resizeLabelInputWidth: 'a',
resizeTitleInputWidth: 'Ancho',
resizeLabelInputHeight: 'h',
resizeTitleInputHeight: 'Alto',
resizeTitleButtonMaintainAspectRatio: 'Mantener relacion de aspecto',
resizeIconButtonMaintainAspectRatio: (active, activeFraction) =>
`<defs><mask id="mask1" x="0" y="0" width="24" height="24" ><rect x="0" y="0" width="24" height="10" fill="#fff" stroke="none"/></mask></defs><g fill="none" fill-rule="evenodd"><g mask="url(#mask1)"><path transform="translate(0 ${
(activeFraction - 1) * 3
})" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M9.401 10.205v-.804a2.599 2.599 0 0 1 5.198 0V17"/></g><rect fill="currentColor" x="7" y="10" width="10" height="7" rx="1.5"/></g>`,
};

View File

@ -0,0 +1 @@
export { default } from './es_ES.js';

View File

@ -0,0 +1,6 @@
export default {
retouchLabel: 'Retocar',
retouchIcon: `
<g fill="none" fill-rule="evenodd"><path fill="currentColor" d="m17 6-2-1-2 1 1-2-1-2 2 1 2-1-1 2zM5.5 5.5 3 4 .5 5.5 2 3 .5.5 3 2 5.5.5 4 3zM9 21l-3-1.5L3 21l1.5-3L3 15l3 1.5L9 15l-1.5 3z"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m9.266 6.705 13.529 13.529c-.071.78-.34 1.371-.765 1.796-.425.425-1.015.694-1.796.765h0L6.705 9.266c.071-.78.34-1.371.765-1.796.425-.425 1.015-.694 1.796-.765h0Z"/><path stroke="currentColor" stroke-width="1.5" d="M12 9.5c-.657.323-1.157.657-1.5 1-.343.343-.677.843-1 1.5"/></g>
`,
};

View File

@ -0,0 +1 @@
export { default } from './en_GB.js';

View File

@ -0,0 +1,5 @@
export default {
stickerLabel: 'Sticker',
stickerIcon:
'<g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" stroke-width=".125em"><path d="M12 22c2.773 0 1.189-5.177 3-7 1.796-1.808 7-.25 7-3 0-5.523-4.477-10-10-10S2 6.477 2 12s4.477 10 10 10z"/><path d="M20 17c-3 3-5 5-8 5"/></g>',
};

View File

@ -0,0 +1 @@
export { default } from './es_ES.js';

View File

@ -0,0 +1,65 @@
export default {
trimLabel: 'Recortar',
trimIcon: `<g stroke-width=".125em" stroke="currentColor" fill="none"><path d=" M1 3 v18 M5 3 v2 M9 3 v2 M5 18 v2 M9 18 v2 M1 3 h12 M1 6 h10 M1 18 h9 M1 21 h8 M14 0 l-4 24 M18 3 h5 M17.5 6 h6 M15.5 18 h7 M15 21 h8 M19 3 v2 M15 18 v2 M19 18 v2 M23 3 v18"/></g>`,
trimLabelPlay: 'Reproduce',
trimLabelPause: 'Pausar',
trimLabelMute: 'Silenciar',
trimLabelUnmute: 'Activar',
trimLabelSplit: 'Dividir',
trimLabelMerge: 'Fusionar',
trimIconButtonMute:
'<g stroke-width=".125em" stroke="currentColor"><polygon fill="currentColor" points="2 16 2 8 8 8 15 1 15 23 8 16"/><path d="M19.3781212,15.2166107 C20.3621122,14.4879168 21,13.3184517 21,12 C21,10.6815483 20.3621122,9.51208318 19.3781212,8.78338927"/></g>',
trimIconButtonUnmute:
'<g stroke-width=".125em" stroke="currentColor"><polygon fill="currentColor" points="2 16 2 8 3 8 15 20 15 23 8 16"/><polygon fill="currentColor" points="8 8 15 1 15 15"/><line x1="1" y1="1" x2="23" y2="23"/></g>',
trimIconButtonPlay: '<polygon fill="currentColor" points="7 3, 21 12, 7 21"/>',
trimIconButtonPause:
'<g fill="currentColor"><rect x="6" y="4" width="4" height="16"/><rect x="14" y="4" width="4" height="16"/></g>',
trimIconButtonSplit: `<g stroke="currentColor" stroke-width=".125em">
<path d="M12 4 V20"/>
<path fill="currentColor" d="M6 8 L6 16 L2 12 Z M18 8 L22 12 L18 16 Z"/>
</g>`,
trimIconButtonMerge: `<g stroke="currentColor" stroke-width=".125em">
<path d="M1 4 V20 M23 4 V20"/>
<path fill="currentColor" d="M6 8 L10 12 L6 16 Z M18 8 L14 12 L18 16 Z"/>
</g>`,
// overrides, replace image with media
statusLabelLoadImage: (state) => {
if (!state || !state.task) return 'Esperando media';
if (state.error) {
if (state.error.code === 'IMAGE_TOO_SMALL') {
return 'Tamaño mínmo de {minWidth} &times; {minHeight}';
} else if (state.error.code === 'VIDEO_TOO_SHORT') {
const unit = state.error.metadata.minDuration === 1 ? 'segundo' : 'segundos';
return `La duración mínima del video es de {minDuration} ${unit}`;
} else {
return 'Error al cargar media';
}
}
if (state.error)
return state.error.code === 'IMAGE_TOO_SMALL'
? 'Tamaño mínmo de {minWidth} &times; {minHeight}'
: 'Error al cargar media';
if (state.task === 'blob-to-bitmap') return 'Preparando media&hellip;';
return 'Cargando media&hellip;';
},
// processing status message
statusLabelProcessImage: (state) => {
if (!state || !state.task) return undefined;
if (state.task === 'store') {
if (state.error) return 'Error de subida media';
return 'Subiendo media&hellip;';
}
if (state.error) return 'Error de proceso media';
return 'Procesando media&hellip;';
},
cropLabelCropBoundaryEdge: 'Borde de media',
};

Some files were not shown because too many files have changed in this diff Show More