Merge branch 'feature/elsa-2.0' into feature/designer-tree-dagre-d3

This commit is contained in:
Sipke Schoorstra 2021-04-27 14:05:24 +02:00
commit 1d9b41d209
40 changed files with 478895 additions and 71 deletions

View file

@ -22,15 +22,15 @@ jobs:
useRollingCache: true
working-directory: |
src/designer/elsa-workflows-studio
src/designer/bindings/blazor/Elsa.Designer.Bindings.Blazor
src/designer/bindings/aspnet/Elsa.Designer.Components.Web
- name: Build NPM packages for elsa-workflows-studio
run: npm run build
working-directory: src/designer/elsa-workflows-studio
- name: Build NPM packages for Elsa.Designer.Bindings.Blazor
- name: Build NPM packages for Elsa.Designer.Components.Web
run: npm run build
working-directory: src/designer/bindings/blazor/Elsa.Designer.Bindings.Blazor
working-directory: src/designer/bindings/aspnet/Elsa.Designer.Components.Web
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
@ -39,7 +39,7 @@ jobs:
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1
uses: docker/setup-buildx-action@v1
- name: Cache Docker layers
uses: actions/cache@v2

View file

@ -7,7 +7,7 @@ WORKDIR /app/designer/elsa-workflows-studio
RUN npm install --force
RUN npm run build
WORKDIR /app/designer/bindings/blazor/Elsa.Designer.Bindings.Blazor
WORKDIR /app/designer/bindings/aspnet/Elsa.Designer.Components.Web
RUN npm install --force
RUN npm run build
@ -24,7 +24,7 @@ COPY src/. ./src
COPY *.props ./
COPY ./Nuget.Config ./
COPY --from=client-build /app/designer/elsa-workflows-studio ./src/designer/elsa-workflows-studio
COPY --from=client-build /app/designer/bindings/blazor/Elsa.Designer.Bindings.Blazor ./src/designer/bindings/blazor/Elsa.Designer.Bindings.Blazor
COPY --from=client-build /app/designer/bindings/aspnet/Elsa.Designer.Components.Web ./src/designer/bindings/aspnet/Elsa.Designer.Components.Web
# build and publish (UseAppHost=false created platform independent binaries)

View file

