codemelted 26.1.1

The aim of this project is to deliver a swiss army knife module to aid software engineers for building full stack solutions for their applications. Utilizing the Rust programming language, the module serves as a backbone to engineer solutions for multiple build targets.
Documentation
<!DOCTYPE html>
<html lang="en"><head>
  <title>codemelted.rs Project</title>
  <meta charset="UTF-8">
  <meta name="description" content="The aim of this project is to deliver a swiss army knife module to aid software engineers in building full stack solutions for their applications. Utilizing the Rust programming language, the module serves as a backbone to engineer solutions for multiple build targets.">
  <meta name="keywords" content="cli,cli-app,js,js-lib,js-library,js-module,pwsh,pwsh-scripts,pwsh-module,rust,rust-lang,rust-crate,rust-library,rust-wasm,rust-web">
  <meta name="author" content="Mark Shaffer">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" type="image/x-icon" href="https://codemelted.com/favicon.png">
  <!-- Open Graph Settings -->
  <meta property="og:type" content="website">
  <meta property="og:title" content="codemelted.rs Project">
  <meta property="og:description" content="The aim of this project is to deliver a swiss army knife module to aid software engineers in building full stack solutions for their applications. Utilizing the Rust programming language, the module serves as a backbone to engineer solutions for multiple build targets.">
  <meta property="og:site_name" content="CodeMelted PWA">
  <meta property="og:image" content="https://codemelted.com/assets/images/logo-codemelted-rs.png">
  <link rel="stylesheet" href="https://codemelted.com/assets/css/scrollbars.css">
  <style>
    /*
    ===========================================================================
    [GIT Controls] ============================================================
    ===========================================================================
    */

    .top-panel {
      text-align: center;
      position: fixed;
      top: 53px;
      left: 0px;
      right: 0px;
      border: none;
      padding-top: 3px;
      padding-bottom: 1px;
      border-bottom: 1px solid #585858;
    }

    .right-panel {
      text-align: left;
      color: white;
      overflow-y: auto;
      text-align: center;
      background-color: black;
      position: fixed;
      left: 0;
      top: 92px;
      bottom: 39px;
      width: 130px;
      border: var(--app-bar-border);
    }

    .right-panel-button button {
      text-align: left;
      color: white;
      height: 100%;
      padding: 0;
      margin: 0;
      width: 100%;
      border: 1px solid #161E27;
      background-color: transparent;
    }

    #btn_buy_me_a_coffee button:hover {
      background-color: var(--button-hover-color);
    }
    #btn_linkedin button:hover {
      background-color: var(--button-hover-color);
    }
    #btn_threads button:hover {
      background-color: var(--button-hover-color);
    }
    #btn_x button:hover {
      background-color: var(--button-hover-color);
    }

    /*
    ===========================================================================
    [Main Content] ============================================================
    ===========================================================================
    */

    .frm_content_wrapper {
      position: fixed;
      top: 92px;
      left: 132px;
      right: 0;
      bottom: 39px;
    }
    .frm_content_wrapper iframe {
      width: 100%;
      height: 100%;
    }

    /*
    ===========================================================================
    [App Footer Grid Styles] ==================================================
    ===========================================================================
    */
    .app-footer-nav-grid {
      align-self: center;
      align-items: center;
      align-content: center;
      text-align: center;
      border: none;
    }
    .app-footer-nav-grid img {
      height: 30px;
    }
    .app-footer-nav-grid codemelted-ui-button {
      border: none;
    }
    .app-footer-nav-grid codemelted-ui-button button {
      height: var(--app-bar-height);
      background-color: transparent;
      width: 100%;
      border: 1px solid #585858;
    }
    .app-footer-nav-grid codemelted-ui-button button:hover {
      background-color: var(--button-hover-color);
    }
  </style>
