Compare commits
34 Commits
master
...
build/reba
Author | SHA1 | Date |
---|---|---|
batch-bot | 33a19775e4 | |
gilesb | 42f52ee099 | |
gilesb | a405ad73c2 | |
gilesb | 0586b73564 | |
gilesb | da02f65441 | |
gilesb | 448bf5c748 | |
gilesb | 058ae061a4 | |
gilesb | f6df5c692d | |
gilesb | 2402bf5f91 | |
gilesb | db7f4fcbc8 | |
gilesb | 201a1a315a | |
gilesb | 33d70d88ff | |
gilesb | f37f016a98 | |
gilesb | e11179187f | |
gilesb | 6926055b17 | |
gilesb | 1c2e1d8047 | |
gilesb | c3fe2f2f3a | |
gilesb | d075821c45 | |
gilesb | b2f8610a03 | |
gilesb | fd8c22de42 | |
gilesb | b96c610f18 | |
gilesb | 595f0012bb | |
gilesb | 9e7382ba53 | |
gilesb | 159c8df63c | |
gilesb | 990b7192b2 | |
giles | ae922d09c4 | |
gilesb | fa367d43d9 | |
gilesb | 399dc461c3 | |
gilesb | ee7bed8c18 | |
gilesb | 20088da9bb | |
gilesb | 589acdaee4 | |
gilesb | 2c7937596c | |
gilesb | eda88259de | |
gilesb | 836c1edfef |
|
@ -43,13 +43,10 @@ jobs:
|
||||||
- name: push
|
- name: push
|
||||||
run: |
|
run: |
|
||||||
if [[ $(git branch -r | grep -Fx " origin/${{ env.DEVELOPMENT_BRANCH }}" | wc -c) -eq 0 ]]; then
|
if [[ $(git branch -r | grep -Fx " origin/${{ env.DEVELOPMENT_BRANCH }}" | wc -c) -eq 0 ]]; then
|
||||||
ls
|
echo rebasing with master
|
||||||
git log -5
|
git log -5
|
||||||
git status
|
git status
|
||||||
git rebase -Xtheirs origin/master
|
git rebase -Xtheirs origin/master #--strategy-option ours
|
||||||
ls
|
|
||||||
git log -4
|
|
||||||
git status
|
|
||||||
echo no development branch so pushing
|
echo no development branch so pushing
|
||||||
git push origin HEAD:${{ env.DEVELOPMENT_BRANCH }};
|
git push origin HEAD:${{ env.DEVELOPMENT_BRANCH }};
|
||||||
curl https://dl.gitea.com/tea/0.9.2/tea-0.9.2-linux-386 --output tea;
|
curl https://dl.gitea.com/tea/0.9.2/tea-0.9.2-linux-386 --output tea;
|
||||||
|
@ -64,9 +61,9 @@ jobs:
|
||||||
echo 'pushed new branch and created pr';
|
echo 'pushed new branch and created pr';
|
||||||
else
|
else
|
||||||
if [[ $(git diff origin/${{ env.DEVELOPMENT_BRANCH }} | wc -c) -ne 0 ]]; then
|
if [[ $(git diff origin/${{ env.DEVELOPMENT_BRANCH }} | wc -c) -ne 0 ]]; then
|
||||||
#git rebase -Xtheirs origin/${{ env.DEVELOPMENT_BRANCH }}
|
|
||||||
git clone ${{ github.serverUrl }}/${{ github.repository }} ../cloned
|
git clone ${{ github.serverUrl }}/${{ github.repository }} ../cloned
|
||||||
git -C ../cloned fetch origin #--depth=1
|
git -C ../cloned fetch origin #--depth=1
|
||||||
|
git -C ../cloned branch -r
|
||||||
git -C ../cloned checkout $DEVELOPMENT_BRANCH || git -C ../cloned checkout -b $DEVELOPMENT_BRANCH
|
git -C ../cloned checkout $DEVELOPMENT_BRANCH || git -C ../cloned checkout -b $DEVELOPMENT_BRANCH
|
||||||
mv ../cloned/.git ..
|
mv ../cloned/.git ..
|
||||||
rm -rf ../cloned
|
rm -rf ../cloned
|
||||||
|
@ -78,6 +75,7 @@ jobs:
|
||||||
rm -r .git
|
rm -r .git
|
||||||
mv ../cloned/* .
|
mv ../cloned/* .
|
||||||
mv ../cloned/.git .
|
mv ../cloned/.git .
|
||||||
|
git status
|
||||||
git add -A
|
git add -A
|
||||||
git commit -a -m "${{ github.ref_name }} -> ${{ env.DEVELOPMENT_BRANCH }}"
|
git commit -a -m "${{ github.ref_name }} -> ${{ env.DEVELOPMENT_BRANCH }}"
|
||||||
git push origin HEAD:${{ env.DEVELOPMENT_BRANCH }};
|
git push origin HEAD:${{ env.DEVELOPMENT_BRANCH }};
|
|
@ -1,13 +0,0 @@
|
||||||
name: Changelog
|
|
||||||
on:
|
|
||||||
release:
|
|
||||||
types:
|
|
||||||
- created
|
|
||||||
jobs:
|
|
||||||
changelog:
|
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
steps:
|
|
||||||
- name: "✏️ Generate release changelog"
|
|
||||||
uses: heinrichreimer/action-github-changelog-generator@v2.3
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.BOT_TOKEN }}
|
|
|
@ -15,11 +15,6 @@ jobs:
|
||||||
fetch-depth: '10'
|
fetch-depth: '10'
|
||||||
- env: env
|
- env: env
|
||||||
run: printenv
|
run: printenv
|
||||||
- name: get tea
|
|
||||||
run: |
|
|
||||||
curl https://dl.gitea.com/tea/0.9.2/tea-0.9.2-linux-386 --output ../tea
|
|
||||||
chmod +x ../tea
|
|
||||||
../tea login add -n=this --url=${{ github.server_url}} -t=${{ secrets.BOT_TOKEN }}
|
|
||||||
- uses: http://sigyl.com:3000/actions/setup-node@v3
|
- uses: http://sigyl.com:3000/actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: '20'
|
node-version: '20'
|
||||||
|
@ -48,9 +43,9 @@ jobs:
|
||||||
git push origin HEAD:${{ env.BUILD_BRANCH }};
|
git push origin HEAD:${{ env.BUILD_BRANCH }};
|
||||||
else
|
else
|
||||||
if [[ $(git diff origin/${{ env.BUILD_BRANCH }} | wc -c) -ne 0 ]]; then
|
if [[ $(git diff origin/${{ env.BUILD_BRANCH }} | wc -c) -ne 0 ]]; then
|
||||||
#git rebase -Xtheirs origin/${{ env.BUILD_BRANCH }}
|
|
||||||
git clone ${{ github.serverUrl }}/${{ github.repository }} ../cloned
|
git clone ${{ github.serverUrl }}/${{ github.repository }} ../cloned
|
||||||
git -C ../cloned fetch origin #--depth=1
|
git -C ../cloned fetch origin #--depth=1
|
||||||
|
git -C ../cloned branch -r
|
||||||
git -C ../cloned checkout $BUILD_BRANCH || git -C ../cloned checkout -b $BUILD_BRANCH
|
git -C ../cloned checkout $BUILD_BRANCH || git -C ../cloned checkout -b $BUILD_BRANCH
|
||||||
mv ../cloned/.git ..
|
mv ../cloned/.git ..
|
||||||
rm -rf ../cloned
|
rm -rf ../cloned
|
||||||
|
@ -62,6 +57,7 @@ jobs:
|
||||||
rm -r .git
|
rm -r .git
|
||||||
mv ../cloned/* .
|
mv ../cloned/* .
|
||||||
mv ../cloned/.git .
|
mv ../cloned/.git .
|
||||||
|
git status
|
||||||
git add -A
|
git add -A
|
||||||
git commit -a -m "${{ github.ref_name }} -> ${{ env.BUILD_BRANCH }} "
|
git commit -a -m "${{ github.ref_name }} -> ${{ env.BUILD_BRANCH }} "
|
||||||
git push origin HEAD:${{ env.BUILD_BRANCH }}
|
git push origin HEAD:${{ env.BUILD_BRANCH }}
|
||||||
|
@ -71,19 +67,27 @@ jobs:
|
||||||
fi;
|
fi;
|
||||||
- name: make PR
|
- name: make PR
|
||||||
run: |
|
run: |
|
||||||
../tea pr ls -f=base,head -o=csv
|
curl https://dl.gitea.com/tea/0.9.2/tea-0.9.2-linux-386 --output tea
|
||||||
if [[ $(../tea pr ls -f=base,head -o=csv | grep "\"master\",\"${{ github.ref_name }}\"" | head -c1 | wc -c) -eq 0 ]]; then
|
chmod +x ./tea
|
||||||
../tea pr c --base=master --head=${{ github.ref_name }} --description="
|
./tea login add -n=this --url=${{ github.server_url}} -t=${{ secrets.BOT_TOKEN }}
|
||||||
|
./tea pr ls -f=base,head -o=csv
|
||||||
|
if [[ $(./tea pr ls -f=base,head -o=csv | grep "\"master\",\"${{ github.ref_name }}\"" | head -c1 | wc -c) -eq 0 ]]; then
|
||||||
|
./tea pr c --base=master --head=${{ github.ref_name }} --description="
|
||||||
development pull request
|
development pull request
|
||||||
this PR is will been built on [${{ github.ref_name }}](${{ github.serverUrl }}/${{ github.repository }}/src/branch/${{ env.BUILD_BRANCH }})
|
this PR is will been built on [${{ github.ref_name }}](${{ github.serverUrl }}/${{ github.repository }}/src/branch/${{ env.BUILD_BRANCH }})
|
||||||
" -t="WIP: ${{ github.event.head_commit.message }}"
|
" -t="WIP: ${{ github.event.head_commit.message }}"
|
||||||
fi
|
fi
|
||||||
- name: get PR number
|
- name: get PR number
|
||||||
run: |
|
run: |
|
||||||
pr=$(../tea pr ls -f=base,head,index -o csv | grep "\"master\",\"${{ github.ref_name }}\"" | tr -d ' ' | tr "," "\n" | head -n 4 | tail -1)
|
curl https://dl.gitea.com/tea/0.9.2/tea-0.9.2-linux-386 --output tea
|
||||||
|
chmod +x ./tea
|
||||||
|
pr=$(./tea pr ls -f=base,head,index -o csv | grep "\"master\",\"${{ github.ref_name }}\"" | tr -d ' ' | tr "," "\n" | head -n 4 | tail -1)
|
||||||
export PR="${pr//[\"\'\`]/}"
|
export PR="${pr//[\"\'\`]/}"
|
||||||
echo ::set-env name=PR::$PR
|
echo ::set-env name=PR::$PR
|
||||||
|
rm ./tea
|
||||||
- name: make pull request comment
|
- name: make pull request comment
|
||||||
run: |
|
run: |
|
||||||
../tea c $PR "this branch has been built on [${{ env.BUILD_BRANCH }}](${{ github.serverUrl }}/${{ github.repository }}/src/branch/${{ env.BUILD_BRANCH }})"
|
curl https://dl.gitea.com/tea/0.9.2/tea-0.9.2-linux-386 --output tea
|
||||||
|
chmod +x ./tea
|
||||||
|
./tea c $PR "this branch has been built on [${{ env.BUILD_BRANCH }}](${{ github.serverUrl }}/${{ github.repository }}/src/branch/${{ env.BUILD_BRANCH }})"
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
name: master-pushed
|
|
||||||
run-name: ${{ github.actor }} is learning GitHub Actions
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- 'master'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
new release:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: get tea
|
|
||||||
run: |
|
|
||||||
curl https://dl.gitea.com/tea/0.9.2/tea-0.9.2-linux-386 --output ../tea
|
|
||||||
chmod +x ../tea
|
|
||||||
../tea login add -n=this --url=${{ github.server_url}} -t=${{ secrets.BOT_TOKEN }}
|
|
||||||
- uses: http://sigyl.com:3000/actions/checkout@v3.5.4
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.BOT_TOKEN }}
|
|
||||||
- name: bump release
|
|
||||||
run: |
|
|
||||||
export version=$(../tea r ls -o=simple | head -n 1 | tr " " "\n" | head -n 1 | awk -F. '{$NF = $NF + 1;} 1' | sed 's/ /./g')
|
|
||||||
../tea r c --note="this isrelease ${version}" --tag=${version} --title=${version} --target=${{ github.sha }}
|
|
||||||
echo ::set-env name=VERSION::$version
|
|
|
@ -6,11 +6,10 @@ on:
|
||||||
- closed
|
- closed
|
||||||
- deleted
|
- deleted
|
||||||
branches:
|
branches:
|
||||||
- master
|
- 'master'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
delete-develop:
|
delete:
|
||||||
if: ${{ ! startsWith(github.head_ref, 'develop/') }}
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: http://sigyl.com:3000/actions/checkout@v3.5.4
|
- uses: http://sigyl.com:3000/actions/checkout@v3.5.4
|
||||||
|
@ -30,6 +29,19 @@ jobs:
|
||||||
firstString=${{ github.head_ref }}
|
firstString=${{ github.head_ref }}
|
||||||
secondString="build"
|
secondString="build"
|
||||||
echo ::set-env name=BUILD_BRANCH::${firstString/develop\//"$secondString"\/}s
|
echo ::set-env name=BUILD_BRANCH::${firstString/develop\//"$secondString"\/}s
|
||||||
- name: delete build branch
|
if_merged:
|
||||||
run: git push origin --delete ${{ env.BUILD_BRANCH }}
|
if: github.event.pull_request.merged == true
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: http://sigyl.com:3000/actions/checkout@v3.5.4
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.BOT_TOKEN }}
|
||||||
|
- name: delete develop branch
|
||||||
|
id: delete_develop_branch
|
||||||
|
run: git push origin --delete ${{ github.head_ref }}
|
||||||
|
continue-on-error: true
|
||||||
|
- uses: mainmatter/continue-on-error-comment@v1
|
||||||
|
with:
|
||||||
|
repo-token: ${{ secrets.BOT_TOKEN }}
|
||||||
|
outcome: ${{ steps.delete_develop_branch.outcome }}
|
||||||
|
test-id: Error code ${{ matrix.code }}
|
|
@ -1,23 +0,0 @@
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches: [master]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
prettier:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: http://sigyl.com:3000/actions/checkout@v3.5.4
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.BOT_TOKEN }}
|
|
||||||
# Make sure the actual branch is checked out when running on pull requests
|
|
||||||
ref: ${{ github.head_ref }}
|
|
||||||
# This is important to fetch the changes to the previous commit
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Prettify code
|
|
||||||
uses: creyD/prettier_action@v4.3
|
|
||||||
with:
|
|
||||||
# This part is also where you can pass other options, for example:
|
|
||||||
prettier_options: --write **/*.{js,md}
|
|
||||||
only_changed: true
|
|
|
@ -31,4 +31,4 @@ jobs:
|
||||||
git config --global user.email "username@users.noreply.github.com"
|
git config --global user.email "username@users.noreply.github.com"
|
||||||
git add -A
|
git add -A
|
||||||
git commit -a -m "${{ github.ref_name }} -> refs/heads/deployed/${{ github.ref_name }} "
|
git commit -a -m "${{ github.ref_name }} -> refs/heads/deployed/${{ github.ref_name }} "
|
||||||
git push -f origin HEAD:refs/heads/deployed/${{ github.ref_name }}
|
git push origin HEAD:refs/heads/deployed/${{ github.ref_name }}
|
|
@ -1,28 +0,0 @@
|
||||||
name: tea
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
secrets:
|
|
||||||
token:
|
|
||||||
required: true
|
|
||||||
jobs:
|
|
||||||
tea:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: get tea
|
|
||||||
run: |
|
|
||||||
echo tea please!
|
|
||||||
#curl https://dl.gitea.com/tea/0.9.2/tea-0.9.2-linux-386 --output ../tea
|
|
||||||
#chmod +x ../tea
|
|
||||||
#../tea login add -n=this --url=${{ github.server_url}} -t=${{ secrets.token }}
|
|
||||||
#echo thank you!
|
|
||||||
jobs:
|
|
||||||
deploy:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: http://sigyl.com:3000/actions/checkout@v3.5.4
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.BOT_TOKEN }}
|
|
||||||
fetch-depth: '10'
|
|
||||||
- name: ls
|
|
||||||
run: ls
|
|
201
README.md
201
README.md
|
@ -1,100 +1,101 @@
|
||||||
# batch-example
|
# batch-example
|
||||||
|
|
||||||
This repository will store and allow versioning and approval of a batch configuration.
|
This repository will store and allow versioning and approval of a batch configuration.
|
||||||
|
|
||||||
This repository **only** contains exported configuration. It does not contain any binary files (eg equipment-model.cfg nor system state or log files). These are excluded using the **.gitignore** file.
|
This repository **only** contains exported configuration. It does not contain any binary files (eg equipment-model.cfg nor system state or log files). These are excluded using the **.gitignore** file.
|
||||||
|
|
||||||
## change process
|
## change process
|
||||||
|
|
||||||
tea is here (i had to change docker file to just be based on node:latest)
|
tea is here (i had to change docker file to just be based on node:latest)
|
||||||
|
|
||||||
https://gitea.com/gitea/tea/src/branch/main/docs/CLI.md
|
https://gitea.com/gitea/tea/src/branch/main/docs/CLI.md
|
||||||
|
|
||||||
|
|
||||||
On ?tag ? push to master
|
On ?tag ? push to master
|
||||||
clone master
|
clone master
|
||||||
branch deployed
|
branch deployed
|
||||||
yml -> xml
|
yml -> xml
|
||||||
push deployed
|
push deployed
|
||||||
|
|
||||||
|
|
||||||
pull to production PC and import
|
|
||||||
|
pull to production PC and import.
|
||||||
pull to development, import, modify, export
|
|
||||||
push from development to format branch
|
pull to development, import, modify, export
|
||||||
|
push from development to format branch
|
||||||
on format-branch pull, xml -> yml, push to product-development and PR
|
|
||||||
|
on format-branch pull, xml -> yml, push to product-development and PR
|
||||||
### FTBatch development pc on development branch
|
|
||||||
|
### FTBatch development pc on development branch
|
||||||
```sh
|
|
||||||
?git branch -D format-branch
|
```sh
|
||||||
git checkout format-branch
|
?git branch -D format-branch
|
||||||
git merge deployed
|
git checkout format-branch
|
||||||
|
git merge deployed
|
||||||
```
|
|
||||||
|
```
|
||||||
make changes and export files
|
|
||||||
|
make changes and export files
|
||||||
commit and push back to server
|
|
||||||
|
commit and push back to server
|
||||||
```sh
|
|
||||||
git add -A
|
```sh
|
||||||
git commit
|
git add -A
|
||||||
git push origin format-branch
|
git commit
|
||||||
```
|
git push origin format-branch
|
||||||
|
```
|
||||||
### format-bot pc
|
|
||||||
|
### format-bot pc
|
||||||
```sh
|
|
||||||
git branch -D format-branch
|
```sh
|
||||||
git fetch origin
|
git branch -D format-branch
|
||||||
git checkout -b format-branch
|
git fetch origin
|
||||||
git checkout master
|
git checkout -b format-branch
|
||||||
git pull
|
git checkout master
|
||||||
git branch -D product-development
|
git pull
|
||||||
git checkout -b product-development
|
git branch -D product-development
|
||||||
git merge --squash --no-commit --no-ff --strategyoption=theirs format-branch
|
git checkout -b product-development
|
||||||
|
git merge --squash --no-commit --no-ff --strategyoption=theirs format-branch
|
||||||
```
|
|
||||||
|
```
|
||||||
run the formatter
|
|
||||||
|
run the formatter
|
||||||
```sh
|
|
||||||
git add -A
|
```sh
|
||||||
git commit
|
git add -A
|
||||||
git push origin product-development
|
git commit
|
||||||
git push origin --delete format-branch
|
git push origin product-development
|
||||||
|
git push origin --delete format-branch
|
||||||
```
|
|
||||||
|
```
|
||||||
create a pull request
|
|
||||||
|
create a pull request
|
||||||
```sh
|
|
||||||
git fetch --tags
|
```sh
|
||||||
gotea pr c --base=master --head=product-development --repo another-user/batch-example --title="WIP: this is a PR! it rocks!"
|
git fetch --tags
|
||||||
|
gotea pr c --base=master --head=product-development --repo another-user/batch-example --title="WIP: this is a PR! it rocks!"
|
||||||
```
|
|
||||||
|
```
|
||||||
closing a pull request (not used)
|
|
||||||
```sh
|
closing a pull request (not used)
|
||||||
gotea pr close --repo another-user/batch-example 11
|
```sh
|
||||||
```
|
gotea pr close --repo another-user/batch-example 11
|
||||||
|
```
|
||||||
build
|
|
||||||
|
build
|
||||||
```sh
|
|
||||||
|
```sh
|
||||||
git checkout master
|
|
||||||
git pull
|
git checkout master
|
||||||
git checkout deployed
|
git pull
|
||||||
git merge master
|
git checkout deployed
|
||||||
```
|
git merge master
|
||||||
|
```
|
||||||
make xml files
|
|
||||||
|
make xml files
|
||||||
```sh
|
|
||||||
git add -A
|
```sh
|
||||||
git commit
|
git add -A
|
||||||
git push origin deployed
|
git commit
|
||||||
```
|
git push origin deployed
|
||||||
|
```
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
160
try.js
160
try.js
|
@ -1,160 +0,0 @@
|
||||||
/**
|
|
||||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
||||||
*
|
|
||||||
* This source code is licensed under the MIT license found in the
|
|
||||||
* LICENSE file in the root directory of this source tree.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import * as React from "react";
|
|
||||||
import ReactVersion from "shared/ReactVersion";
|
|
||||||
import { LegacyRoot } from "react-reconciler/src/ReactRootTags";
|
|
||||||
import {
|
|
||||||
createContainer,
|
|
||||||
updateContainer,
|
|
||||||
injectIntoDevTools,
|
|
||||||
} from "react-reconciler/src/ReactFiberReconciler";
|
|
||||||
import Transform from "art/core/transform";
|
|
||||||
import Mode from "art/modes/current";
|
|
||||||
import FastNoSideEffects from "art/modes/fast-noSideEffects";
|
|
||||||
|
|
||||||
import { TYPES, childrenAsString } from "./ReactARTInternals";
|
|
||||||
|
|
||||||
Mode.setCurrent(
|
|
||||||
// Change to 'art/modes/dom' for easier debugging via SVG
|
|
||||||
FastNoSideEffects,
|
|
||||||
);
|
|
||||||
|
|
||||||
/** Declarative fill-type objects; API design not finalized */
|
|
||||||
|
|
||||||
const slice = Array.prototype.slice;
|
|
||||||
|
|
||||||
class LinearGradient {
|
|
||||||
constructor(stops, x1, y1, x2, y2) {
|
|
||||||
this._args = slice.call(arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
applyFill(node) {
|
|
||||||
node.fillLinear.apply(node, this._args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class RadialGradient {
|
|
||||||
constructor(stops, fx, fy, rx, ry, cx, cy) {
|
|
||||||
this._args = slice.call(arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
applyFill(node) {
|
|
||||||
node.fillRadial.apply(node, this._args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Pattern {
|
|
||||||
constructor(url, width, height, left, top) {
|
|
||||||
this._args = slice.call(arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
applyFill(node) {
|
|
||||||
node.fillImage.apply(node, this._args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** React Components */
|
|
||||||
|
|
||||||
class Surface extends React.Component {
|
|
||||||
componentDidMount() {
|
|
||||||
const { height, width } = this.props;
|
|
||||||
|
|
||||||
this._surface = Mode.Surface(+width, +height, this._tagRef);
|
|
||||||
|
|
||||||
this._mountNode = createContainer(
|
|
||||||
this._surface,
|
|
||||||
LegacyRoot,
|
|
||||||
null,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
"",
|
|
||||||
);
|
|
||||||
updateContainer(this.props.children, this._mountNode, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
componentDidUpdate(prevProps, prevState) {
|
|
||||||
const props = this.props;
|
|
||||||
|
|
||||||
if (props.height !== prevProps.height || props.width !== prevProps.width) {
|
|
||||||
this._surface.resize(+props.width, +props.height);
|
|
||||||
}
|
|
||||||
|
|
||||||
updateContainer(this.props.children, this._mountNode, this);
|
|
||||||
|
|
||||||
if (this._surface.render) {
|
|
||||||
this._surface.render();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
componentWillUnmount() {
|
|
||||||
updateContainer(null, this._mountNode, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
render() {
|
|
||||||
// This is going to be a placeholder because we don't know what it will
|
|
||||||
// actually resolve to because ART may render canvas, vml or svg tags here.
|
|
||||||
// We only allow a subset of properties since others might conflict with
|
|
||||||
// ART's properties.
|
|
||||||
const props = this.props;
|
|
||||||
|
|
||||||
// TODO: ART's Canvas Mode overrides surface title and cursor
|
|
||||||
const Tag = Mode.Surface.tagName;
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Tag
|
|
||||||
ref={(ref) => (this._tagRef = ref)}
|
|
||||||
accessKey={props.accessKey}
|
|
||||||
className={props.className}
|
|
||||||
draggable={props.draggable}
|
|
||||||
role={props.role}
|
|
||||||
style={props.style}
|
|
||||||
tabIndex={props.tabIndex}
|
|
||||||
title={props.title}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Text extends React.Component {
|
|
||||||
constructor(props) {
|
|
||||||
super(props);
|
|
||||||
// We allow reading these props. Ideally we could expose the Text node as
|
|
||||||
// ref directly.
|
|
||||||
["height", "width", "x", "y"].forEach((key) => {
|
|
||||||
Object.defineProperty(this, key, {
|
|
||||||
get: function () {
|
|
||||||
return this._text ? this._text[key] : undefined;
|
|
||||||
},
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
render() {
|
|
||||||
// This means you can't have children that render into strings...
|
|
||||||
const T = TYPES.TEXT;
|
|
||||||
return (
|
|
||||||
<T {...this.props} ref={(t) => (this._text = t)}>
|
|
||||||
{childrenAsString(this.props.children)}
|
|
||||||
</T>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
injectIntoDevTools({
|
|
||||||
findFiberByHostInstance: () => null,
|
|
||||||
bundleType: __DEV__ ? 1 : 0,
|
|
||||||
version: ReactVersion,
|
|
||||||
rendererPackageName: "react-art",
|
|
||||||
});
|
|
||||||
|
|
||||||
/** API */
|
|
||||||
|
|
||||||
export const ClippingRectangle = TYPES.CLIPPING_RECTANGLE;
|
|
||||||
export const Group = TYPES.GROUP;
|
|
||||||
export const Shape = TYPES.SHAPE;
|
|
||||||
export const Path = Mode.Path;
|
|
||||||
export { LinearGradient, Pattern, RadialGradient, Surface, Text, Transform };
|
|
Loading…
Reference in New Issue