Various fixes to hid nodes

This commit is contained in:
barsdeveloper
2023-01-25 20:37:18 +01:00
parent a17bbeb2de
commit abc19f831a
19 changed files with 452 additions and 90 deletions

View File

@@ -254,7 +254,7 @@ ueb-link[data-dragging=true] .ueb-link-message {
ueb-node { ueb-node {
display: block; display: block;
position: absolute; position: absolute;
min-width: 130px; min-width: 100px;
border-radius: var(--ueb-node-radius); border-radius: var(--ueb-node-radius);
box-shadow: 0 0 1px 0 black, 1px 4px 6px 0 rgba(0, 0, 0, 0.3); box-shadow: 0 0 1px 0 black, 1px 4px 6px 0 rgba(0, 0, 0, 0.3);
font-weight: lighter; font-weight: lighter;
@@ -353,6 +353,7 @@ ueb-node.ueb-node-style-event .ueb-node-top ueb-pin {
.ueb-node-name { .ueb-node-name {
display: flex; display: flex;
align-items: center;
background: radial-gradient(ellipse 100% 100% at 40% 50%, rgba(0, 0, 0, 0.5) 20%, transparent 50%); background: radial-gradient(ellipse 100% 100% at 40% 50%, rgba(0, 0, 0, 0.5) 20%, transparent 50%);
margin: -1px -15px; margin: -1px -15px;
padding: 2px 15px; padding: 2px 15px;
@@ -401,15 +402,14 @@ ueb-node[data-pure-function=true] .ueb-node-name-symbol {
.ueb-node-outputs { .ueb-node-outputs {
margin-left: auto; margin-left: auto;
padding-right: 8px; padding-right: 10px;
} }
.ueb-node-has-inputs .ueb-node-outputs { .ueb-node-has-inputs .ueb-node-outputs {
margin-left: 20px; margin-left: 30px;
} }
.ueb-node-developmentonly { .ueb-node-developmentonly {
display: none;
margin-top: 4px; margin-top: 4px;
padding: 2px; padding: 2px;
background: repeating-linear-gradient(-45deg, transparent 0, #57590a 1px, #57590a 11px, transparent 12px, transparent 24px); background: repeating-linear-gradient(-45deg, transparent 0, #57590a 1px, #57590a 11px, transparent 12px, transparent 24px);
@@ -418,18 +418,16 @@ ueb-node[data-pure-function=true] .ueb-node-name-symbol {
} }
.ueb-node-developmentonly-text { .ueb-node-developmentonly-text {
padding: 0 10px;
letter-spacing: 0.04em; letter-spacing: 0.04em;
text-shadow: 1px 1px 1px black; text-shadow: 1px 1px 1px black;
white-space: nowrap;
} }
.ueb-zoom--6 .ueb-node-developmentonly-text { .ueb-zoom--6 .ueb-node-developmentonly-text {
visibility: hidden; visibility: hidden;
} }
ueb-node[data-enabled-state=DevelopmentOnly] .ueb-node-developmentonly {
display: block;
}
.ueb-node-expansion { .ueb-node-expansion {
display: none; display: none;
text-align: center; text-align: center;

View File

@@ -1 +1 @@
{"version":3,"sourceRoot":"","sources":["../../scss/style.scss","../../scss/ueb-knot.scss","../../scss/ueb-link.scss","../../scss/ueb-node.scss","../../scss/ueb-pin.scss","../../scss/ueb-ui-controls.scss","../../scss/ueb-window.scss"],"names":[],"mappings":"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;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;AAAA;EAEI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAII;EACA;;;AAIR;AAAA;EAEI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;;;ACrMR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AAIR;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;AAEA;EAEI;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;;AAIR;AAAA;EAEI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;AAEA;EACI;;;AAIR;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAKA;EACI;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;;AAIR;AAAA;AAAA;EAGI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;AAAA;AAAA;EAGI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;;ACnKJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;AAAA;EAEI;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA,YACI;;;AAWR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;AAAA;EAEI;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;;AAEA;EAEI;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;;AAIR;AAAA;EAEI;EACA;;;AAGJ;EACI;;;AAGJ;AAAA;EAEI;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;;;AAIR;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;EACA","file":"ueb-style.css"} {"version":3,"sourceRoot":"","sources":["../../scss/style.scss","../../scss/ueb-knot.scss","../../scss/ueb-link.scss","../../scss/ueb-node.scss","../../scss/ueb-pin.scss","../../scss/ueb-ui-controls.scss","../../scss/ueb-window.scss"],"names":[],"mappings":"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ACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;AAAA;EAEI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAII;EACA;;;AAIR;AAAA;EAEI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;;;ACrMR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AAIR;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;AAEA;EAEI;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;;AAIR;AAAA;EAEI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;AAEA;EACI;;;AAIR;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAKA;EACI;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;;AAIR;AAAA;AAAA;EAGI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;AAAA;AAAA;EAGI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;;ACnKJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;AAAA;EAEI;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA,YACI;;;AAWR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;AAAA;EAEI;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;;AAEA;EAEI;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;;AAIR;AAAA;EAEI;EACA;;;AAGJ;EACI;;;AAGJ;AAAA;EAEI;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;;;AAIR;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;EACA","file":"ueb-style.css"}

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
{"version":3,"sourceRoot":"","sources":["../../scss/style.scss","../../scss/ueb-knot.scss","../../scss/ueb-link.scss","../../scss/ueb-node.scss","../../scss/ueb-pin.scss","../../scss/ueb-ui-controls.scss","../../scss/ueb-window.scss"],"names":[],"mappings":"AAAA,WACI,qBACA,oBACA,IACI,kGAIR,WACI,qBACA,mBACA,IACI,sGAIR,WACI,qBACA,iBACA,IACI,gGAIR,cACI,eACA,6CACA,cACA,kBACA,8EACA,+BACA,WACA,iBAGJ,kBACI,iBAGJ,qBACI,aACA,kBACA,MACA,QACA,OACA,0BACA,UAGJ,8BACI,GACI,cAGJ,KACI,eAIR,qCACI,mCAGJ,mBACI,iBACA,YACA,cACA,eACA,iBACA,oBAGJ,mBACI,kBACA,gCACA,gBACA,kBAGJ,oDACI,gBAGJ,UACI,kFACA,kBACA,eACA,gBACA,+DACA,gEACA,yBACA,iBAEI,s3BA0BJ,gBAEI,sZAQJ,sFACA,gEACA,wCACA,qBACA,gBAGJ,6CACI,gBAGJ,8CACI,eAGJ,0BACI,uDACA,gCAGJ,0BACI,uDAGJ,2BACI,uDAGJ,kBACI,kBACA,QACA,SACA,wGAGJ,sBACI,QACA,SAGJ,gEACI,kBAGJ,aACI,cACA,kBACA,kBACA,MACA,OACA,QACA,SACA,iBAEI,wlDAmDJ,gBAEI,gQAWJ,oBAEI,wJAOJ,4BAGJ,gDACI,mBAIJ,eACI,mBAGJ,0BACI,mBACA,uBACA,gBC/QJ,gCACI,gBAGJ,wCACI,aAGJ,8DACI,aAGJ,iDACI,iBACA,2BAGJ,iDACI,gBAGJ,qEACI,qCCpBJ,SACI,kBACA,iDACA,kEAEA,wEACA,cACA,6CACA,8CAKA,kBAGJ,aACI,oEACA,kBACA,WACA,YACA,eACA,+FAGJ,6BACI,mBACA,6BACA,wCAGJ,oFAEI,wCACA,4BAGJ,+CACI,cACA,mBAGJ,kBACI,aACA,kBACA,mDACA,qHAOA,sBACA,kBACA,4EACA,+BACA,mBACA,gBAGJ,uBACI,qBACA,YACA,WACA,YACA,sBAGJ,uBACI,YACA,eACA,sBAGJ,2BACI,WACA,YC/EJ,SACI,cACA,kBACA,gBACA,qCACA,uDACA,oBAGJ,gCACI,YAGJ,sBACI,gBAGJ,iBACI,YACA,YACA,+CAGJ,8BACI,SACA,UAGJ,8CACI,iBACI,kNAIJ,oDACA,0CACA,sDAGJ,2DACI,2BACA,0BAGJ,4DACI,kBAGJ,kBACI,kBACA,YACA,gCACA,qCACA,6BACA,gBAGJ,2DACI,kBAGJ,uLAEI,YAGJ,+BACI,gBACA,UACA,mBAGJ,cACI,aACA,gBACA,mBAGJ,4CACI,aACA,8BACA,mBACA,kBAGJ,oDACI,iBAGJ,sCACI,yBACA,WACI,qGAEJ,gEACA,WACI,iLAIR,2BACI,gBAGJ,mDACI,sCAGJ,eACI,aACA,kGACA,kBACA,iBAGJ,4BACI,gBAGJ,4BACI,kBAGJ,sBACI,iBACA,WACA,YACA,cAGJ,wDACI,cAGJ,2BACI,sBAGJ,wBACI,kBACA,gBACA,kBACA,cAGJ,kBACI,aACA,oBACA,gBACA,mBAGJ,sCACI,iBAGJ,kBACI,iBACA,kBAGJ,uCACI,iBAGJ,0BACI,aACA,eACA,YACA,2HAMA,2HAMA,kBAGJ,+BACI,qBACA,6BAGJ,4CACI,kBAGJ,uEACI,cAGJ,oBACI,aACA,kBAGJ,oDACI,cAGJ,oFACI,yBACA,eAGJ,iCACI,kBAGJ,wBACI,WACA,YACA,sBAGJ,8DACI,qBAGJ,6HAGI,mBAGJ,gDACI,sBACA,oFACA,YACA,WACI,wNAEJ,+BACA,mCAGJ,6CACI,gBACA,eAGJ,8CACI,qCACA,gBAGJ,yFAEI,SACA,gBACA,gBACA,gBAGJ,4CACI,kBACA,SACA,eACA,YAGJ,4DACI,iBAGJ,gDACI,kBACA,QACA,SACA,oBACA,eACA,eACA,WAGJ,mDACI,mBAGJ,sCACI,WAGJ,iDACI,YAGJ,kDACI,kBACA,UACA,YACA,gBACA,4CACA,gBAEA,yDACI,WACA,cACA,kBACA,UACA,WACA,WACA,YACA,6TAgBR,8CACI,kBACA,WACA,iBACA,gBACA,gBACA,sCACA,WACA,eACA,0CACA,UAGJ,4DACI,WACA,cACA,kBACA,oBACA,qBACA,UACA,WACA,kBACA,mBC3VJ,cACI,6BAGJ,QACI,4NAMA,+CAGJ,QACI,cACA,gBAGJ,sBACI,aAGJ,sBACI,kBAGJ,wEACI,aAGJ,iBACI,qBAEA,mBACI,qBACA,sBAIR,+BACI,yBAGJ,mCACI,iBACA,gBAGJ,iFACI,qCACA,iBAGJ,oCACI,2BAGJ,0BACI,iBAGJ,cACI,2BACA,WACA,YACA,gBAGJ,gEACI,WACA,YAGJ,+BACI,iBAGJ,gCACI,gBAGJ,+FAEI,cAGJ,kBACI,mBAGJ,sCACI,WACA,YACA,uBAGJ,0CACI,kBAGJ,cACI,qBACA,sBAGJ,8BACI,kBAGJ,gHACI,aAGJ,uBACI,iBAGJ,eACI,qBACA,sBACA,gBACA,yBACA,kBACA,oBACA,cAEA,4FAII,yCACA,aAIR,0FAEI,aAGJ,uCACI,gBACA,UACA,YACA,WACA,yBACA,2BAGJ,+CACI,6OAGJ,oEACI,UACA,WACA,YACA,qBACA,gBACA,yCAGJ,oCACI,cAGJ,qBACI,sBACA,gBACA,WAGJ,uBACI,cACA,aACA,YACA,UACA,eACA,gBACA,gBACA,gBACA,cACA,cAEA,0CACI,WACA,YAGJ,gDACI,yBACA,mBACA,WAGJ,sDACI,mBCrMR,YACI,eACA,yBACA,kBACA,iBACA,mBACA,kBACA,eAEA,kBACI,mBAIR,aACI,aACA,yBACA,SACA,gBAGJ,mCACI,kBACA,oBAEA,qFAEI,WACA,cACA,kBACA,QACA,SACA,+BAGJ,2CACI,UACA,0BAGJ,0CACI,WACA,2BAIR,uCAEI,kBACA,yBACA,kBACA,mBAGJ,uBACI,kBACA,YAEA,6BACI,iBAIR,kCACI,iBAGJ,qCACI,cACA,kBACA,YACA,kBACA,mBAGJ,4BACI,kBACA,cACA,iBACA,UAKA,4BACI,WACA,qBACA,6BACA,oCACA,qCACA,sBAGJ,0BACI,eAIR,uEAGI,kBACA,MACA,YAGJ,oBACI,QACA,OACA,iBAGJ,0BACI,QACA,WACA,mBAGJ,yBACI,OACA,WACA,mBAGJ,sBACI,kBACA,MACA,QACA,SACA,WACA,iBAGJ,gFAGI,kBACA,YACA,YACA,iBAGJ,uBACI,QACA,OAGJ,6BACI,QACA,WACA,mBAGJ,4BACI,OACA,WACA,mBAGJ,qBACI,kBACA,MACA,SACA,OACA,WACA,iBCnKJ,WACI,cACA,kBACA,yBACA,MACA,OACA,sGACA,mBACA,6CACA,aAGJ,gBACI,aACA,mBACA,mBACA,gBACA,YACA,mBAGJ,oBACI,aACA,yBAGJ,iBACI,YACA,kBACA,kBAGJ,kBACI,YACA,YACA,WACA,eAGJ,+CAEI,qBACA,sBAGJ,uBACI,aACA,2DAGJ,wBACI,kBACA,iBACA,gBACA,mBACA,WACI,mLAWR,kBACI,cACA,kBACA,gBACA,iBACA,UACA,WACA,sBACA,kBAGJ,0CACI,8BACA,6BAGJ,qDAEI,aACA,oBACA,WAGJ,6BACI,iBACA,4EAGJ,wBACI,kBACA,4EAGJ,cACI,cAGJ,2CACI,yCAGJ,sCACI,yCAGJ,0BACI,kBACA,sBAEA,mEAEI,WACA,cACA,kBACA,oBACA,UACA,0BAGJ,iCACI,QAIR,4DAEI,YACA,YAGJ,8BACI,aAGJ,wDAEI,UAGJ,2BACI,aACA,gBACA,gBAGJ,oDACI,aACA,sBACA,8BACA,YACA,UAGJ,wDACI,aACA,mBACA,kBAEA,4DACI,YAIR,kDACI,YAGJ,yDACI,oCAGJ,yDACI,oCAGJ,yDACI,oCAGJ,yDACI,oCAGJ,yDACI,oCAGJ,yDACI,oCAGJ,yDACI,oCAGJ,2BACI,WAGJ,mBACI,oBAGJ,yBACI,iBACA,aAGJ,0CACI,UACA,iBACA,sBACA","file":"ueb-style.min.css"} {"version":3,"sourceRoot":"","sources":["../../scss/style.scss","../../scss/ueb-knot.scss","../../scss/ueb-link.scss","../../scss/ueb-node.scss","../../scss/ueb-pin.scss","../../scss/ueb-ui-controls.scss","../../scss/ueb-window.scss"],"names":[],"mappings":"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J,0BACI,iBAGJ,cACI,2BACA,WACA,YACA,gBAGJ,gEACI,WACA,YAGJ,+BACI,iBAGJ,gCACI,gBAGJ,+FAEI,cAGJ,kBACI,mBAGJ,sCACI,WACA,YACA,uBAGJ,0CACI,kBAGJ,cACI,qBACA,sBAGJ,8BACI,kBAGJ,gHACI,aAGJ,uBACI,iBAGJ,eACI,qBACA,sBACA,gBACA,yBACA,kBACA,oBACA,cAEA,4FAII,yCACA,aAIR,0FAEI,aAGJ,uCACI,gBACA,UACA,YACA,WACA,yBACA,2BAGJ,+CACI,6OAGJ,oEACI,UACA,WACA,YACA,qBACA,gBACA,yCAGJ,oCACI,cAGJ,qBACI,sBACA,gBACA,WAGJ,uBACI,cACA,aACA,YACA,UACA,eACA,gBACA,gBACA,gBACA,cACA,cAEA,0CACI,WACA,YAGJ,gDACI,yBACA,mBACA,WAGJ,sDACI,mBCrMR,YACI,eACA,yBACA,kBACA,iBACA,mBACA,kBACA,eAEA,kBACI,mBAIR,aACI,aACA,yBACA,SACA,gBAGJ,mCACI,kBACA,oBAEA,qFAEI,WACA,cACA,kBACA,QACA,SACA,+BAGJ,2CACI,UACA,0BAGJ,0CACI,WACA,2BAIR,uCAEI,kBACA,yBACA,kBACA,mBAGJ,uBACI,kBACA,YAEA,6BACI,iBAIR,kCACI,iBAGJ,qCACI,cACA,kBACA,YACA,kBACA,mBAGJ,4BACI,kBACA,cACA,iBACA,UAKA,4BACI,WACA,qBACA,6BACA,oCACA,qCACA,sBAGJ,0BACI,eAIR,uEAGI,kBACA,MACA,YAGJ,oBACI,QACA,OACA,iBAGJ,0BACI,QACA,WACA,mBAGJ,yBACI,OACA,WACA,mBAGJ,sBACI,kBACA,MACA,QACA,SACA,WACA,iBAGJ,gFAGI,kBACA,YACA,YACA,iBAGJ,uBACI,QACA,OAGJ,6BACI,QACA,WACA,mBAGJ,4BACI,OACA,WACA,mBAGJ,qBACI,kBACA,MACA,SACA,OACA,WACA,iBCnKJ,WACI,cACA,kBACA,yBACA,MACA,OACA,sGACA,mBACA,6CACA,aAGJ,gBACI,aACA,mBACA,mBACA,gBACA,YACA,mBAGJ,oBACI,aACA,yBAGJ,iBACI,YACA,kBACA,kBAGJ,kBACI,YACA,YACA,WACA,eAGJ,+CAEI,qBACA,sBAGJ,uBACI,aACA,2DAGJ,wBACI,kBACA,iBACA,gBACA,mBACA,WACI,mLAWR,kBACI,cACA,kBACA,gBACA,iBACA,UACA,WACA,sBACA,kBAGJ,0CACI,8BACA,6BAGJ,qDAEI,aACA,oBACA,WAGJ,6BACI,iBACA,4EAGJ,wBACI,kBACA,4EAGJ,cACI,cAGJ,2CACI,yCAGJ,sCACI,yCAGJ,0BACI,kBACA,sBAEA,mEAEI,WACA,cACA,kBACA,oBACA,UACA,0BAGJ,iCACI,QAIR,4DAEI,YACA,YAGJ,8BACI,aAGJ,wDAEI,UAGJ,2BACI,aACA,gBACA,gBAGJ,oDACI,aACA,sBACA,8BACA,YACA,UAGJ,wDACI,aACA,mBACA,kBAEA,4DACI,YAIR,kDACI,YAGJ,yDACI,oCAGJ,yDACI,oCAGJ,yDACI,oCAGJ,yDACI,oCAGJ,yDACI,oCAGJ,yDACI,oCAGJ,yDACI,oCAGJ,2BACI,WAGJ,mBACI,oBAGJ,yBACI,iBACA,aAGJ,0CACI,UACA,iBACA,sBACA","file":"ueb-style.min.css"}

251
dist/ueblueprint.js vendored
View File

@@ -139,7 +139,13 @@ class SVGIcon {
static genericPin = y` static genericPin = y`
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"> <svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<circle class="ueb-pin-tofill" cx="16" cy="16" r="13" fill="black" stroke="currentColor" stroke-width="5" /> <circle class="ueb-pin-tofill" cx="16" cy="16" r="13" fill="black" stroke="currentColor" stroke-width="5" />
<path d="M 34 6 L 34 26 L 42 16 Z" fill="currentColor" /> <path fill="currentColor" d="M 34 6 L 34 26 L 42 16 Z" />
</svg>
`
static keyboard = y `
<svg viewBox="0 -3 16 16" xmlns="http://www.w3.org/2000/svg">
<path fill="white" d="M 1 10 H 15 c 0.2652 0 0.5195 -0.1054 0.707 -0.293 c 0.1875 -0.1875 0.293 -0.4418 0.293 -0.707 v -8 c 0 -0.2652 -0.1054 -0.5195 -0.293 -0.707 c -0.1875 -0.1875 -0.4418 -0.293 -0.707 -0.293 H 1 c -0.2652 0 -0.5195 0.1054 -0.707 0.293 c -0.1875 0.1875 -0.293 0.4418 -0.293 0.707 V 9 c 0 0.2652 0.1054 0.5195 0.293 0.707 c 0.1875 0.1875 0.4418 0.293 0.707 0.293 Z M 14 6 h -3 v -2 h 3 v 2 Z M 13 1 h 2 v 2 h -2 v -2 Z M 10 1 h 2 v 2 h -2 v -2 Z M 10 6 h -2 v -2 h 2 v 2 Z M 7 1 h 2 v 2 h -2 v -2 Z M 7 6 h -2 v -2 h 2 v 2 Z M 4 1 h 2 v 2 h -2 v -2 Z M 4 6 h -2 v -2 h 2 v 2 Z M 1 1 h 2 v 2 h -2 v -2 Z M 1 7 h 2 v 2 h -2 v -2 M 4 7 h 8 v 2 h -8 v -2 M 13 7 h 2 v 2 h -2 v -2 Z" />
</svg> </svg>
` `
@@ -230,6 +236,13 @@ class SVGIcon {
</svg> </svg>
` `
static mouse = y`
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.5" fill-rule="evenodd" clip-rule="evenodd" d="M8.85714 8.34043H14L13.9143 6.6383H8.85714V0H7.14286V6.6383H2.08571L2 8.34043H7.14286H8.85714Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.85714 0C11 0.595745 13.4 3.31915 13.9143 6.6383H8.85714V0ZM7.14286 0C5 0.595745 2.6 3.31915 2.08571 6.6383H7.14286V0ZM8.85714 8.34043H7.14286H2C2 12.5957 3.02857 16 8 16C12.9714 16 14 12.5957 14 8.34043H8.85714Z" fill="white"/>
</svg>
`
static referencePin = y` static referencePin = y`
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"> <svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<polygon class="ueb-pin-tofill" points="4 16 16 4 28 16 16 28" stroke="currentColor" stroke-width="5" /> <polygon class="ueb-pin-tofill" points="4 16 16 4 28 16 16 28" stroke="currentColor" stroke-width="5" />
@@ -366,6 +379,23 @@ class Utility {
return num.toFixed(decimals) return num.toFixed(decimals)
} }
/** @param {String} value */
static numberFromText(value = "") {
value = value.toLowerCase();
switch(value) {
case "zero": return 0
case "one": return 1
case "two": return 2
case "three": return 3
case "four": return 4
case "five": return 5
case "six": return 6
case "seven": return 7
case "eight": return 8
case "nine": return 9
}
}
/** /**
* @param {Number} num * @param {Number} num
* @param {Number} decimals * @param {Number} decimals
@@ -738,6 +768,18 @@ class Configuration {
"text": i$3`226, 121, 167`, "text": i$3`226, 121, 167`,
"wildcard": i$3`128, 120, 120`, "wildcard": i$3`128, 120, 120`,
} }
static #keyName = {
"A_AccentGrave": "à",
"E_AccentGrave": "è",
"E_AccentAigu": "é",
"Add": "Num +",
"Decimal": "Num .",
"Divide": "Num /",
"Multiply": "Num *",
"Subtract": "Num -",
"Section": "§",
"C_Cedille": "ç",
}
static alphaPattern = "repeating-conic-gradient(#7c8184 0% 25%, #c2c3c4 0% 50%) 50% / 10px 10px" static alphaPattern = "repeating-conic-gradient(#7c8184 0% 25%, #c2c3c4 0% 50%) 50% / 10px 10px"
static colorDragEventName = "ueb-color-drag" static colorDragEventName = "ueb-color-drag"
static colorPickEventName = "ueb-color-pick" static colorPickEventName = "ueb-color-pick"
@@ -768,6 +810,28 @@ class Configuration {
static gridShrinkThreshold = 4 // exceding size factor threshold to cause a shrink event static gridShrinkThreshold = 4 // exceding size factor threshold to cause a shrink event
static gridSize = 16 // px static gridSize = 16 // px
static hexColorRegex = /^\s*#(?<r>[0-9a-fA-F]{2})(?<g>[0-9a-fA-F]{2})(?<b>[0-9a-fA-F]{2})([0-9a-fA-F]{2})?|#(?<rs>[0-9a-fA-F])(?<gs>[0-9a-fA-F])(?<bs>[0-9a-fA-F])\s*$/ static hexColorRegex = /^\s*#(?<r>[0-9a-fA-F]{2})(?<g>[0-9a-fA-F]{2})(?<b>[0-9a-fA-F]{2})([0-9a-fA-F]{2})?|#(?<rs>[0-9a-fA-F])(?<gs>[0-9a-fA-F])(?<bs>[0-9a-fA-F])\s*$/
/** @param {String} value */
static keyName(value) {
let result = Configuration.#keyName[value];
if (result) {
return result
}
result = Utility.numberFromText(value);
if (result) {
return result
}
const match = value.match(/NumPad([a-zA-Z]+)/);
if (match) {
result = Utility.numberFromText(match[1]);
if (result) {
return "Num " + result
}
}
}
/** @param {NodeElement} node */
static hidAttribute(node) {
return node.entity.InputKey ?? node.entity.AxisKey ?? node.entity.InputAxisKey
}
static keysSeparator = "+" static keysSeparator = "+"
static linkCurveHeight = 15 // px static linkCurveHeight = 15 // px
static linkCurveWidth = 80 // px static linkCurveWidth = 80 // px
@@ -791,7 +855,9 @@ class Configuration {
switch (node.getType()) { switch (node.getType()) {
case Configuration.nodeType.doN: return SVGIcon.doN case Configuration.nodeType.doN: return SVGIcon.doN
case Configuration.nodeType.dynamicCast: return SVGIcon.cast case Configuration.nodeType.dynamicCast: return SVGIcon.cast
case Configuration.nodeType.event: return SVGIcon.event case Configuration.nodeType.event:
case Configuration.nodeType.customEvent:
return SVGIcon.event
case Configuration.nodeType.executionSequence: return SVGIcon.sequence case Configuration.nodeType.executionSequence: return SVGIcon.sequence
case Configuration.nodeType.forEachElementInEnum: return SVGIcon.loop case Configuration.nodeType.forEachElementInEnum: return SVGIcon.loop
case Configuration.nodeType.forEachLoop: return SVGIcon.forEachLoop case Configuration.nodeType.forEachLoop: return SVGIcon.forEachLoop
@@ -811,19 +877,27 @@ class Configuration {
if (node.entity.getClass() === Configuration.nodeType.macro) { if (node.entity.getClass() === Configuration.nodeType.macro) {
return SVGIcon.macro return SVGIcon.macro
} }
if (Configuration.hidAttribute(node)?.toString().includes("Mouse")) {
return SVGIcon.mouse
}
return SVGIcon.functionSymbol return SVGIcon.functionSymbol
} }
/** @param {NodeElement} node */ /** @param {NodeElement} node */
static nodeColor(node) { static nodeColor(node) {
const functionColor = i$3`84, 122, 156`; const functionColor = i$3`84, 122, 156`; // Blue
const pureFunctionColor = i$3`95, 129, 90`; const pureFunctionColor = i$3`95, 129, 90`; // Green
const eventColor = i$3`151, 33, 32`; // Red
switch (node.entity.getClass()) { switch (node.entity.getClass()) {
case Configuration.nodeType.callFunction: case Configuration.nodeType.callFunction:
return node.entity.bIsPureFunc return node.entity.bIsPureFunc
? pureFunctionColor ? pureFunctionColor
: functionColor : functionColor
case Configuration.nodeType.event: case Configuration.nodeType.event:
return i$3`151, 33, 32` case Configuration.nodeType.customEvent:
case Configuration.nodeType.inputKey:
case Configuration.nodeType.inputAxisKeyEvent:
case Configuration.nodeType.inputDebugKey:
return eventColor
case Configuration.nodeType.makeArray: case Configuration.nodeType.makeArray:
case Configuration.nodeType.makeMap: case Configuration.nodeType.makeMap:
case Configuration.nodeType.select: case Configuration.nodeType.select:
@@ -831,9 +905,15 @@ class Configuration {
case Configuration.nodeType.executionSequence: case Configuration.nodeType.executionSequence:
case Configuration.nodeType.ifThenElse: case Configuration.nodeType.ifThenElse:
case Configuration.nodeType.macro: case Configuration.nodeType.macro:
return i$3`150,150,150` return i$3`150,150,150` // Gray
case Configuration.nodeType.dynamicCast: case Configuration.nodeType.dynamicCast:
return i$3`46, 104, 106` return i$3`46, 104, 106` // Turquoise
}
if (node.entity.bIsPureFunc) {
return pureFunctionColor
}
if (node.isEvent()) {
return eventColor
} }
return functionColor return functionColor
} }
@@ -892,22 +972,30 @@ class Configuration {
return `Event ${(node.entity.EventReference?.MemberName ?? "").replace(/^Receive/, "")}` return `Event ${(node.entity.EventReference?.MemberName ?? "").replace(/^Receive/, "")}`
case Configuration.nodeType.executionSequence: case Configuration.nodeType.executionSequence:
return "Sequence" return "Sequence"
case Configuration.nodeType.ifThenElse:
return "Branch"
case Configuration.nodeType.forEachElementInEnum: case Configuration.nodeType.forEachElementInEnum:
return `For Each ${node.entity.Enum.getName()}` return `For Each ${node.entity.Enum.getName()}`
case Configuration.nodeType.forEachLoopWithBreak: case Configuration.nodeType.forEachLoopWithBreak:
return "For Each Loop with Break" return "For Each Loop with Break"
case Configuration.nodeType.ifThenElse:
return "Branch"
case Configuration.nodeType.variableGet: case Configuration.nodeType.variableGet:
return "" return ""
case Configuration.nodeType.variableSet: case Configuration.nodeType.variableSet:
return "SET" return "SET"
default: }
if (node.entity.getClass() === Configuration.nodeType.macro) { const keyNameSymbol = Configuration.hidAttribute(node);
return Utility.formatStringName(node.entity.MacroGraphReference.getMacroName()) if (keyNameSymbol) {
} else { const keyName = keyNameSymbol.toString();
return Utility.formatStringName(node.entity.getNameAndCounter()[0]) let title = Configuration.keyName(keyName) ?? Utility.formatStringName(keyName);
} if (node.entity.getClass() === Configuration.nodeType.inputDebugKey) {
title = "Debug Key " + title;
}
return title
}
if (node.entity.getClass() === Configuration.nodeType.macro) {
return Utility.formatStringName(node.entity.MacroGraphReference.getMacroName())
} else {
return Utility.formatStringName(node.entity.getNameAndCounter()[0])
} }
} }
static nodeRadius = 8 // px static nodeRadius = 8 // px
@@ -928,7 +1016,11 @@ class Configuration {
forLoop: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForLoop", forLoop: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForLoop",
forLoopWithBreak: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForLoopWithBreak", forLoopWithBreak: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForLoopWithBreak",
functionEntry: "/Script/BlueprintGraph.K2Node_FunctionEntry", functionEntry: "/Script/BlueprintGraph.K2Node_FunctionEntry",
getInputAxisKeyValue: "/Script/BlueprintGraph.K2Node_GetInputAxisKeyValue",
ifThenElse: "/Script/BlueprintGraph.K2Node_IfThenElse", ifThenElse: "/Script/BlueprintGraph.K2Node_IfThenElse",
inputAxisKeyEvent: "/Script/BlueprintGraph.K2Node_InputAxisKeyEvent",
inputDebugKey: "/Script/InputBlueprintNodes.K2Node_InputDebugKey",
inputKey: "/Script/BlueprintGraph.K2Node_InputKey",
knot: "/Script/BlueprintGraph.K2Node_Knot", knot: "/Script/BlueprintGraph.K2Node_Knot",
macro: "/Script/BlueprintGraph.K2Node_MacroInstance", macro: "/Script/BlueprintGraph.K2Node_MacroInstance",
makeArray: "/Script/BlueprintGraph.K2Node_MakeArray", makeArray: "/Script/BlueprintGraph.K2Node_MakeArray",
@@ -1244,12 +1336,6 @@ class IEntity {
/** @type {AttributeInformation} */ /** @type {AttributeInformation} */
let attribute = attributes[attributeName]; let attribute = attributes[attributeName];
if (!attribute) {
// Remember attributeName can come from the values and be not defined in the attributes
target[attributeName] = value;
continue
}
if (attribute instanceof SubAttributesDeclaration) { if (attribute instanceof SubAttributesDeclaration) {
target[attributeName] = {}; target[attributeName] = {};
defineAllAttributes( defineAllAttributes(
@@ -1279,6 +1365,12 @@ class IEntity {
} }
} }
if (!attribute) {
// Remember attributeName can come from the values and be not defined in the attributes
target[attributeName] = value;
continue
}
let defaultValue = attribute.value; let defaultValue = attribute.value;
let defaultType = attribute.type; let defaultType = attribute.type;
if (attribute.serialized && defaultType instanceof Function) { if (attribute.serialized && defaultType instanceof Function) {
@@ -1501,6 +1593,14 @@ class SymbolEntity extends IEntity {
super(values); super(values);
/** @type {String} */ this.value; /** @type {String} */ this.value;
} }
valueOf() {
return this.value
}
toString() {
return this.value
}
} }
class EnumEntity extends SymbolEntity { class EnumEntity extends SymbolEntity {
@@ -1541,7 +1641,10 @@ class FunctionReferenceEntity extends IEntity {
type: ObjectReferenceEntity, type: ObjectReferenceEntity,
showDefault: false showDefault: false
}, },
MemberName: "", MemberName: {
type: String,
showDefault: false,
},
} }
static { static {
@@ -2452,10 +2555,9 @@ class PinEntity extends IEntity {
&& pinReferenceEntity.pinGuid.valueOf() == targetPinEntity.PinId.valueOf() && pinReferenceEntity.pinGuid.valueOf() == targetPinEntity.PinId.valueOf()
}); });
if (indexElement >= 0) { if (indexElement >= 0) {
if (this.LinkedTo.length == 1) { this.LinkedTo.splice(indexElement, 1);
if (this.LinkedTo.length === 0 && !PinEntity.attributes.LinkedTo.showDefault) {
this.LinkedTo = undefined; this.LinkedTo = undefined;
} else {
this.LinkedTo.splice(indexElement, 1);
} }
return true return true
} }
@@ -2503,6 +2605,14 @@ class ObjectEntity extends IEntity {
type: ObjectReferenceEntity, type: ObjectReferenceEntity,
}, },
Name: "", Name: "",
AxisKey: {
type: SymbolEntity,
showDefault: false,
},
InputAxisKey: {
type: SymbolEntity,
showDefault: false,
},
bIsPureFunc: { bIsPureFunc: {
value: false, value: false,
showDefault: false, showDefault: false,
@@ -2521,14 +2631,18 @@ class ObjectEntity extends IEntity {
value: null, value: null,
showDefault: false, showDefault: false,
}, },
EventReference: {
type: FunctionReferenceEntity,
value: null,
showDefault: false,
},
FunctionReference: { FunctionReference: {
type: FunctionReferenceEntity, type: FunctionReferenceEntity,
value: null, value: null,
showDefault: false, showDefault: false,
}, },
EventReference: { CustomFunctionName: {
type: FunctionReferenceEntity, type: String,
value: null,
showDefault: false, showDefault: false,
}, },
TargetType: { TargetType: {
@@ -2545,6 +2659,46 @@ class ObjectEntity extends IEntity {
type: ObjectReferenceEntity, type: ObjectReferenceEntity,
showDefault: false, showDefault: false,
}, },
InputKey: {
type: SymbolEntity,
showDefault: false,
},
bOverrideFunction: {
type: Boolean,
showDefault: false,
},
bInternalEvent: {
type: Boolean,
showDefault: false,
},
bConsumeInput: {
type: Boolean,
showDefault: false,
},
bExecuteWhenPaused: {
type: Boolean,
showDefault: false,
},
bOverrideParentBinding: {
type: Boolean,
showDefault: false,
},
bControl: {
type: Boolean,
showDefault: false,
},
bAlt: {
type: Boolean,
showDefault: false,
},
bShift: {
type: Boolean,
showDefault: false,
},
bCommand: {
type: Boolean,
showDefault: false,
},
CommentColor: { CommentColor: {
type: LinearColorEntity, type: LinearColorEntity,
showDefault: false, showDefault: false,
@@ -2628,9 +2782,15 @@ class ObjectEntity extends IEntity {
super(values, suppressWarns); super(values, suppressWarns);
/** @type {ObjectReferenceEntity} */ this.Class; /** @type {ObjectReferenceEntity} */ this.Class;
/** @type {String} */ this.Name; /** @type {String} */ this.Name;
/** @type {SymbolEntity?} */ this.AxisKey;
/** @type {SymbolEntity?} */ this.InputAxisKey;
/** @type {SymbolEntity?} */ this.InputKey;
/** @type {Boolean?} */ this.bIsPureFunc; /** @type {Boolean?} */ this.bIsPureFunc;
/** @type {Boolean?} */ this.bIsConstFunc;
/** @type {VariableReferenceEntity?} */ this.VariableReference; /** @type {VariableReferenceEntity?} */ this.VariableReference;
/** @type {SymbolEntity?} */ this.SelfContextInfo;
/** @type {FunctionReferenceEntity?} */ this.FunctionReference; /** @type {FunctionReferenceEntity?} */ this.FunctionReference;
/** @type {String} */ this.CustomFunctionName;
/** @type {FunctionReferenceEntity?} */ this.EventReference; /** @type {FunctionReferenceEntity?} */ this.EventReference;
/** @type {ObjectReferenceEntity?} */ this.TargetType; /** @type {ObjectReferenceEntity?} */ this.TargetType;
/** @type {MacroGraphReferenceEntity?} */ this.MacroGraphReference; /** @type {MacroGraphReferenceEntity?} */ this.MacroGraphReference;
@@ -2727,7 +2887,7 @@ class ObjectEntity extends IEntity {
if (!this.NodePosX) { if (!this.NodePosX) {
this.NodePosX = new IntegerEntity(); this.NodePosX = new IntegerEntity();
} }
this.NodePosX.value = value; this.NodePosX.value = Math.round(value);
} }
getNodePosY() { getNodePosY() {
@@ -2739,7 +2899,17 @@ class ObjectEntity extends IEntity {
if (!this.NodePosY) { if (!this.NodePosY) {
this.NodePosY = new IntegerEntity(); this.NodePosY = new IntegerEntity();
} }
this.NodePosY.value = value; this.NodePosY.value = Math.round(value);
}
isDevelopmentOnly() {
const nodeClass = this.getClass();
return this.EnabledState?.toString() === "DevelopmentOnly"
|| nodeClass.includes("Debug", Math.max(0, nodeClass.lastIndexOf(".")))
}
getDelegatePin() {
return this.CustomProperties?.find(pin => pin.PinType.PinCategory === "delegate")
} }
} }
@@ -3372,6 +3542,7 @@ class ISerializer {
} }
/** /**
* @protected
* @param {String} value * @param {String} value
* @returns {T} * @returns {T}
*/ */
@@ -3380,6 +3551,7 @@ class ISerializer {
} }
/** /**
* @protected
* @param {T} object * @param {T} object
* @param {Boolean} insideString * @param {Boolean} insideString
* @returns {String} * @returns {String}
@@ -3389,12 +3561,14 @@ class ISerializer {
} }
/** /**
* @protected
* @param {AnyValue} value * @param {AnyValue} value
* @param {String[]} fullKey * @param {String[]} fullKey
* @param {Boolean} insideString * @param {Boolean} insideString
*/ */
writeValue(entity, value, fullKey, insideString) { writeValue(entity, value, fullKey, insideString) {
const type = Utility.getType(value); const type = Utility.getType(value);
// @ts-expect-error
const serializer = SerializerFactory.getSerializer(type); const serializer = SerializerFactory.getSerializer(type);
if (!serializer) { if (!serializer) {
throw new Error(`Unknown value type "${type.name}", a serializer must be registered in the SerializerFactory class, check initializeSerializerFactory.js`) throw new Error(`Unknown value type "${type.name}", a serializer must be registered in the SerializerFactory class, check initializeSerializerFactory.js`)
@@ -3407,6 +3581,7 @@ class ISerializer {
} }
/** /**
* @protected
* @param {String[]} key * @param {String[]} key
* @param {Object} object * @param {Object} object
* @param {Boolean} insideString * @param {Boolean} insideString
@@ -5767,7 +5942,7 @@ class NodeTemplate extends ISelectableDraggableTemplate {
<div class="ueb-node-inputs"></div> <div class="ueb-node-inputs"></div>
<div class="ueb-node-outputs"></div> <div class="ueb-node-outputs"></div>
</div> </div>
${this.element.enabledState?.toString() == "DevelopmentOnly" ? y` ${this.element.entity.isDevelopmentOnly() ? y`
<div class="ueb-node-developmentonly"> <div class="ueb-node-developmentonly">
<span class="ueb-node-developmentonly-text">Development Only</span> <span class="ueb-node-developmentonly-text">Development Only</span>
</div> </div>
@@ -6832,13 +7007,17 @@ class NodeElement extends ISelectableDraggableElement {
} }
switch (nodeEntity.getClass()) { switch (nodeEntity.getClass()) {
case Configuration.nodeType.comment: case Configuration.nodeType.comment:
case Configuration.nodeType.customEvent:
return CommentNodeTemplate return CommentNodeTemplate
case Configuration.nodeType.event: return EventNodeTemplate case Configuration.nodeType.event:
case Configuration.nodeType.customEvent:
return EventNodeTemplate
case Configuration.nodeType.knot: return KnotNodeTemplate case Configuration.nodeType.knot: return KnotNodeTemplate
case Configuration.nodeType.variableGet: return VariableAccessNodeTemplate case Configuration.nodeType.variableGet: return VariableAccessNodeTemplate
case Configuration.nodeType.variableSet: return VariableAccessNodeTemplate case Configuration.nodeType.variableSet: return VariableAccessNodeTemplate
} }
if (nodeEntity.getDelegatePin()) {
return EventNodeTemplate
}
return NodeTemplate return NodeTemplate
} }
@@ -6974,6 +7153,10 @@ class NodeElement extends ISelectableDraggableElement {
super.setLocation(x, y, acknowledge); super.setLocation(x, y, acknowledge);
} }
isEvent() {
return this.template instanceof EventNodeTemplate
}
acknowledgeReflow() { acknowledgeReflow() {
this.requestUpdate(); this.requestUpdate();
this.updateComplete.then(() => this.computeSizes()); this.updateComplete.then(() => this.computeSizes());
@@ -8812,7 +8995,7 @@ class PinElement extends IElement {
/** @param {IElement[]} nodesWhitelist */ /** @param {IElement[]} nodesWhitelist */
sanitizeLinks(nodesWhitelist = []) { sanitizeLinks(nodesWhitelist = []) {
this.entity.LinkedTo = this.getLinks().filter(pinReference => { this.entity.LinkedTo = this.entity.LinkedTo?.filter(pinReference => {
let pin = this.blueprint.getPin(pinReference); let pin = this.blueprint.getPin(pinReference);
if (pin) { if (pin) {
if (nodesWhitelist.length && !nodesWhitelist.includes(pin.nodeElement)) { if (nodesWhitelist.length && !nodesWhitelist.includes(pin.nodeElement)) {

File diff suppressed because one or more lines are too long

View File

@@ -31,6 +31,18 @@ export default class Configuration {
"text": css`226, 121, 167`, "text": css`226, 121, 167`,
"wildcard": css`128, 120, 120`, "wildcard": css`128, 120, 120`,
} }
static #keyName = {
"A_AccentGrave": "à",
"E_AccentGrave": "è",
"E_AccentAigu": "é",
"Add": "Num +",
"Decimal": "Num .",
"Divide": "Num /",
"Multiply": "Num *",
"Subtract": "Num -",
"Section": "§",
"C_Cedille": "ç",
}
static alphaPattern = "repeating-conic-gradient(#7c8184 0% 25%, #c2c3c4 0% 50%) 50% / 10px 10px" static alphaPattern = "repeating-conic-gradient(#7c8184 0% 25%, #c2c3c4 0% 50%) 50% / 10px 10px"
static colorDragEventName = "ueb-color-drag" static colorDragEventName = "ueb-color-drag"
static colorPickEventName = "ueb-color-pick" static colorPickEventName = "ueb-color-pick"
@@ -61,6 +73,28 @@ export default class Configuration {
static gridShrinkThreshold = 4 // exceding size factor threshold to cause a shrink event static gridShrinkThreshold = 4 // exceding size factor threshold to cause a shrink event
static gridSize = 16 // px static gridSize = 16 // px
static hexColorRegex = /^\s*#(?<r>[0-9a-fA-F]{2})(?<g>[0-9a-fA-F]{2})(?<b>[0-9a-fA-F]{2})([0-9a-fA-F]{2})?|#(?<rs>[0-9a-fA-F])(?<gs>[0-9a-fA-F])(?<bs>[0-9a-fA-F])\s*$/ static hexColorRegex = /^\s*#(?<r>[0-9a-fA-F]{2})(?<g>[0-9a-fA-F]{2})(?<b>[0-9a-fA-F]{2})([0-9a-fA-F]{2})?|#(?<rs>[0-9a-fA-F])(?<gs>[0-9a-fA-F])(?<bs>[0-9a-fA-F])\s*$/
/** @param {String} value */
static keyName(value) {
let result = Configuration.#keyName[value]
if (result) {
return result
}
result = Utility.numberFromText(value)
if (result) {
return result
}
const match = value.match(/NumPad([a-zA-Z]+)/)
if (match) {
result = Utility.numberFromText(match[1])
if (result) {
return "Num " + result
}
}
}
/** @param {NodeElement} node */
static hidAttribute(node) {
return node.entity.InputKey ?? node.entity.AxisKey ?? node.entity.InputAxisKey
}
static keysSeparator = "+" static keysSeparator = "+"
static linkCurveHeight = 15 // px static linkCurveHeight = 15 // px
static linkCurveWidth = 80 // px static linkCurveWidth = 80 // px
@@ -84,7 +118,9 @@ export default class Configuration {
switch (node.getType()) { switch (node.getType()) {
case Configuration.nodeType.doN: return SVGIcon.doN case Configuration.nodeType.doN: return SVGIcon.doN
case Configuration.nodeType.dynamicCast: return SVGIcon.cast case Configuration.nodeType.dynamicCast: return SVGIcon.cast
case Configuration.nodeType.event: return SVGIcon.event case Configuration.nodeType.event:
case Configuration.nodeType.customEvent:
return SVGIcon.event
case Configuration.nodeType.executionSequence: return SVGIcon.sequence case Configuration.nodeType.executionSequence: return SVGIcon.sequence
case Configuration.nodeType.forEachElementInEnum: return SVGIcon.loop case Configuration.nodeType.forEachElementInEnum: return SVGIcon.loop
case Configuration.nodeType.forEachLoop: return SVGIcon.forEachLoop case Configuration.nodeType.forEachLoop: return SVGIcon.forEachLoop
@@ -104,19 +140,27 @@ export default class Configuration {
if (node.entity.getClass() === Configuration.nodeType.macro) { if (node.entity.getClass() === Configuration.nodeType.macro) {
return SVGIcon.macro return SVGIcon.macro
} }
if (Configuration.hidAttribute(node)?.toString().includes("Mouse")) {
return SVGIcon.mouse
}
return SVGIcon.functionSymbol return SVGIcon.functionSymbol
} }
/** @param {NodeElement} node */ /** @param {NodeElement} node */
static nodeColor(node) { static nodeColor(node) {
const functionColor = css`84, 122, 156` const functionColor = css`84, 122, 156` // Blue
const pureFunctionColor = css`95, 129, 90` const pureFunctionColor = css`95, 129, 90` // Green
const eventColor = css`151, 33, 32` // Red
switch (node.entity.getClass()) { switch (node.entity.getClass()) {
case Configuration.nodeType.callFunction: case Configuration.nodeType.callFunction:
return node.entity.bIsPureFunc return node.entity.bIsPureFunc
? pureFunctionColor ? pureFunctionColor
: functionColor : functionColor
case Configuration.nodeType.event: case Configuration.nodeType.event:
return css`151, 33, 32` case Configuration.nodeType.customEvent:
case Configuration.nodeType.inputKey:
case Configuration.nodeType.inputAxisKeyEvent:
case Configuration.nodeType.inputDebugKey:
return eventColor
case Configuration.nodeType.makeArray: case Configuration.nodeType.makeArray:
case Configuration.nodeType.makeMap: case Configuration.nodeType.makeMap:
case Configuration.nodeType.select: case Configuration.nodeType.select:
@@ -124,9 +168,15 @@ export default class Configuration {
case Configuration.nodeType.executionSequence: case Configuration.nodeType.executionSequence:
case Configuration.nodeType.ifThenElse: case Configuration.nodeType.ifThenElse:
case Configuration.nodeType.macro: case Configuration.nodeType.macro:
return css`150,150,150` return css`150,150,150` // Gray
case Configuration.nodeType.dynamicCast: case Configuration.nodeType.dynamicCast:
return css`46, 104, 106` return css`46, 104, 106` // Turquoise
}
if (node.entity.bIsPureFunc) {
return pureFunctionColor
}
if (node.isEvent()) {
return eventColor
} }
return functionColor return functionColor
} }
@@ -185,22 +235,30 @@ export default class Configuration {
return `Event ${(node.entity.EventReference?.MemberName ?? "").replace(/^Receive/, "")}` return `Event ${(node.entity.EventReference?.MemberName ?? "").replace(/^Receive/, "")}`
case Configuration.nodeType.executionSequence: case Configuration.nodeType.executionSequence:
return "Sequence" return "Sequence"
case Configuration.nodeType.ifThenElse:
return "Branch"
case Configuration.nodeType.forEachElementInEnum: case Configuration.nodeType.forEachElementInEnum:
return `For Each ${node.entity.Enum.getName()}` return `For Each ${node.entity.Enum.getName()}`
case Configuration.nodeType.forEachLoopWithBreak: case Configuration.nodeType.forEachLoopWithBreak:
return "For Each Loop with Break" return "For Each Loop with Break"
case Configuration.nodeType.ifThenElse:
return "Branch"
case Configuration.nodeType.variableGet: case Configuration.nodeType.variableGet:
return "" return ""
case Configuration.nodeType.variableSet: case Configuration.nodeType.variableSet:
return "SET" return "SET"
default: }
if (node.entity.getClass() === Configuration.nodeType.macro) { const keyNameSymbol = Configuration.hidAttribute(node)
return Utility.formatStringName(node.entity.MacroGraphReference.getMacroName()) if (keyNameSymbol) {
} else { const keyName = keyNameSymbol.toString()
return Utility.formatStringName(node.entity.getNameAndCounter()[0]) let title = Configuration.keyName(keyName) ?? Utility.formatStringName(keyName)
} if (node.entity.getClass() === Configuration.nodeType.inputDebugKey) {
title = "Debug Key " + title
}
return title
}
if (node.entity.getClass() === Configuration.nodeType.macro) {
return Utility.formatStringName(node.entity.MacroGraphReference.getMacroName())
} else {
return Utility.formatStringName(node.entity.getNameAndCounter()[0])
} }
} }
static nodeRadius = 8 // px static nodeRadius = 8 // px
@@ -221,7 +279,11 @@ export default class Configuration {
forLoop: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForLoop", forLoop: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForLoop",
forLoopWithBreak: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForLoopWithBreak", forLoopWithBreak: "/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForLoopWithBreak",
functionEntry: "/Script/BlueprintGraph.K2Node_FunctionEntry", functionEntry: "/Script/BlueprintGraph.K2Node_FunctionEntry",
getInputAxisKeyValue: "/Script/BlueprintGraph.K2Node_GetInputAxisKeyValue",
ifThenElse: "/Script/BlueprintGraph.K2Node_IfThenElse", ifThenElse: "/Script/BlueprintGraph.K2Node_IfThenElse",
inputAxisKeyEvent: "/Script/BlueprintGraph.K2Node_InputAxisKeyEvent",
inputDebugKey: "/Script/InputBlueprintNodes.K2Node_InputDebugKey",
inputKey: "/Script/BlueprintGraph.K2Node_InputKey",
knot: "/Script/BlueprintGraph.K2Node_Knot", knot: "/Script/BlueprintGraph.K2Node_Knot",
macro: "/Script/BlueprintGraph.K2Node_MacroInstance", macro: "/Script/BlueprintGraph.K2Node_MacroInstance",
makeArray: "/Script/BlueprintGraph.K2Node_MakeArray", makeArray: "/Script/BlueprintGraph.K2Node_MakeArray",

View File

@@ -115,7 +115,13 @@ export default class SVGIcon {
static genericPin = html` static genericPin = html`
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"> <svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<circle class="ueb-pin-tofill" cx="16" cy="16" r="13" fill="black" stroke="currentColor" stroke-width="5" /> <circle class="ueb-pin-tofill" cx="16" cy="16" r="13" fill="black" stroke="currentColor" stroke-width="5" />
<path d="M 34 6 L 34 26 L 42 16 Z" fill="currentColor" /> <path fill="currentColor" d="M 34 6 L 34 26 L 42 16 Z" />
</svg>
`
static keyboard = html `
<svg viewBox="0 -3 16 16" xmlns="http://www.w3.org/2000/svg">
<path fill="white" d="M 1 10 H 15 c 0.2652 0 0.5195 -0.1054 0.707 -0.293 c 0.1875 -0.1875 0.293 -0.4418 0.293 -0.707 v -8 c 0 -0.2652 -0.1054 -0.5195 -0.293 -0.707 c -0.1875 -0.1875 -0.4418 -0.293 -0.707 -0.293 H 1 c -0.2652 0 -0.5195 0.1054 -0.707 0.293 c -0.1875 0.1875 -0.293 0.4418 -0.293 0.707 V 9 c 0 0.2652 0.1054 0.5195 0.293 0.707 c 0.1875 0.1875 0.4418 0.293 0.707 0.293 Z M 14 6 h -3 v -2 h 3 v 2 Z M 13 1 h 2 v 2 h -2 v -2 Z M 10 1 h 2 v 2 h -2 v -2 Z M 10 6 h -2 v -2 h 2 v 2 Z M 7 1 h 2 v 2 h -2 v -2 Z M 7 6 h -2 v -2 h 2 v 2 Z M 4 1 h 2 v 2 h -2 v -2 Z M 4 6 h -2 v -2 h 2 v 2 Z M 1 1 h 2 v 2 h -2 v -2 Z M 1 7 h 2 v 2 h -2 v -2 M 4 7 h 8 v 2 h -8 v -2 M 13 7 h 2 v 2 h -2 v -2 Z" />
</svg> </svg>
` `
@@ -206,6 +212,13 @@ export default class SVGIcon {
</svg> </svg>
` `
static mouse = html`
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.5" fill-rule="evenodd" clip-rule="evenodd" d="M8.85714 8.34043H14L13.9143 6.6383H8.85714V0H7.14286V6.6383H2.08571L2 8.34043H7.14286H8.85714Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.85714 0C11 0.595745 13.4 3.31915 13.9143 6.6383H8.85714V0ZM7.14286 0C5 0.595745 2.6 3.31915 2.08571 6.6383H7.14286V0ZM8.85714 8.34043H7.14286H2C2 12.5957 3.02857 16 8 16C12.9714 16 14 12.5957 14 8.34043H8.85714Z" fill="white"/>
</svg>
`
static referencePin = html` static referencePin = html`
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"> <svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<polygon class="ueb-pin-tofill" points="4 16 16 4 28 16 16 28" stroke="currentColor" stroke-width="5" /> <polygon class="ueb-pin-tofill" points="4 16 16 4 28 16 16 28" stroke="currentColor" stroke-width="5" />

View File

@@ -63,6 +63,23 @@ export default class Utility {
return num.toFixed(decimals) return num.toFixed(decimals)
} }
/** @param {String} value */
static numberFromText(value = "") {
value = value.toLowerCase()
switch(value) {
case "zero": return 0
case "one": return 1
case "two": return 2
case "three": return 3
case "four": return 4
case "five": return 5
case "six": return 6
case "seven": return 7
case "eight": return 8
case "nine": return 9
}
}
/** /**
* @param {Number} num * @param {Number} num
* @param {Number} decimals * @param {Number} decimals

View File

@@ -133,13 +133,17 @@ export default class NodeElement extends ISelectableDraggableElement {
} }
switch (nodeEntity.getClass()) { switch (nodeEntity.getClass()) {
case Configuration.nodeType.comment: case Configuration.nodeType.comment:
case Configuration.nodeType.customEvent:
return CommentNodeTemplate return CommentNodeTemplate
case Configuration.nodeType.event: return EventNodeTemplate case Configuration.nodeType.event:
case Configuration.nodeType.customEvent:
return EventNodeTemplate
case Configuration.nodeType.knot: return KnotNodeTemplate case Configuration.nodeType.knot: return KnotNodeTemplate
case Configuration.nodeType.variableGet: return VariableAccessNodeTemplate case Configuration.nodeType.variableGet: return VariableAccessNodeTemplate
case Configuration.nodeType.variableSet: return VariableAccessNodeTemplate case Configuration.nodeType.variableSet: return VariableAccessNodeTemplate
} }
if (nodeEntity.getDelegatePin()) {
return EventNodeTemplate
}
return NodeTemplate return NodeTemplate
} }
@@ -275,6 +279,10 @@ export default class NodeElement extends ISelectableDraggableElement {
super.setLocation(x, y, acknowledge) super.setLocation(x, y, acknowledge)
} }
isEvent() {
return this.template instanceof EventNodeTemplate
}
acknowledgeReflow() { acknowledgeReflow() {
this.requestUpdate() this.requestUpdate()
this.updateComplete.then(() => this.computeSizes()) this.updateComplete.then(() => this.computeSizes())

View File

@@ -210,7 +210,7 @@ export default class PinElement extends IElement {
/** @param {IElement[]} nodesWhitelist */ /** @param {IElement[]} nodesWhitelist */
sanitizeLinks(nodesWhitelist = []) { sanitizeLinks(nodesWhitelist = []) {
this.entity.LinkedTo = this.getLinks().filter(pinReference => { this.entity.LinkedTo = this.entity.LinkedTo?.filter(pinReference => {
let pin = this.blueprint.getPin(pinReference) let pin = this.blueprint.getPin(pinReference)
if (pin) { if (pin) {
if (nodesWhitelist.length && !nodesWhitelist.includes(pin.nodeElement)) { if (nodesWhitelist.length && !nodesWhitelist.includes(pin.nodeElement)) {

View File

@@ -8,7 +8,10 @@ export default class FunctionReferenceEntity extends IEntity {
type: ObjectReferenceEntity, type: ObjectReferenceEntity,
showDefault: false showDefault: false
}, },
MemberName: "", MemberName: {
type: String,
showDefault: false,
},
} }
static { static {

View File

@@ -58,12 +58,6 @@ export default class IEntity {
/** @type {AttributeInformation} */ /** @type {AttributeInformation} */
let attribute = attributes[attributeName] let attribute = attributes[attributeName]
if (!attribute) {
// Remember attributeName can come from the values and be not defined in the attributes
target[attributeName] = value
continue
}
if (attribute instanceof SubAttributesDeclaration) { if (attribute instanceof SubAttributesDeclaration) {
target[attributeName] = {} target[attributeName] = {}
defineAllAttributes( defineAllAttributes(
@@ -93,6 +87,12 @@ export default class IEntity {
} }
} }
if (!attribute) {
// Remember attributeName can come from the values and be not defined in the attributes
target[attributeName] = value
continue
}
let defaultValue = attribute.value let defaultValue = attribute.value
let defaultType = attribute.type let defaultType = attribute.type
if (attribute.serialized && defaultType instanceof Function) { if (attribute.serialized && defaultType instanceof Function) {

View File

@@ -18,6 +18,14 @@ export default class ObjectEntity extends IEntity {
type: ObjectReferenceEntity, type: ObjectReferenceEntity,
}, },
Name: "", Name: "",
AxisKey: {
type: SymbolEntity,
showDefault: false,
},
InputAxisKey: {
type: SymbolEntity,
showDefault: false,
},
bIsPureFunc: { bIsPureFunc: {
value: false, value: false,
showDefault: false, showDefault: false,
@@ -36,14 +44,18 @@ export default class ObjectEntity extends IEntity {
value: null, value: null,
showDefault: false, showDefault: false,
}, },
EventReference: {
type: FunctionReferenceEntity,
value: null,
showDefault: false,
},
FunctionReference: { FunctionReference: {
type: FunctionReferenceEntity, type: FunctionReferenceEntity,
value: null, value: null,
showDefault: false, showDefault: false,
}, },
EventReference: { CustomFunctionName: {
type: FunctionReferenceEntity, type: String,
value: null,
showDefault: false, showDefault: false,
}, },
TargetType: { TargetType: {
@@ -60,6 +72,46 @@ export default class ObjectEntity extends IEntity {
type: ObjectReferenceEntity, type: ObjectReferenceEntity,
showDefault: false, showDefault: false,
}, },
InputKey: {
type: SymbolEntity,
showDefault: false,
},
bOverrideFunction: {
type: Boolean,
showDefault: false,
},
bInternalEvent: {
type: Boolean,
showDefault: false,
},
bConsumeInput: {
type: Boolean,
showDefault: false,
},
bExecuteWhenPaused: {
type: Boolean,
showDefault: false,
},
bOverrideParentBinding: {
type: Boolean,
showDefault: false,
},
bControl: {
type: Boolean,
showDefault: false,
},
bAlt: {
type: Boolean,
showDefault: false,
},
bShift: {
type: Boolean,
showDefault: false,
},
bCommand: {
type: Boolean,
showDefault: false,
},
CommentColor: { CommentColor: {
type: LinearColorEntity, type: LinearColorEntity,
showDefault: false, showDefault: false,
@@ -143,9 +195,15 @@ export default class ObjectEntity extends IEntity {
super(values, suppressWarns) super(values, suppressWarns)
/** @type {ObjectReferenceEntity} */ this.Class /** @type {ObjectReferenceEntity} */ this.Class
/** @type {String} */ this.Name /** @type {String} */ this.Name
/** @type {SymbolEntity?} */ this.AxisKey
/** @type {SymbolEntity?} */ this.InputAxisKey
/** @type {SymbolEntity?} */ this.InputKey
/** @type {Boolean?} */ this.bIsPureFunc /** @type {Boolean?} */ this.bIsPureFunc
/** @type {Boolean?} */ this.bIsConstFunc
/** @type {VariableReferenceEntity?} */ this.VariableReference /** @type {VariableReferenceEntity?} */ this.VariableReference
/** @type {SymbolEntity?} */ this.SelfContextInfo
/** @type {FunctionReferenceEntity?} */ this.FunctionReference /** @type {FunctionReferenceEntity?} */ this.FunctionReference
/** @type {String} */ this.CustomFunctionName
/** @type {FunctionReferenceEntity?} */ this.EventReference /** @type {FunctionReferenceEntity?} */ this.EventReference
/** @type {ObjectReferenceEntity?} */ this.TargetType /** @type {ObjectReferenceEntity?} */ this.TargetType
/** @type {MacroGraphReferenceEntity?} */ this.MacroGraphReference /** @type {MacroGraphReferenceEntity?} */ this.MacroGraphReference
@@ -242,7 +300,7 @@ export default class ObjectEntity extends IEntity {
if (!this.NodePosX) { if (!this.NodePosX) {
this.NodePosX = new IntegerEntity() this.NodePosX = new IntegerEntity()
} }
this.NodePosX.value = value this.NodePosX.value = Math.round(value)
} }
getNodePosY() { getNodePosY() {
@@ -254,6 +312,16 @@ export default class ObjectEntity extends IEntity {
if (!this.NodePosY) { if (!this.NodePosY) {
this.NodePosY = new IntegerEntity() this.NodePosY = new IntegerEntity()
} }
this.NodePosY.value = value this.NodePosY.value = Math.round(value)
}
isDevelopmentOnly() {
const nodeClass = this.getClass()
return this.EnabledState?.toString() === "DevelopmentOnly"
|| nodeClass.includes("Debug", Math.max(0, nodeClass.lastIndexOf(".")))
}
getDelegatePin() {
return this.CustomProperties?.find(pin => pin.PinType.PinCategory === "delegate")
} }
} }

View File

@@ -266,10 +266,9 @@ export default class PinEntity extends IEntity {
&& pinReferenceEntity.pinGuid.valueOf() == targetPinEntity.PinId.valueOf() && pinReferenceEntity.pinGuid.valueOf() == targetPinEntity.PinId.valueOf()
}) })
if (indexElement >= 0) { if (indexElement >= 0) {
if (this.LinkedTo.length == 1) { this.LinkedTo.splice(indexElement, 1)
if (this.LinkedTo.length === 0 && !PinEntity.attributes.LinkedTo.showDefault) {
this.LinkedTo = undefined this.LinkedTo = undefined
} else {
this.LinkedTo.splice(indexElement, 1)
} }
return true return true
} }

View File

@@ -14,4 +14,12 @@ export default class SymbolEntity extends IEntity {
super(values) super(values)
/** @type {String} */ this.value /** @type {String} */ this.value
} }
valueOf() {
return this.value
}
toString() {
return this.value
}
} }

View File

@@ -46,6 +46,7 @@ export default class ISerializer {
} }
/** /**
* @protected
* @param {String} value * @param {String} value
* @returns {T} * @returns {T}
*/ */
@@ -54,6 +55,7 @@ export default class ISerializer {
} }
/** /**
* @protected
* @param {T} object * @param {T} object
* @param {Boolean} insideString * @param {Boolean} insideString
* @returns {String} * @returns {String}
@@ -63,12 +65,14 @@ export default class ISerializer {
} }
/** /**
* @protected
* @param {AnyValue} value * @param {AnyValue} value
* @param {String[]} fullKey * @param {String[]} fullKey
* @param {Boolean} insideString * @param {Boolean} insideString
*/ */
writeValue(entity, value, fullKey, insideString) { writeValue(entity, value, fullKey, insideString) {
const type = Utility.getType(value) const type = Utility.getType(value)
// @ts-expect-error
const serializer = SerializerFactory.getSerializer(type) const serializer = SerializerFactory.getSerializer(type)
if (!serializer) { if (!serializer) {
throw new Error(`Unknown value type "${type.name}", a serializer must be registered in the SerializerFactory class, check initializeSerializerFactory.js`) throw new Error(`Unknown value type "${type.name}", a serializer must be registered in the SerializerFactory class, check initializeSerializerFactory.js`)
@@ -81,6 +85,7 @@ export default class ISerializer {
} }
/** /**
* @protected
* @param {String[]} key * @param {String[]} key
* @param {Object} object * @param {Object} object
* @param {Boolean} insideString * @param {Boolean} insideString

View File

@@ -46,7 +46,7 @@ export default class NodeTemplate extends ISelectableDraggableTemplate {
<div class="ueb-node-inputs"></div> <div class="ueb-node-inputs"></div>
<div class="ueb-node-outputs"></div> <div class="ueb-node-outputs"></div>
</div> </div>
${this.element.enabledState?.toString() == "DevelopmentOnly" ? html` ${this.element.entity.isDevelopmentOnly() ? html`
<div class="ueb-node-developmentonly"> <div class="ueb-node-developmentonly">
<span class="ueb-node-developmentonly-text">Development Only</span> <span class="ueb-node-developmentonly-text">Development Only</span>
</div> </div>

View File

@@ -1,7 +1,7 @@
ueb-node { ueb-node {
display: block; display: block;
position: absolute; position: absolute;
min-width: 130px; min-width: 100px;
border-radius: var(--ueb-node-radius); border-radius: var(--ueb-node-radius);
box-shadow: 0 0 1px 0 black, 1px 4px 6px 0 rgba(0, 0, 0, 0.3); box-shadow: 0 0 1px 0 black, 1px 4px 6px 0 rgba(0, 0, 0, 0.3);
font-weight: lighter; font-weight: lighter;
@@ -108,6 +108,7 @@ ueb-node.ueb-node-style-event .ueb-node-top ueb-pin {
.ueb-node-name { .ueb-node-name {
display: flex; display: flex;
align-items: center;
background: radial-gradient(ellipse 100% 100% at 40% 50%, rgba(0, 0, 0, 0.5) 20%, transparent 50%); background: radial-gradient(ellipse 100% 100% at 40% 50%, rgba(0, 0, 0, 0.5) 20%, transparent 50%);
margin: -1px -15px; margin: -1px -15px;
padding: 2px 15px; padding: 2px 15px;
@@ -156,15 +157,14 @@ ueb-node[data-pure-function="true"] .ueb-node-name-symbol {
.ueb-node-outputs { .ueb-node-outputs {
margin-left: auto; margin-left: auto;
padding-right: 8px; padding-right: 10px;
} }
.ueb-node-has-inputs .ueb-node-outputs { .ueb-node-has-inputs .ueb-node-outputs {
margin-left: 20px; margin-left: 30px;
} }
.ueb-node-developmentonly { .ueb-node-developmentonly {
display: none;
margin-top: 4px; margin-top: 4px;
padding: 2px; padding: 2px;
background: repeating-linear-gradient(-45deg, background: repeating-linear-gradient(-45deg,
@@ -183,18 +183,16 @@ ueb-node[data-pure-function="true"] .ueb-node-name-symbol {
} }
.ueb-node-developmentonly-text { .ueb-node-developmentonly-text {
padding: 0 10px;
letter-spacing: 0.04em; letter-spacing: 0.04em;
text-shadow: 1px 1px 1px black; text-shadow: 1px 1px 1px black;
white-space: nowrap;
} }
.ueb-zoom--6 .ueb-node-developmentonly-text { .ueb-zoom--6 .ueb-node-developmentonly-text {
visibility: hidden; visibility: hidden;
} }
ueb-node[data-enabled-state="DevelopmentOnly"] .ueb-node-developmentonly {
display: block;
}
.ueb-node-expansion { .ueb-node-expansion {
display: none; display: none;
text-align: center; text-align: center;