Initiial working release process - #3
Open
kthoms wants to merge 3 commits into
Open
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR establishes an initial release pipeline for the operaton-starter project, including version bumping across Maven + npm modules, GitHub Actions automation, and JReleaser-based packaging (including Docker).
Changes:
- Bump project/package versions from
0.1.0to0.1.1and introduce a deploy-skip mechanism for selected submodules. - Add/extend release automation: GitHub Actions
release.yml, project version set script, localacthelper script, and.envtemplate. - Add JReleaser distribution + Docker packaging configuration and update committed static web build artifacts.
Reviewed changes
Copilot reviewed 19 out of 25 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
| starter-web/pom.xml | Bumps parent version and adds deploy skip property for the web module. |
| starter-web/package.json | Bumps npm package version to 0.1.1. |
| starter-web/package-lock.json | Aligns lockfile version metadata with 0.1.1. |
| starter-templates/pom.xml | Bumps parent version to 0.1.1-SNAPSHOT. |
| starter-server/src/main/resources/static/index.html | Updates hashed asset reference for the bundled web UI. |
| starter-server/src/main/resources/static/assets/index-D3NRmT5g.js | Adds new bundled JS asset for the UI. |
| starter-server/src/main/resources/static/assets/ConfigureView-Lv2wFFMh.js | Adds new bundled Configure view chunk. |
| starter-server/pom.xml | Bumps parent version to 0.1.1-SNAPSHOT. |
| starter-mcp/pom.xml | Bumps parent version and adds deploy skip property for the MCP module. |
| starter-mcp/package.json | Bumps npm package version and reformats keywords list. |
| starter-mcp/package-lock.json | Aligns lockfile version metadata with 0.1.1. |
| starter-cli/pom.xml | Bumps parent version and adds deploy skip property for the CLI module. |
| starter-cli/package.json | Bumps npm package version and reformats keywords list. |
| starter-cli/package-lock.json | Aligns lockfile version metadata with 0.1.1. |
| starter-archetypes/pom.xml | Bumps parent version to 0.1.1-SNAPSHOT. |
| src/jreleaser/distributions/operaton-starter/docker/Dockerfile.tpl | Introduces Docker image template using Spring Boot layertools layers. |
| pom.xml | Bumps root version and adds deploy plugin configuration with a skip flag + local staging repo. |
| jreleaser.yml | Adds Java metadata, GitHub release settings, checksum config, Docker packager config, and distribution definition. |
| .mvn/wrapper/maven-wrapper.properties | Adds Maven Wrapper properties (including Maven distribution URL). |
| .mvn/maven.config | Adds Maven CLI defaults and a Java 25 XML attribute limit override. |
| .gitignore | Adjusts Maven ignore entries, adds .env, adds JReleaser output ignore. |
| .github/workflows/release.yml | Reworks release workflow: version computation, Maven deploy, Docker login, JReleaser release, and post-release bump. |
| .github/scripts/set-project-version.sh | Adds script to set Maven + npm versions across the repo. |
| .github/scripts/act/release.sh | Adds local runner script to execute the release workflow with act. |
| .env.template | Adds a template for release-related secrets for local runs. |
Files not reviewed (4)
- starter-cli/package-lock.json: Generated file
- starter-mcp/package-lock.json: Generated file
- starter-server/src/main/resources/static/assets/ConfigureView-Lv2wFFMh.js: Generated file
- starter-web/package-lock.json: Generated file
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
164
to
+167
| DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} | ||
| DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} | ||
| DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_PASSWORD }} | ||
| JRELEASER_DOCKER_DEFAULT_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} | ||
| JRELEASER_DOCKER_DEFAULT_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }} |
Comment on lines
+199
to
+202
| SNAPSHOT_TAGS=( | ||
| "${{ needs.release_build.outputs.version }}-SNAPSHOT" | ||
| "v${{ needs.release_build.outputs.version }}-SNAPSHOT" | ||
| ) |
Comment on lines
+219
to
+223
| if [ -n "${{needs.prepaare.outputs.is_prerelease}}" ]; then | ||
| NEXT_VERSION=${{needs.prepare.outputs.outputs.base_version}}-SNAPSHOT | ||
| else | ||
| NEXT_VERSION=${{needs.prepare.outputs.next_version}}-SNAPSHOT | ||
| fi |
Comment on lines
+8
to
+17
| REQUIRED_SECRETS=( | ||
| GITHUB_TOKEN | ||
| GPG_SECRET_KEY | ||
| GPG_PASSPHRASE | ||
| MAVEN_CENTRAL_USERNAME | ||
| MAVEN_CENTRAL_TOKEN | ||
| NPM_TOKEN | ||
| DOCKERHUB_USERNAME | ||
| DOCKERHUB_TOKEN | ||
| ) |
Comment on lines
+35
to
+38
| Required environment variables: | ||
| GITHUB_TOKEN, GPG_SECRET_KEY, GPG_PASSPHRASE, | ||
| MAVEN_CENTRAL_USERNAME, MAVEN_CENTRAL_TOKEN, | ||
| NPM_TOKEN, DOCKERHUB_USERNAME, DOCKERHUB_TOKEN |
Comment on lines
+159
to
+168
| cat > "${secret_file}" <<EOF | ||
| GITHUB_TOKEN=${GITHUB_TOKEN} | ||
| GPG_SECRET_KEY=${GPG_SECRET_KEY} | ||
| GPG_PASSPHRASE=${GPG_PASSPHRASE} | ||
| MAVEN_CENTRAL_USERNAME=${MAVEN_CENTRAL_USERNAME} | ||
| MAVEN_CENTRAL_TOKEN=${MAVEN_CENTRAL_TOKEN} | ||
| NPM_TOKEN=${NPM_TOKEN} | ||
| DOCKERHUB_USERNAME=${DOCKERHUB_USERNAME} | ||
| DOCKERHUB_TOKEN=${DOCKERHUB_TOKEN} | ||
| EOF |
Comment on lines
+9
to
+20
| # GPG private key (armored, base64-encoded) for artifact signing | ||
| GPG_PRIVATE_KEY= | ||
|
|
||
| # Passphrase for the GPG key | ||
| GPG_PASSPHRASE= | ||
|
|
||
| # Maven Central (Sonatype) publishing credentials | ||
| MAVEN_CENTRAL_USERNAME= | ||
| MAVEN_CENTRAL_TOKEN= | ||
|
|
||
| # npm registry token for publishing npm packages | ||
| NPM_TOKEN= |
Comment on lines
+14
to
+18
| java: | ||
| groupId: org.operaton.starter | ||
| artifactId: starter-server | ||
| mainClass: org.operaton.dev.starter.server.StarterServerApplication | ||
| version: 21 |
Comment on lines
+79
to
+82
| java: | ||
| groupId: org.operaton.starter | ||
| artifactId: starter-server | ||
| mainClass: org.operaton.dev.starter.server.StarterServerApplication |
| * vue-router v4.6.4 | ||
| * (c) 2025 Eduardo San Martin Morote | ||
| * @license MIT | ||
| */let Nu=()=>location.protocol+"//"+location.host;function ro(e,t){const{pathname:n,search:s,hash:r}=t,i=e.indexOf("#");if(i>-1){let o=r.includes(e.slice(i))?e.slice(i).length:1,a=r.slice(o);return a[0]!=="/"&&(a="/"+a),pi(a,"")}return pi(n,e)+s+r}function Du(e,t,n,s){let r=[],i=[],o=null;const a=({state:d})=>{const g=ro(e,location),b=n.value,_=t.value;let I=0;if(d){if(n.value=g,t.value=d,o&&o===b){o=null;return}I=_?d.position-_.position:0}else s(g);r.forEach(M=>{M(n.value,b,{delta:I,type:Zs.pop,direction:I?I>0?Ls.forward:Ls.back:Ls.unknown})})};function l(){o=n.value}function u(d){r.push(d);const g=()=>{const b=r.indexOf(d);b>-1&&r.splice(b,1)};return i.push(g),g}function c(){if(document.visibilityState==="hidden"){const{history:d}=window;if(!d.state)return;d.replaceState(Y({},d.state,{scroll:vs()}),"")}}function f(){for(const d of i)d();i=[],window.removeEventListener("popstate",a),window.removeEventListener("pagehide",c),document.removeEventListener("visibilitychange",c)}return window.addEventListener("popstate",a),window.addEventListener("pagehide",c),document.addEventListener("visibilitychange",c),{pauseListeners:l,listen:u,destroy:f}}function xi(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?vs():null}}function Lu(e){const{history:t,location:n}=window,s={value:ro(e,n)},r={value:t.state};r.value||i(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(l,u,c){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+l:Nu()+e+l;try{t[c?"replaceState":"pushState"](u,"",d),r.value=u}catch(g){console.error(g),n[c?"replace":"assign"](d)}}function o(l,u){i(l,Y({},t.state,xi(r.value.back,l,r.value.forward,!0),u,{position:r.value.position}),!0),s.value=l}function a(l,u){const c=Y({},r.value,t.state,{forward:l,scroll:vs()});i(c.current,c,!0),i(l,Y({},xi(s.value,l,null),{position:c.position+1},u),!1),s.value=l}return{location:s,state:r,push:a,replace:o}}function Mu(e){e=vu(e);const t=Lu(e),n=Du(e,t.state,t.location,t.replace);function s(i,o=!0){o||n.pauseListeners(),history.go(i)}const r=Y({location:"",base:e,go:s,createHref:wu.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let Bt=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var ve=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(ve||{});const ju={type:Bt.Static,value:""},Bu=/[a-zA-Z0-9_]/;function Fu(e){if(!e)return[[]];if(e==="/")return[[ju]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${u}": ${g}`)}let n=ve.Static,s=n;const r=[];let i;function o(){i&&r.push(i),i=[]}let a=0,l,u="",c="";function f(){u&&(n===ve.Static?i.push({type:Bt.Static,value:u}):n===ve.Param||n===ve.ParamRegExp||n===ve.ParamRegExpEnd?(i.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),i.push({type:Bt.Param,value:u,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function d(){u+=l}for(;a<e.length;){if(l=e[a++],l==="\\"&&n!==ve.ParamRegExp){s=n,n=ve.EscapeNext;continue}switch(n){case ve.Static:l==="/"?(u&&f(),o()):l===":"?(f(),n=ve.Param):d();break;case ve.EscapeNext:d(),n=s;break;case ve.Param:l==="("?n=ve.ParamRegExp:Bu.test(l)?d():(f(),n=ve.Static,l!=="*"&&l!=="?"&&l!=="+"&&a--);break;case ve.ParamRegExp:l===")"?c[c.length-1]=="\\"?c=c.slice(0,-1)+l:n=ve.ParamRegExpEnd:c+=l;break;case ve.ParamRegExpEnd:f(),n=ve.Static,l!=="*"&&l!=="?"&&l!=="+"&&a--,c="";break;default:t("Unknown state");break}}return n===ve.ParamRegExp&&t(`Unfinished custom RegExp for param "${u}"`),f(),o(),r}const yi="[^/]+?",Uu={sensitive:!1,strict:!1,start:!0,end:!0};var Pe=(function(e){return e[e._multiplier=10]="_multiplier",e[e.Root=90]="Root",e[e.Segment=40]="Segment",e[e.SubSegment=30]="SubSegment",e[e.Static=40]="Static",e[e.Dynamic=20]="Dynamic",e[e.BonusCustomRegExp=10]="BonusCustomRegExp",e[e.BonusWildcard=-50]="BonusWildcard",e[e.BonusRepeatable=-20]="BonusRepeatable",e[e.BonusOptional=-8]="BonusOptional",e[e.BonusStrict=.7000000000000001]="BonusStrict",e[e.BonusCaseSensitive=.25]="BonusCaseSensitive",e})(Pe||{});const Hu=/[.+*?^${}()[\]/\\]/g;function Vu(e,t){const n=Y({},Uu,t),s=[];let r=n.start?"^":"";const i=[];for(const u of e){const c=u.length?[]:[Pe.Root];n.strict&&!u.length&&(r+="/");for(let f=0;f<u.length;f++){const d=u[f];let g=Pe.Segment+(n.sensitive?Pe.BonusCaseSensitive:0);if(d.type===Bt.Static)f||(r+="/"),r+=d.value.replace(Hu,"\\$&"),g+=Pe.Static;else if(d.type===Bt.Param){const{value:b,repeatable:_,optional:I,regexp:M}=d;i.push({name:b,repeatable:_,optional:I});const C=M||yi;if(C!==yi){g+=Pe.BonusCustomRegExp;try{`${C}`}catch(S){throw new Error(`Invalid custom RegExp for param "${b}" (${C}): `+S.message)}}let L=_?`((?:${C})(?:/(?:${C}))*)`:`(${C})`;f||(L=I&&u.length<2?`(?:/${L})`:"/"+L),I&&(L+="?"),r+=L,g+=Pe.Dynamic,I&&(g+=Pe.BonusOptional),_&&(g+=Pe.BonusRepeatable),C===".*"&&(g+=Pe.BonusWildcard)}c.push(g)}s.push(c)}if(n.strict&&n.end){const u=s.length-1;s[u][s[u].length-1]+=Pe.BonusStrict}n.strict||(r+="/?"),n.end?r+="$":n.strict&&!r.endsWith("/")&&(r+="(?:/|$)");const o=new RegExp(r,n.sensitive?"":"i");function a(u){const c=u.match(o),f={};if(!c)return null;for(let d=1;d<c.length;d++){const g=c[d]||"",b=i[d-1];f[b.name]=g&&b.repeatable?g.split("/"):g}return f}function l(u){let c="",f=!1;for(const d of e){(!f||!c.endsWith("/"))&&(c+="/"),f=!1;for(const g of d)if(g.type===Bt.Static)c+=g.value;else if(g.type===Bt.Param){const{value:b,repeatable:_,optional:I}=g,M=b in u?u[b]:"";if(Ze(M)&&!_)throw new Error(`Provided param "${b}" is an array but it is not repeatable (* or + modifiers)`);const C=Ze(M)?M.join("/"):M;if(!C)if(I)d.length<2&&(c.endsWith("/")?c=c.slice(0,-1):f=!0);else throw new Error(`Missing required param "${b}"`);c+=C}}return c||"/"}return{re:o,score:s,keys:i,parse:a,stringify:l}}function zu(e,t){let n=0;for(;n<e.length&&n<t.length;){const s=t[n]-e[n];if(s)return s;n++}return e.length<t.length?e.length===1&&e[0]===Pe.Static+Pe.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===Pe.Static+Pe.Segment?1:-1:0}function io(e,t){let n=0;const s=e.score,r=t.score;for(;n<s.length&&n<r.length;){const i=zu(s[n],r[n]);if(i)return i;n++}if(Math.abs(r.length-s.length)===1){if(vi(s))return 1;if(vi(r))return-1}return r.length-s.length}function vi(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const qu={strict:!1,end:!0,sensitive:!1};function Gu(e,t,n){const s=Vu(Fu(e.path),n),r=Y(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Ku(e,t){const n=[],s=new Map;t=hi(qu,t);function r(f){return s.get(f)}function i(f,d,g){const b=!g,_=wi(f);_.aliasOf=g&&g.record;const I=hi(t,f),M=[_];if("alias"in f){const S=typeof f.alias=="string"?[f.alias]:f.alias;for(const z of S)M.push(wi(Y({},_,{components:g?g.record.components:_.components,path:z,aliasOf:g?g.record:_})))}let C,L;for(const S of M){const{path:z}=S;if(d&&z[0]!=="/"){const ue=d.record.path,fe=ue[ue.length-1]==="/"?"":"/";S.path=d.record.path+(z&&fe+z)}if(C=Gu(S,d,I),g?g.alias.push(C):(L=L||C,L!==C&&L.alias.push(C),b&&f.name&&!_i(C)&&o(f.name)),lo(C)&&l(C),_.children){const ue=_.children;for(let fe=0;fe<ue.length;fe++)i(ue[fe],C,g&&g.children[fe])}g=g||C}return L?()=>{o(L)}:Cn}function o(f){if(no(f)){const d=s.get(f);d&&(s.delete(f),n.splice(n.indexOf(d),1),d.children.forEach(o),d.alias.forEach(o))}else{const d=n.indexOf(f);d>-1&&(n.splice(d,1),f.record.name&&s.delete(f.record.name),f.children.forEach(o),f.alias.forEach(o))}}function a(){return n}function l(f){const d=Zu(f,n);n.splice(d,0,f),f.record.name&&!_i(f)&&s.set(f.record.name,f)}function u(f,d){let g,b={},_,I;if("name"in f&&f.name){if(g=s.get(f.name),!g)throw on(me.MATCHER_NOT_FOUND,{location:f});I=g.record.name,b=Y(ki(d.params,g.keys.filter(L=>!L.optional).concat(g.parent?g.parent.keys.filter(L=>L.optional):[]).map(L=>L.name)),f.params&&ki(f.params,g.keys.map(L=>L.name))),_=g.stringify(b)}else if(f.path!=null)_=f.path,g=n.find(L=>L.re.test(_)),g&&(b=g.parse(_),I=g.record.name);else{if(g=d.name?s.get(d.name):n.find(L=>L.re.test(d.path)),!g)throw on(me.MATCHER_NOT_FOUND,{location:f,currentLocation:d});I=g.record.name,b=Y({},d.params,f.params),_=g.stringify(b)}const M=[];let C=g;for(;C;)M.unshift(C.record),C=C.parent;return{name:I,path:_,params:b,matched:M,meta:Qu(M)}}e.forEach(f=>i(f));function c(){n.length=0,s.clear()}return{addRoute:i,resolve:u,removeRoute:o,clearRoutes:c,getRoutes:a,getRecordMatcher:r}}function ki(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function wi(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Wu(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Wu(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function _i(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Qu(e){return e.reduce((t,n)=>Y(t,n.meta),{})}function Zu(e,t){let n=0,s=t.length;for(;n!==s;){const i=n+s>>1;io(e,t[i])<0?s=i:n=i+1}const r=Yu(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function Yu(e){let t=e;for(;t=t.parent;)if(lo(t)&&io(e,t)===0)return t}function lo({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Si(e){const t=We(ks),n=We(vr),s=Q(()=>{const l=q(e.to);return t.resolve(l)}),r=Q(()=>{const{matched:l}=s.value,{length:u}=l,c=l[u-1],f=n.matched;if(!c||!f.length)return-1;const d=f.findIndex(ln.bind(null,c));if(d>-1)return d;const g=Ei(l[u-2]);return u>1&&Ei(c)===g&&f[f.length-1].path!==g?f.findIndex(ln.bind(null,l[u-2])):d}),i=Q(()=>r.value>-1&&tf(n.params,s.value.params)),o=Q(()=>r.value>-1&&r.value===n.matched.length-1&&to(n.params,s.value.params));function a(l={}){if(ef(l)){const u=t[q(e.replace)?"replace":"push"](q(e.to)).catch(Cn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}return{route:s,href:Q(()=>s.value.href),isActive:i,isExactActive:o,navigate:a}}function Ju(e){return e.length===1?e[0]:e}const Xu=Fe({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Si,setup(e,{slots:t}){const n=ds(Si(e)),{options:s}=We(ks),r=Q(()=>({[Ri(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Ri(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&Ju(t.default(n));return e.custom?i:zl("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},i)}}}),oo=Xu;function ef(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function tf(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!Ze(r)||r.length!==s.length||s.some((i,o)=>i.valueOf()!==r[o].valueOf()))return!1}return!0}function Ei(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ri=(e,t,n)=>e??t??n,nf=Fe({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=We(Js),r=Q(()=>e.route||s.value),i=We(bi,0),o=Q(()=>{let u=q(i);const{matched:c}=r.value;let f;for(;(f=c[u])&&!f.components;)u++;return u}),a=Q(()=>r.value.matched[o.value]);qn(bi,Q(()=>o.value+1)),qn(Ou,a),qn(Js,r);const l=ze();return _n(()=>[l.value,a.value,e.name],([u,c,f],[d,g,b])=>{c&&(c.instances[f]=u,g&&g!==c&&u&&u===d&&(c.leaveGuards.size||(c.leaveGuards=g.leaveGuards),c.updateGuards.size||(c.updateGuards=g.updateGuards))),u&&c&&(!g||!ln(c,g)||!d)&&(c.enterCallbacks[f]||[]).forEach(_=>_(u))},{flush:"post"}),()=>{const u=r.value,c=e.name,f=a.value,d=f&&f.components[c];if(!d)return Ai(n.default,{Component:d,route:u});const g=f.props[c],b=g?g===!0?u.params:typeof g=="function"?g(u):g:null,I=zl(d,Y({},b,t,{onVnodeUnmounted:M=>{M.component.isUnmounted&&(f.instances[c]=null)},ref:l}));return Ai(n.default,{Component:I,route:u})||I}}});function Ai(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const ao=nf;function sf(e){const t=Ku(e.routes,e),n=e.parseQuery||Pu,s=e.stringifyQuery||mi,r=e.history,i=gn(),o=gn(),a=gn(),l=ra(At);let u=At;Yt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=Ns.bind(null,v=>""+v),f=Ns.bind(null,pu),d=Ns.bind(null,Nn);function g(v,D){let $,j;return no(v)?($=t.getRecordMatcher(v),j=D):j=v,t.addRoute(j,$)}function b(v){const D=t.getRecordMatcher(v);D&&t.removeRoute(D)}function _(){return t.getRoutes().map(v=>v.record)}function I(v){return!!t.getRecordMatcher(v)}function M(v,D){if(D=Y({},D||l.value),typeof v=="string"){const m=Ds(n,v,D.path),x=t.resolve({path:m.path},D),k=r.createHref(m.fullPath);return Y(m,x,{params:d(x.params),hash:Nn(m.hash),redirectedFrom:void 0,href:k})}let $;if(v.path!=null)$=Y({},v,{path:Ds(n,v.path,D.path).path});else{const m=Y({},v.params);for(const x in m)m[x]==null&&delete m[x];$=Y({},v,{params:f(m)}),D.params=f(D.params)}const j=t.resolve($,D),G=v.hash||"";j.params=c(d(j.params));const h=mu(s,Y({},v,{hash:uu(G),path:j.path})),p=r.createHref(h);return Y({fullPath:h,hash:G,query:s===mi?Iu(v.query):v.query||{}},j,{redirectedFrom:void 0,href:p})}function C(v){return typeof v=="string"?Ds(n,v,l.value.path):Y({},v)}function L(v,D){if(u!==v)return on(me.NAVIGATION_CANCELLED,{from:D,to:v})}function S(v){return fe(v)}function z(v){return S(Y(C(v),{replace:!0}))}function ue(v,D){const $=v.matched[v.matched.length-1];if($&&$.redirect){const{redirect:j}=$;let G=typeof j=="function"?j(v,D):j;return typeof G=="string"&&(G=G.includes("?")||G.includes("#")?G=C(G):{path:G},G.params={}),Y({query:v.query,hash:v.hash,params:G.path!=null?{}:v.params},G)}}function fe(v,D){const $=u=M(v),j=l.value,G=v.state,h=v.force,p=v.replace===!0,m=ue($,j);if(m)return fe(Y(C(m),{state:typeof m=="object"?Y({},G,m.state):G,force:h,replace:p}),D||$);const x=$;x.redirectedFrom=D;let k;return!h&&bu(s,j,$)&&(k=on(me.NAVIGATION_DUPLICATED,{to:x,from:j}),Je(j,j,!0,!1)),(k?Promise.resolve(k):ge(x,j)).catch(y=>dt(y)?dt(y,me.NAVIGATION_GUARD_REDIRECT)?y:Rt(y):Z(y,x,j)).then(y=>{if(y){if(dt(y,me.NAVIGATION_GUARD_REDIRECT))return fe(Y({replace:p},C(y.to),{state:typeof y.to=="object"?Y({},G,y.to.state):G,force:h}),D||x)}else y=he(x,j,!0,p,G);return pe(x,j,y),y})}function Ue(v,D){const $=L(v,D);return $?Promise.reject($):Promise.resolve()}function Ye(v){const D=Kt.values().next().value;return D&&typeof D.runWithContext=="function"?D.runWithContext(v):v()}function ge(v,D){let $;const[j,G,h]=$u(v,D);$=Ms(j.reverse(),"beforeRouteLeave",v,D);for(const m of j)m.leaveGuards.forEach(x=>{$.push(Pt(x,v,D))});const p=Ue.bind(null,v,D);return $.push(p),He($).then(()=>{$=[];for(const m of i.list())$.push(Pt(m,v,D));return $.push(p),He($)}).then(()=>{$=Ms(G,"beforeRouteUpdate",v,D);for(const m of G)m.updateGuards.forEach(x=>{$.push(Pt(x,v,D))});return $.push(p),He($)}).then(()=>{$=[];for(const m of h)if(m.beforeEnter)if(Ze(m.beforeEnter))for(const x of m.beforeEnter)$.push(Pt(x,v,D));else $.push(Pt(m.beforeEnter,v,D));return $.push(p),He($)}).then(()=>(v.matched.forEach(m=>m.enterCallbacks={}),$=Ms(h,"beforeRouteEnter",v,D,Ye),$.push(p),He($))).then(()=>{$=[];for(const m of o.list())$.push(Pt(m,v,D));return $.push(p),He($)}).catch(m=>dt(m,me.NAVIGATION_CANCELLED)?m:Promise.reject(m))}function pe(v,D,$){a.list().forEach(j=>Ye(()=>j(v,D,$)))}function he(v,D,$,j,G){const h=L(v,D);if(h)return h;const p=D===At,m=Yt?history.state:{};$&&(j||p?r.replace(v.fullPath,Y({scroll:p&&m&&m.scroll},G)):r.push(v.fullPath,G)),l.value=v,Je(v,D,$,p),Rt()}let Se;function un(){Se||(Se=r.listen((v,D,$)=>{if(!Nt.listening)return;const j=M(v),G=ue(j,Nt.currentRoute.value);if(G){fe(Y(G,{replace:!0,force:!0}),j).catch(Cn);return}u=j;const h=l.value;Yt&&Eu(gi(h.fullPath,$.delta),vs()),ge(j,h).catch(p=>dt(p,me.NAVIGATION_ABORTED|me.NAVIGATION_CANCELLED)?p:dt(p,me.NAVIGATION_GUARD_REDIRECT)?(fe(Y(C(p.to),{force:!0}),j).then(m=>{dt(m,me.NAVIGATION_ABORTED|me.NAVIGATION_DUPLICATED)&&!$.delta&&$.type===Zs.pop&&r.go(-1,!1)}).catch(Cn),Promise.reject()):($.delta&&r.go(-$.delta,!1),Z(p,j,h))).then(p=>{p=p||he(j,h,!1),p&&($.delta&&!dt(p,me.NAVIGATION_CANCELLED)?r.go(-$.delta,!1):$.type===Zs.pop&&dt(p,me.NAVIGATION_ABORTED|me.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),pe(j,h,p)}).catch(Cn)}))}let qt=gn(),ke=gn(),ne;function Z(v,D,$){Rt(v);const j=ke.list();return j.length?j.forEach(G=>G(v,D,$)):console.error(v),Promise.reject(v)}function ht(){return ne&&l.value!==At?Promise.resolve():new Promise((v,D)=>{qt.add([v,D])})}function Rt(v){return ne||(ne=!v,un(),qt.list().forEach(([D,$])=>v?$(v):D()),qt.reset()),v}function Je(v,D,$,j){const{scrollBehavior:G}=e;if(!Yt||!G)return Promise.resolve();const h=!$&&Ru(gi(v.fullPath,0))||(j||!$)&&history.state&&history.state.scroll||null;return ul().then(()=>G(v,D,h)).then(p=>p&&Su(p)).catch(p=>Z(p,v,D))}const $e=v=>r.go(v);let Gt;const Kt=new Set,Nt={currentRoute:l,listening:!0,addRoute:g,removeRoute:b,clearRoutes:t.clearRoutes,hasRoute:I,getRoutes:_,resolve:M,options:e,push:S,replace:z,go:$e,back:()=>$e(-1),forward:()=>$e(1),beforeEach:i.add,beforeResolve:o.add,afterEach:a.add,onError:ke.add,isReady:ht,install(v){v.component("RouterLink",oo),v.component("RouterView",ao),v.config.globalProperties.$router=Nt,Object.defineProperty(v.config.globalProperties,"$route",{enumerable:!0,get:()=>q(l)}),Yt&&!Gt&&l.value===At&&(Gt=!0,S(r.location).catch(j=>{}));const D={};for(const j in At)Object.defineProperty(D,j,{get:()=>l.value[j],enumerable:!0});v.provide(ks,Nt),v.provide(vr,ll(D)),v.provide(Js,l);const $=v.unmount;Kt.add(v),v.unmount=function(){Kt.delete(v),Kt.size<1&&(u=At,Se&&Se(),Se=null,l.value=At,Gt=!1,ne=!1),$()}}};function He(v){return v.reduce((D,$)=>D.then(()=>Ye($)),Promise.resolve())}return Nt}function co(){return We(ks)}function ed(e){return We(vr)}const rf={class:"h-16 bg-neutral-0 border-b border-neutral-200 flex items-center px-6 md:px-8"},lf={class:"flex items-center gap-3 flex-1"},of=Fe({__name:"AppHeader",setup(e){return(t,n)=>(R(),O("header",rf,[A("div",lf,[be(q(oo),{to:"/",class:"flex items-center gap-2 no-underline","aria-label":"Operaton Starter home"},{default:gl(()=>[...n[0]||(n[0]=[A("div",{class:"w-8 h-8 bg-primary rounded-s flex items-center justify-center","aria-hidden":"true"},[A("span",{class:"text-white text-xs font-bold"},"O")],-1),A("span",{class:"text-lg font-bold text-neutral-900"},[ct(" Operaton "),A("span",{class:"font-normal text-neutral-500"},"Starter")],-1)])]),_:1})]),n[1]||(n[1]=A("nav",{"aria-label":"External links",class:"flex items-center gap-6"},[A("a",{href:"https://docs.operaton.org",target:"_blank",rel:"noopener noreferrer",class:"text-sm text-neutral-500 hover:text-primary transition-colors"},"Docs"),A("a",{href:"https://operaton.org",target:"_blank",rel:"noopener noreferrer",class:"text-sm text-neutral-500 hover:text-primary transition-colors"},"operaton.org"),A("a",{href:"https://github.com/operaton/operaton-starter",target:"_blank",rel:"noopener noreferrer",class:"text-sm text-neutral-500 hover:text-primary transition-colors"},"GitHub")],-1))]))}}),af={class:"border-t border-neutral-200 bg-neutral-0 py-6 px-6 md:px-8 text-center"},cf={class:"text-sm text-neutral-500"},uf={href:"https://github.com/operaton/operaton-starter",target:"_blank",rel:"noopener noreferrer",class:"hover:text-primary"},ff=Fe({__name:"AppFooter",setup(e){const n="0.1.0".replace(/-.*$/,"");return(s,r)=>(R(),O("footer",af,[A("p",cf,[A("a",uf,[r[0]||(r[0]=ct("operaton-starter",-1)),q(n)?(R(),O(de,{key:0},[ct(ce(q(n)),1)],64)):re("",!0)]),r[1]||(r[1]=ct(" · Apache 2.0 · ",-1)),r[2]||(r[2]=A("a",{href:"https://operaton.org",target:"_blank",rel:"noopener noreferrer",class:"hover:text-primary"},"operaton.org",-1))])]))}}),hf={class:"min-h-screen flex flex-col"},pf={id:"main-content",class:"flex-1"},df=Fe({__name:"App",setup(e){return(t,n)=>(R(),O("div",hf,[be(of),A("main",pf,[be(q(ao))]),be(ff)]))}}),gf="modulepreload",mf=function(e){return"/"+e},Ci={},bf=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){let o=function(u){return Promise.all(u.map(c=>Promise.resolve(c).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),l=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));r=o(n.map(u=>{if(u=mf(u),u in Ci)return;Ci[u]=!0;const c=u.endsWith(".css"),f=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${f}`))return;const d=document.createElement("link");if(d.rel=c?"stylesheet":gf,c||(d.as="script"),d.crossOrigin="",d.href=u,l&&d.setAttribute("nonce",l),document.head.appendChild(d),c)return new Promise((g,b)=>{d.addEventListener("load",g),d.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${u}`)))})}))}function i(o){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=o,window.dispatchEvent(a),!a.defaultPrevented)throw o}return r.then(o=>{for(const a of o||[])a.status==="rejected"&&i(a.reason);return t().catch(i)})},ws="";async function xf(){const e=await fetch(`${ws}/api/v1/metadata`,{headers:{Accept:"application/json"}});if(!e.ok)throw await e.json();return e.json()}async function td(e){const t=await fetch(`${ws}/api/v1/generate`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/zip"},body:JSON.stringify(e)});if(!t.ok)throw await t.json();return t.blob()}async function nd(e,t){try{const n=await fetch(`${ws}/api/v1/preview`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({templateId:e,config:t})});return n.ok?(await n.json()).content??null:null}catch{return null}}async function yf(e,t,n){const s=await fetch(`${ws}/api/v1/examples/${e}/${t}/${n}/download`,{headers:{Accept:"application/zip"}});if(!s.ok)throw await s.json();return s.blob()}function uo(){const e=ze(null),t=ze(!0),n=ze(null);return xf().then(s=>{e.value=s}).catch(s=>{n.value=s}).finally(()=>{t.value=!1}),{data:e,isLoading:t,error:n}}function vf(){const{data:e}=uo(),t=Q(()=>{var l;return((l=e.value)==null?void 0:l.examples)??[]}),n=Q(()=>{const l=new Set;return t.value.forEach(u=>{var c;(c=u.tags)==null||c.forEach(f=>l.add(f.label))}),Array.from(l).sort()}),s=Q(()=>{const l=new Set;return t.value.forEach(u=>{var c;(c=u.integrations)==null||c.forEach(f=>l.add(f))}),Array.from(l).sort()}),r=Q(()=>{const l=new Set;return t.value.forEach(u=>{var c;(c=u.tags)==null||c.forEach(f=>{f.category==="RUNTIME"&&l.add(f.label)})}),Array.from(l).sort()}),i=Q(()=>{const l=new Set;return t.value.forEach(u=>{var c;(c=u.tags)==null||c.forEach(f=>{f.category==="BUILD_SYSTEM"&&l.add(f.label)})}),Array.from(l).sort()}),o=Q(()=>{const l=new Set;return t.value.forEach(u=>{var c;(c=u.tags)==null||c.forEach(f=>{f.category==="COMPLEXITY"&&l.add(f.label)})}),Array.from(l).sort()}),a=Q(()=>{const l=new Set;return t.value.forEach(u=>{var c;(c=u.bpmnConcepts)==null||c.forEach(f=>l.add(f))}),Array.from(l).sort()});return{examples:t,allTags:n,allIntegrations:s,runtimes:r,buildSystems:i,complexities:o,bpmnConcepts:a}}function kf(e){const t=ze({query:"",runtime:new Set,buildSystem:new Set,complexity:new Set,integrations:new Set,bpmnConcepts:new Set});function n(a,l){const u=t.value[a];u.has(l)?u.delete(l):u.add(l)}function s(a){t.value.query=a}function r(){t.value.query="",t.value.runtime.clear(),t.value.buildSystem.clear(),t.value.complexity.clear(),t.value.integrations.clear(),t.value.bpmnConcepts.clear()}const i=Q(()=>{let a=e.value;if(t.value.query){const l=t.value.query.toLowerCase();a=a.filter(u=>{var c,f,d;return((c=u.title)==null?void 0:c.toLowerCase().includes(l))||((f=u.shortDescription)==null?void 0:f.toLowerCase().includes(l))||((d=u.tags)==null?void 0:d.some(g=>g.label.toLowerCase().includes(l)))})}return t.value.runtime.size>0&&(a=a.filter(l=>{var u;return(u=l.tags)==null?void 0:u.some(c=>c.category==="RUNTIME"&&t.value.runtime.has(c.label))})),t.value.buildSystem.size>0&&(a=a.filter(l=>{var u;return(u=l.tags)==null?void 0:u.some(c=>c.category==="BUILD_SYSTEM"&&t.value.buildSystem.has(c.label))})),t.value.complexity.size>0&&(a=a.filter(l=>{var u;return(u=l.tags)==null?void 0:u.some(c=>c.category==="COMPLEXITY"&&t.value.complexity.has(c.label))})),t.value.integrations.size>0&&(a=a.filter(l=>{var u;return(u=l.integrations)==null?void 0:u.some(c=>t.value.integrations.has(c))})),t.value.bpmnConcepts.size>0&&(a=a.filter(l=>{var u;return(u=l.bpmnConcepts)==null?void 0:u.some(c=>t.value.bpmnConcepts.has(c))})),a}),o=Q(()=>t.value.runtime.size>0||t.value.buildSystem.size>0||t.value.complexity.size>0||t.value.integrations.size>0||t.value.bpmnConcepts.size>0);return{filters:t,filteredExamples:i,hasActiveFilters:o,toggleFilter:n,setQuery:s,clear:r}}function wf(){const e=ze(new Map);function t(i){return e.value.get(i)??{state:"idle"}}function n(i,o){e.value.set(i,o)}async function s(i){const o=i.id??"";n(o,{state:"downloading"});try{const[a="",l=""]=(i.sourceRepo??"").split("/"),u=await yf(a,l,o),c=URL.createObjectURL(u),f=document.createElement("a");f.href=c,f.download=`${o}.zip`,document.body.appendChild(f),f.click(),document.body.removeChild(f),URL.revokeObjectURL(c),n(o,{state:"success"}),setTimeout(()=>{n(o,{state:"idle"})},3e3)}catch(a){n(o,{state:"error",error:a instanceof Error?a.message:"Unknown error"})}}function r(i){n(i,{state:"idle"})}return{getStatus:t,setStatus:n,download:s,retry:r}}function fo(e){switch(e){case"BPMN_CONCEPT":return"bg-blue-100 text-blue-800";case"TECHNOLOGY":return"bg-amber-100 text-amber-800";case"PLATFORM":return"bg-green-100 text-green-800";case"STANDARD":return"bg-purple-100 text-purple-800";default:return"bg-neutral-100 text-neutral-600"}}function Ti(e){return"bg-neutral-50 text-neutral-900 border border-neutral-200"}function _f(){return"bg-amber-100 text-amber-800"}function Sf(){return"bg-blue-100 text-blue-800"}const Ef=["aria-label"],Rf={class:"text-xl font-semibold text-neutral-900 mb-2"},Af={class:"text-sm text-neutral-500 leading-relaxed mb-3 flex-1"},Cf={class:"flex flex-wrap gap-2 mb-3"},Tf={class:"text-sm text-primary font-medium mb-3"},Pf=["aria-expanded","aria-controls"],If=["id"],Of=["aria-label"],$f=Fe({__name:"ProjectTypeCard",props:{projectType:{}},setup(e){const t=e,n=co(),s=ze(!1);function r(){n.push({path:"/configure",query:{projectType:t.projectType.id}})}return(i,o)=>(R(),O("article",{class:"rounded-s border border-neutral-200 bg-neutral-0 p-6 hover:shadow-md hover:border-primary transition-all cursor-pointer flex flex-col",tabindex:"0","aria-label":e.projectType.displayName,onClick:r,onKeydown:Wc(r,["enter"])},[A("h3",Rf,ce(e.projectType.displayName),1),A("p",Af,ce(e.projectType.description),1),A("div",Cf,[(R(!0),O(de,null,Le(e.projectType.tags,a=>(R(),O("span",{key:a.label,class:vt(["inline-flex text-xs font-medium px-2 py-1 rounded-full",q(fo)(a.category)])},ce(a.label),3))),128))]),A("p",Tf,ce(e.projectType.personaHint),1),A("button",{type:"button",class:"text-sm text-neutral-500 hover:text-primary flex items-center gap-1 mb-2 w-fit","aria-expanded":s.value,"aria-controls":`help-${e.projectType.id}`,onClick:o[0]||(o[0]=ui(a=>s.value=!s.value,["stop"]))},[...o[1]||(o[1]=[A("span",{class:"w-4 h-4 rounded-full bg-neutral-200 text-neutral-500 text-xs inline-flex items-center justify-center font-bold","aria-hidden":"true"},"?",-1),ct(" More about this project type ",-1)])],8,Pf),ml(A("div",{id:`help-${e.projectType.id}`,role:"note",class:"text-sm text-neutral-600 border-t border-neutral-200 pt-2 mb-3 leading-relaxed"},ce(e.projectType.detailedDescription??e.projectType.description),9,If),[[Cc,s.value]]),A("button",{type:"button",class:"w-full bg-primary text-white py-2 rounded-s font-medium hover:bg-primary-dark transition-colors text-sm mt-auto","aria-label":`Configure ${e.projectType.displayName} project`,onClick:ui(r,["stop"])}," Configure → ",8,Of)],40,Ef))}}),an=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Nf={},Df={class:"rounded-s border border-neutral-200 bg-neutral-0 p-6 animate-pulse","aria-hidden":"true"};function Lf(e,t){return R(),O("div",Df,[...t[0]||(t[0]=[uc('<div class="h-6 bg-neutral-200 rounded w-3/4 mb-3"></div><div class="h-4 bg-neutral-200 rounded w-full mb-2"></div><div class="h-4 bg-neutral-200 rounded w-5/6 mb-4"></div><div class="flex gap-2 mb-4"><div class="h-6 bg-neutral-200 rounded-full w-16"></div><div class="h-6 bg-neutral-200 rounded-full w-20"></div></div><div class="h-10 bg-neutral-200 rounded-s w-full"></div>',5)])])}const Mf=an(Nf,[["render",Lf]]),jf={key:0,role:"alert","aria-live":"assertive",class:"rounded-s border border-red-200 bg-red-50 p-4 flex gap-3 items-start"},Bf={class:"font-semibold text-red-700"},Ff={key:0,class:"text-sm text-red-600 mt-1"},Uf=Fe({__name:"ErrorBanner",props:{error:{}},setup(e){return(t,n)=>e.error?(R(),O("div",jf,[n[0]||(n[0]=A("span",{class:"text-red-600 text-xl","aria-hidden":"true"},"⚠",-1)),A("div",null,[A("p",Bf,ce(e.error.title),1),e.error.detail?(R(),O("p",Ff,ce(e.error.detail),1)):re("",!0)])])):re("",!0)}}),Hf=["aria-pressed"],Vf={key:0,class:"ml-1","aria-hidden":"true"},zf=Fe({__name:"FilterChip",props:{label:{},isActive:{type:Boolean},category:{},colorClasses:{default:""}},emits:["toggle"],setup(e,{emit:t}){const n=e,s=t,r=Q(()=>n.isActive);function i(){s("toggle")}function o(a){(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),s("toggle"))}return(a,l)=>(R(),O("button",{type:"button","aria-pressed":r.value,class:vt(["filter-chip",[{"filter-chip-active":e.isActive},!e.isActive&&e.colorClasses?e.colorClasses:""]]),onClick:i,onKeydown:o},[ct(ce(e.label)+" ",1),e.isActive?(R(),O("span",Vf,"×")):re("",!0)],42,Hf))}}),mn=an(zf,[["__scopeId","data-v-826fe0e2"]]),qf={class:"search-bar-sticky"},Gf={class:"search-bar-content"},Kf={class:"search-input-wrapper"},Wf={class:"filter-details"},Qf={class:"filter-groups"},Zf={key:0,class:"filter-group"},Yf={role:"toolbar","aria-label":"Filter by runtime"},Jf={key:1,class:"filter-group"},Xf={role:"toolbar","aria-label":"Filter by build system"},eh={key:2,class:"filter-group"},th={role:"toolbar","aria-label":"Filter by complexity"},nh={key:3,class:"filter-group"},sh={role:"toolbar","aria-label":"Filter by integration"},rh={key:4,class:"filter-group"},ih={role:"toolbar","aria-label":"Filter by BPMN concept"},lh={role:"status","aria-live":"polite",class:"sr-only"},oh=Fe({__name:"GallerySearchBar",props:{filteredExamplesCount:{},runtimes:{},buildSystems:{},complexities:{},integrations:{},bpmnConcepts:{},activeFilters:{}},emits:["update:query","toggle-filter","clear-filters"],setup(e,{emit:t}){const n=e,s=t,r=ze(""),i=ze(null),o=Q(()=>n.filteredExamplesCount===0?"No results found":n.filteredExamplesCount===1?"1 example found":`${n.filteredExamplesCount} examples found`);_n(r,l=>{i.value!==null&&clearTimeout(i.value),i.value=window.setTimeout(()=>{s("update:query",l)},200)});function a(l,u){s("toggle-filter",l,u)}return(l,u)=>(R(),O("div",qf,[A("div",Gf,[A("div",Kf,[ml(A("input",{"onUpdate:modelValue":u[0]||(u[0]=c=>r.value=c),type:"search",class:"search-input","aria-label":"Search examples",placeholder:"Search examples…"},null,512),[[zc,r.value]])]),A("details",Wf,[u[1]||(u[1]=A("summary",{class:"filter-summary"},"Filters",-1)),A("div",Qf,[e.runtimes.length>0?(R(),O("div",Zf,[A("div",Yf,[(R(!0),O(de,null,Le(e.runtimes,c=>(R(),yt(mn,{key:`runtime-${c}`,label:c,"is-active":e.activeFilters.runtime.has(c),category:"runtime","color-classes":"bg-neutral-50 text-neutral-900 border border-neutral-200",onToggle:f=>a("runtime",c)},null,8,["label","is-active","onToggle"]))),128))])])):re("",!0),e.buildSystems.length>0?(R(),O("div",Jf,[A("div",Xf,[(R(!0),O(de,null,Le(e.buildSystems,c=>(R(),yt(mn,{key:`buildSystem-${c}`,label:c,"is-active":e.activeFilters.buildSystem.has(c),category:"buildSystem","color-classes":"bg-neutral-50 text-neutral-900 border border-neutral-200",onToggle:f=>a("buildSystem",c)},null,8,["label","is-active","onToggle"]))),128))])])):re("",!0),e.complexities.length>0?(R(),O("div",eh,[A("div",th,[(R(!0),O(de,null,Le(e.complexities,c=>(R(),yt(mn,{key:`complexity-${c}`,label:c,"is-active":e.activeFilters.complexity.has(c),category:"complexity","color-classes":"bg-neutral-50 text-neutral-900 border border-neutral-200",onToggle:f=>a("complexity",c)},null,8,["label","is-active","onToggle"]))),128))])])):re("",!0),e.integrations.length>0?(R(),O("div",nh,[A("div",sh,[(R(!0),O(de,null,Le(e.integrations,c=>(R(),yt(mn,{key:`integration-${c}`,label:c,"is-active":e.activeFilters.integrations.has(c),category:"integrations","color-classes":"bg-amber-100 text-amber-800",onToggle:f=>a("integrations",c)},null,8,["label","is-active","onToggle"]))),128))])])):re("",!0),e.bpmnConcepts.length>0?(R(),O("div",rh,[A("div",ih,[(R(!0),O(de,null,Le(e.bpmnConcepts,c=>(R(),yt(mn,{key:`bpmnConcept-${c}`,label:c,"is-active":e.activeFilters.bpmnConcepts.has(c),category:"bpmnConcepts","color-classes":"bg-blue-100 text-blue-800",onToggle:f=>a("bpmnConcepts",c)},null,8,["label","is-active","onToggle"]))),128))])])):re("",!0)])]),A("span",lh,ce(o.value),1)])]))}}),ah=an(oh,[["__scopeId","data-v-a28050b0"]]);function kr(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var zt=kr();function ho(e){zt=e}var jt={exec:()=>null};function Qt(e){let t=[];return n=>{let s=Math.max(0,Math.min(3,n-1)),r=t[s];return r||(r=e(s),t[s]=r),r}}function K(e,t=""){let n=typeof e=="string"?e:e.source,s={replace:(r,i)=>{let o=typeof i=="string"?i:i.source;return o=o.replace(Ae.caret,"$1"),n=n.replace(r,o),s},getRegex:()=>new RegExp(n,t)};return s}var ch=((e="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+e)}catch{return!1}})(),Ae={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Qt(e=>new RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Qt(e=>new RegExp(`^ {0,${e}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)),fencesBeginRegex:Qt(e=>new RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:Qt(e=>new RegExp(`^ {0,${e}}#`)),htmlBeginRegex:Qt(e=>new RegExp(`^ {0,${e}}<(?:[a-z].*>|!--)`,"i")),blockquoteBeginRegex:Qt(e=>new RegExp(`^ {0,${e}}>`))},uh=/^(?:[ \t]*(?:\n|$))+/,fh=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,hh=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,jn=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,ph=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,wr=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,po=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,go=K(po).replace(/bull/g,wr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),dh=K(po).replace(/bull/g,wr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),_r=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,gh=/^[^\n]+/,Sr=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,mh=K(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Sr).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),bh=K(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,wr).getRegex(),_s="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Er=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,xh=K("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Er).replace("tag",_s).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),mo=K(_r).replace("hr",jn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",_s).getRegex(),yh=K(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",mo).getRegex(),Rr={blockquote:yh,code:fh,def:mh,fences:hh,heading:ph,hr:jn,html:xh,lheading:go,list:bh,newline:uh,paragraph:mo,table:jt,text:gh},Pi=K("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",jn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",_s).getRegex(),vh={...Rr,lheading:dh,table:Pi,paragraph:K(_r).replace("hr",jn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Pi).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",_s).getRegex()},kh={...Rr,html:K(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Er).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:jt,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:K(_r).replace("hr",jn).replace("heading",` *#{1,6} *[^ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.