<?php
namespace nur\v\bs3\plugins;

use nur\b\params\IParametrable;
use nur\b\params\Tparametrable1;
use nur\v\BasePlugin;
use nur\v\js;

class easymdePlugin extends BasePlugin implements IParametrable {
  use Tparametrable1;

  const CSS = [
    "nur-v-bs3/highlightjs/styles/default.min.css",
    "nur-v-bs3/easymde/easymde.min.css",
  ];

  const JS = [
    "nur-v-bs3/highlightjs/highlight.min.js",
    "nur-v-bs3/easymde/easymde.min.js",
  ];

  const SELECTOR = null;
  const CONFIG = [
    "spellChecker" => false,
    "hideIcons" => ["image"],
  ];

  const PARAMETRABLE_PARAMS_SCHEMA = [
    "selector" => ["string", null, "sélecteur pour les controles"],
    "config" => ["?array", null, "configuration de l'objet"],
  ];

  function __construct(?array $params=null) {
    self::set_parametrable_params_defaults($params, [
      "selector" => static::SELECTOR,
      "config" => static::CONFIG,
    ]);
    $this->initParametrableParams($params);
  }

  protected $ppSelector;

  protected $ppConfig;

  const HAVE_JQUERY = true;

  function printJquery(): void {
    ?>
<script type="text/javascript">
jQuery.noConflict()(function($) {
  var config = <?=js::qo($this->ppConfig)?>;
  var selector = <?=js::qv($this->ppSelector)?>;
  var $elements;
  if (selector !== "") $elements = $(selector);
  if (selector !== "" && $elements.length > 0) {
    $elements.each(function () {
      config.element = this;
      new EasyMDE(config);
    });
  } else {
    new EasyMDE(config);
  }
});
</script>
<?php
  }
}