text: // ==UserScript==
  // @name            queer wisdom for Twitter
  // @namespace       stephfuchs.queer.wisdowm.for.twitter
  // @version         1.1.0
  // @author          Stephanie Fuchs
  // @description     The "Queer wisdom for Twitter" script adds a button with a queer flag for the LGBTQIA+ community. By clicking the flag the script will add a random wisdom. There is a list of quotes provided by a JSON file. So the script automatically gets quote-updates. Updates concerning the script are just as features or bugfixing.
  // @homepage        https://github.com/stephfuchs/queer-wisdom-for-twitter-userscript
  // @include         https://twitter.com/home
  // @include         https://twitter.com/intent/*
  // @include         https://twitter.com/compose/*
  // @run-at          document-body
  // @downloadURL     https://github.com/stephfuchs/queer-wisdom-for-twitter-userscript/raw/master/queer-wisdom-for-twitter.user.js
  // @updateURL       https://github.com/stephfuchs/queer-wisdom-for-twitter-userscript/raw/master/queer-wisdom-for-twitter.user.js
  // @supportURL      https://github.com/stephfuchs/queer-wisdom-for-twitter-userscript/issues
  // @license         MIT
  // ==/UserScript==
  
  (function () {
      'use strict';
  
      /**
       * Start the plugin stuff to tweet queer stuff.
       */
      class Plugin {
  
          /**
           * Run the stuff when document body is loaded
           */
          start() {
              var twitterIsReady = setInterval(function () {
                  let version = '1.1.0';
                  let name = 'Queer wisdom for Twitter';
                  let copyright = '(c) 2021 • Stephanie Fuchs • https://github.com/stephfuchs';
                  let classes = '.css-1dbjc4n.r-1awozwy.r-18u37iz.r-156q2ks';
  
                  if (document.querySelector(classes) !== null || document.querySelector(classes) !== undefined) {
                      let wisdom = new QueerWisdom();
                      console.info('loaded script: "' + name + '" with version: ' + version + '\n' + copyright);
                      clearInterval(twitterIsReady);
                      console.debug(wisdom.debug + 'removed interval');
                      wisdom.init();
                      console.debug(wisdom.debug + 'created new wisdom object');
                  }
              }, 3000); // check every 3sec
  
              /**
               * Check the system every min whether the button is been missing.
               */
              setInterval(function () {
                  if (document.getElementById('queer_wisdom') === null) {
                      console.debug('Button was deleted. Restarts.');
                      let wisdom = new QueerWisdom();
                      wisdom.init();
                      console.info('reloaded the queer button, because it disappeared.');
                      console.debug('Restart finished.');
                  }
              }, 60000); // check every minute
          }
      }
  
      var plugin = new Plugin();
      plugin.start();
  
      /**
       * Make the queer wisdom great again.
       */
      class QueerWisdom {
  
          /**
           * Provide some variables for the the extra button.
           */
          constructor() {
              this.debug = '## Queer wisdom for Twitter debugger ##\n';
              this.info = '## Queer wisdom for Twitter information ##\n';
              this.queerElement = null;
              this.queerElementId = 'queer_wisdom';
              this.lesbianJesus = new HayleyKiyoko();
          }
  
          /**
           * Initialization of the script.
           */
          init() {
              let tweetOptionContainerElement = document.querySelector('.css-1dbjc4n.r-1awozwy.r-18u37iz.r-156q2ks');
              console.debug(this.debug + 'Initialization of the script starts.');
              console.debug(this.debug + tweetOptionContainerElement);
  
              this._createQueerElement();
              tweetOptionContainerElement.append(this.queerElement);
              console.debug(this.debug + 'Added lgbtqia+ flag.');
              console.debug(this.debug + tweetOptionContainerElement);
              console.debug(this.debug + 'Initialization of the script ended.');
          }
  
          /**
           * Creates a new div container with the queer flag.
           *
           * @returns {HTMLDivElement}
           * @private
           */
          _createQueerElement() {
              this.queerElement = document.createElement('a');
              this.queerElement.id = this.queerElementId;
              this.queerElement.style.paddingLeft = '10px';
              this.queerElement.title = 'add a random queer wisdom';
              this.queerElement.innerHTML = this._getFlagSVG();
              this.queerElement.setAttribute('href', 'https://twitter.com/intent/tweet?text=' + encodeURI(this._getJsonWisdom()));
              console.debug(this.debug + 'Created tweet: https://twitter.com/intent/tweet?text=' + encodeURI(this._getJsonWisdom()));
          }
  
          /**
           * Get the wisdom from the JSON.
           *
           * @returns {string}
           * @private
           */
          _getJsonWisdom() {
              console.info(this.info + 'We have to call Hayley Kiyoko for help.');
              let girlsLikeGirls = this.lesbianJesus.girlsLikeGirls().wisdoms;
              let wisdomCount = girlsLikeGirls.length;
              console.info(this.info + 'The answer from Hayley Kiyoko has arrived with ' + wisdomCount + ' wisdoms.');
  
              let random = Math.floor(Math.random() * wisdomCount);
              let hayleyWisdom = girlsLikeGirls[random];
              console.debug(this.debug + 'random number: ' + random);
              console.debug(this.debug + 'random wisdom: ' + hayleyWisdom.quote);
  
              if (hayleyWisdom.copyright === null) {
                  return hayleyWisdom.quote;
              }
  
              return hayleyWisdom.quote + '\n-- ' + hayleyWisdom.copyright;
          }
  
          /**
           * Get the LGBTQIA+ flag.
           * Credits for the svg: https://commons.wikimedia.org/wiki/File:LGBTQ%2B_rainbow_flag_Quasar_%22Progress%22_variant.svg
           *
           * @returns {string}
           * @private
           */
          _getFlagSVG() {
              return '<svg style="width: 27px; height: auto;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 6000 3810">\n' +
                  '\t<rect fill="#750787" width="6000" height="3810"/>\n' +
                  '\t<rect fill="#004dff" width="6000" height="3175"/>\n' +
                  '\t<rect fill="#008026" width="6000" height="2540"/>\n' +
                  '\t<rect fill="#ffed00" width="6000" height="1905"/>\n' +
                  '\t<rect fill="#ff8c00" width="6000" height="1270"/>\n' +
                  '\t<rect fill="#e40303" width="6000" height="635"/>\n' +
                  '\n' +
                  '    <polygon points="-1,960 950,1905 -1,2850" fill="#ffffff"/>\n' +
                  '    <polygon points="-1,960 -1,480 1420,1905 -1,3330 -1,2850 950,1905" fill="#ffafc8"/>\n' +
                  '    <polygon points="-1,480 -1,0 1912,1905 -1,3810 -1,3330 1420,1905 -1,480" fill="#74d7ee"/>\n' +
                  '    <polygon points="-1,0 1912,1905 -1,3810 480,3810 2384,1905 480,0" fill="#613915"/>\n' +
                  '    <polygon points="480,0 960,0 2864,1905 960,3810 480,3810 2384 1905 480,0" fill="#000000"/>\n' +
                  '</svg>';
          }
      }
  
      /**
       * The class for the lesbian jesus to give us the queer wisdom.
       */
      class HayleyKiyoko {
  
          /**
           * It's obvious.
           *
           * @returns {JSON}
           */
          girlsLikeGirls() {
              return {
                  "wisdoms": [
                      {
                          "quote": "I am here, I am queer.",
                          "copyright": null
                      },
                      {
                          "quote": "It's LGBTQIA\+\nL\=lesbian\nG\=gay\nB\=bi\nT\=trans\nQ\=queer\nI\=intersex\nA\=ace\/aro\n\+\=ally",
                          "copyright": null
                      },
                      {
                          "quote": "There is no man in a wlw relationship. That is the point.",
                          "copyright": null
                      },
                      {
                          "quote": "Did I hit my head and wake up in patriarchal bullshit land?",
                          "copyright": "Nicole Haught \('Wynonna Earp'\)"
                      },
                      {
                          "quote": "Others: \"How do you know, you are queer?\" - Me: \"How do you know you are not?\" ",
                          "copyright": null
                      },
                      {
                          "quote": "When someone tells you they are < insert label >, accept it. They know best, who they are.",
                          "copyright": null
                      },
                      {
                          "quote": "\"Really, I don't know why I did this. I guess it's probably because I've got a big lesbian crush on you! Suck on that! AY-YI-YI-YI-YI-YI!\"",
                          "copyright": "Janis \('Mean Girls'\)"
                      },
                      {
                          "quote": "Hetero people when they see women kissing: \"Oh, they must be good friends\" - Queer women: \"Me n who???\"",
                          "copyright": null
                      },
                      {
                          "quote": "There is no wrong or right about beeing queer. You are who you are and this should be always right.",
                          "copyright": null
                      },
                      {
                          "quote": "\"You are a lesbian, not a unicorn, right?\"",
                          "copyright": "Waverly Earp \('Wynonna Earp'\)"
                      },
                      {
                          "quote": "My religion is called Hayley Kiyoko and she is the lesbian jesus.",
                          "copyright": null
                      },
                      {
                          "quote": "This is Damian. He's almost too gay to function.",
                          "copyright": "Janis \('Mean Girls'\)"
                      },
                      {
                          "quote": "I'm beautiful in my way\n" +
                              "'Cause God makes no mistakes\n" +
                              "I'm on the right track, baby\n" +
                              "I was born this way",
                          "copyright": "'Born this way' by Lady Gaga"
                      },
                      {
                          "quote": "Oh there ain't no other way\n" +
                              "Baby I was born this way",
                          "copyright": "'Born this way' by Lady Gaga"
                      },
                      {
                          "quote": "No matter gay, straight, or bi,\n" +
                              "Lesbian, transgendered life,\n" +
                              "I'm on the right track baby,\n" +
                              "I was born to survive",
                          "copyright": "'Born this way' by Lady Gaga"
                      },
                      {
                          "quote": "No matter black, white or beige\n" +
                              "Chola or orient made,\n" +
                              "I'm on the right track baby,\n" +
                              "I was born to be brave.",
                          "copyright": "'Born this way' by Lady Gaga"
                      }
                  ]
              };
          }
      }
  })();
  