From 74eb9a5ec036d733b40ad932b0d0716213cf8376 Mon Sep 17 00:00:00 2001 From: miha-q <> Date: Thu, 1 Aug 2024 00:41:27 -0400 Subject: [PATCH] swap fix --- src/gui.html | 68 +++++++++++++---- src/imports/micromodal.css | 151 +++++++++++++++++++++++++++++++++++++ src/imports/micromodal.js | 1 + src/openqasm.c | 1 + 4 files changed, 207 insertions(+), 14 deletions(-) create mode 100644 src/imports/micromodal.css create mode 100644 src/imports/micromodal.js diff --git a/src/gui.html b/src/gui.html index 09ff992..bbc0159 100644 --- a/src/gui.html +++ b/src/gui.html @@ -1,8 +1,10 @@ + + - + "; + html += "Q" + (i + 1) + ""; } td = td.replace(">", drag_event + ">"); for (var j = 0; j < ProgramTrack.STATE[i].length; j++) @@ -426,7 +448,7 @@ console.log(elem.innerHTML); switch (html) { - case "|1⟩": case "|0⟩": + case "=1": case "=0": if (qubit) return; break; default: @@ -439,8 +461,8 @@ case "CCX": html = overline("CCX", "100"); break; case "CSW": html = overline("CSW", "100"); break; case "🔍": html = "🔍0"; break; - case "|1⟩": html = "|1⟩0"; break; - case "|0⟩": html = "|0⟩0"; break; + case "=1": html = "=10"; break; + case "=0": html = "=00"; break; } ProgramTrack.STATE[attr[0]][attr[1]] = html; @@ -471,7 +493,7 @@ data: { labels: ['000', '001', '010', '011', '100', '101', '110', '111'], datasets: [{ - label: '# of |1⟩', + label: '# of =1', data: [], borderWidth: 1 }] @@ -519,7 +541,18 @@ } displayResults(results); } - + else if (type == 2) + { + for (var i = 0; i < lines.length; i++) + { + results[results.length] = parseFloat(lines[i].split("\t")[1].replace("%", "")) / 100.0; + } + displayResults(results); + } + else + { + IstinaEditor.setText(x.response); + } } else if (x.success && x.response.trim().length == 0) { @@ -529,8 +562,15 @@ { IstinaEditor.setText(x.response); } - }).catch(x => alert("ERR(2)" + x)); + }).catch(x => IstinaEditor.setText(x.response)); }); + MicroModal.init(); + function modalShow() + { + $(".istina-basis")[0].style.visibility = "hidden"; + MicroModal.show("modal-1"); + } + diff --git a/src/imports/micromodal.css b/src/imports/micromodal.css new file mode 100644 index 0000000..03dd044 --- /dev/null +++ b/src/imports/micromodal.css @@ -0,0 +1,151 @@ +/**************************\ + Basic Modal Styles +\**************************/ + +.modal { + font-family: -apple-system,BlinkMacSystemFont,avenir next,avenir,helvetica neue,helvetica,ubuntu,roboto,noto,segoe ui,arial,sans-serif; +} + +.modal__overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0,0,0,0.6); + display: flex; + justify-content: center; + align-items: center; +} + +.modal__container { + background-color: #fff; + padding: 30px; + max-width: 500px; + max-height: 100vh; + border-radius: 4px; + overflow-y: auto; + box-sizing: border-box; +} + +.modal__header { + display: flex; + justify-content: space-between; + align-items: center; +} + +.modal__title { + margin-top: 0; + margin-bottom: 0; + font-weight: 600; + font-size: 1.25rem; + line-height: 1.25; + color: #00449e; + box-sizing: border-box; +} + +.modal__close { + background: transparent; + border: 0; +} + +.modal__header .modal__close:before { content: "\2715"; } + +.modal__content { + margin-top: 2rem; + margin-bottom: 2rem; + line-height: 1.5; + color: rgba(0,0,0,.8); +} + +.modal__btn { + font-size: .875rem; + padding-left: 1rem; + padding-right: 1rem; + padding-top: .5rem; + padding-bottom: .5rem; + background-color: #e6e6e6; + color: rgba(0,0,0,.8); + border-radius: .25rem; + border-style: none; + border-width: 0; + cursor: pointer; + -webkit-appearance: button; + text-transform: none; + overflow: visible; + line-height: 1.15; + margin: 0; + will-change: transform; + -moz-osx-font-smoothing: grayscale; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform: translateZ(0); + transform: translateZ(0); + transition: -webkit-transform .25s ease-out; + transition: transform .25s ease-out; + transition: transform .25s ease-out,-webkit-transform .25s ease-out; +} + +.modal__btn:focus, .modal__btn:hover { + -webkit-transform: scale(1.05); + transform: scale(1.05); +} + +.modal__btn-primary { + background-color: #00449e; + color: #fff; +} + + + +/**************************\ + Demo Animation Style +\**************************/ +@keyframes mmfadeIn { + from { opacity: 0; } + to { opacity: 1; } +} + +@keyframes mmfadeOut { + from { opacity: 1; } + to { opacity: 0; } +} + +@keyframes mmslideIn { + from { transform: translateY(15%); } + to { transform: translateY(0); } +} + +@keyframes mmslideOut { + from { transform: translateY(0); } + to { transform: translateY(-10%); } +} + +.micromodal-slide { + display: none; +} + +.micromodal-slide.is-open { + display: block; +} + +.micromodal-slide[aria-hidden="false"] .modal__overlay { + animation: mmfadeIn .3s cubic-bezier(0.0, 0.0, 0.2, 1); +} + +.micromodal-slide[aria-hidden="false"] .modal__container { + animation: mmslideIn .3s cubic-bezier(0, 0, .2, 1); +} + +.micromodal-slide[aria-hidden="true"] .modal__overlay { + animation: mmfadeOut .3s cubic-bezier(0.0, 0.0, 0.2, 1); +} + +.micromodal-slide[aria-hidden="true"] .modal__container { + animation: mmslideOut .3s cubic-bezier(0, 0, .2, 1); +} + +.micromodal-slide .modal__container, +.micromodal-slide .modal__overlay { + will-change: transform; +} \ No newline at end of file diff --git a/src/imports/micromodal.js b/src/imports/micromodal.js new file mode 100644 index 0000000..09167d2 --- /dev/null +++ b/src/imports/micromodal.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).MicroModal=t()}(this,(function(){"use strict";function e(e,t){for(var o=0;oe.length)&&(t=e.length);for(var o=0,n=new Array(t);o0&&this.registerTriggers.apply(this,t(a)),this.onClick=this.onClick.bind(this),this.onKeydown=this.onKeydown.bind(this)}var i,a,r;return i=o,(a=[{key:"registerTriggers",value:function(){for(var e=this,t=arguments.length,o=new Array(t),n=0;n0&&void 0!==arguments[0]?arguments[0]:null;if(this.activeElement=document.activeElement,this.modal.setAttribute("aria-hidden","false"),this.modal.classList.add(this.config.openClass),this.scrollBehaviour("disable"),this.addEventListeners(),this.config.awaitOpenAnimation){var o=function t(){e.modal.removeEventListener("animationend",t,!1),e.setFocusToFirstNode()};this.modal.addEventListener("animationend",o,!1)}else this.setFocusToFirstNode();this.config.onShow(this.modal,this.activeElement,t)}},{key:"closeModal",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=this.modal;if(this.modal.setAttribute("aria-hidden","true"),this.removeEventListeners(),this.scrollBehaviour("enable"),this.activeElement&&this.activeElement.focus&&this.activeElement.focus(),this.config.onClose(this.modal,this.activeElement,e),this.config.awaitCloseAnimation){var o=this.config.openClass;this.modal.addEventListener("animationend",(function e(){t.classList.remove(o),t.removeEventListener("animationend",e,!1)}),!1)}else t.classList.remove(this.config.openClass)}},{key:"closeModalById",value:function(e){this.modal=document.getElementById(e),this.modal&&this.closeModal()}},{key:"scrollBehaviour",value:function(e){if(this.config.disableScroll){var t=document.querySelector("body");switch(e){case"enable":Object.assign(t.style,{overflow:""});break;case"disable":Object.assign(t.style,{overflow:"hidden"})}}}},{key:"addEventListeners",value:function(){this.modal.addEventListener("touchstart",this.onClick),this.modal.addEventListener("click",this.onClick),document.addEventListener("keydown",this.onKeydown)}},{key:"removeEventListeners",value:function(){this.modal.removeEventListener("touchstart",this.onClick),this.modal.removeEventListener("click",this.onClick),document.removeEventListener("keydown",this.onKeydown)}},{key:"onClick",value:function(e){(e.target.hasAttribute(this.config.closeTrigger)||e.target.parentNode.hasAttribute(this.config.closeTrigger))&&(e.preventDefault(),e.stopPropagation(),this.closeModal(e))}},{key:"onKeydown",value:function(e){27===e.keyCode&&this.closeModal(e),9===e.keyCode&&this.retainFocus(e)}},{key:"getFocusableNodes",value:function(){var e=this.modal.querySelectorAll(n);return Array.apply(void 0,t(e))}},{key:"setFocusToFirstNode",value:function(){var e=this;if(!this.config.disableFocus){var t=this.getFocusableNodes();if(0!==t.length){var o=t.filter((function(t){return!t.hasAttribute(e.config.closeTrigger)}));o.length>0&&o[0].focus(),0===o.length&&t[0].focus()}}}},{key:"retainFocus",value:function(e){var t=this.getFocusableNodes();if(0!==t.length)if(t=t.filter((function(e){return null!==e.offsetParent})),this.modal.contains(document.activeElement)){var o=t.indexOf(document.activeElement);e.shiftKey&&0===o&&(t[t.length-1].focus(),e.preventDefault()),!e.shiftKey&&t.length>0&&o===t.length-1&&(t[0].focus(),e.preventDefault())}else t[0].focus()}}])&&e(i.prototype,a),r&&e(i,r),o}(),a=null,r=function(e){if(!document.getElementById(e))return console.warn("MicroModal: ❗Seems like you have missed %c'".concat(e,"'"),"background-color: #f8f9fa;color: #50596c;font-weight: bold;","ID somewhere in your code. Refer example below to resolve it."),console.warn("%cExample:","background-color: #f8f9fa;color: #50596c;font-weight: bold;",'')),!1},s=function(e,t){if(function(e){e.length<=0&&(console.warn("MicroModal: ❗Please specify at least one %c'micromodal-trigger'","background-color: #f8f9fa;color: #50596c;font-weight: bold;","data attribute."),console.warn("%cExample:","background-color: #f8f9fa;color: #50596c;font-weight: bold;",''))}(e),!t)return!0;for(var o in t)r(o);return!0},{init:function(e){var o=Object.assign({},{openTrigger:"data-micromodal-trigger"},e),n=t(document.querySelectorAll("[".concat(o.openTrigger,"]"))),r=function(e,t){var o=[];return e.forEach((function(e){var n=e.attributes[t].value;void 0===o[n]&&(o[n]=[]),o[n].push(e)})),o}(n,o.openTrigger);if(!0!==o.debugMode||!1!==s(n,r))for(var l in r){var c=r[l];o.targetModal=l,o.triggers=t(c),a=new i(o)}},show:function(e,t){var o=t||{};o.targetModal=e,!0===o.debugMode&&!1===r(e)||(a&&a.removeEventListeners(),(a=new i(o)).showModal())},close:function(e){e?a.closeModalById(e):a.closeModal()}});return"undefined"!=typeof window&&(window.MicroModal=l),l})); diff --git a/src/openqasm.c b/src/openqasm.c index 6853858..5d9f323 100644 --- a/src/openqasm.c +++ b/src/openqasm.c @@ -528,6 +528,7 @@ int qansel_process_chunk(int index, char* chunk, int line, regmatch_t* regmatche if (strcmp(tmp, "ccnot") == 0) instr = QANSEL_INSTRUCTION_CCX; if (strcmp(tmp, "ccx") == 0) instr = QANSEL_INSTRUCTION_CCX; else if (strcmp(tmp, "toffoli") == 0) instr = QANSEL_INSTRUCTION_CCX; + else if (strcmp(tmp, "swap") == 0) instr = QANSEL_INSTRUCTION_SWAP; else if (strcmp(tmp, "cswap") == 0) instr = QANSEL_INSTRUCTION_CSWAP; else if (strcmp(tmp, "fredkin") == 0) instr = QANSEL_INSTRUCTION_CSWAP; } -- 2.39.5
@@ -152,11 +174,11 @@ "Rx", "Ry", "Rz", - "U", - "RST", - "🔍", - "|1⟩", "|0⟩", + "|1⟩", + "🔍", + "=1", + "=0", ]; var ProgramTrack = { @@ -296,8 +318,8 @@ switch (instr) { case "🔍": - case "|1⟩": - case "|0⟩": + case "=1": + case "=0": var a = (parseInt(ProgramTrack.STATE[s[0]][s[1]].split("")[1]) + 1) % (ProgramTrack.STATE.length - 1); ProgramTrack.STATE[s[0]][s[1]] = instr + "" + a + ""; break; @@ -356,7 +378,7 @@ { td = td.replace("qubit='0'", "qubit='1'"); html += tr + td.replace(drag_event, ""); - html += "Q" + i + "