Plugin Directory

Changeset 2763965


Ignore:
Timestamp:
07/31/2022 04:00:35 AM (4 years ago)
Author:
codesue
Message:

Fix theme style bleeding into editor view

Location:
terminal-block/trunk
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • terminal-block/trunk/build/block.json

    r2763919 r2763965  
    33  "apiVersion": 2,
    44  "name": "codesue/terminal-block",
    5   "version": "0.1.1",
     5  "version": "0.1.2",
    66  "title": "Terminal Block",
    77  "category": "widgets",
     
    1414  ],
    1515  "supports": {
    16     "color": {
    17       "text": true,
    18       "background": true,
    19       "link": true
    20     },
    2116    "spacing": {
    2217      "margin": true,
     
    3732      "type": "string",
    3833      "default": "bash"
     34    },
     35    "backgroundColor": {
     36      "type": "string",
     37      "default": "#252a33"
     38    },
     39    "textColor": {
     40      "type": "string",
     41      "default": "#eee"
     42    },
     43    "accentColor": {
     44      "type": "string",
     45      "default": "#a2a2a2"
    3946    }
    4047  },
  • terminal-block/trunk/build/index.asset.php

    r2763919 r2763965  
    1 <?php return array('dependencies' => array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-i18n'), 'version' => 'b27a2b7ea3393655834c');
     1<?php return array('dependencies' => array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-i18n'), 'version' => '335c321e0920cbfbf4c5');
  • terminal-block/trunk/build/index.css

    r2762884 r2763965  
    1 /*!****************************************************************************************************************************************************************************************************************************************!*\
    2   !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[3]!./src/editor.scss ***!
    3   \****************************************************************************************************************************************************************************************************************************************/
    4 .wp-block-codesue-terminal-block .prompt {
    5   -webkit-user-select: text;
    6   -moz-user-select: text;
    7        user-select: text;
    8 }
    9 
    10 /*# sourceMappingURL=index.css.map*/
     1.wp-block-codesue-terminal-block .block-editor-rich-text__editable{background:var(--wp--default--terminal--block--color--background)!important;box-sizing:border-box!important;color:var(--wp--default--terminal--block--color--text)!important;font-family:Fira Mono,Consolas,Menlo,Monaco,Courier New,Courier,monospace!important;font-size:18px!important;max-width:100%!important;width:750px!important}.wp-block-codesue-terminal-block p.block-editor-rich-text__editable{display:block!important;line-height:1!important}
  • terminal-block/trunk/build/index.js

    r2763919 r2763965  
    1 /******/ (() => { // webpackBootstrap
    2 /******/    "use strict";
    3 /******/    var __webpack_modules__ = ({
    4 
    5 /***/ "./src/edit.js":
    6 /*!*********************!*\
    7   !*** ./src/edit.js ***!
    8   \*********************/
    9 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    10 
    11 __webpack_require__.r(__webpack_exports__);
    12 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    13 /* harmony export */   "default": () => (/* binding */ edit)
    14 /* harmony export */ });
    15 /* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/esm/extends.js");
    16 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
    17 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
    18 /* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/block-editor */ "@wordpress/block-editor");
    19 /* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_2__);
    20 /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
    21 /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_3__);
    22 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
    23 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__);
    24 /* harmony import */ var _inner_blocks_command__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./inner-blocks/command */ "./src/inner-blocks/command.js");
    25 /* harmony import */ var _inner_blocks_output__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./inner-blocks/output */ "./src/inner-blocks/output.js");
    26 /* harmony import */ var _inner_blocks_progress_bar__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./inner-blocks/progress-bar */ "./src/inner-blocks/progress-bar.js");
    27 /* harmony import */ var _block_json__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./block.json */ "./src/block.json");
    28 
    29 
    30 
    31 
    32 
    33 
    34 
    35 
    36 
    37 function edit(_ref) {
    38   let {
    39     attributes,
    40     setAttributes
    41   } = _ref;
    42   const blockProps = (0,_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_2__.useBlockProps)();
    43 
    44   const onChangeTitle = title => {
    45     setAttributes({
    46       title
    47     });
    48   };
    49 
    50   return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_2__.InspectorControls, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_3__.PanelBody, {
    51     title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)("Terminal Settings", _block_json__WEBPACK_IMPORTED_MODULE_8__.textdomain),
    52     initialOpen: true
    53   }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_3__.PanelRow, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_3__.TextControl, {
    54     label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)("Title", _block_json__WEBPACK_IMPORTED_MODULE_8__.textdomain),
    55     value: attributes.title,
    56     onChange: onChangeTitle,
    57     help: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)("Change the title. Defaults to bash", _block_json__WEBPACK_IMPORTED_MODULE_8__.textdomain)
    58   })))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, blockProps, {
    59     title: attributes.title
    60   }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_2__.InnerBlocks, {
    61     allowedBlocks: ["core/spacer", "codesue/terminal-command-block", "codesue/terminal-output-block", "codesue/terminal-progress-bar-block"]
    62   })));
    63 }
    64 
    65 /***/ }),
    66 
    67 /***/ "./src/index.js":
    68 /*!**********************!*\
    69   !*** ./src/index.js ***!
    70   \**********************/
    71 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    72 
    73 __webpack_require__.r(__webpack_exports__);
    74 /* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/blocks */ "@wordpress/blocks");
    75 /* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_0__);
    76 /* harmony import */ var _edit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./edit */ "./src/edit.js");
    77 /* harmony import */ var _block_json__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./block.json */ "./src/block.json");
    78 /* harmony import */ var _save__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./save */ "./src/save.js");
    79 /* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./style.scss */ "./src/style.scss");
    80 
    81 
    82 
    83 
    84 
    85 (0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_0__.registerBlockType)(_block_json__WEBPACK_IMPORTED_MODULE_2__.name, {
    86   edit: _edit__WEBPACK_IMPORTED_MODULE_1__["default"],
    87   save: _save__WEBPACK_IMPORTED_MODULE_3__["default"]
    88 });
    89 
    90 /***/ }),
    91 
    92 /***/ "./src/inner-blocks/command.js":
    93 /*!*************************************!*\
    94   !*** ./src/inner-blocks/command.js ***!
    95   \*************************************/
    96 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    97 
    98 __webpack_require__.r(__webpack_exports__);
    99 /* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/esm/extends.js");
    100 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
    101 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
    102 /* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/blocks */ "@wordpress/blocks");
    103 /* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__);
    104 /* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/block-editor */ "@wordpress/block-editor");
    105 /* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__);
    106 /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
    107 /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__);
    108 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
    109 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__);
    110 /* harmony import */ var _block_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../block.json */ "./src/block.json");
    111 
    112 
    113 
    114 
    115 
    116 
    117 
    118 (0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__.registerBlockType)("codesue/terminal-command-block", {
    119   title: "Command",
    120   parent: [_block_json__WEBPACK_IMPORTED_MODULE_6__.name],
    121   icon: "arrow-right-alt2",
    122   description: "Add a command to a terminal window.",
    123   category: "text",
    124   attributes: {
    125     content: {
    126       type: "string",
    127       source: "html",
    128       selector: "p"
    129     },
    130     prompt: {
    131       type: "string",
    132       default: "$"
    133     }
    134   },
    135   example: {
    136     attributes: {
    137       content: "pip install spacy"
    138     }
    139   },
    140 
    141   edit(_ref) {
    142     let {
    143       attributes,
    144       setAttributes
    145     } = _ref;
    146     const blockProps = (0,_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.useBlockProps)();
    147 
    148     const onChangeContent = content => {
    149       setAttributes({
    150         content
    151       });
    152     };
    153 
    154     const onChangePrompt = prompt => {
    155       setAttributes({
    156         prompt
    157       });
    158     };
    159 
    160     return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.InspectorControls, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.PanelBody, {
    161       title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)("Prompt Settings", _block_json__WEBPACK_IMPORTED_MODULE_6__.textdomain),
    162       initialOpen: true
    163     }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.PanelRow, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.TextControl, {
    164       label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)("Prompt", _block_json__WEBPACK_IMPORTED_MODULE_6__.textdomain),
    165       value: attributes.prompt,
    166       onChange: onChangePrompt,
    167       help: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)("Change the prompt. Defaults to $", _block_json__WEBPACK_IMPORTED_MODULE_6__.textdomain)
    168     })))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.RichText, (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, blockProps, {
    169       tagName: "p",
    170       value: attributes.content,
    171       prompt: attributes.prompt,
    172       className: "display-prompt",
    173       onChange: onChangeContent,
    174       placeholder: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)("Enter your command...", _block_json__WEBPACK_IMPORTED_MODULE_6__.textdomain),
    175       allowedFormats: ["core/bold", "core/italic", "core/link", "core/text-color", "core/underline"]
    176     })));
    177   },
    178 
    179   save(_ref2) {
    180     let {
    181       attributes
    182     } = _ref2;
    183     const blockProps = _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.useBlockProps.save();
    184     const {
    185       content,
    186       prompt
    187     } = attributes;
    188     return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.RichText.Content, (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, blockProps, {
    189       tagName: "p",
    190       value: content,
    191       prompt: prompt,
    192       className: "display-prompt"
    193     }));
    194   },
    195 
    196   transforms: {
    197     to: [{
    198       type: "block",
    199       blocks: ["codesue/terminal-output-block"],
    200       transform: _ref3 => {
    201         let {
    202           content
    203         } = _ref3;
    204         return (0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__.createBlock)("codesue/terminal-output-block", {
    205           content: content
    206         });
    207       }
    208     }],
    209     from: [{
    210       type: "block",
    211       blocks: ["codesue/terminal-output-block"],
    212       transform: _ref4 => {
    213         let {
    214           content
    215         } = _ref4;
    216         return (0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__.createBlock)("codesue/terminal-command-block", {
    217           content: content
    218         });
    219       }
    220     }]
    221   }
    222 });
    223 
    224 /***/ }),
    225 
    226 /***/ "./src/inner-blocks/output.js":
    227 /*!************************************!*\
    228   !*** ./src/inner-blocks/output.js ***!
    229   \************************************/
    230 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    231 
    232 __webpack_require__.r(__webpack_exports__);
    233 /* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/esm/extends.js");
    234 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
    235 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
    236 /* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/blocks */ "@wordpress/blocks");
    237 /* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__);
    238 /* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/block-editor */ "@wordpress/block-editor");
    239 /* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__);
    240 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
    241 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__);
    242 /* harmony import */ var _block_json__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../block.json */ "./src/block.json");
    243 
    244 
    245 
    246 
    247 
    248 
    249 (0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__.registerBlockType)("codesue/terminal-output-block", {
    250   title: "Output",
    251   parent: [_block_json__WEBPACK_IMPORTED_MODULE_5__.name],
    252   icon: "editor-paragraph",
    253   description: "Add output text to a terminal window.",
    254   category: "text",
    255   attributes: {
    256     content: {
    257       type: "string",
    258       source: "html",
    259       selector: "p"
    260     }
    261   },
    262   example: {
    263     attributes: {
    264       content: "Successfully installed spacy"
    265     }
    266   },
    267 
    268   edit(_ref) {
    269     let {
    270       attributes,
    271       setAttributes
    272     } = _ref;
    273     const blockProps = (0,_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.useBlockProps)();
    274 
    275     const onChangeContent = content => {
    276       setAttributes({
    277         content
    278       });
    279     };
    280 
    281     return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.RichText, (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, blockProps, {
    282       tagName: "p",
    283       value: attributes.content,
    284       onChange: onChangeContent,
    285       placeholder: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)("Write your output...", _block_json__WEBPACK_IMPORTED_MODULE_5__.textdomain),
    286       allowedFormats: ["core/bold", "core/italic", "core/link", "core/text-color", "core/underline"]
    287     }));
    288   },
    289 
    290   save(_ref2) {
    291     let {
    292       attributes
    293     } = _ref2;
    294     const blockProps = _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.useBlockProps.save();
    295     const {
    296       content
    297     } = attributes;
    298     return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.RichText.Content, (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, blockProps, {
    299       tagName: "p",
    300       value: content
    301     }));
    302   },
    303 
    304   transforms: {
    305     to: [{
    306       type: "block",
    307       blocks: ["codesue/terminal-command-block"],
    308       transform: _ref3 => {
    309         let {
    310           content
    311         } = _ref3;
    312         return (0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__.createBlock)("codesue/terminal-command-block", {
    313           content: content
    314         });
    315       }
    316     }],
    317     from: [{
    318       type: "block",
    319       blocks: ["codesue/terminal-command-block"],
    320       transform: _ref4 => {
    321         let {
    322           content
    323         } = _ref4;
    324         return (0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__.createBlock)("codesue/terminal-output-block", {
    325           content: content
    326         });
    327       }
    328     }]
    329   }
    330 });
    331 
    332 /***/ }),
    333 
    334 /***/ "./src/inner-blocks/progress-bar.js":
    335 /*!******************************************!*\
    336   !*** ./src/inner-blocks/progress-bar.js ***!
    337   \******************************************/
    338 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    339 
    340 __webpack_require__.r(__webpack_exports__);
    341 /* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/esm/extends.js");
    342 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
    343 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
    344 /* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/blocks */ "@wordpress/blocks");
    345 /* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__);
    346 /* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/block-editor */ "@wordpress/block-editor");
    347 /* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__);
    348 /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
    349 /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__);
    350 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
    351 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__);
    352 /* harmony import */ var _block_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../block.json */ "./src/block.json");
    353 
    354 
    355 
    356 
    357 
    358 
    359 
    360 (0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__.registerBlockType)("codesue/terminal-progress-bar-block", {
    361   title: "Progress Bar",
    362   parent: [_block_json__WEBPACK_IMPORTED_MODULE_6__.name],
    363   icon: "chart-bar",
    364   description: "Add a progress bar to a terminal window.",
    365   category: "design",
    366   supports: {
    367     color: {
    368       text: true,
    369       background: false
    370     }
    371   },
    372   attributes: {
    373     content: {
    374       type: "string",
    375       source: "html",
    376       selector: "p"
    377     },
    378     character: {
    379       type: "string",
    380       default: "█"
    381     },
    382     percent: {
    383       type: "number",
    384       default: "100"
    385     }
    386   },
    387   example: {
    388     attributes: {
    389       content: "███████████████████ 100%"
    390     }
    391   },
    392 
    393   edit(_ref) {
    394     let {
    395       attributes,
    396       setAttributes
    397     } = _ref;
    398     const blockProps = (0,_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.useBlockProps)();
    399 
    400     const createProgressBar = (character, percent) => {
    401       if (!character) return "";
    402       return `${character.repeat(percent / 2.5)} ${attributes.percent}%`;
    403     };
    404 
    405     const onChangeContent = content => {
    406       setAttributes({
    407         content: content
    408       });
    409     };
    410 
    411     const onChangeCharacter = character => {
    412       setAttributes({
    413         character
    414       });
    415       createProgressBar(character, attributes.percent);
    416     };
    417 
    418     const onChangePercent = percent => {
    419       setAttributes({
    420         percent: parseInt(percent)
    421       });
    422       createProgressBar(attributes.character, parseInt(percent));
    423     };
    424 
    425     return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.InspectorControls, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.PanelBody, {
    426       title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)("Progress Bar Settings", _block_json__WEBPACK_IMPORTED_MODULE_6__.textdomain),
    427       initialOpen: true
    428     }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.PanelRow, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.TextControl, {
    429       label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)("Character", _block_json__WEBPACK_IMPORTED_MODULE_6__.textdomain),
    430       value: attributes.character,
    431       onChange: onChangeCharacter,
    432       help: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)("Change the character. Defaults to █", _block_json__WEBPACK_IMPORTED_MODULE_6__.textdomain)
    433     })), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.PanelRow, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.__experimentalNumberControl, {
    434       label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)("Percent", _block_json__WEBPACK_IMPORTED_MODULE_6__.textdomain),
    435       labelPosition: "edge",
    436       value: attributes.percent,
    437       onChange: onChangePercent,
    438       isDragEnabled: true,
    439       min: 0,
    440       max: 100,
    441       step: 10,
    442       help: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)("Change the percent. Defaults to 100", _block_json__WEBPACK_IMPORTED_MODULE_6__.textdomain)
    443     })))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.RichText, (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, blockProps, {
    444       tagName: "p",
    445       value: createProgressBar(attributes.character, attributes.percent),
    446       character: attributes.character,
    447       percent: attributes.percent,
    448       onChange: onChangeContent,
    449       allowedFormats: []
    450     })));
    451   },
    452 
    453   save(_ref2) {
    454     let {
    455       attributes
    456     } = _ref2;
    457     const blockProps = _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.useBlockProps.save();
    458     return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.RichText.Content, (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, blockProps, {
    459       tagName: "p",
    460       value: attributes.content,
    461       character: attributes.character,
    462       percent: attributes.percent
    463     }));
    464   }
    465 
    466 });
    467 
    468 /***/ }),
    469 
    470 /***/ "./src/save.js":
    471 /*!*********************!*\
    472   !*** ./src/save.js ***!
    473   \*********************/
    474 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    475 
    476 __webpack_require__.r(__webpack_exports__);
    477 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    478 /* harmony export */   "default": () => (/* binding */ save)
    479 /* harmony export */ });
    480 /* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/esm/extends.js");
    481 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
    482 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
    483 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
    484 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__);
    485 /* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/block-editor */ "@wordpress/block-editor");
    486 /* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__);
    487 
    488 
    489 
    490 
    491 function save(_ref) {
    492   let {
    493     attributes
    494   } = _ref;
    495   const blockProps = _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.useBlockProps.save();
    496   return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, blockProps, {
    497     title: attributes.title
    498   }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.InnerBlocks.Content, null));
    499 }
    500 
    501 /***/ }),
    502 
    503 /***/ "./src/style.scss":
    504 /*!************************!*\
    505   !*** ./src/style.scss ***!
    506   \************************/
    507 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    508 
    509 __webpack_require__.r(__webpack_exports__);
    510 // extracted by mini-css-extract-plugin
    511 
    512 
    513 /***/ }),
    514 
    515 /***/ "@wordpress/block-editor":
    516 /*!*************************************!*\
    517   !*** external ["wp","blockEditor"] ***!
    518   \*************************************/
    519 /***/ ((module) => {
    520 
    521 module.exports = window["wp"]["blockEditor"];
    522 
    523 /***/ }),
    524 
    525 /***/ "@wordpress/blocks":
    526 /*!********************************!*\
    527   !*** external ["wp","blocks"] ***!
    528   \********************************/
    529 /***/ ((module) => {
    530 
    531 module.exports = window["wp"]["blocks"];
    532 
    533 /***/ }),
    534 
    535 /***/ "@wordpress/components":
    536 /*!************************************!*\
    537   !*** external ["wp","components"] ***!
    538   \************************************/
    539 /***/ ((module) => {
    540 
    541 module.exports = window["wp"]["components"];
    542 
    543 /***/ }),
    544 
    545 /***/ "@wordpress/element":
    546 /*!*********************************!*\
    547   !*** external ["wp","element"] ***!
    548   \*********************************/
    549 /***/ ((module) => {
    550 
    551 module.exports = window["wp"]["element"];
    552 
    553 /***/ }),
    554 
    555 /***/ "@wordpress/i18n":
    556 /*!******************************!*\
    557   !*** external ["wp","i18n"] ***!
    558   \******************************/
    559 /***/ ((module) => {
    560 
    561 module.exports = window["wp"]["i18n"];
    562 
    563 /***/ }),
    564 
    565 /***/ "./node_modules/@babel/runtime/helpers/esm/extends.js":
    566 /*!************************************************************!*\
    567   !*** ./node_modules/@babel/runtime/helpers/esm/extends.js ***!
    568   \************************************************************/
    569 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
    570 
    571 __webpack_require__.r(__webpack_exports__);
    572 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    573 /* harmony export */   "default": () => (/* binding */ _extends)
    574 /* harmony export */ });
    575 function _extends() {
    576   _extends = Object.assign ? Object.assign.bind() : function (target) {
    577     for (var i = 1; i < arguments.length; i++) {
    578       var source = arguments[i];
    579 
    580       for (var key in source) {
    581         if (Object.prototype.hasOwnProperty.call(source, key)) {
    582           target[key] = source[key];
    583         }
    584       }
    585     }
    586 
    587     return target;
    588   };
    589   return _extends.apply(this, arguments);
    590 }
    591 
    592 /***/ }),
    593 
    594 /***/ "./src/block.json":
    595 /*!************************!*\
    596   !*** ./src/block.json ***!
    597   \************************/
    598 /***/ ((module) => {
    599 
    600 module.exports = JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":2,"name":"codesue/terminal-block","version":"0.1.1","title":"Terminal Block","category":"widgets","icon":"editor-code","description":"Display rich text in a terminal window.","keywords":["code","terminal","documentation"],"supports":{"color":{"text":true,"background":true,"link":true},"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true}},"attributes":{"content":{"type":"string","source":"html","selector":"div"},"title":{"type":"string","default":"bash"}},"textdomain":"terminal-block","editorScript":"file:./index.js","editorStyle":"file:./index.css","style":"file:./style-index.css"}');
    601 
    602 /***/ })
    603 
    604 /******/    });
    605 /************************************************************************/
    606 /******/    // The module cache
    607 /******/    var __webpack_module_cache__ = {};
    608 /******/   
    609 /******/    // The require function
    610 /******/    function __webpack_require__(moduleId) {
    611 /******/        // Check if module is in cache
    612 /******/        var cachedModule = __webpack_module_cache__[moduleId];
    613 /******/        if (cachedModule !== undefined) {
    614 /******/            return cachedModule.exports;
    615 /******/        }
    616 /******/        // Create a new module (and put it into the cache)
    617 /******/        var module = __webpack_module_cache__[moduleId] = {
    618 /******/            // no module.id needed
    619 /******/            // no module.loaded needed
    620 /******/            exports: {}
    621 /******/        };
    622 /******/   
    623 /******/        // Execute the module function
    624 /******/        __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
    625 /******/   
    626 /******/        // Return the exports of the module
    627 /******/        return module.exports;
    628 /******/    }
    629 /******/   
    630 /******/    // expose the modules object (__webpack_modules__)
    631 /******/    __webpack_require__.m = __webpack_modules__;
    632 /******/   
    633 /************************************************************************/
    634 /******/    /* webpack/runtime/chunk loaded */
    635 /******/    (() => {
    636 /******/        var deferred = [];
    637 /******/        __webpack_require__.O = (result, chunkIds, fn, priority) => {
    638 /******/            if(chunkIds) {
    639 /******/                priority = priority || 0;
    640 /******/                for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
    641 /******/                deferred[i] = [chunkIds, fn, priority];
    642 /******/                return;
    643 /******/            }
    644 /******/            var notFulfilled = Infinity;
    645 /******/            for (var i = 0; i < deferred.length; i++) {
    646 /******/                var [chunkIds, fn, priority] = deferred[i];
    647 /******/                var fulfilled = true;
    648 /******/                for (var j = 0; j < chunkIds.length; j++) {
    649 /******/                    if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {
    650 /******/                        chunkIds.splice(j--, 1);
    651 /******/                    } else {
    652 /******/                        fulfilled = false;
    653 /******/                        if(priority < notFulfilled) notFulfilled = priority;
    654 /******/                    }
    655 /******/                }
    656 /******/                if(fulfilled) {
    657 /******/                    deferred.splice(i--, 1)
    658 /******/                    var r = fn();
    659 /******/                    if (r !== undefined) result = r;
    660 /******/                }
    661 /******/            }
    662 /******/            return result;
    663 /******/        };
    664 /******/    })();
    665 /******/   
    666 /******/    /* webpack/runtime/compat get default export */
    667 /******/    (() => {
    668 /******/        // getDefaultExport function for compatibility with non-harmony modules
    669 /******/        __webpack_require__.n = (module) => {
    670 /******/            var getter = module && module.__esModule ?
    671 /******/                () => (module['default']) :
    672 /******/                () => (module);
    673 /******/            __webpack_require__.d(getter, { a: getter });
    674 /******/            return getter;
    675 /******/        };
    676 /******/    })();
    677 /******/   
    678 /******/    /* webpack/runtime/define property getters */
    679 /******/    (() => {
    680 /******/        // define getter functions for harmony exports
    681 /******/        __webpack_require__.d = (exports, definition) => {
    682 /******/            for(var key in definition) {
    683 /******/                if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
    684 /******/                    Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
    685 /******/                }
    686 /******/            }
    687 /******/        };
    688 /******/    })();
    689 /******/   
    690 /******/    /* webpack/runtime/hasOwnProperty shorthand */
    691 /******/    (() => {
    692 /******/        __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
    693 /******/    })();
    694 /******/   
    695 /******/    /* webpack/runtime/make namespace object */
    696 /******/    (() => {
    697 /******/        // define __esModule on exports
    698 /******/        __webpack_require__.r = (exports) => {
    699 /******/            if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
    700 /******/                Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
    701 /******/            }
    702 /******/            Object.defineProperty(exports, '__esModule', { value: true });
    703 /******/        };
    704 /******/    })();
    705 /******/   
    706 /******/    /* webpack/runtime/jsonp chunk loading */
    707 /******/    (() => {
    708 /******/        // no baseURI
    709 /******/       
    710 /******/        // object to store loaded and loading chunks
    711 /******/        // undefined = chunk not loaded, null = chunk preloaded/prefetched
    712 /******/        // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
    713 /******/        var installedChunks = {
    714 /******/            "index": 0,
    715 /******/            "./style-index": 0
    716 /******/        };
    717 /******/       
    718 /******/        // no chunk on demand loading
    719 /******/       
    720 /******/        // no prefetching
    721 /******/       
    722 /******/        // no preloaded
    723 /******/       
    724 /******/        // no HMR
    725 /******/       
    726 /******/        // no HMR manifest
    727 /******/       
    728 /******/        __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);
    729 /******/       
    730 /******/        // install a JSONP callback for chunk loading
    731 /******/        var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
    732 /******/            var [chunkIds, moreModules, runtime] = data;
    733 /******/            // add "moreModules" to the modules object,
    734 /******/            // then flag all "chunkIds" as loaded and fire callback
    735 /******/            var moduleId, chunkId, i = 0;
    736 /******/            if(chunkIds.some((id) => (installedChunks[id] !== 0))) {
    737 /******/                for(moduleId in moreModules) {
    738 /******/                    if(__webpack_require__.o(moreModules, moduleId)) {
    739 /******/                        __webpack_require__.m[moduleId] = moreModules[moduleId];
    740 /******/                    }
    741 /******/                }
    742 /******/                if(runtime) var result = runtime(__webpack_require__);
    743 /******/            }
    744 /******/            if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
    745 /******/            for(;i < chunkIds.length; i++) {
    746 /******/                chunkId = chunkIds[i];
    747 /******/                if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
    748 /******/                    installedChunks[chunkId][0]();
    749 /******/                }
    750 /******/                installedChunks[chunkId] = 0;
    751 /******/            }
    752 /******/            return __webpack_require__.O(result);
    753 /******/        }
    754 /******/       
    755 /******/        var chunkLoadingGlobal = globalThis["webpackChunkterminal_block"] = globalThis["webpackChunkterminal_block"] || [];
    756 /******/        chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
    757 /******/        chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
    758 /******/    })();
    759 /******/   
    760 /************************************************************************/
    761 /******/   
    762 /******/    // startup
    763 /******/    // Load entry module and return exports
    764 /******/    // This entry module depends on other loaded chunks and execution need to be delayed
    765 /******/    var __webpack_exports__ = __webpack_require__.O(undefined, ["./style-index"], () => (__webpack_require__("./src/index.js")))
    766 /******/    __webpack_exports__ = __webpack_require__.O(__webpack_exports__);
    767 /******/   
    768 /******/ })()
    769 ;
    770 //# sourceMappingURL=index.js.map
     1(()=>{"use strict";var e,t={717:()=>{const e=window.wp.blocks;function t(){return t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},t.apply(this,arguments)}const r=window.wp.element,o=window.wp.blockEditor,n=window.wp.components,l=window.wp.i18n,a=JSON.parse('{"u2":"codesue/terminal-block","kG":"terminal-block"}');(0,e.registerBlockType)("codesue/terminal-command-block",{title:"Command",parent:[a.u2],icon:"arrow-right-alt2",description:"Add a command to a terminal window.",category:"text",attributes:{content:{type:"string",source:"html",selector:"p"},prompt:{type:"string",default:"$"}},example:{attributes:{content:"pip install spacy"}},edit(e){let{attributes:c,setAttributes:s}=e;const i=(0,o.useBlockProps)();return(0,r.createElement)(r.Fragment,null,(0,r.createElement)(o.InspectorControls,null,(0,r.createElement)(n.PanelBody,{title:(0,l.__)("Prompt Settings",a.kG),initialOpen:!0},(0,r.createElement)(n.PanelRow,null,(0,r.createElement)(n.TextControl,{label:(0,l.__)("Prompt",a.kG),value:c.prompt,onChange:e=>{s({prompt:e})},help:(0,l.__)("Change the prompt. Defaults to $",a.kG)})))),(0,r.createElement)(o.RichText,t({},i,{tagName:"p",value:c.content,prompt:c.prompt,className:"display-prompt",onChange:e=>{s({content:e})},placeholder:(0,l.__)("Enter your command...",a.kG),allowedFormats:["core/bold","core/italic","core/link","core/text-color","core/underline"]})))},save(e){let{attributes:n}=e;const l=o.useBlockProps.save(),{content:a,prompt:c}=n;return(0,r.createElement)(o.RichText.Content,t({},l,{tagName:"p",value:a,prompt:c,className:"display-prompt"}))},transforms:{to:[{type:"block",blocks:["codesue/terminal-output-block"],transform:t=>{let{content:r}=t;return(0,e.createBlock)("codesue/terminal-output-block",{content:r})}}],from:[{type:"block",blocks:["codesue/terminal-output-block"],transform:t=>{let{content:r}=t;return(0,e.createBlock)("codesue/terminal-command-block",{content:r})}}]}}),(0,e.registerBlockType)("codesue/terminal-output-block",{title:"Output",parent:[a.u2],icon:"editor-paragraph",description:"Add output text to a terminal window.",category:"text",attributes:{content:{type:"string",source:"html",selector:"p"}},example:{attributes:{content:"Successfully installed spacy"}},edit(e){let{attributes:n,setAttributes:c}=e;const s=(0,o.useBlockProps)();return(0,r.createElement)(o.RichText,t({},s,{tagName:"p",value:n.content,onChange:e=>{c({content:e})},placeholder:(0,l.__)("Write your output...",a.kG),allowedFormats:["core/bold","core/italic","core/link","core/text-color","core/underline"]}))},save(e){let{attributes:n}=e;const l=o.useBlockProps.save(),{content:a}=n;return(0,r.createElement)(o.RichText.Content,t({},l,{tagName:"p",value:a}))},transforms:{to:[{type:"block",blocks:["codesue/terminal-command-block"],transform:t=>{let{content:r}=t;return(0,e.createBlock)("codesue/terminal-command-block",{content:r})}}],from:[{type:"block",blocks:["codesue/terminal-command-block"],transform:t=>{let{content:r}=t;return(0,e.createBlock)("codesue/terminal-output-block",{content:r})}}]}}),(0,e.registerBlockType)("codesue/terminal-progress-bar-block",{title:"Progress Bar",parent:[a.u2],icon:"chart-bar",description:"Add a progress bar to a terminal window.",category:"design",supports:{color:{text:!0,background:!1}},attributes:{content:{type:"string",source:"html",selector:"p"},character:{type:"string",default:"█"},percent:{type:"number",default:"100"}},example:{attributes:{content:"███████████████████ 100%"}},edit(e){let{attributes:c,setAttributes:s}=e;const i=(0,o.useBlockProps)(),u=(e,t)=>e?`${e.repeat(t/2.5)} ${c.percent}%`:"";return(0,r.createElement)(r.Fragment,null,(0,r.createElement)(o.InspectorControls,null,(0,r.createElement)(n.PanelBody,{title:(0,l.__)("Progress Bar Settings",a.kG),initialOpen:!0},(0,r.createElement)(n.PanelRow,null,(0,r.createElement)(n.TextControl,{label:(0,l.__)("Character",a.kG),value:c.character,onChange:e=>{s({character:e}),u(e,c.percent)},help:(0,l.__)("Change the character. Defaults to █",a.kG)})),(0,r.createElement)(n.PanelRow,null,(0,r.createElement)(n.__experimentalNumberControl,{label:(0,l.__)("Percent",a.kG),labelPosition:"edge",value:c.percent,onChange:e=>{s({percent:parseInt(e)}),u(c.character,parseInt(e))},isDragEnabled:!0,min:0,max:100,step:10,help:(0,l.__)("Change the percent. Defaults to 100",a.kG)})))),(0,r.createElement)(o.RichText,t({},i,{tagName:"p",value:u(c.character,c.percent),character:c.character,percent:c.percent,onChange:e=>{s({content:e})},allowedFormats:[]})))},save(e){let{attributes:n}=e;const l=o.useBlockProps.save();return(0,r.createElement)(o.RichText.Content,t({},l,{tagName:"p",value:n.content,character:n.character,percent:n.percent}))}}),(0,e.registerBlockType)(a.u2,{edit:function(e){let{attributes:c,setAttributes:s}=e;const i=(0,o.useBlockProps)();return(0,r.createElement)(r.Fragment,null,(0,r.createElement)(o.InspectorControls,null,(0,r.createElement)(n.PanelBody,{title:(0,l.__)("Terminal Settings",a.kG),initialOpen:!0},(0,r.createElement)(n.PanelRow,null,(0,r.createElement)(n.TextControl,{label:(0,l.__)("Title",a.kG),value:c.title,onChange:e=>{s({title:e})},help:(0,l.__)("Change the title. Defaults to bash",a.kG)}))),(0,r.createElement)(o.PanelColorSettings,{title:(0,l.__)("Color Settings",a.kG),initialOpen:!0,colorSettings:[{value:c.backgroundColor,onChange:e=>{s({backgroundColor:e})},label:(0,l.__)("Background color",a.kG)},{value:c.textColor,onChange:e=>{s({textColor:e})},label:(0,l.__)("Text color",a.kG)},{value:c.accentColor,onChange:e=>{s({accentColor:e})},label:(0,l.__)("Accent color",a.kG)}]})),(0,r.createElement)("div",t({},i,{title:c.title,style:{"--wp--default--terminal--block--color--background":c.backgroundColor,"--wp--default--terminal--block--color--text":c.textColor,"--wp--default--terminal--block--color--accent":c.accentColor}}),(0,r.createElement)(o.InnerBlocks,{allowedBlocks:["core/spacer","codesue/terminal-command-block","codesue/terminal-output-block","codesue/terminal-progress-bar-block"]})))},save:function(e){let{attributes:n}=e;const l=o.useBlockProps.save(),{title:a,backgroundColor:c,textColor:s,accentColor:i}=n;return(0,r.createElement)("div",t({},l,{title:a,style:{"--wp--default--terminal--block--color--background":c,"--wp--default--terminal--block--color--text":s,"--wp--default--terminal--block--color--accent":i}}),(0,r.createElement)(o.InnerBlocks.Content,null))}})}},r={};function o(e){var n=r[e];if(void 0!==n)return n.exports;var l=r[e]={exports:{}};return t[e](l,l.exports,o),l.exports}o.m=t,e=[],o.O=(t,r,n,l)=>{if(!r){var a=1/0;for(u=0;u<e.length;u++){for(var[r,n,l]=e[u],c=!0,s=0;s<r.length;s++)(!1&l||a>=l)&&Object.keys(o.O).every((e=>o.O[e](r[s])))?r.splice(s--,1):(c=!1,l<a&&(a=l));if(c){e.splice(u--,1);var i=n();void 0!==i&&(t=i)}}return t}l=l||0;for(var u=e.length;u>0&&e[u-1][2]>l;u--)e[u]=e[u-1];e[u]=[r,n,l]},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={826:0,431:0};o.O.j=t=>0===e[t];var t=(t,r)=>{var n,l,[a,c,s]=r,i=0;if(a.some((t=>0!==e[t]))){for(n in c)o.o(c,n)&&(o.m[n]=c[n]);if(s)var u=s(o)}for(t&&t(r);i<a.length;i++)l=a[i],o.o(e,l)&&e[l]&&e[l][0](),e[l]=0;return o.O(u)},r=globalThis.webpackChunkterminal_block=globalThis.webpackChunkterminal_block||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})();var n=o.O(void 0,[431],(()=>o(717)));n=o.O(n)})();
  • terminal-block/trunk/build/style-index.css

    r2763919 r2763965  
    1 /*!***************************************************************************************************************************************************************************************************************************************!*\
    2   !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[3]!./src/style.scss ***!
    3   \***************************************************************************************************************************************************************************************************************************************/
    4 @charset "UTF-8";
    5 /**
    6 * Adapted from termynal.js CSS version 0.0.1 by Ines Montani <[email protected]>, licensed under MIT license.
    7 */
    8 @font-face {
    9   font-family: "Fira Mono";
    10   src: url(fonts/FiraMono-Regular.85c5f914.otf);
    11 }
    12 .wp-block-codesue-terminal-block {
    13   --wp--default--terminal--block--color--background: #252a33;
    14   --wp--default--terminal--block--color--text: #eee;
    15   --wp--default--terminal--block--opacity--subtle: 0.5;
    16   width: 750px;
    17   max-width: 100%;
    18   background: var(--wp--default--terminal--block--color--background);
    19   color: var(--wp--default--terminal--block--color--text);
    20   font-size: 18px;
    21   font-family: "Fira Mono", Consolas, Menlo, Monaco, "Courier New", Courier, monospace;
    22   border-radius: 4px;
    23   padding: 75px 45px 35px;
    24   position: relative;
    25   box-sizing: border-box;
    26 }
    27 
    28 .wp-block-codesue-terminal-block::before {
    29   content: "";
    30   position: absolute;
    31   top: 15px;
    32   left: 15px;
    33   display: inline-block;
    34   width: 15px;
    35   height: 15px;
    36   border-radius: 50%;
    37   /* A little hack to display the window buttons in one pseudo element. */
    38   background: #d9515d;
    39   box-shadow: 25px 0 0 #f4c025, 50px 0 0 #3ec930;
    40 }
    41 
    42 .wp-block-codesue-terminal-block::after {
    43   content: attr(title);
    44   position: absolute;
    45   opacity: var(--wp--default--terminal--block--opacity--subtle);
    46   top: 5px;
    47   left: 0;
    48   width: 100%;
    49   text-align: center;
    50 }
    51 
    52 .wp-block-codesue-terminal-block p {
    53   display: block;
    54   line-height: 1;
    55 }
    56 
    57 .wp-block-codesue-terminal-block p::before {
    58   /* Set up defaults and ensure empty lines are displayed. */
    59   content: "";
    60   display: inline-block;
    61   vertical-align: middle;
    62 }
    63 
    64 .wp-block-codesue-terminal-block p.display-prompt::before {
    65   content: attr(prompt);
    66   margin-right: 0.75em;
    67   opacity: var(--wp--default--terminal--block--opacity--subtle);
    68 }
    69 
    70 .wp-block-codesue-terminal-command-block.display-cursor::after {
    71   content: "▋";
    72   font-family: monospace;
    73   margin-left: 0.5em;
    74   -webkit-animation: blink 1s infinite;
    75   animation: blink 1s infinite;
    76 }
    77 
    78 /* Cursor animation */
    79 @-webkit-keyframes blink {
    80   50% {
    81     opacity: 0;
    82   }
    83 }
    84 @keyframes blink {
    85   50% {
    86     opacity: 0;
    87   }
    88 }
    89 
    90 /*# sourceMappingURL=style-index.css.map*/
     1@font-face{font-family:Fira Mono;src:url(fonts/FiraMono-Regular.85c5f914.otf)}.wp-block-codesue-terminal-block{--wp--default--terminal--block--color--background:#252a33;--wp--default--terminal--block--color--text:#eee;--wp--default--terminal--block--color--accent:#a2a2a2;background:var(--wp--default--terminal--block--color--background);border-radius:4px;box-sizing:border-box;color:var(--wp--default--terminal--block--color--text);font-family:Fira Mono,Consolas,Menlo,Monaco,Courier New,Courier,monospace;font-size:18px;max-width:100%;padding:75px 45px 35px;position:relative;width:750px}.wp-block-codesue-terminal-block:before{background:#d9515d;border-radius:50%;box-shadow:25px 0 0 #f4c025,50px 0 0 #3ec930;content:"";display:inline-block;height:15px;left:15px;position:absolute;top:15px;width:15px}.wp-block-codesue-terminal-block:after{color:var(--wp--default--terminal--block--color--accent);content:attr(title);left:0;position:absolute;text-align:center;top:5px;width:100%}.wp-block-codesue-terminal-block p{display:block;line-height:1}.wp-block-codesue-terminal-block p:before{content:"";display:inline-block;vertical-align:middle}.wp-block-codesue-terminal-block p.display-prompt:before{color:var(--wp--default--terminal--block--color--accent);content:attr(prompt);margin-right:.75em}.wp-block-codesue-terminal-command-block.display-cursor:after{-webkit-animation:blink 1s infinite;animation:blink 1s infinite;content:"▋";font-family:monospace;margin-left:.5em}@-webkit-keyframes blink{50%{opacity:0}}@keyframes blink{50%{opacity:0}}
  • terminal-block/trunk/package-lock.json

    r2763919 r2763965  
    11{
    22    "name": "terminal-block",
    3     "version": "0.1.0",
     3    "version": "0.1.2",
    44    "lockfileVersion": 1,
    55    "requires": true,
  • terminal-block/trunk/package.json

    r2763919 r2763965  
    11{
    22    "name": "terminal-block",
    3     "version": "0.1.1",
     3    "version": "0.1.2",
    44    "description": "Display rich text in a terminal window.",
    55    "author": "Suzen Fylke",
  • terminal-block/trunk/readme.txt

    r2763919 r2763965  
    33Tags:              gutenberg, block, blocks, terminal, code, documentation
    44Tested up to:      6.0
    5 Stable tag:        0.1.1
     5Stable tag:        0.1.2
    66License:           GPL-2.0-or-later
    77License URI:       https://www.gnu.org/licenses/gpl-2.0.html
     
    3737== Changelog ==
    3838
     39= 0.1.2 =
     40* Fix theme style bleeding into editor view
     41* Add support for user defined accent color for prompt and title
     42
    3943= 0.1.1 =
    4044* Use inner blocks for terminal inputs, outputs, and progress bars
  • terminal-block/trunk/src/block.json

    r2763919 r2763965  
    33    "apiVersion": 2,
    44    "name": "codesue/terminal-block",
    5     "version": "0.1.1",
     5    "version": "0.1.2",
    66    "title": "Terminal Block",
    77    "category": "widgets",
     
    1010    "keywords": [ "code", "terminal", "documentation"],
    1111    "supports": {
    12         "color": {
    13             "text": true,
    14             "background": true,
    15             "link": true
    16         },
    1712        "spacing": {
    1813            "margin": true,
     
    3328            "type":"string",
    3429            "default": "bash"
     30        },
     31        "backgroundColor": {
     32            "type": "string",
     33            "default": "#252a33"
     34        },
     35        "textColor": {
     36            "type": "string",
     37            "default": "#eee"
     38        },
     39        "accentColor": {
     40            "type": "string",
     41            "default": "#a2a2a2"
    3542        }
    3643    },
  • terminal-block/trunk/src/edit.js

    r2763919 r2763965  
    33    InnerBlocks,
    44    InspectorControls,
     5    PanelColorSettings,
    56} from "@wordpress/block-editor";
    67import { TextControl, PanelBody, PanelRow } from "@wordpress/components";
     
    1314import metadata from "./block.json";
    1415
     16import "./editor.scss";
     17
    1518export default function edit({ attributes, setAttributes }) {
    1619    const blockProps = useBlockProps();
    1720    const onChangeTitle = (title) => {
    1821        setAttributes({ title });
     22    };
     23    const onChangeBackgroundColor = (backgroundColor) => {
     24        setAttributes({ backgroundColor });
     25    };
     26    const onChangetextColor = (textColor) => {
     27        setAttributes({ textColor });
     28    };
     29    const onChangeAccentColor = (accentColor) => {
     30        setAttributes({ accentColor });
    1931    };
    2032    return (
     
    3749                    </PanelRow>
    3850                </PanelBody>
     51                <PanelColorSettings
     52                    title={__("Color Settings", metadata.textdomain)}
     53                    initialOpen={true}
     54                    colorSettings={[
     55                        {
     56                            value: attributes.backgroundColor,
     57                            onChange: onChangeBackgroundColor,
     58                            label: __("Background color", metadata.textdomain),
     59                        },
     60                        {
     61                            value: attributes.textColor,
     62                            onChange: onChangetextColor,
     63                            label: __("Text color", metadata.textdomain),
     64                        },
     65                        {
     66                            value: attributes.accentColor,
     67                            onChange: onChangeAccentColor,
     68                            label: __("Accent color", metadata.textdomain),
     69                        },
     70                    ]}
     71                />
    3972            </InspectorControls>
    40             <div {...blockProps} title={attributes.title}>
     73            <div
     74                {...blockProps}
     75                title={attributes.title}
     76                style={{
     77                    "--wp--default--terminal--block--color--background":
     78                        attributes.backgroundColor,
     79                    "--wp--default--terminal--block--color--text": attributes.textColor,
     80                    "--wp--default--terminal--block--color--accent":
     81                        attributes.accentColor,
     82                }}
     83            >
    4184                <InnerBlocks
    4285                    allowedBlocks={[
  • terminal-block/trunk/src/editor.scss

    r2762884 r2763965  
    1 .wp-block-codesue-terminal-block .prompt {
    2     -webkit-user-select: text;
    3             user-select: text;
     1.wp-block-codesue-terminal-block {
     2    // Increase specificity to avoid theme styles bleeding in.
     3    .block-editor-rich-text__editable {
     4        width: 750px !important;
     5        max-width: 100% !important;
     6        background: var(--wp--default--terminal--block--color--background) !important;
     7        color: var(--wp--default--terminal--block--color--text) !important;
     8        font-size: 18px !important;
     9        font-family: 'Fira Mono', Consolas, Menlo, Monaco, 'Courier New', Courier, monospace !important;
     10        -webkit-box-sizing: border-box !important;
     11                box-sizing: border-box !important;
     12    }
     13
     14    p.block-editor-rich-text__editable {
     15        display: block !important;
     16        line-height: 1 !important;
     17    }
    418}
  • terminal-block/trunk/src/save.js

    r2763919 r2763965  
    44export default function save({ attributes }) {
    55    const blockProps = useBlockProps.save();
     6    const { title, backgroundColor, textColor, accentColor } = attributes;
    67    return (
    7         <div {...blockProps} title={attributes.title}>
     8        <div
     9            {...blockProps}
     10            title={title}
     11            style={{
     12                "--wp--default--terminal--block--color--background": backgroundColor,
     13                "--wp--default--terminal--block--color--text": textColor,
     14                "--wp--default--terminal--block--color--accent": accentColor,
     15            }}
     16        >
    817            <InnerBlocks.Content />
    918        </div>
  • terminal-block/trunk/src/style.scss

    r2763919 r2763965  
    1111    --wp--default--terminal--block--color--background: #252a33;
    1212    --wp--default--terminal--block--color--text: #eee;
    13     --wp--default--terminal--block--opacity--subtle: 0.5;
     13    --wp--default--terminal--block--color--accent: #a2a2a2;
    1414
    1515    width: 750px;
     
    4444    content: attr(title);
    4545    position: absolute;
    46     opacity: var(--wp--default--terminal--block--opacity--subtle);
     46    color: var(--wp--default--terminal--block--color--accent);
    4747    top: 5px;
    4848    left: 0;
     
    6666    content: attr(prompt);
    6767    margin-right: 0.75em;
    68     opacity: var(--wp--default--terminal--block--opacity--subtle);
     68    color: var(--wp--default--terminal--block--color--accent);
    6969}
    7070
  • terminal-block/trunk/terminal-block.php

    r2763919 r2763965  
    55 * Requires at least: 5.9
    66 * Requires PHP:      7.0
    7  * Version:           0.1.1
     7 * Version:           0.1.2
    88 * Author:            Suzen Fylke
    99 * Author URI:        codesue.com
     
    2020add_action( 'init', 'codesue_terminal_block_init' );
    2121
    22 function codesue_terminal_block_enqueue_scripts() {
     22function codesue_terminal_block_enqueue() {
    2323    wp_enqueue_script(
    2424        'codesue-terminal-block-script',
     
    2929    );
    3030}
    31 add_action( 'wp_enqueue_scripts', 'codesue_terminal_block_enqueue_scripts' );
     31add_action( 'wp_enqueue_scripts', 'codesue_terminal_block_enqueue' );
Note: See TracChangeset for help on using the changeset viewer.