</head><body>
  <!-- TOP FOOTER -->
  <codemelted-ui-grid-layout class="top-panel" cm_type="columns" cm_grid_template="auto auto auto auto">
    <a tabindex="0" class="github-button" href="https://github.com/codemelted/codemelted.rs/discussions" data-color-scheme="no-preference: dark; light: dark; dark: dark;" data-icon="octicon-comment-discussion" data-size="large" title="Discuss codemelted/codemelted.rs on GitHub" aria-label="Discuss codemelted/codemelted.rs on GitHub">Discuss&nbsp;&nbsp;&nbsp;&nbsp;</a>
    <a tabindex="1" class="github-button" href="https://github.com/codemelted/codemelted.rs/archive/HEAD.zip" data-color-scheme="no-preference: dark; light: dark; dark: dark;" data-size="large" title="Download codemelted/codemelted.rs on GitHu" aria-label="Download codemelted/codemelted.rs on GitHub">Download</a>
    <a tabindex="2" class="github-button" href="https://github.com/codemelted/codemelted.rs/fork" data-color-scheme="no-preference: dark; light: dark; dark: dark;" data-icon="octicon-repo-forked" data-size="large" title="Fork codemelted/codemelted.rs on GitHub" aria-label="Fork codemelted/codemelted.rs on GitHub">Fork&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
    <a tabindex="3" class="github-button" href="https://github.com/codemelted/codemelted.rs/issues" data-color-scheme="no-preference: dark; light: dark; dark: dark;" data-icon="octicon-issue-opened" data-size="large" title="Issue codemelted/codemelted.rs on GitHub" aria-label="Issue codemelted/codemelted.rs on GitHub">Issue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
  </codemelted-ui-grid-layout>

  <!-- LEFT CONTROLS-->
  <codemelted-ui-grid-layout class="right-panel" cm_type="rows" cm_grid_template="140px 100px 40px 40px 40px 40px 40px">
    <a id="a_resume" style="width: 100%; cursor: pointer;" title="My Software Engineering Experience"><img style="margin: 0; padding: 0; width: 100%; height: 100%;" src="https://codemelted.com/assets/images/icon-me-animated.png" /></a>
    <div style="border: 1px solid #161E27; text-align: left; padding-left: 5px;">
      <br>
      <a class="github-button" href="https://github.com/codemelted" data-color-scheme="no-preference: dark; light: dark; dark: dark;" data-size="small" data-show-count="true" title="Follow @codemelted on GitHub" aria-label="Follow @codemelted on GitHub">codemelted</a><br>
      <a class="github-button" href="https://github.com/codemelted/codemelted.rs/subscription" data-color-scheme="no-preference: dark; light: dark; dark: dark;" data-icon="octicon-eye" data-size="small" data-show-count="true" title="Watch codemelted/codemelted.rs on GitHub" aria-label="Watch codemelted/codemelted.rs on GitHub">Watch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a><br>
      <a class="github-button" href="https://github.com/sponsors/codemelted" data-color-scheme="no-preference: dark; light: dark; dark: dark;" data-icon="octicon-heart" data-size="small" title="Sponsor @codemelted and the codemelted.rs project on GitHub" aria-label="Sponsor @codemelted on GitHub">Sponsor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a><br><br>
    </div>
    <codemelted-ui-button class="right-panel-button" id="btn_buy_me_a_coffee" cm_tooltip="Professional Services / Support Offered by CodeMelted." cm_label= "&nbsp;&nbsp;&nbsp;☕ Coffee"></codemelted-ui-button>
    <codemelted-ui-button class="right-panel-button" id="btn_linkedin"        cm_tooltip="Career Networking" cm_label="&nbsp;&nbsp;&nbsp;👨🏻‍💼 LinkedIn"></codemelted-ui-button>
    <codemelted-ui-button class="right-panel-button" id="btn_threads"         cm_tooltip="The one social media 💍 to rule them all" cm_label="&nbsp;&nbsp;&nbsp;🧵 Threads"></codemelted-ui-button>
    <codemelted-ui-button class="right-panel-button" id="btn_x"               cm_tooltip="Latest tech trends / projects" cm_label="&nbsp;&nbsp;&nbsp;✖️.com"></codemelted-ui-button>
  </codemelted-ui-grid-layout>

  <main class="frm_content_wrapper">
    <iframe id="frm_content" frameborder="0"></iframe>
  </main>

  <!-- APP FOOTER -->
  <codemelted-ui-app-bar cm_type="footer" cm_border="1px solid #585858" cm_bg_color="--app-bar-bg-color" cm_fg_color="--app-bar-fg-color" cm_height="--app-bar-height" cm_z_index="--app-bar-z-index">
    <codemelted-ui-grid-layout cm_type="columns" cm_grid_template="auto auto auto auto auto" class="app-footer-nav-grid">
      <codemelted-ui-button id="btn_mdbook"  cm_img_src="https://codemelted.com/assets/images/icon-design.png" cm_tooltip="codemelted.rs: The Swiss Army Knife Full Stack Solution Book"></codemelted-ui-button>
      <codemelted-ui-button id="btn_rs"      cm_img_src="https://codemelted.com/assets/images/icon-rust.png" cm_tooltip="codemelted.rs Module SDK"></codemelted-ui-button>
      <codemelted-ui-button id="btn_js"      cm_img_src="https://codemelted.com/assets/images/icon-js.png" cm_tooltip="codemelted.js Module SDK"></codemelted-ui-button>
      <codemelted-ui-button id="btn_gists"   cm_img_src="https://codemelted.com/assets/images/icon-code.png" cm_tooltip="CodeMelted GitHub Gists"></codemelted-ui-button>
      <codemelted-ui-button id="btn_uml"     cm_img_src="https://codemelted.com/assets/images/icon-uml.png" cm_tooltip="mermaid UML Modeler"></codemelted-ui-button>
    </codemelted-ui-grid-layout>
  </codemelted-ui-app-bar>

  <codemelted-web></codemelted-web>
  <script src="https://codemelted.com/assets/js/codemelted_web.js"></script>
  <script>
    // Module needed for the logic
    let codemelted = undefined;

    /**
     * Will reset and active the selected content.
     * @param {number} active_index The active index to highlight
     * @returns {void}
     */
    function reset_buttons(active_index) {
      let buttons = [
        "btn_mdbook",
        "btn_rs",
        "btn_js",
        "btn_gists",
        "btn_uml"
      ];
      buttons.forEach((id, index) => {
        let btn = codemelted.ui_widget({ request: codemelted.WIDGET_REQUEST.ElementById, data: id});
        btn.style.backgroundColor = active_index == index ? "navy" : "black";
      });
    }

    /**
     * Main entry point for the SPA.
     * @returns {void}
     */
    async function main() {
      try {
        // Load our module
        codemelted = await import(`https://cdn.jsdelivr.net/gh/codemelted/codemelted.rs@main/js/codemelted.js`);

        // Setup our navigation button actions.
        const frm_content = codemelted.ui_widget({ request: codemelted.WIDGET_REQUEST.ElementById, data:"frm_content" });
        let btn_mdbook = codemelted.ui_widget({ request: codemelted.WIDGET_REQUEST.ElementById, data:"btn_mdbook" });
        let btn_rs = codemelted.ui_widget({ request: codemelted.WIDGET_REQUEST.ElementById, data:"btn_rs" });
        let btn_js = codemelted.ui_widget({ request: codemelted.WIDGET_REQUEST.ElementById, data:"btn_js" });
        let btn_gists = codemelted.ui_widget({ request: codemelted.WIDGET_REQUEST.ElementById, data:"btn_gists" });
        let btn_uml = codemelted.ui_widget({ request: codemelted.WIDGET_REQUEST.ElementById, data:"btn_uml" });

        btn_mdbook.onclick = (ev) => {
          frm_content.src = `mdbook/index.html?t=${Date.now()}`;
          reset_buttons(0);
          ev.stopPropagation();
        };
        btn_rs.onclick = (ev) => {
          frm_content.src = `codemelted.rs/codemelted/index.html?t=${Date.now()}`;
          reset_buttons(1);
          ev.stopPropagation();
        };
        btn_js.onclick = (ev) => {
          frm_content.src = `js/index.html?t=${Date.now()}`;
          reset_buttons(2);
          ev.stopPropagation();
        };
        btn_gists.onclick = (ev) => {
          frm_content.src = `support/gists.html?t=${Date.now()}`;
          reset_buttons(3);
          ev.stopPropagation();
        };
        btn_uml.onclick = (ev) => {
          frm_content.src = `support/uml-modeler.html?t=${Date.now()}`;
          reset_buttons(4);
          ev.stopPropagation();
        };

        // Setup our other buttons
        let a_resume = codemelted.ui_widget({ request: codemelted.WIDGET_REQUEST.ElementById, data:"a_resume" });
        let btn_buy_me_a_coffee = codemelted.ui_widget({ request: codemelted.WIDGET_REQUEST.ElementById, data:"btn_buy_me_a_coffee" });
        let btn_linkedin = codemelted.ui_widget({ request: codemelted.WIDGET_REQUEST.ElementById, data:"btn_linkedin" });
        let btn_threads = codemelted.ui_widget({ request: codemelted.WIDGET_REQUEST.ElementById, data:"btn_threads" });
        let btn_x = codemelted.ui_widget({ request: codemelted.WIDGET_REQUEST.ElementById, data:"btn_x" });

        a_resume.onclick = (ev) => {
          frm_content.src = `support/resumeweb.html?t=${Date.now()}`;
          reset_buttons(-1);
          ev.stopPropagation();
        }

        btn_buy_me_a_coffee.onclick = (ev) => {
          codemelted_web.open_buy_me_a_coffee();
          ev.stopPropagation();
        };

        btn_linkedin.onclick = (ev) => {
          codemelted.ui_open({
            schema: codemelted.SCHEMA_TYPE.Https,
            url: `linkedin.com/in/codemelted`,
            popup_window: true,
          });
          ev.stopPropagation();
        };

        btn_threads.onclick = (ev) => {
          codemelted_web.open_threads();
          ev.stopPropagation();
        };

        btn_x.onclick = (ev) => {
          codemelted_web.open_x();
          ev.stopPropagation();
        };

        // Now determine what content we are loading
        let open_url = codemelted.runtime_environment("open");
        if (open_url) {
          frm_content.src = open_url
          if (open_url.includes("mdbook")) {
            reset_buttons(0);
          } else if (open_url.includes("codemelted.rs")) {
            reset_buttons(1);
          } else if (open_url.includes("js/")) {
            reset_buttons(2);
          } else if (open_url.includes("gists.html")) {
            reset_buttons(3);
          } else {
            reset_buttons(4);
          }
          // index = window.location.href.indexOf("/?open=");
          // let new_display_href = window.location.href.substring(0, index - 1);
          // alert(new_display_href);
          window.history.pushState({}, "", "/");
        } else {
          // Load our main content, not a shared link
          btn_mdbook.click();
        }

        // Now configure some override behavior for our GitHub buttons
        setTimeout(() => {
          let github_urls = {
            "span0" : "github.com/codemelted/codemelted.rs/discussions",
            "span2" : "github.com/codemelted/codemelted.rs/fork",
            "span3" : "github.com/codemelted/codemelted.rs/issues",
            "span4" : "github.com/codemelted",
            "span5" : "github.com/codemelted/codemelted.rs/subscription",
            "span6" : "github.com/sponsors/codemelted",
          };

          let github_btns = window.document.getElementsByTagName("span");
          Array.from(github_btns).forEach((el, index) => {
            el.id = `span${index}`;
          });

          window.document.addEventListener("click", (ev) => {
            codemelted.ui_open({
              schema: codemelted.SCHEMA_TYPE.Https,
              url: github_urls[ev.srcElement.id],
              popup_window: true,
            });
            ev.preventDefault();
          });
        }, 250);
      } catch (err) {
        console.error("Error setting up codemelted.com/rs/index.html", err);
      }
    }
    main();
  </script>
  <script async defer src="https://buttons.github.io/buttons.js"></script>
</body></html>