Plugin Directory

Changeset 3172376


Ignore:
Timestamp:
10/20/2024 03:11:50 PM (18 months ago)
Author:
eunito
Message:

v0.0.2

Location:
gutenito-blocks-addon
Files:
94 added
9 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • gutenito-blocks-addon/trunk/build/blocks/digital-clock/block.json

    r3078810 r3172376  
    55  "version": "1.0.0",
    66  "title": "Digital Clock",
    7   "category": "widgets",
     7  "category": "gutenito",
    88  "description": "Display the current date and time",
    99  "keywords": [
     
    1212  ],
    1313  "icon": "clock",
    14   "example": {},
     14  "example": {
     15    "attributes": {
     16      "preview": true
     17    }
     18  },
    1519  "attributes": {
    16     "block_id": {
     20    "textColor": {
    1721      "type": "string"
    1822    },
    19     "color": {
     23    "backgroundColor": {
    2024      "type": "string"
    2125    },
    22     "background_color": {
     26    "alignmentDesktop": {
    2327      "type": "string"
    2428    },
    25     "title": {
    26       "type": "string",
    27       "default": "Hello SRF"
    28     },
    29     "padding": {
    30       "type": "integer"
    31     },
    32     "margin": {
    33       "type": "integer"
    34     },
    35     "border_radius": {
    36       "type": "integer"
    37     },
    38     "display": {
     29    "alignmentTablet": {
    3930      "type": "string"
    4031    },
    41     "animation": {
     32    "alignmentMobile": {
     33      "type": "string"
     34    },
     35    "fontSize": {
    4236      "type": "string"
    4337    }
    4438  },
    45   "textdomain": "copyright-date-block",
     39  "supports": {
     40    "html": false
     41  },
     42  "textdomain": "gutenito-blocks-addon",
    4643  "editorScript": "file:./index.js",
    4744  "editorStyle": "file:./index.css",
     45  "style": "file:./style-index.css",
    4846  "viewScript": "file:./view.js"
    4947}
  • gutenito-blocks-addon/trunk/build/blocks/digital-clock/index.asset.php

    r3078810 r3172376  
    1 <?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => 'b0ecf14656e4c71efd71');
     1<?php return array('dependencies' => array('react', 'react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-element', 'wp-hooks', 'wp-i18n'), 'version' => 'e2c0bcb760bc3f86ca8c');
  • gutenito-blocks-addon/trunk/build/blocks/digital-clock/index.js

    r3078810 r3172376  
    1 (()=>{"use strict";const e=window.wp.blocks,t=window.React,n=(window.wp.i18n,window.wp.components),a=e=>{console.log("Selecting tab",e)},l=function(e){return(0,t.createElement)(n.TabPanel,{className:"gutenito-tab-panel",activeClass:"gutenito-active-tab",onSelect:a,tabs:[{name:"content",title:"Content",className:"gutenito-content-tab"},{name:"style",title:"Style",className:"gutenito-style-tab"},{name:"advanced",title:"Advanced",className:"gutenito-advanced-tab"}]},(t=>{switch(t.name){case"content":return e.content;case"style":return e.style;case"advanced":return e.advanced}}))};function r({attributes:e,setAttributes:a}){return(0,t.createElement)(n.Panel,null,(0,t.createElement)(n.PanelBody,{title:"Content",initialOpen:!1},(0,t.createElement)(n.PanelRow,null,"Coming Soon...")))}function o({attributes:e,setAttributes:a}){return(0,t.createElement)(n.Panel,null,(0,t.createElement)(n.PanelBody,{title:"Style",initialOpen:!1},(0,t.createElement)("label",null,"Color"),(0,t.createElement)(n.ColorPicker,{color:e.color,onChange:e=>a({color:e}),enableAlpha:!0,defaultValue:"#000000"}),(0,t.createElement)("label",null,"Background Color"),(0,t.createElement)(n.ColorPicker,{color:e.background_color,onChange:e=>a({background_color:e}),enableAlpha:!0,defaultValue:"#000000"}),(0,t.createElement)(n.RangeControl,{label:"Padding",value:e.padding,onChange:e=>a({padding:e}),min:0,max:100}),(0,t.createElement)(n.RangeControl,{label:"Margin",value:e.margin,onChange:e=>a({margin:e}),min:0,max:100}),(0,t.createElement)(n.RangeControl,{label:"Border Radius",value:e.border_radius,onChange:e=>a({border_radius:e}),min:0,max:100})))}function c(){return(0,t.createElement)(n.Panel,null,(0,t.createElement)(n.PanelBody,{title:"Advanced",initialOpen:!1},(0,t.createElement)(n.PanelRow,null,"Coming Soon...")))}const i=window.wp.blockEditor,s=JSON.parse('{"u2":"gutenito-blocks-addon/digital-clock"}');(0,e.registerBlockType)(s.u2,{edit:function({attributes:e,setAttributes:n}){const a=(0,i.useBlockProps)({style:{color:e.color,background:e.background_color,textAlign:"center",padding:e.padding,margin:e.margin,borderRadius:e.border_radius,display:e.display}});return(0,t.createElement)(t.Fragment,null,(0,t.createElement)(i.InspectorControls,null,(0,t.createElement)(l,{content:(0,t.createElement)(r,{attributes:e,setAttributes:n}),style:(0,t.createElement)(o,{attributes:e,setAttributes:n}),advanced:(0,t.createElement)(c,{attributes:e,setAttributes:n})})),(0,t.createElement)("h1",{...a},(()=>{let e=(new Date).toLocaleTimeString(),[n,a]=(0,t.useState)();return setInterval((()=>{e=(new Date).toLocaleTimeString(),a(e)}),1e3),(0,t.createElement)(t.Fragment,null,(0,t.createElement)("div",null," ",n))})()))},save:function({attributes:e}){const n=i.useBlockProps.save({style:{color:e.color,background:e.background_color,textAlign:"center",padding:e.padding,margin:e.margin,borderRadius:e.border_radius,display:e.display}});return(0,t.createElement)(t.Fragment,null,(0,t.createElement)("div",{...n},(0,t.createElement)("h1",{id:"txt"})))}})})();
     1/******/ (() => { // webpackBootstrap
     2/******/    "use strict";
     3/******/    var __webpack_modules__ = ({
     4
     5/***/ "./src/blocks/digital-clock/edit.js":
     6/*!******************************************!*\
     7  !*** ./src/blocks/digital-clock/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 _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     16/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__);
     17/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/block-editor */ "@wordpress/block-editor");
     18/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__);
     19/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./editor.scss */ "./src/blocks/digital-clock/editor.scss");
     20/* harmony import */ var _inspector__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./inspector */ "./src/blocks/digital-clock/inspector.js");
     21/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./style */ "./src/blocks/digital-clock/style.js");
     22/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ "react");
     23/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);
     24/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
     25/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__);
     26
     27
     28
     29
     30
     31
     32
     33function Edit({
     34  attributes,
     35  setAttributes,
     36  advancedControls
     37}) {
     38  const {
     39    GutenitoBlocksAddonStyleTag
     40  } = window?.gutenitoBlocksAddon?.components;
     41  const {
     42    useDeviceType
     43  } = window?.gutenitoBlocksAddon?.helpers;
     44  const styles = (0,_style__WEBPACK_IMPORTED_MODULE_4__["default"])(attributes);
     45  const device = useDeviceType();
     46  const blockProps = (0,_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__.useBlockProps)({
     47    className: 'digital-clock'
     48  });
     49  const myClock = () => {
     50    let time = new Date().toLocaleTimeString();
     51    let [ctime, setCTime] = (0,react__WEBPACK_IMPORTED_MODULE_5__.useState)();
     52    const updateTime = () => {
     53      time = new Date().toLocaleTimeString();
     54      setCTime(time);
     55    };
     56    setInterval(updateTime, 1000);
     57    return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.Fragment, {
     58      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)("div", {
     59        children: [" ", ctime]
     60      })
     61    });
     62  };
     63  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.Fragment, {
     64    children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_inspector__WEBPACK_IMPORTED_MODULE_3__["default"], {
     65      attributes,
     66      setAttributes,
     67      advancedControls,
     68      device
     69    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(GutenitoBlocksAddonStyleTag, {
     70      attributes: attributes,
     71      setAttributes: setAttributes,
     72      styles: styles
     73    }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("div", {
     74      ...blockProps,
     75      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("div", {
     76        className: "digital-clock__content",
     77        children: myClock()
     78      })
     79    })]
     80  });
     81}
     82
     83/***/ }),
     84
     85/***/ "./src/blocks/digital-clock/index.js":
     86/*!*******************************************!*\
     87  !*** ./src/blocks/digital-clock/index.js ***!
     88  \*******************************************/
     89/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
     90
     91__webpack_require__.r(__webpack_exports__);
     92/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/blocks */ "@wordpress/blocks");
     93/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_0__);
     94/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./style.scss */ "./src/blocks/digital-clock/style.scss");
     95/* harmony import */ var _edit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./edit */ "./src/blocks/digital-clock/edit.js");
     96/* harmony import */ var _save__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./save */ "./src/blocks/digital-clock/save.js");
     97/* harmony import */ var _block_json__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./block.json */ "./src/blocks/digital-clock/block.json");
     98
     99
     100
     101
     102
     103(0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_0__.registerBlockType)(_block_json__WEBPACK_IMPORTED_MODULE_4__.name, {
     104  edit: _edit__WEBPACK_IMPORTED_MODULE_2__["default"],
     105  save: _save__WEBPACK_IMPORTED_MODULE_3__["default"]
     106});
     107
     108/***/ }),
     109
     110/***/ "./src/blocks/digital-clock/inspector.js":
     111/*!***********************************************!*\
     112  !*** ./src/blocks/digital-clock/inspector.js ***!
     113  \***********************************************/
     114/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
     115
     116__webpack_require__.r(__webpack_exports__);
     117/* harmony export */ __webpack_require__.d(__webpack_exports__, {
     118/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
     119/* harmony export */ });
     120/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/block-editor */ "@wordpress/block-editor");
     121/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_0__);
     122/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     123/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
     124/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     125/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_2__);
     126/* harmony import */ var _wordpress_hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/hooks */ "@wordpress/hooks");
     127/* harmony import */ var _wordpress_hooks__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_hooks__WEBPACK_IMPORTED_MODULE_3__);
     128/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
     129/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__);
     130
     131
     132
     133
     134
     135const Inspector = ({
     136  attributes,
     137  setAttributes,
     138  advancedControls,
     139  device
     140}) => {
     141  const {
     142    GutenitoBlocksAddonTab,
     143    GutenitoBlocksAddonPanelBody,
     144    GutenitoBlocksAddonColor,
     145    GutenitoBlocksAddonFontSizePicker,
     146    GutenitoBlocksAddonToggleGroup,
     147    GutenitoBlocksAddonResponsive
     148  } = window?.gutenitoBlocksAddon?.components;
     149  const {
     150    getResponsiveValue,
     151    setResponsiveValue
     152  } = window?.gutenitoBlocksAddon?.helpers;
     153  (0,_wordpress_hooks__WEBPACK_IMPORTED_MODULE_3__.addFilter)('GutenitoBlocksAddon.advancedControl.layout.margin.exclude', 'GutenitoBlocksAddon.advancedControl.layout.margin.exclude', excludes => excludes.add('gutenito-blocks-addon/sample-block'));
     154  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_0__.InspectorControls, {
     155    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(GutenitoBlocksAddonTab, {
     156      tabs: [{
     157        name: 'content',
     158        title: 'Content',
     159        className: "gutenito-content-tab"
     160      }, {
     161        name: 'style',
     162        title: 'Style',
     163        className: "gutenito-style-tab"
     164      }, {
     165        name: 'advanced',
     166        title: 'Advanced',
     167        className: "gutenito-advanced-tab"
     168      }],
     169      type: "top-level",
     170      children: ({
     171        name: tabName
     172      }) => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.Fragment, {
     173        children: [tabName === 'content' && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(GutenitoBlocksAddonPanelBody, {
     174          title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Content', 'gutenito-blocks-addon'),
     175          children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(GutenitoBlocksAddonResponsive, {
     176            left: '60px',
     177            children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(GutenitoBlocksAddonToggleGroup, {
     178              label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Alignment', 'gutenito-blocks-addon'),
     179              value: getResponsiveValue(attributes, 'alignment', device),
     180              onChange: value => setResponsiveValue(setAttributes, 'alignment', value, device),
     181              options: [{
     182                label: 'Left',
     183                value: 'left'
     184              }, {
     185                label: 'Center',
     186                value: 'center'
     187              }, {
     188                label: 'Right',
     189                value: 'right'
     190              }]
     191            })
     192          })
     193        }), tabName === 'style' && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(GutenitoBlocksAddonPanelBody, {
     194          title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Style', 'gutenito-blocks-addon'),
     195          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(GutenitoBlocksAddonColor, {
     196            label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Text Color', 'gutenito-blocks-addon'),
     197            value: attributes?.textColor,
     198            onChange: value => setAttributes({
     199              textColor: value
     200            })
     201          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(GutenitoBlocksAddonColor, {
     202            label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Background Color', 'gutenito-blocks-addon'),
     203            value: attributes?.backgroundColor,
     204            onChange: value => setAttributes({
     205              backgroundColor: value
     206            })
     207          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(GutenitoBlocksAddonFontSizePicker, {
     208            label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Font Size', 'gutenito-blocks-addon'),
     209            value: attributes?.fontSize,
     210            onChange: value => setAttributes({
     211              fontSize: value
     212            })
     213          })]
     214        }), tabName === 'advanced' && advancedControls]
     215      })
     216    })
     217  });
     218};
     219/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_wordpress_element__WEBPACK_IMPORTED_MODULE_2__.memo)(Inspector));
     220
     221/***/ }),
     222
     223/***/ "./src/blocks/digital-clock/save.js":
     224/*!******************************************!*\
     225  !*** ./src/blocks/digital-clock/save.js ***!
     226  \******************************************/
     227/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
     228
     229__webpack_require__.r(__webpack_exports__);
     230/* harmony export */ __webpack_require__.d(__webpack_exports__, {
     231/* harmony export */   "default": () => (/* binding */ save)
     232/* harmony export */ });
     233/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/block-editor */ "@wordpress/block-editor");
     234/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_0__);
     235/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
     236/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__);
     237/**
     238 * React hook that is used to mark the block wrapper element.
     239 * It provides all the necessary props like the class name.
     240 *
     241 * @see https://developer.wordpress.org/block-editor/reference-guides/packages/packages-block-editor/#useblockprops
     242 */
     243
     244/**
     245 * The save function defines the way in which the different attributes should
     246 * be combined into the final markup, which is then serialized by the block
     247 * editor into `post_content`.
     248 *
     249 * @see https://developer.wordpress.org/block-editor/reference-guides/block-api/block-edit-save/#save
     250 *
     251 * @param {Object} props            Properties passed to the function.
     252 * @param {Object} props.attributes Available block attributes.
     253 *
     254 * @return {Element} Element to render.
     255 */
     256
     257function save({
     258  attributes
     259}) {
     260  const blockProps = _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_0__.useBlockProps.save({
     261    className: 'digital-clock'
     262  });
     263  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.Fragment, {
     264    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)("div", {
     265      ...blockProps,
     266      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)("div", {
     267        className: "digital-clock__content",
     268        id: "txt"
     269      })
     270    })
     271  });
     272}
     273
     274/***/ }),
     275
     276/***/ "./src/blocks/digital-clock/style.js":
     277/*!*******************************************!*\
     278  !*** ./src/blocks/digital-clock/style.js ***!
     279  \*******************************************/
     280/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
     281
     282__webpack_require__.r(__webpack_exports__);
     283/* harmony export */ __webpack_require__.d(__webpack_exports__, {
     284/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
     285/* harmony export */ });
     286const useStyle = (attributes = {}) => {
     287  const {
     288    useGenerateStyles
     289  } = window.gutenitoBlocksAddon.helpers;
     290  const wrapper = `.${attributes?.blockClass}`;
     291  return useGenerateStyles(wrapper, () => {
     292    return {
     293      '--color': attributes?.textColor,
     294      '--background-color': attributes?.backgroundColor,
     295      '--font-size': attributes?.fontSize,
     296      '--align-desktop': attributes?.alignmentDesktop,
     297      '--align-tablet': attributes?.alignmentTablet,
     298      '--align-mobile': attributes?.alignmentMobile
     299    };
     300  });
     301};
     302/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useStyle);
     303
     304/***/ }),
     305
     306/***/ "./src/blocks/digital-clock/editor.scss":
     307/*!**********************************************!*\
     308  !*** ./src/blocks/digital-clock/editor.scss ***!
     309  \**********************************************/
     310/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
     311
     312__webpack_require__.r(__webpack_exports__);
     313// extracted by mini-css-extract-plugin
     314
     315
     316/***/ }),
     317
     318/***/ "./src/blocks/digital-clock/style.scss":
     319/*!*********************************************!*\
     320  !*** ./src/blocks/digital-clock/style.scss ***!
     321  \*********************************************/
     322/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
     323
     324__webpack_require__.r(__webpack_exports__);
     325// extracted by mini-css-extract-plugin
     326
     327
     328/***/ }),
     329
     330/***/ "react":
     331/*!************************!*\
     332  !*** external "React" ***!
     333  \************************/
     334/***/ ((module) => {
     335
     336module.exports = window["React"];
     337
     338/***/ }),
     339
     340/***/ "react/jsx-runtime":
     341/*!**********************************!*\
     342  !*** external "ReactJSXRuntime" ***!
     343  \**********************************/
     344/***/ ((module) => {
     345
     346module.exports = window["ReactJSXRuntime"];
     347
     348/***/ }),
     349
     350/***/ "@wordpress/block-editor":
     351/*!*************************************!*\
     352  !*** external ["wp","blockEditor"] ***!
     353  \*************************************/
     354/***/ ((module) => {
     355
     356module.exports = window["wp"]["blockEditor"];
     357
     358/***/ }),
     359
     360/***/ "@wordpress/blocks":
     361/*!********************************!*\
     362  !*** external ["wp","blocks"] ***!
     363  \********************************/
     364/***/ ((module) => {
     365
     366module.exports = window["wp"]["blocks"];
     367
     368/***/ }),
     369
     370/***/ "@wordpress/element":
     371/*!*********************************!*\
     372  !*** external ["wp","element"] ***!
     373  \*********************************/
     374/***/ ((module) => {
     375
     376module.exports = window["wp"]["element"];
     377
     378/***/ }),
     379
     380/***/ "@wordpress/hooks":
     381/*!*******************************!*\
     382  !*** external ["wp","hooks"] ***!
     383  \*******************************/
     384/***/ ((module) => {
     385
     386module.exports = window["wp"]["hooks"];
     387
     388/***/ }),
     389
     390/***/ "@wordpress/i18n":
     391/*!******************************!*\
     392  !*** external ["wp","i18n"] ***!
     393  \******************************/
     394/***/ ((module) => {
     395
     396module.exports = window["wp"]["i18n"];
     397
     398/***/ }),
     399
     400/***/ "./src/blocks/digital-clock/block.json":
     401/*!*********************************************!*\
     402  !*** ./src/blocks/digital-clock/block.json ***!
     403  \*********************************************/
     404/***/ ((module) => {
     405
     406module.exports = /*#__PURE__*/JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":3,"name":"gutenito-blocks-addon/digital-clock","version":"1.0.0","title":"Digital Clock","category":"gutenito","description":"Display the current date and time","keywords":["clock","clock-block"],"icon":"clock","example":{"attributes":{"preview":true}},"attributes":{"textColor":{"type":"string"},"backgroundColor":{"type":"string"},"alignmentDesktop":{"type":"string"},"alignmentTablet":{"type":"string"},"alignmentMobile":{"type":"string"},"fontSize":{"type":"string"}},"supports":{"html":false},"textdomain":"gutenito-blocks-addon","editorScript":"file:./index.js","editorStyle":"file:./index.css","style":"file:./style-index.css","viewScript":"file:./view.js"}');
     407
     408/***/ })
     409
     410/******/    });
     411/************************************************************************/
     412/******/    // The module cache
     413/******/    var __webpack_module_cache__ = {};
     414/******/   
     415/******/    // The require function
     416/******/    function __webpack_require__(moduleId) {
     417/******/        // Check if module is in cache
     418/******/        var cachedModule = __webpack_module_cache__[moduleId];
     419/******/        if (cachedModule !== undefined) {
     420/******/            return cachedModule.exports;
     421/******/        }
     422/******/        // Create a new module (and put it into the cache)
     423/******/        var module = __webpack_module_cache__[moduleId] = {
     424/******/            // no module.id needed
     425/******/            // no module.loaded needed
     426/******/            exports: {}
     427/******/        };
     428/******/   
     429/******/        // Execute the module function
     430/******/        __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
     431/******/   
     432/******/        // Return the exports of the module
     433/******/        return module.exports;
     434/******/    }
     435/******/   
     436/******/    // expose the modules object (__webpack_modules__)
     437/******/    __webpack_require__.m = __webpack_modules__;
     438/******/   
     439/************************************************************************/
     440/******/    /* webpack/runtime/chunk loaded */
     441/******/    (() => {
     442/******/        var deferred = [];
     443/******/        __webpack_require__.O = (result, chunkIds, fn, priority) => {
     444/******/            if(chunkIds) {
     445/******/                priority = priority || 0;
     446/******/                for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
     447/******/                deferred[i] = [chunkIds, fn, priority];
     448/******/                return;
     449/******/            }
     450/******/            var notFulfilled = Infinity;
     451/******/            for (var i = 0; i < deferred.length; i++) {
     452/******/                var chunkIds = deferred[i][0];
     453/******/                var fn = deferred[i][1];
     454/******/                var priority = deferred[i][2];
     455/******/                var fulfilled = true;
     456/******/                for (var j = 0; j < chunkIds.length; j++) {
     457/******/                    if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {
     458/******/                        chunkIds.splice(j--, 1);
     459/******/                    } else {
     460/******/                        fulfilled = false;
     461/******/                        if(priority < notFulfilled) notFulfilled = priority;
     462/******/                    }
     463/******/                }
     464/******/                if(fulfilled) {
     465/******/                    deferred.splice(i--, 1)
     466/******/                    var r = fn();
     467/******/                    if (r !== undefined) result = r;
     468/******/                }
     469/******/            }
     470/******/            return result;
     471/******/        };
     472/******/    })();
     473/******/   
     474/******/    /* webpack/runtime/compat get default export */
     475/******/    (() => {
     476/******/        // getDefaultExport function for compatibility with non-harmony modules
     477/******/        __webpack_require__.n = (module) => {
     478/******/            var getter = module && module.__esModule ?
     479/******/                () => (module['default']) :
     480/******/                () => (module);
     481/******/            __webpack_require__.d(getter, { a: getter });
     482/******/            return getter;
     483/******/        };
     484/******/    })();
     485/******/   
     486/******/    /* webpack/runtime/define property getters */
     487/******/    (() => {
     488/******/        // define getter functions for harmony exports
     489/******/        __webpack_require__.d = (exports, definition) => {
     490/******/            for(var key in definition) {
     491/******/                if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
     492/******/                    Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
     493/******/                }
     494/******/            }
     495/******/        };
     496/******/    })();
     497/******/   
     498/******/    /* webpack/runtime/hasOwnProperty shorthand */
     499/******/    (() => {
     500/******/        __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
     501/******/    })();
     502/******/   
     503/******/    /* webpack/runtime/make namespace object */
     504/******/    (() => {
     505/******/        // define __esModule on exports
     506/******/        __webpack_require__.r = (exports) => {
     507/******/            if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
     508/******/                Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
     509/******/            }
     510/******/            Object.defineProperty(exports, '__esModule', { value: true });
     511/******/        };
     512/******/    })();
     513/******/   
     514/******/    /* webpack/runtime/jsonp chunk loading */
     515/******/    (() => {
     516/******/        // no baseURI
     517/******/       
     518/******/        // object to store loaded and loading chunks
     519/******/        // undefined = chunk not loaded, null = chunk preloaded/prefetched
     520/******/        // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
     521/******/        var installedChunks = {
     522/******/            "blocks/digital-clock/index": 0,
     523/******/            "blocks/digital-clock/style-index": 0
     524/******/        };
     525/******/       
     526/******/        // no chunk on demand loading
     527/******/       
     528/******/        // no prefetching
     529/******/       
     530/******/        // no preloaded
     531/******/       
     532/******/        // no HMR
     533/******/       
     534/******/        // no HMR manifest
     535/******/       
     536/******/        __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);
     537/******/       
     538/******/        // install a JSONP callback for chunk loading
     539/******/        var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
     540/******/            var chunkIds = data[0];
     541/******/            var moreModules = data[1];
     542/******/            var runtime = data[2];
     543/******/            // add "moreModules" to the modules object,
     544/******/            // then flag all "chunkIds" as loaded and fire callback
     545/******/            var moduleId, chunkId, i = 0;
     546/******/            if(chunkIds.some((id) => (installedChunks[id] !== 0))) {
     547/******/                for(moduleId in moreModules) {
     548/******/                    if(__webpack_require__.o(moreModules, moduleId)) {
     549/******/                        __webpack_require__.m[moduleId] = moreModules[moduleId];
     550/******/                    }
     551/******/                }
     552/******/                if(runtime) var result = runtime(__webpack_require__);
     553/******/            }
     554/******/            if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
     555/******/            for(;i < chunkIds.length; i++) {
     556/******/                chunkId = chunkIds[i];
     557/******/                if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
     558/******/                    installedChunks[chunkId][0]();
     559/******/                }
     560/******/                installedChunks[chunkId] = 0;
     561/******/            }
     562/******/            return __webpack_require__.O(result);
     563/******/        }
     564/******/       
     565/******/        var chunkLoadingGlobal = self["webpackChunkgutenito_blocks_addon"] = self["webpackChunkgutenito_blocks_addon"] || [];
     566/******/        chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
     567/******/        chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
     568/******/    })();
     569/******/   
     570/************************************************************************/
     571/******/   
     572/******/    // startup
     573/******/    // Load entry module and return exports
     574/******/    // This entry module depends on other loaded chunks and execution need to be delayed
     575/******/    var __webpack_exports__ = __webpack_require__.O(undefined, ["blocks/digital-clock/style-index"], () => (__webpack_require__("./src/blocks/digital-clock/index.js")))
     576/******/    __webpack_exports__ = __webpack_require__.O(__webpack_exports__);
     577/******/   
     578/******/ })()
     579;
     580//# sourceMappingURL=index.js.map
  • gutenito-blocks-addon/trunk/build/blocks/digital-clock/view.asset.php

    r3078810 r3172376  
    1 <?php return array('dependencies' => array(), 'version' => 'a48b48413da1f604f75d');
     1<?php return array('dependencies' => array(), 'version' => 'ed6ce2ed71a4d6d2b9e6');
  • gutenito-blocks-addon/trunk/build/blocks/digital-clock/view.js

    r3078810 r3172376  
    1 !function e(){let t=(new Date).toLocaleTimeString();document.getElementById("txt").innerHTML=t,setTimeout(e,1e3)}();
     1/******/ (() => { // webpackBootstrap
     2/*!******************************************!*\
     3  !*** ./src/blocks/digital-clock/view.js ***!
     4  \******************************************/
     5function startTime() {
     6  let mTime = new Date().toLocaleTimeString();
     7  document.getElementById('txt').innerHTML = mTime;
     8  setTimeout(startTime, 1000);
     9}
     10startTime();
     11/******/ })()
     12;
     13//# sourceMappingURL=view.js.map
  • gutenito-blocks-addon/trunk/gutenito-blocks-addon.php

    r3079035 r3172376  
    11<?php
    22/**
    3  * Plugin Name: Gutenito Blocks Addon For Digital Clock
    4  * Description: Gutenito blocks addon for Digital Clock.
     3 * Plugin Name: Gutenito Blocks Addon
     4 * Description: Gutenito blocks addon and templates library for Gutenberg.
    55 * Requires at least: 5.8
    66 * Requires PHP: 7.4
    7  * Version: 0.0.1
     7 * Version: 0.0.2
    88 * Author: Eunito
    99 * Author URI: https://eunito.com
     
    1212 * Text Domain: gutenito-blocks-addon
    1313 *
    14  * @package gutenito-blocks-addon
     14 * @package GutenitoBlocksAddon
    1515 */
    1616
    17  defined('ABSPATH') || exit;
     17// Exit if accessed directly.
     18if ( ! defined( 'ABSPATH' ) ) {
     19    exit;
     20}
    1821
    19  require_once __DIR__ . '/autoloader.php';
     22/**
     23 * Gutenito_Blocks_Addon main class
     24 * Implements the singleton pattern to ensure only one instance is running.
     25 *
     26 * @since 0.0.1
     27 * @package GutenitoBlocksAddon
     28 * @author Eunito
     29 */
     30final class GutenitoBlocksAddon {
     31   
    2032
    21  if( !class_exists( 'Gutenito_Blocks_Addon' ) ) {
     33    private static $instance = null;
    2234
    23     /**
    24      * Gutenito_Blocks_Addon main class
    25      *
    26      * @since 0.0.1
    27      * @package Gutenito_Blocks_Addon
    28      * @author Eunito
    29      */
    30      final class Gutenito_Blocks_Addon {
    31          
    32         private static $instance;
     35    /**
     36     * Private constructor for singleton pattern.
     37     * Prevents the direct creation of an object from this class.
     38     */
     39    private function __construct() {
    3340
    34         /**
    35          * Singleton instance
    36          *
    37          * @since 0.0.1
    38          * @access public
    39          * @return Gutenito_Blocks_Addon
    40          */
    41         public static function instance() {
    42             if( !self::$instance ) {
    43                 self::$instance = new self();
    44             }
     41        $this->define_constants();
    4542
    46             return self::$instance;
     43        register_activation_hook( __FILE__, array( $this, 'activated_plugin' ) );
     44
     45        require_once GUTENITO_BLOCKS_ADDON_PLUGIN_DIR . 'vendor/autoload.php';
     46
     47        add_action('init', array($this, 'i18n'));
     48        add_action( 'plugins_loaded', array( $this, 'plugins_loaded' ) );
     49    }
     50
     51    /**
     52     * Load text domain
     53     *
     54     * @since 0.0.1
     55     * @access public
     56     * @return void
     57     */
     58    public function i18n() {
     59        load_plugin_textdomain('gutenito-blocks-addon', false, GUTENITO_BLOCKS_ADDON_PLUGIN_DIR . 'languages/');
     60    }
     61
     62    /**
     63     * Defines plugin constants for easy access across the plugin.
     64     *
     65     * @since 0.0.1
     66     * @access public
     67     * @return void
     68     */
     69    public function define_constants() {
     70        define( 'GUTENITO_BLOCKS_ADDON_PLUGIN_VERSION', '0.0.2' );
     71        define( 'GUTENITO_BLOCKS_ADDON_PLUGIN_NAME', 'Gutenito Blocks Addon' );
     72        define( 'GUTENITO_BLOCKS_ADDON_PLUGIN_URL', trailingslashit( plugin_dir_url( __FILE__ ) ) );
     73        define( 'GUTENITO_BLOCKS_ADDON_PLUGIN_DIR', trailingslashit( plugin_dir_path( __FILE__ ) ) );
     74        define( 'GUTENITO_BLOCKS_ADDON_INCLUDES_DIR', GUTENITO_BLOCKS_ADDON_PLUGIN_DIR . 'includes/' );
     75        define( 'GUTENITO_BLOCKS_ADDON_STYLES_DIR', GUTENITO_BLOCKS_ADDON_PLUGIN_DIR . 'build/styles/' );
     76        define( 'GUTENITO_BLOCKS_ADDON_BLOCKS_DIR', GUTENITO_BLOCKS_ADDON_PLUGIN_DIR . 'build/blocks/' );
     77        define( 'GUTENITO_BLOCKS_ADDON_EXTENSIONS_DIR', GUTENITO_BLOCKS_ADDON_PLUGIN_DIR . 'build/extensions/' );
     78    }
     79
     80    /**
     81     * Handles tasks to run upon plugin activation.
     82     * Sets version and installed time in the WordPress options table.
     83     *
     84     * @since 0.0.1
     85     * @access public
     86     * @return void
     87     */
     88    public function activated_plugin() {
     89
     90        // Update plugin version in the options table.
     91        update_option( 'gutenito_blocks_addon_version', GUTENITO_BLOCKS_ADDON_PLUGIN_VERSION );
     92
     93        // Set installed time if it doesn't exist.
     94        if ( ! get_option( 'gutenito_blocks_addon_installed_time' ) ) {
     95            add_option( 'gutenito_blocks_addon_installed_time', time() );
     96        }
     97    }
     98   
     99    /**
     100     * Load Gutenito
     101     *
     102     * @since 0.0.1
     103     * @access public
     104     * @return void
     105     */
     106    public function plugins_loaded() {
     107
     108        do_action('gutenito_blocks_addon/before_loaded');
     109
     110        \GutenitoBlocksAddon\Plugin::get_instance();
     111
     112        do_action('gutenito_blocks_addon/after_loaded');
     113    }
     114
     115    /**
     116     * Ensures that only one instance of the plugin is running.
     117     *
     118     * @since 0.0.1
     119     * @access public
     120     * @return GutenitoBlocksAddon
     121     */
     122    public static function instance() {
     123
     124        if ( is_null( self::$instance ) ) {
     125            self::$instance = new self();
     126        }
     127
     128        return self::$instance;
     129    }
     130
     131    /**
     132     * Prevents the plugin from being cloned.
     133     *
     134     * @since 0.0.1
     135     * @access public
     136     * @return void
     137     */
     138    public function __clone() {}
     139
     140    /**
     141     * Prevents the plugin from being unserialized.
     142     *
     143     * @since 0.0.1
     144     * @access public
     145     * @return void
     146     */
     147    public function __wakeup() {}
     148}
     149
     150
     151if ( ! function_exists( 'bismillah_gutenito_blocks_addon' ) ) {
     152    function bismillah_gutenito_blocks_addon() {
     153        try {
     154            return GutenitoBlocksAddon::instance();
     155        } catch ( Exception $e ) {
     156            echo esc_html('Caught exception: ',  $e->getMessage(), "\n");
    47157        }
     158    }
     159}
    48160
    49         /**
    50          * Gutenito version
    51          *
    52          * @since 0.0.1
    53          * @access public
    54          * @return string
    55          */
    56         public static function version() {
    57             return '1.0.0';
    58         }
    59 
    60         /**
    61          * Gutenito directory
    62          *
    63          * @since 0.0.1
    64          * @access public
    65          * @return string
    66          */
    67         public static function plugin_dir() {
    68             return trailingslashit(plugin_dir_path(__FILE__));
    69         }
    70 
    71         /**
    72          * Gutenito url
    73          *
    74          * @since 0.0.1
    75          * @access public
    76          * @return string
    77          */
    78         public static function plugin_url() {
    79             return trailingslashit(plugin_dir_url(__FILE__));
    80         }
    81 
    82         /**
    83          * Gutenito core directory
    84          *
    85          * @since 0.0.1
    86          * @access public
    87          * @return string
    88          */
    89         public static function core_dir() {
    90             return self::plugin_dir() . 'core/';
    91         }
    92 
    93         /**
    94          * Gutenito core url
    95          *
    96          * @since 0.0.1
    97          * @access public
    98          * @return string
    99          */
    100         public static function core_url() {
    101             return self::plugin_url() . 'core/';
    102         }
    103 
    104         /**
    105          * Gutenito includes directory
    106          *
    107          * @since 0.0.1
    108          * @access public
    109          * @return string
    110          */
    111         public static function includes_dir(){
    112             return self::plugin_dir() . 'includes/';
    113         }
    114 
    115         /**
    116          * Gutenito includes url
    117          *
    118          * @since 0.0.1
    119          * @access public
    120          * @return string
    121          */
    122         public static function includes_url(){
    123             return self::plugin_url() . 'includes/';
    124         }
    125 
    126         /**
    127          * Initialize the plugin
    128          *
    129          * @since 0.0.1
    130          * @access public
    131          * @return void
    132          */
    133         public function init() {
    134             add_action('init', [$this, 'i18n']);
    135             add_action('plugins_loaded', [$this, 'gutenito_load'], 100);
    136         }
    137 
    138         /**
    139          * Load text domain
    140          *
    141          * @since 0.0.1
    142          * @access public
    143          * @return void
    144          */
    145         public function i18n() {
    146             load_plugin_textdomain('gutenito-blocks-addon', false, self::plugin_dir() . 'languages/');
    147         }
    148 
    149         /**
    150          * Load Gutenito
    151          *
    152          * @since 0.0.1
    153          * @access public
    154          * @return void
    155          */
    156         public function gutenito_load() {
    157 
    158             do_action('gutenito_blocks_addon/before_loaded');
    159 
    160             Gutenito_Blocks_Addon\Plugin::instance()->init();
    161 
    162             do_action('gutenito_blocks_addon/after_loaded');
    163 
    164         }
    165      }
    166  }
    167 
    168  //Bismillah
    169  Gutenito_Blocks_Addon::instance()->init();
     161//Bismillah
     162bismillah_gutenito_blocks_addon();
  • gutenito-blocks-addon/trunk/readme.txt

    r3133485 r3172376  
    1 === Gutenito Blocks Addon For Digital Clock ===
     1=== Gutenito Blocks Addon ===
    22Contributors: eunito
    33Tags: blocks, gutenberg blocks, blocks addon, gutenberg
    4 Tested up to: 6.6
    5 Stable tag: 0.0.1
     4Tested up to: 6.4
     5Stable tag: 0.0.2
    66License: GPLv3
    77License URI: https://www.gnu.org/licenses/gpl-3.0.txt
    88
    9 Gutenito blocks addon for Digital Clock.
     9Gutenito blocks addon and templates library for Gutenberg.
    1010
    1111== Description ==
    1212
    13 Gutenito blocks addon for Digital Clock.
     13Gutenito blocks addon and templates library for Gutenberg.
    1414
    1515== Installation ==
     
    2323
    2424
     25== Frequently Asked Questions ==
     26
     27= A question that someone might have =
     28
     29An answer to that question.
     30
     31= What about foo bar? =
     32
     33Answer to foo bar dilemma.
     34
     35== Screenshots ==
     36
     371. This screen shot description corresponds to screenshot-1.(png|jpg|jpeg|gif). Note that the screenshot is taken from
     38the /assets directory or the directory that contains the stable readme.txt (tags or trunk). Screenshots in the /assets
     39directory take precedence. For example, `/assets/screenshot-1.png` would win over `/tags/4.3/screenshot-1.png`
     40(or jpg, jpeg, gif).
     412. This is the second screen shot
     42
    2543== Changelog ==
    2644
    2745= 0.0.1 =
    28 * Initial release
     46* Initial Release
     47
     48= 0.0.2 =
     49* New: Templates library
     50* New: Responsive controls
     51* New: Margin and padding controls
     52* Improved: Color controls in the editor
     53
     54
     55
     56== Arbitrary section ==
     57
     58You may provide arbitrary sections, in the same format as the ones above. This may be of use for extremely complicated
     59plugins where more information needs to be conveyed that doesn't fit into the categories of "description" or
     60"installation." Arbitrary sections will be shown below the built-in sections outlined above.
Note: See TracChangeset for help on using the changeset viewer.