From a18779850f1a58c2cfc88b60380a1acf5c2db863 Mon Sep 17 00:00:00 2001 From: Elisha Nuchi Date: Wed, 12 Sep 2018 21:13:28 -0400 Subject: [PATCH] first commit --- .babelrc | 3 + .claspignore | 1 + .eslintignore | 0 .eslintrc.json | 16 + .gitignore | 1 + .prettierrc | 4 + appsscript.json | 9 + dist/appsscript.json | 9 + dist/code.js | 181 + dist/dialog.html | 36 + dist/main.js | 22 + package-lock.json | 9568 ++++++++++++++++++++++++++++++++++++++++++ package.json | 68 + src/code.gs | 52 + src/dialog.html | 15 + src/index.jsx | 121 + src/styles.css | 93 + webpack.config.js | 103 + 18 files changed, 10302 insertions(+) create mode 100644 .babelrc create mode 100644 .claspignore create mode 100644 .eslintignore create mode 100644 .eslintrc.json create mode 100644 .gitignore create mode 100644 .prettierrc create mode 100644 appsscript.json create mode 100644 dist/appsscript.json create mode 100644 dist/code.js create mode 100644 dist/dialog.html create mode 100644 dist/main.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/code.gs create mode 100644 src/dialog.html create mode 100644 src/index.jsx create mode 100644 src/styles.css create mode 100755 webpack.config.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..53ba16a --- /dev/null +++ b/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["env", "react"] +} \ No newline at end of file diff --git a/.claspignore b/.claspignore new file mode 100644 index 0000000..866740f --- /dev/null +++ b/.claspignore @@ -0,0 +1 @@ +dist/main.js \ No newline at end of file diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..e69de29 diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..148fe23 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,16 @@ +{ + "root": true, + "parser": "babel-eslint", + "extends": ["eslint:recommended", "google", "plugin:prettier/recommended"], + "plugins": ["prettier", "googleappsscript"], + "env": { + "googleappsscript/googleappsscript": true + }, + "globals": { + }, + "rules": { + "prettier/prettier": "error", + "import/prefer-default-export": 0, + "no-console": 0 + } +} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..3f584f6 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +{ + "printWidth": 120, + "singleQuote": true +} diff --git a/appsscript.json b/appsscript.json new file mode 100644 index 0000000..06ebce7 --- /dev/null +++ b/appsscript.json @@ -0,0 +1,9 @@ +{ + "timeZone": "America/New_York", + "dependencies": { + }, + "oauthScopes": [ + "https://www.googleapis.com/auth/script.container.ui", + "https://www.googleapis.com/auth/spreadsheets" + ] +} \ No newline at end of file diff --git a/dist/appsscript.json b/dist/appsscript.json new file mode 100644 index 0000000..06ebce7 --- /dev/null +++ b/dist/appsscript.json @@ -0,0 +1,9 @@ +{ + "timeZone": "America/New_York", + "dependencies": { + }, + "oauthScopes": [ + "https://www.googleapis.com/auth/script.container.ui", + "https://www.googleapis.com/auth/spreadsheets" + ] +} \ No newline at end of file diff --git a/dist/code.js b/dist/code.js new file mode 100644 index 0000000..bea9515 --- /dev/null +++ b/dist/code.js @@ -0,0 +1,181 @@ +function onOpen() { +} +function openDialog() { +} +function getSheetsData() { +} +function addSheet() { +} +function deleteSheet() { +}/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) { + +// Use ES6/7 code +var onOpen = function onOpen() { + SpreadsheetApp.getUi() // Or DocumentApp or FormApp. + .createMenu('Dialog').addItem('Add sheets', 'openDialog').addToUi(); +}; + +var openDialog = function openDialog() { + var html = HtmlService.createHtmlOutputFromFile('dialog'); + SpreadsheetApp.getUi() // Or DocumentApp or FormApp. + .showModalDialog(html, 'Sheet Editor'); +}; + +var getSheets = function getSheets() { + return SpreadsheetApp.getActive().getSheets(); +}; + +var getActiveSheetName = function getActiveSheetName() { + return SpreadsheetApp.getActive().getSheetName(); +}; + +var getSheetsData = function getSheetsData() { + var activeSheetName = getActiveSheetName(); + return getSheets().map(function (sheet, index) { + var sheetName = sheet.getName(); + return { + text: sheetName, + sheetIndex: index, + isActive: sheetName === activeSheetName + }; + }); +}; + +var addSheet = function addSheet(sheetTitle) { + SpreadsheetApp.getActive().insertSheet(sheetTitle); + return getSheetsData(); +}; + +var deleteSheet = function deleteSheet(sheetIndex) { + var sheets = getSheets(); + SpreadsheetApp.getActive().deleteSheet(sheets[sheetIndex]); + return getSheetsData(); +}; + +//Must expose public functions +global.onOpen = onOpen; +global.openDialog = openDialog; +global.getSheetsData = getSheetsData; +global.addSheet = addSheet; +global.deleteSheet = deleteSheet; +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(1))) + +/***/ }), +/* 1 */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1, eval)("this"); +} catch (e) { + // This works if the window reference is available + if (typeof window === "object") g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }) +/******/ ]); \ No newline at end of file diff --git a/dist/dialog.html b/dist/dialog.html new file mode 100644 index 0000000..d5b18d7 --- /dev/null +++ b/dist/dialog.html @@ -0,0 +1,36 @@ + + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/dist/main.js b/dist/main.js new file mode 100644 index 0000000..db619c5 --- /dev/null +++ b/dist/main.js @@ -0,0 +1,22 @@ +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=9)}([function(e,t,n){"use strict";e.exports=n(10)},function(e,t,n){e.exports=n(20)()},function(e,t,n){"use strict"; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,i,l=function(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),u=1;uO.length&&O.push(e)}function L(e,t,n,r){var o=typeof e;"undefined"!==o&&"boolean"!==o||(e=null);var a=!1;if(null===e)a=!0;else switch(o){case"string":case"number":a=!0;break;case"object":switch(e.$$typeof){case u:case c:a=!0}}if(a)return n(r,e,""===t?"."+U(e,0):t),1;if(a=0,t=""===t?".":t+":",Array.isArray(e))for(var i=0;ithis.eventPool.length&&this.eventPool.push(e)}function Ee(e){e.eventPool=[],e.getPooled=ke,e.release=xe}i(we.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=l.thatReturnsTrue)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=l.thatReturnsTrue)},persist:function(){this.isPersistent=l.thatReturnsTrue},isPersistent:l.thatReturnsFalse,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;for(t=0;t=Ne),Me=String.fromCharCode(32),Re={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},Le=!1;function Ue(e,t){switch(e){case"keyup":return-1!==Ce.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function De(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Fe=!1;var Ie={eventTypes:Re,extractEvents:function(e,t,n,r){var o=void 0,a=void 0;if(Se)e:{switch(e){case"compositionstart":o=Re.compositionStart;break e;case"compositionend":o=Re.compositionEnd;break e;case"compositionupdate":o=Re.compositionUpdate;break e}o=void 0}else Fe?Ue(e,n)&&(o=Re.compositionEnd):"keydown"===e&&229===n.keyCode&&(o=Re.compositionStart);return o?(Oe&&(Fe||o!==Re.compositionStart?o===Re.compositionEnd&&Fe&&(a=ve()):(me._root=r,me._startText=ye(),Fe=!0)),o=_e.getPooled(o,t,n,r),a?o.data=a:null!==(a=De(n))&&(o.data=a),ee(o),a=o):a=null,(e=Pe?function(e,t){switch(e){case"compositionend":return De(t);case"keypress":return 32!==t.which?null:(Le=!0,Me);case"textInput":return(e=t.data)===Me&&Le?null:e;default:return null}}(e,n):function(e,t){if(Fe)return"compositionend"===e||!Se&&Ue(e,t)?(e=ve(),me._root=null,me._startText=null,me._fallbackText=null,Fe=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1