@ -16,7 +16,7 @@ namespace Elsa.Expressions
ActivityExecutionContext context,
CancellationToken cancellationToken)
{
if (returnType == typeof(string))
if (returnType == typeof(string) || returnType == typeof(object))
return Task.FromResult<object?>(expression);
if (string.IsNullOrWhiteSpace(expression))

View file

@ -20,4 +20,566 @@
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="5.0.5" />
</ItemGroup>
<ItemGroup>
<_ContentIncludedByDefault Remove="wwwroot\1117.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\1117.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\1151.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\1151.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\137.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\137.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\1432.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\1432.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\1537.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\1537.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\160.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\160.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\1604.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\1604.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\1606.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\1606.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\162.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\162.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\1750.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\1750.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\1761.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\1761.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\185.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\185.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2034.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2034.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2091.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2091.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2208.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2208.elsa-workflows.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\2208.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2300.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2300.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2315.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2315.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2364.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2364.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2396.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2396.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2414.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2414.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2540.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2540.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2545.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2545.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\260.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\260.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2661.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2661.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2711.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2711.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2754.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2754.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2776.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2776.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2784.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2784.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2804.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2804.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2898.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2898.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\294.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\294.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2946.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2946.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\2998.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\2998.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3013.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3013.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3037.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3037.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3048.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3048.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3077.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3077.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3078.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3078.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3115.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3115.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3119.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3119.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\316.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\316.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3192.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3192.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3377.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3377.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3419.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3419.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3526.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3526.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\356.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\356.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3560.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3560.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3563.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3563.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3595.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3595.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\364.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\364.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3654.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3654.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3769.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3769.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3878.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3878.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3909.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3909.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\3911.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\3911.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\4019.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\4019.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\4057.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\4057.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\41.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\41.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\4116.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\4116.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\414.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\414.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\4153.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\4153.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\4392.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\4392.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\4424.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\4424.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\4486.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\4486.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\4530.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\4530.elsa-workflows.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\4530.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\4585.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\4585.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\4595.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\4595.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\4829.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\4829.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\4981.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\4981.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\512.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\512.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\5124.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\5124.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\5185.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\5185.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\5200.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\5200.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\5313.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\5313.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\5375.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\5375.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\5490.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\5490.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\5515.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\5515.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\5538.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\5538.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\5578.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\5578.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\5636.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\5636.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\5662.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\5662.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\575.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\575.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\5765.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\5765.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\5785.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\5785.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\5836.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\5836.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\5888.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\5888.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\5911.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\5911.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\5961.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\5961.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\599.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\599.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6003.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6003.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6118.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6118.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6157.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6157.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6208.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6208.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6243.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6243.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6274.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6274.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6301.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6301.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6333.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6333.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\64.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\64.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6445.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6445.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6447.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6447.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6568.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6568.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6625.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6625.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\663.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\663.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6687.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6687.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6719.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6719.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6748.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6748.elsa-workflows.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\6748.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6763.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6763.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6810.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6810.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6907.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6907.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6925.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6925.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\6950.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\6950.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7013.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7013.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7072.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7072.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7073.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7073.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7093.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7093.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7199.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7199.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7204.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7204.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7208.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7208.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7220.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7220.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7232.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7232.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\725.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\725.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7289.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7289.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7295.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7295.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7366.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7366.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7512.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7512.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7541.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7541.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7607.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7607.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7625.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7625.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7644.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7644.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7697.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7697.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7739.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7739.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7776.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7776.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7791.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7791.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7792.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7792.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7851.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7851.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7905.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7905.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\7909.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\7909.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\797.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\797.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\8022.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\8022.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\8035.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\8035.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\8079.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\8079.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\8207.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\8207.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\8274.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\8274.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\8321.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\8321.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\8397.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\8397.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\8442.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\8442.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\847.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\847.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\8503.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\8503.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\8763.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\8763.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\8773.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\8773.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\8841.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\8841.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\8898.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\8898.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\8946.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\8946.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\8958.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\8958.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\8978.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\8978.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9033.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9033.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9051.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9051.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9062.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9062.elsa-workflows.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\9062.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9111.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9111.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9156.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9156.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9157.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9157.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9158.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9158.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9175.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9175.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9206.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9206.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9313.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9313.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9319.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9319.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9339.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9339.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9361.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9361.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9405.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9405.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9410.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9410.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9426.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9426.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9440.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9440.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9519.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9519.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9544.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9544.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9814.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9814.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9866.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9866.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9874.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9874.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\988.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\988.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\9971.elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\9971.elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\elsa-workflows.js" />
<_ContentIncludedByDefault Remove="wwwroot\elsa-workflows.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min-maps\vs\base\worker\workerMain.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min-maps\vs\editor\editor.main.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min-maps\vs\editor\editor.main.nls.de.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min-maps\vs\editor\editor.main.nls.es.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min-maps\vs\editor\editor.main.nls.fr.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min-maps\vs\editor\editor.main.nls.it.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min-maps\vs\editor\editor.main.nls.ja.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min-maps\vs\editor\editor.main.nls.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min-maps\vs\editor\editor.main.nls.ko.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min-maps\vs\editor\editor.main.nls.ru.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min-maps\vs\editor\editor.main.nls.zh-cn.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min-maps\vs\editor\editor.main.nls.zh-tw.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min-maps\vs\loader.js.map" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\base\browser\ui\codicons\codicon\codicon.ttf" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\base\worker\workerMain.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\base\worker\workerMain.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\abap\abap.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\abap\abap.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\apex\apex.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\apex\apex.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\azcli\azcli.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\azcli\azcli.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\bat\bat.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\bat\bat.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\cameligo\cameligo.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\cameligo\cameligo.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\clojure\clojure.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\clojure\clojure.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\coffee\coffee.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\coffee\coffee.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\cpp\cpp.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\cpp\cpp.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\csharp\csharp.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\csharp\csharp.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\csp\csp.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\csp\csp.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\css\css.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\css\css.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\dart\dart.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\dart\dart.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\dockerfile\dockerfile.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\dockerfile\dockerfile.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\ecl\ecl.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\ecl\ecl.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\fsharp\fsharp.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\fsharp\fsharp.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\go\go.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\go\go.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\graphql\graphql.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\graphql\graphql.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\handlebars\handlebars.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\handlebars\handlebars.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\hcl\hcl.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\hcl\hcl.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\html\html.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\html\html.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\ini\ini.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\ini\ini.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\javascript\javascript.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\javascript\javascript.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\java\java.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\java\java.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\julia\julia.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\julia\julia.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\kotlin\kotlin.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\kotlin\kotlin.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\less\less.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\less\less.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\lexon\lexon.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\lexon\lexon.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\lua\lua.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\lua\lua.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\m3\m3.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\m3\m3.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\markdown\markdown.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\markdown\markdown.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\mips\mips.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\mips\mips.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\msdax\msdax.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\msdax\msdax.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\mysql\mysql.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\mysql\mysql.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\objective-c\objective-c.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\objective-c\objective-c.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\pascaligo\pascaligo.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\pascaligo\pascaligo.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\pascal\pascal.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\pascal\pascal.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\perl\perl.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\perl\perl.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\pgsql\pgsql.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\pgsql\pgsql.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\php\php.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\php\php.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\postiats\postiats.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\postiats\postiats.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\powerquery\powerquery.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\powerquery\powerquery.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\powershell\powershell.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\powershell\powershell.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\pug\pug.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\pug\pug.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\python\python.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\python\python.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\razor\razor.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\razor\razor.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\redis\redis.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\redis\redis.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\redshift\redshift.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\redshift\redshift.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\restructuredtext\restructuredtext.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\restructuredtext\restructuredtext.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\ruby\ruby.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\ruby\ruby.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\rust\rust.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\rust\rust.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\r\r.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\r\r.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\sb\sb.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\sb\sb.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\scala\scala.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\scala\scala.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\scheme\scheme.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\scheme\scheme.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\scss\scss.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\scss\scss.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\shell\shell.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\shell\shell.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\solidity\solidity.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\solidity\solidity.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\sophia\sophia.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\sophia\sophia.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\sql\sql.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\sql\sql.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\st\st.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\st\st.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\swift\swift.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\swift\swift.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\systemverilog\systemverilog.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\systemverilog\systemverilog.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\tcl\tcl.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\tcl\tcl.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\twig\twig.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\twig\twig.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\typescript\typescript.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\typescript\typescript.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\vb\vb.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\vb\vb.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\xml\xml.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\xml\xml.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\yaml\yaml.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\basic-languages\yaml\yaml.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.css" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.de.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.de.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.es.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.es.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.fr.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.fr.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.it.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.it.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.ja.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.ja.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.ko.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.ko.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.ru.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.ru.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.zh-cn.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.zh-cn.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.zh-tw.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\editor\editor.main.nls.zh-tw.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\language\css\cssMode.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\language\css\cssMode.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\language\css\cssWorker.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\language\css\cssWorker.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\language\html\htmlMode.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\language\html\htmlMode.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\language\html\htmlWorker.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\language\html\htmlWorker.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\language\json\jsonMode.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\language\json\jsonMode.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\language\json\jsonWorker.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\language\json\jsonWorker.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\language\typescript\tsMode.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\language\typescript\tsMode.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\language\typescript\tsWorker.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\language\typescript\tsWorker.js.LICENSE.txt" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\loader.js" />
<_ContentIncludedByDefault Remove="wwwroot\monaco-editor\min\vs\loader.js.LICENSE.txt" />
</ItemGroup>
</Project>

View file

@ -1 +0,0 @@
import "../../../../elsa-workflows-studio/dist/elsa-workflows-studio/elsa-workflows-studio.esm";

View file

@ -33,6 +33,7 @@ module.exports = env => {
plugins: [
new CopyPlugin({
patterns: [
{ from: "../../../elsa-workflows-studio/dist/elsa-workflows-studio", to: "elsa-workflows-studio" },
{ from: "node_modules/monaco-editor/min", to: "monaco-editor/min" },
{ from: "node_modules/monaco-editor/min-maps", to: "monaco-editor/min-maps" },
],

View file

@ -16,7 +16,7 @@
],
"scripts": {
"push:preview": "npm publish --access-public --tag preview",
"build": "npm run build:tailwind:prod & stencil build --dev",
"build": "npm run build:tailwind:prod & stencil build",
"build:dev": "stencil build --dev --tailwind:dev",
"start:dev": "node --max_old_space_size=8192 --optimize_for_size --stack_size=8192 ./node_modules/.bin/stencil build --dev --tailwind:dev --watch --serve",
"start": "stencil build --watch --serve",

File diff suppressed because it is too large Load diff

View file

@ -6,7 +6,7 @@
*/
import { HTMLStencilElement, JSXBase } from "@stencil/core/internal";
import { ActivityDefinitionProperty, ActivityDescriptor, ActivityDesignDisplayContext, ActivityModel, ActivityPropertyDescriptor, VersionOptions, WorkflowBlueprint, WorkflowDefinition, WorkflowExecutionLogRecord, WorkflowModel } from "./models";
import { MatchResults, RouterHistory } from "@stencil/router";
import { LocationSegments, MatchResults, RouterHistory } from "@stencil/router";
import { MenuItem } from "./components/controls/elsa-context-menu/models";
import { DropdownButtonItem, DropdownButtonOrigin } from "./components/controls/elsa-dropdown-button/models";
import { MonacoValueChangedArgs } from "./components/controls/elsa-monaco/elsa-monaco";
@ -102,6 +102,7 @@ export namespace Components {
}
interface ElsaPager {
"history"?: RouterHistory;
"location": LocationSegments;
"page": number;
"pageSize": number;
"totalCount": number;
@ -129,10 +130,12 @@ export namespace Components {
"propertyModel": ActivityDefinitionProperty;
}
interface ElsaStudioRoot {
"monacoLibPath": string;
"serverUrl": string;
}
interface ElsaStudioWorkflowDefinitionsEdit {
"match": MatchResults;
"monacoLibPath": string;
"serverUrl": string;
}
interface ElsaStudioWorkflowDefinitionsList {
@ -569,6 +572,7 @@ declare namespace LocalJSX {
}
interface ElsaPager {
"history"?: RouterHistory;
"location"?: LocationSegments;
"page"?: number;
"pageSize"?: number;
"totalCount"?: number;
@ -597,10 +601,12 @@ declare namespace LocalJSX {
"propertyModel"?: ActivityDefinitionProperty;
}
interface ElsaStudioRoot {
"monacoLibPath"?: string;
"serverUrl"?: string;
}
interface ElsaStudioWorkflowDefinitionsEdit {
"match"?: MatchResults;
"monacoLibPath"?: string;
"serverUrl"?: string;
}
interface ElsaStudioWorkflowDefinitionsList {

View file

@ -17,16 +17,16 @@
### Used by
- [elsa-studio-workflow-registry](../../dashboard/pages/elsa-studio-workflow-registry)
- [elsa-workflow-definitions-list-screen](../../screens/workflow-definition-list/elsa-workflow-definitions-screen)
- [elsa-workflow-instances-list-screen](../../screens/workflow-instances-list/elsa-workflow-instances-list-screen)
- [elsa-workflow-registry-list-screen](../../screens/workflow-registry-list/elsa-workflow-registry-list-screen)
### Graph
```mermaid
graph TD;
elsa-studio-workflow-registry --> elsa-context-menu
elsa-workflow-definitions-list-screen --> elsa-context-menu
elsa-workflow-instances-list-screen --> elsa-context-menu
elsa-workflow-registry-list-screen --> elsa-context-menu
style elsa-context-menu fill:#f9f,stroke:#333,stroke-width:4px
```

View file

@ -9,7 +9,7 @@ export function initializeMonacoWorker(libPath?: string) {
return;
if (!libPath)
libPath = 'build/assets/js';
libPath = 'assets/js';
const origin = document.location.origin;
const baseUrl = `${origin}/${libPath}/monaco-editor/min`;

View file

@ -1,5 +1,6 @@
import {Component, Event, EventEmitter, h, Prop} from '@stencil/core';
import {RouterHistory} from "@stencil/router";
import {LocationSegments, RouterHistory, injectHistory } from "@stencil/router";
import {parseQuery, queryToString} from "../../../utils/utils";
@Component({
tag: 'elsa-pager',
@ -10,12 +11,13 @@ export class ElsaPager {
@Prop() page: number;
@Prop() pageSize: number;
@Prop() totalCount: number;
@Prop() location: LocationSegments;
@Prop() history?: RouterHistory;
basePath: string;
componentWillLoad() {
this.basePath = !!this.history ? this.history.location.pathname : document.location.pathname;
this.basePath = !!this.location ? this.location.pathname : document.location.pathname;
}
navigate(path: string) {
@ -48,12 +50,20 @@ export class ElsaPager {
const fromPage = Math.max(0, page - maxPageButtons / 2);
const toPage = Math.min(pageCount, fromPage + maxPageButtons);
const self = this;
const currentQuery = parseQuery(this.history.location.search);
currentQuery['pageSize'] = pageSize;
const getNavUrl = (page: number) => {
const query = {...currentQuery, 'page': page};
return `${basePath}?${queryToString(query)}`;
};
const renderPreviousButton = function () {
if (page <= 0)
return;
return <a href={`${basePath}?page=${(page - 1)}&pageSize=${pageSize}`}
return <a href={`${getNavUrl(page - 1)}`}
onClick={e => self.onNavigateClick(e)}
class="relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm leading-5 font-medium rounded-md text-gray-700 bg-white hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
Previous
@ -64,7 +74,7 @@ export class ElsaPager {
if (page >= pageCount)
return;
return <a href={`/${basePath}?page=${page + 1}&pageSize=${pageSize}`}
return <a href={`/${getNavUrl(page + 1)}`}
onClick={e => self.onNavigateClick(e)}
class="ml-3 relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm leading-5 font-medium rounded-md text-gray-700 bg-white hover:text-gray-500 focus:outline-none focus:shadow-outline-blue focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150">
Next
@ -76,7 +86,7 @@ export class ElsaPager {
return;
return (
<a href={`${basePath}?page=${(page - 1)}&pageSize=${pageSize}`}
<a href={`${getNavUrl(page - 1)}`}
onClick={e => self.onNavigateClick(e)}
class="relative inline-flex items-center px-2 py-2 rounded-l-md border border-gray-300 bg-white text-sm leading-5 font-medium text-gray-500 hover:text-gray-400 focus:z-10 focus:outline-none focus:border-blue-300 focus:shadow-outline-blue active:bg-gray-100 active:text-gray-500 transition ease-in-out duration-150"
aria-label="Previous">
@ -91,7 +101,7 @@ export class ElsaPager {
return;
return (
<a href={`${basePath}?page=${page + 1}&pageSize=${pageSize}`}
<a href={`${getNavUrl(page + 1)}`}
onClick={e => self.onNavigateClick(e)}
class="-ml-px relative inline-flex items-center px-2 py-2 rounded-r-md border border-gray-300 bg-white text-sm leading-5 font-medium text-gray-500 hover:text-gray-400 focus:z-10 focus:outline-none focus:border-blue-300 focus:shadow-outline-blue active:bg-gray-100 active:text-gray-500 transition ease-in-out duration-150"
aria-label="Next">
@ -117,7 +127,7 @@ export class ElsaPager {
{i + 1}
</span>);
} else {
buttons.push(<a href={`${basePath}?page=${i}&pageSize=${pageSize}`}
buttons.push(<a href={`${getNavUrl(i)}`}
onClick={e => self.onNavigateClick(e)}
class={`-ml-px relative inline-flex items-center px-4 py-2 border border-gray-300 bg-white text-sm leading-5 font-medium text-gray-700 hover:text-gray-500 focus:z-10 focus:outline-none active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150 ${leftRoundedClass}`}>
{i + 1}
@ -136,7 +146,7 @@ export class ElsaPager {
</div>
<div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between">
<div>
<p class="text-sm leading-5 text-gray-700 space-x-0.5">
<p class="text-sm leading-5 text-gray-700 space-x-0-5">
<span>Showing</span>
<span class="font-medium">{from}</span>
<span>to</span>
@ -158,3 +168,5 @@ export class ElsaPager {
);
}
}
injectHistory(ElsaPager);

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View file

@ -1,16 +1,20 @@
import {Component, h, Prop} from '@stencil/core';
import {Component, h, Prop, getAssetPath} from '@stencil/core';
@Component({
tag: 'elsa-studio-root',
shadow: false,
assetsDirs: ['assets']
})
export class ElsaStudioRoot {
@Prop({attribute: 'server-url', reflect: true}) serverUrl: string;
@Prop({attribute: 'monaco-lib-path', reflect: true}) monacoLibPath: string;
render() {
const serverUrl = this.serverUrl;
const monacoLibPath = this.monacoLibPath;
const logoPath = getAssetPath('./assets/logo.png');
// TODO: Tunneling doesn't appear to be working in combination with the router.
// const tunnelState: DashboardState = {
@ -24,7 +28,7 @@ export class ElsaStudioRoot {
<div class="flex items-center justify-between h-16">
<div class="flex items-center">
<div class="flex-shrink-0">
<img class="h-8 w-8" src="/build/assets/images/logo.png" alt="Workflow"/>
<img class="h-8 w-8" src={logoPath} alt="Workflow"/>
</div>
<div class="hidden md:block">
<div class="ml-10 flex items-baseline space-x-4">
@ -49,7 +53,7 @@ export class ElsaStudioRoot {
<stencil-route url="/" routeRender={props => <stencil-route-redirect url="/workflow-registry"/>} exact={true}/>
<stencil-route url="/workflow-registry" component="elsa-studio-workflow-registry" componentProps={{'serverUrl': serverUrl}} exact={true}/>
<stencil-route url="/workflow-definitions" component="elsa-studio-workflow-definitions-list" componentProps={{'serverUrl': serverUrl}} exact={true}/>
<stencil-route url="/workflow-definitions/:id" component="elsa-studio-workflow-definitions-edit" componentProps={{'serverUrl': serverUrl}}/>
<stencil-route url="/workflow-definitions/:id" component="elsa-studio-workflow-definitions-edit" componentProps={{'serverUrl': serverUrl, 'monacoLibPath': monacoLibPath}}/>
<stencil-route url="/workflow-instances" component="elsa-studio-workflow-instances-list" componentProps={{'serverUrl': serverUrl}} exact={true}/>
<stencil-route url="/workflow-instances/:id" component="elsa-studio-workflow-instances-view" componentProps={{'serverUrl': serverUrl}}/>
</stencil-route-switch>

View file

@ -7,9 +7,10 @@
## Properties
| Property | Attribute | Description | Type | Default |
| ----------- | ------------ | ----------- | -------- | ----------- |
| `serverUrl` | `server-url` | | `string` | `undefined` |
| Property | Attribute | Description | Type | Default |
| --------------- | ----------------- | ----------- | -------- | ----------- |
| `monacoLibPath` | `monaco-lib-path` | | `string` | `undefined` |
| `serverUrl` | `server-url` | | `string` | `undefined` |
## Dependencies

View file

@ -8,6 +8,7 @@ import {MatchResults} from '@stencil/router';
export class ElsaStudioWorkflowDefinitionsEdit {
@Prop() match: MatchResults;
@Prop() serverUrl: string;
@Prop() monacoLibPath: string;
id?: string;
@ -24,7 +25,7 @@ export class ElsaStudioWorkflowDefinitionsEdit {
const id = this.id;
return <div>
<elsa-workflow-definition-editor-screen server-url={this.serverUrl} workflow-definition-id={id} monaco-lib-path="build/assets/js"/>
<elsa-workflow-definition-editor-screen server-url={this.serverUrl} workflow-definition-id={id} monaco-lib-path={this.monacoLibPath}/>
</div>;
}
}

View file

@ -7,10 +7,11 @@
## Properties
| Property | Attribute | Description | Type | Default |
| ----------- | ------------ | ----------- | -------------- | ----------- |
| `match` | -- | | `MatchResults` | `undefined` |
| `serverUrl` | `server-url` | | `string` | `undefined` |
| Property | Attribute | Description | Type | Default |
| --------------- | ----------------- | ----------- | -------------- | ----------- |
| `match` | -- | | `MatchResults` | `undefined` |
| `monacoLibPath` | `monaco-lib-path` | | `string` | `undefined` |
| `serverUrl` | `server-url` | | `string` | `undefined` |
## Dependencies

View file

@ -23,6 +23,7 @@
```mermaid
graph TD;
elsa-studio-workflow-instances-list --> elsa-workflow-instances-list-screen
elsa-workflow-instances-list-screen --> stencil-route-link
elsa-workflow-instances-list-screen --> elsa-context-menu
elsa-workflow-instances-list-screen --> elsa-pager
elsa-workflow-instances-list-screen --> elsa-confirm-dialog

View file

@ -0,0 +1,34 @@
# elsa-studio-workflow-instances-view
<!-- Auto Generated Below -->
## Properties
| Property | Attribute | Description | Type | Default |
| ----------- | ------------ | ----------- | -------------- | ----------- |
| `match` | -- | | `MatchResults` | `undefined` |
| `serverUrl` | `server-url` | | `string` | `undefined` |
## Dependencies
### Depends on
- [elsa-workflow-instance-viewer-screen](../../../screens/workflow-instance-viewer/elsa-workflow-instance-viewer-screen)
### Graph
```mermaid
graph TD;
elsa-studio-workflow-instances-view --> elsa-workflow-instance-viewer-screen
elsa-workflow-instance-viewer-screen --> elsa-workflow-instance-journal
elsa-workflow-instance-viewer-screen --> elsa-designer-tree
elsa-designer-tree --> elsa-designer-tree-activity
style elsa-studio-workflow-instances-view fill:#f9f,stroke:#333,stroke-width:4px
```
----------------------------------------------
*Built with [StencilJS](https://stenciljs.com/)*

View file

@ -5,18 +5,28 @@
<!-- Auto Generated Below -->
## Properties
| Property | Attribute | Description | Type | Default |
| ----------- | ------------ | ----------- | --------------- | ----------- |
| `history` | -- | | `RouterHistory` | `undefined` |
| `serverUrl` | `server-url` | | `string` | `undefined` |
## Dependencies
### Depends on
- stencil-route-link
- [elsa-context-menu](../../../controls/elsa-context-menu)
- [elsa-workflow-registry-list-screen](../../../screens/workflow-registry-list/elsa-workflow-registry-list-screen)
### Graph
```mermaid
graph TD;
elsa-studio-workflow-registry --> stencil-route-link
elsa-studio-workflow-registry --> elsa-context-menu
elsa-studio-workflow-registry --> elsa-workflow-registry-list-screen
elsa-workflow-registry-list-screen --> stencil-route-link
elsa-workflow-registry-list-screen --> elsa-context-menu
style elsa-studio-workflow-registry fill:#f9f,stroke:#333,stroke-width:4px
```

View file

@ -7,18 +7,21 @@
## Properties
| Property | Attribute | Description | Type | Default |
| ---------------- | --------- | ----------- | ------------------------------ | ----------- |
| `displayContext` | -- | | `ActivityDesignDisplayContext` | `undefined` |
| `icon` | `icon` | | `string` | `undefined` |
| Property | Attribute | Description | Type | Default |
| ---------------- | ---------- | ----------- | ------------------------------ | ----------- |
| `displayContext` | -- | | `ActivityDesignDisplayContext` | `undefined` |
| `icon` | `icon` | | `string` | `undefined` |
| `isSelected` | `selected` | | `boolean` | `undefined` |
## Events
| Event | Description | Type |
| ----------------- | ----------- | ---------------------------- |
| `deselected` | | `CustomEvent<ActivityModel>` |
| `edit-activity` | | `CustomEvent<ActivityModel>` |
| `remove-activity` | | `CustomEvent<ActivityModel>` |
| `selected` | | `CustomEvent<ActivityModel>` |
## Dependencies

View file

@ -7,16 +7,19 @@
## Properties
| Property | Attribute | Description | Type | Default |
| -------- | --------- | ----------- | --------------- | ----------------------------------------------------------------------------------------------------- |
| `model` | -- | | `WorkflowModel` | `{ activities: [], connections: [], persistenceBehavior: WorkflowPersistenceBehavior.WorkflowBurst }` |
| Property | Attribute | Description | Type | Default |
| -------------------- | ---------------------- | ----------- | --------------- | --------------------------------------------------------------------------------------------------- |
| `model` | -- | | `WorkflowModel` | `{activities: [], connections: [], persistenceBehavior: WorkflowPersistenceBehavior.WorkflowBurst}` |
| `selectedActivityId` | `selected-activity-id` | | `string` | `undefined` |
## Events
| Event | Description | Type |
| ------------------ | ----------- | ---------------------------- |
| `workflow-changed` | | `CustomEvent<WorkflowModel>` |
| Event | Description | Type |
| -------------------- | ----------- | ---------------------------- |
| `activityDeselected` | | `CustomEvent<ActivityModel>` |
| `activitySelected` | | `CustomEvent<ActivityModel>` |
| `workflow-changed` | | `CustomEvent<WorkflowModel>` |
## Methods
@ -37,6 +40,7 @@ Type: `Promise<void>`
### Used by
- [elsa-workflow-definition-editor-screen](../../../screens/workflow-definition-editor/elsa-workflow-definition-editor-screen)
- [elsa-workflow-instance-viewer-screen](../../../screens/workflow-instance-viewer/elsa-workflow-instance-viewer-screen)
### Depends on
@ -47,6 +51,7 @@ Type: `Promise<void>`
graph TD;
elsa-designer-tree --> elsa-designer-tree-activity
elsa-workflow-definition-editor-screen --> elsa-designer-tree
elsa-workflow-instance-viewer-screen --> elsa-designer-tree
style elsa-designer-tree fill:#f9f,stroke:#333,stroke-width:4px
```

View file

@ -0,0 +1,52 @@
# elsa-workflow-instance-viewer-screen
<!-- Auto Generated Below -->
## Properties
| Property | Attribute | Description | Type | Default |
| -------------------- | ---------------------- | ----------- | -------- | ----------- |
| `serverUrl` | `server-url` | | `string` | `undefined` |
| `workflowInstanceId` | `workflow-instance-id` | | `string` | `undefined` |
## Methods
### `getServerUrl() => Promise<string>`
#### Returns
Type: `Promise<string>`
## Dependencies
### Used by
- [elsa-studio-workflow-instances-view](../../../dashboard/pages/elsa-studio-workflow-instances-view)
### Depends on
- [elsa-workflow-instance-journal](.)
- [elsa-designer-tree](../../../designers/tree/elsa-designer-tree)
### Graph
```mermaid
graph TD;
elsa-workflow-instance-viewer-screen --> elsa-workflow-instance-journal
elsa-workflow-instance-viewer-screen --> elsa-designer-tree
elsa-designer-tree --> elsa-designer-tree-activity
elsa-studio-workflow-instances-view --> elsa-workflow-instance-viewer-screen
style elsa-workflow-instance-viewer-screen fill:#f9f,stroke:#333,stroke-width:4px
```
----------------------------------------------
*Built with [StencilJS](https://stenciljs.com/)*

View file

@ -9,7 +9,6 @@ import {Map, parseQuery} from '../../../../utils/utils';
@Component({
tag: 'elsa-workflow-instances-list-screen',
styleUrl: 'elsa-workflow-instances-list-screen.css',
shadow: false,
})
export class ElsaWorkflowInstancesListScreen {
@ -48,7 +47,7 @@ export class ElsaWorkflowInstancesListScreen {
async loadWorkflowBlueprints() {
const elsaClient = this.createClient();
const versionOptions: VersionOptions = {isLatestOrPublished: true};
const versionOptions: VersionOptions = {allVersions: true};
const workflowBlueprintPagedList = await elsaClient.workflowRegistryApi.list(null, null, versionOptions);
this.workflowBlueprints = workflowBlueprintPagedList.items;
}
@ -311,7 +310,7 @@ export class ElsaWorkflowInstancesListScreen {
</td>
<td class="hidden md:table-cell px-6 py-3 whitespace-no-wrap text-sm leading-5 text-gray-500 text-right">
<div class="flex items-center space-x-3 lg:pl-2">
<div class={`flex-shrink-0 w-2.5 h-2.5 rounded-full bg-${statusColor}-600`}/>
<div class={`flex-shrink-0 w-2-5 h-2-5 rounded-full bg-${statusColor}-600`}/>
<span>{workflowInstance.workflowStatus}</span>
</div>
</td>

View file

@ -21,6 +21,7 @@
### Depends on
- stencil-route-link
- [elsa-context-menu](../../../controls/elsa-context-menu)
- [elsa-pager](../../../controls/elsa-pager)
- [elsa-confirm-dialog](../../../shared/elsa-confirm-dialog)
@ -29,6 +30,7 @@
### Graph
```mermaid
graph TD;
elsa-workflow-instances-list-screen --> stencil-route-link
elsa-workflow-instances-list-screen --> elsa-context-menu
elsa-workflow-instances-list-screen --> elsa-pager
elsa-workflow-instances-list-screen --> elsa-confirm-dialog

View file

@ -0,0 +1,38 @@
# elsa-workflow-registry-list-screen
<!-- Auto Generated Below -->
## Properties
| Property | Attribute | Description | Type | Default |
| ----------- | ------------ | ----------- | --------------- | ----------- |
| `history` | -- | | `RouterHistory` | `undefined` |
| `serverUrl` | `server-url` | | `string` | `undefined` |
## Dependencies
### Used by
- [elsa-studio-workflow-registry](../../../dashboard/pages/elsa-studio-workflow-registry)
### Depends on
- stencil-route-link
- [elsa-context-menu](../../../controls/elsa-context-menu)
### Graph
```mermaid
graph TD;
elsa-workflow-registry-list-screen --> stencil-route-link
elsa-workflow-registry-list-screen --> elsa-context-menu
elsa-studio-workflow-registry --> elsa-workflow-registry-list-screen
style elsa-workflow-registry-list-screen fill:#f9f,stroke:#333,stroke-width:4px
```
----------------------------------------------
*Built with [StencilJS](https://stenciljs.com/)*

File diff suppressed because it is too large Load diff

View file

@ -18,7 +18,9 @@
<!--<elsa-workflow-editor id="workflowEditor" server-url="https://localhost:11000/" workflow-definition-id="7eed1333c2674370a1e9b300aa94fda2" monaco-lib-path="build/assets/js"></elsa-workflow-editor>-->
<elsa-studio-root server-url="https://localhost:11000/"></elsa-studio-root>
<!--<elsa-studio-root server-url="https://localhost:11000/" monaco-lib-path="build/assets/js"></elsa-studio-root>-->
<!--<elsa-studio-root server-url="https://localhost:6080/" monaco-lib-path="build/assets/js"></elsa-studio-root>-->
<elsa-studio-root server-url="https://skynet-workflow.azurewebsites.net" monaco-lib-path="build/assets/js"></elsa-studio-root>
</body>
</html>

View file

@ -1,4 +1,5 @@
import {ActivityDefinition, ActivityDefinitionProperty, ActivityModel, ConnectionModel, WorkflowModel} from "../models";
import * as collection from 'lodash/collection';
declare global {
interface Array<T> {
@ -159,6 +160,11 @@ export function parseQuery(queryString?: string): any {
return query;
}
export function queryToString(query: any): string {
const q = query || {};
return collection.map(q, (v, k) => `${k}=${v}`).join('&');
}
export function mapSyntaxToLanguage(syntax: string): any {
switch (syntax) {
case 'Json':

View file

@ -4,7 +4,10 @@ import postcssImport from 'postcss-import';
import tailwindcss from 'tailwindcss';
import cssnano from 'cssnano';
// @ts-ignore
const dev: boolean = process.argv && process.argv.indexOf('--dev') > -1;
// @ts-ignore
const tailwindDev: boolean = process.argv && process.argv.indexOf('--tailwind:dev') > -1;
// @ts-ignore
@ -20,6 +23,9 @@ export const config: Config = {
{
type: 'dist',
esmLoaderPath: '../loader',
copy: [
{src: 'assets', dest: 'assets'}
]
},
{
type: 'dist-custom-elements-bundle',
@ -31,9 +37,7 @@ export const config: Config = {
type: 'www',
serviceWorker: null, // disable service workers,
copy: [
{src: 'assets', dest: 'build/assets'},
{src: '../node_modules/monaco-editor/min', dest: 'build/assets/js/monaco-editor/min'},
{src: '../node_modules/monaco-editor/min-maps', dest: 'build/assets/js/monaco-editor/min-maps'}
{src: 'assets', dest: 'build/assets'}
]
},
],

View file

@ -8,7 +8,7 @@ module.exports = {
enabled: !dev,
content: ['./src/**/*.tsx', './src/**/*.html'],
options: {
safelist: ['jtk-connector', 'rose', 'light-blue', 'bg-gray-600', 'bg-pink-600', 'bg-blue-600', 'bg-green-600', 'bg-red-600', 'bg-yellow-600']
safelist: ['jtk-connector', 'rose', 'light-blue', /gray$/, /pink$/, /blue$/, /green$/, /red$/, /yellow$/]
},
},
theme: {

View file

@ -12,3 +12,17 @@ svg.jtk-connector.jtk-hover path {
@apply stroke-2;
@apply text-blue-400;
}
.w-2-5 {
width: 0.625rem;
}
.h-2-5 {
height: 0.625rem;
}
.space-x-0-5 > :not([hidden]) ~ :not([hidden]) {
--tw-space-x-reverse: 0;
margin-right: calc(0.125rem * var(--tw-space-x-reverse));
margin-left: calc(0.125rem * calc(1 - var(--tw-space-x-reverse)));
}

View file

@ -10,9 +10,13 @@
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Elsa Workflows</title>
<script type="module" src="_content/Elsa.Designer.Components.Web/elsa-workflows.js" monaco-lib-path="_content/Elsa.Designer.Components.Web"></script>
<link rel="icon" type="image/png" sizes="32x32" href="/_content/Elsa.Designer.Components.Web/elsa-workflows-studio/assets/images/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/_content/Elsa.Designer.Components.Web/elsa-workflows-studio/assets/images/favicon-16x16.png">
<link rel="stylesheet" href="/_content/Elsa.Designer.Components.Web/elsa-workflows-studio/assets/fonts/inter/inter.css">
<script src="/_content/Elsa.Designer.Components.Web/monaco-editor/min/vs/loader.js"></script>
<script type="module" src="/_content/Elsa.Designer.Components.Web/elsa-workflows-studio/elsa-workflows-studio.esm.js"></script>
</head>
<body>
<elsa-studio-root server-url="@serverUrl"></elsa-studio-root>
<body class="h-screen" style="background-size: 30px 30px; background-image: url(/_content/Elsa.Designer.Components.Web/elsa-workflows-studio/assets/images/tile.png); background-color: #FBFBFB;">
<elsa-studio-root server-url="@serverUrl" monaco-lib-path="_content/Elsa.Designer.Components.Web"></elsa-studio-root>
</body>
</html>

View file

@ -22,6 +22,7 @@
<script src="https://cdn.jsdelivr.net/npm/@@ryangjchandler/spruce@2.0.1/dist/spruce.umd.js"></script>
<script src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.js"></script>
<script src="_content/Elsa.Designer.Components.Web/monaco-editor/min/vs/loader.js"></script>
<script src="/_content/Elsa.Designer.Components.Web/elsa-workflows-studio/elsa-workflows-studio.esm.js" type="module" ></script>
</head>
<body class="antialiased font-sans bg-gray-200">

View file

@ -22,6 +22,7 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="System.Text.Encodings.Web" Version="5.0.1" />
</ItemGroup>
<ItemGroup>

View file

@ -0,0 +1,112 @@
using System;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
using AutoFixture.Xunit2;
using Elsa.Scripting.Liquid.Services;
using Elsa.Services.Models;
using Elsa.Testing.Shared;
using Elsa.Testing.Shared.AutoFixture.Attributes;
using Fluid;
using Moq;
using Xunit;
namespace Elsa.UnitTests.Expressions
{
public class LiquidHandlerTests
{
[Theory(DisplayName = "When the desired return type is a string, the EvaluateAsync method should return the expression result"), AutoMoqData]
public async Task EvaluateAsyncShouldReturnExpressionResultWhenReturnTypeIsString([Frozen] ILiquidTemplateManager liquidTemplateManager,
LiquidHandler sut,
string expression,
string expectedResult,
[StubActivityExecutionContext] ActivityExecutionContext context)
{
Mock.Get(liquidTemplateManager)
.Setup(x => x.RenderAsync(expression, It.IsAny<TemplateContext>(), HtmlEncoder.Default))
.Returns(() => Task.FromResult(expectedResult));
var result = await sut.EvaluateAsync(expression, typeof(string), context, default);
Assert.Equal(expectedResult, result);
}
[Theory(DisplayName = "When the desired return type is an object, the EvaluateAsync method should return the expression result"), AutoMoqData]
public async Task EvaluateAsyncShouldReturnExpressionResultWhenReturnTypeIsObject([Frozen] ILiquidTemplateManager liquidTemplateManager,
LiquidHandler sut,
string expression,
string expectedResult,
[StubActivityExecutionContext] ActivityExecutionContext context)
{
Mock.Get(liquidTemplateManager)
.Setup(x => x.RenderAsync(expression, It.IsAny<TemplateContext>(), HtmlEncoder.Default))
.Returns(() => Task.FromResult(expectedResult));
var result = await sut.EvaluateAsync(expression, typeof(object), context, default);
Assert.Equal(expectedResult, result);
}
[Theory(DisplayName = "When the expression result is null, the EvaluateAsync method should return null"), AutoMoqData]
public async Task EvaluateAsyncShouldReturnNullWhenExpressionIsNull([Frozen] ILiquidTemplateManager liquidTemplateManager,
LiquidHandler sut,
string expression,
[StubActivityExecutionContext] ActivityExecutionContext context,
Type returnType)
{
Mock.Get(liquidTemplateManager)
.Setup(x => x.RenderAsync(expression, It.IsAny<TemplateContext>(), HtmlEncoder.Default))
.Returns(() => Task.FromResult<string>(null));
var result = await sut.EvaluateAsync(expression, returnType, context, default);
Assert.Null(result);
}
[Theory(DisplayName = "When the expression result is empty string, the EvaluateAsync method should return null"), AutoMoqData]
public async Task EvaluateAsyncShouldReturnNullWhenExpressionIsEmpty([Frozen] ILiquidTemplateManager liquidTemplateManager,
LiquidHandler sut,
string expression,
[StubActivityExecutionContext] ActivityExecutionContext context,
Type returnType)
{
Mock.Get(liquidTemplateManager)
.Setup(x => x.RenderAsync(expression, It.IsAny<TemplateContext>(), HtmlEncoder.Default))
.Returns(() => Task.FromResult(String.Empty));
var result = await sut.EvaluateAsync(expression, returnType, context, default);
Assert.Null(result);
}
[Theory(DisplayName = "When the expression result is whitespace-only, the EvaluateAsync method should return null"), AutoMoqData]
public async Task EvaluateAsyncShouldReturnNullWhenExpressionIsWhitespaceOnly([Frozen] ILiquidTemplateManager liquidTemplateManager,
LiquidHandler sut,
string expression,
[StubActivityExecutionContext] ActivityExecutionContext context,
Type returnType)
{
Mock.Get(liquidTemplateManager)
.Setup(x => x.RenderAsync(expression, It.IsAny<TemplateContext>(), HtmlEncoder.Default))
.Returns(() => Task.FromResult(" "));
var result = await sut.EvaluateAsync(expression, returnType, context, default);
Assert.Null(result);
}
[Theory(DisplayName = "When the desired return type is DateTime, the EvaluateAsync method should convert the result to a DateTime"), AutoMoqData]
public async Task EvaluateAsyncShouldConvertToDateTimeWhenThatIsDesiredReturnType([Frozen] ILiquidTemplateManager liquidTemplateManager,
LiquidHandler sut,
string expression,
[StubActivityExecutionContext] ActivityExecutionContext context)
{
Mock.Get(liquidTemplateManager)
.Setup(x => x.RenderAsync(expression, It.IsAny<TemplateContext>(), HtmlEncoder.Default))
.Returns(() => Task.FromResult("2001-03-04T12:45:32Z"));
var result = await sut.EvaluateAsync(expression, typeof(DateTime), context, default);
Assert.Equal(new DateTime(2001, 03, 04, 12, 45, 32, DateTimeKind.Utc), result);
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using System.Globalization;
using System.Threading.Tasks;
using Elsa.Services.Models;
using Elsa.Testing.Shared;
using Elsa.Testing.Shared.AutoFixture.Attributes;
using Xunit;
namespace Elsa.Expressions
{
public class LiteralHandlerTests
{
[Theory(DisplayName = "When the desired return type is a string, the EvaluateAsync method should return the literal expression"), AutoMoqData]
public async Task EvaluateAsyncShouldReturnExpressionLiteralWhenReturnTypeIsString(LiteralHandler sut,
string expression,
[StubActivityExecutionContext] ActivityExecutionContext context)
{
var result = await sut.EvaluateAsync(expression, typeof(string), context, default);
Assert.Equal(expression, result);
}
[Theory(DisplayName = "When the desired return type is an object, the EvaluateAsync method should return the literal expression"), AutoMoqData]
public async Task EvaluateAsyncShouldReturnExpressionLiteralWhenReturnTypeIsObject(LiteralHandler sut,
string expression,
[StubActivityExecutionContext] ActivityExecutionContext context)
{
var result = await sut.EvaluateAsync(expression, typeof(object), context, default);
Assert.Equal(expression, result);
}
[Theory(DisplayName = "When the desired return type is not string or object but the expression is null, the EvaluateAsync method should return null"), AutoMoqData]
public async Task EvaluateAsyncShouldReturnNullWhenExpressionIsNull(LiteralHandler sut,
[StubActivityExecutionContext] ActivityExecutionContext context)
{
var result = await sut.EvaluateAsync(null, typeof(Uri), context, default);
Assert.Null(result);
}
[Theory(DisplayName = "When the desired return type is not string or object but the expression is empty string, the EvaluateAsync method should return null"), AutoMoqData]
public async Task EvaluateAsyncShouldReturnNullWhenExpressionIsEmpty(LiteralHandler sut,
[StubActivityExecutionContext] ActivityExecutionContext context)
{
var result = await sut.EvaluateAsync(string.Empty, typeof(Uri), context, default);
Assert.Null(result);
}
[Theory(DisplayName = "When the desired return type is not string or object but the expression is whitespace-only, the EvaluateAsync method should return null"), AutoMoqData]
public async Task EvaluateAsyncShouldReturnNullWhenExpressionIsWhitespaceOnly(LiteralHandler sut,
[StubActivityExecutionContext] ActivityExecutionContext context)
{
var result = await sut.EvaluateAsync(" ", typeof(Uri), context, default);
Assert.Null(result);
}
[Theory(DisplayName = "When the desired return type is DateTime, the EvaluateAsync method should convert the string to a DateTime"), AutoMoqData]
public async Task EvaluateAsyncShouldConvertToDateTimeWhenThatIsDesiredReturnType(LiteralHandler sut,
[StubActivityExecutionContext] ActivityExecutionContext context)
{
var result = await sut.EvaluateAsync("2001-03-04T12:45:32Z", typeof(DateTime), context, default);
Assert.Equal(new DateTime(2001, 03, 04, 12, 45, 32, DateTimeKind.Utc), result);
}
}
}