contable 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +1 -0
- package/dist/client/client.js +259 -0
- package/dist/client/img/bannersuperior.png +0 -0
- package/dist/client/menu.js +3 -0
- package/dist/client/redux-formulario.js +379 -0
- package/dist/client/render-components.js +750 -0
- package/dist/client/render-components.tsx +1117 -0
- package/dist/client/render-formulario.js +56 -0
- package/dist/client/render-formulario.tsx +72 -0
- package/dist/client/render-general.js +197 -0
- package/dist/client/render-general.tsx +212 -0
- package/dist/client/render-handlers.js +69 -0
- package/dist/client/tipos.js +13 -0
- package/dist/client/tsconfig.json +12 -0
- package/dist/server/app-contable.js +174 -0
- package/dist/server/def-config.js +100 -0
- package/dist/server/procedures-contable.js +508 -0
- package/dist/server/server-contable.js +17 -0
- package/dist/server/table-categorias_producto.js +29 -0
- package/dist/server/table-clientes.js +56 -0
- package/dist/server/table-condicion_iva.js +29 -0
- package/dist/server/table-estados_pedido.js +33 -0
- package/dist/server/table-estados_presupuesto.js +34 -0
- package/dist/server/table-insumos.js +44 -0
- package/dist/server/table-items_pedido.js +48 -0
- package/dist/server/table-items_presupuesto.js +48 -0
- package/dist/server/table-iva_productos.js +29 -0
- package/dist/server/table-parametros.js +38 -0
- package/dist/server/table-pedidos.js +48 -0
- package/dist/server/table-pedidos_pendientes.js +28 -0
- package/dist/server/table-pedidos_vencidos.js +28 -0
- package/dist/server/table-presupuestos.js +56 -0
- package/dist/server/table-productos.js +70 -0
- package/dist/server/table-productos_clientes.js +22 -0
- package/dist/server/table-productos_generales.js +22 -0
- package/dist/server/table-productos_insumos.js +47 -0
- package/dist/server/table-usuarios.js +44 -0
- package/dist/server/tsconfig.json +10 -0
- package/dist/server/types-contable.js +28 -0
- package/dist/unlogged/adapt.js +8 -0
- package/dist/unlogged/css/styles.styl +88 -0
- package/dist/unlogged/img/login-logo-icon.png.png +0 -0
- package/dist/unlogged/img/logo.png +0 -0
- package/dist/unlogged/tsconfig.json +15 -0
- package/dist/unlogged/unlogged.js +205 -0
- package/install/categorias_producto.tab +2 -0
- package/install/condicion_iva.tab +3 -0
- package/install/estados_pedido.tab +5 -0
- package/install/estados_presupuesto.tab +5 -0
- package/install/iva_productos.tab +3 -0
- package/install/productos.tab +2 -0
- package/install/usuarios.tab +2 -0
- package/package.json +58 -0
- package/unlogged/img/main-loading.gif +0 -0
- package/unlogged/main-loading.gif +0 -0
- package/unlogged/my-skin.js +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
(function (factory) {
|
|
2
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
|
+
var v = factory(require, exports);
|
|
4
|
+
if (v !== undefined) module.exports = v;
|
|
5
|
+
}
|
|
6
|
+
else if (typeof define === "function" && define.amd) {
|
|
7
|
+
define(["require", "exports", "like-ar"], factory);
|
|
8
|
+
}
|
|
9
|
+
})(function (require, exports) {
|
|
10
|
+
"use strict";
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
var likeAr = require("like-ar");
|
|
13
|
+
//CONTROL DE PESTAÑAS
|
|
14
|
+
var allOpenedTabs = {};
|
|
15
|
+
var infoOpenedTabs = {
|
|
16
|
+
allOpenedTabs: allOpenedTabs,
|
|
17
|
+
myId: 'calculando...',
|
|
18
|
+
otherTabsNames: ''
|
|
19
|
+
};
|
|
20
|
+
function loadInstance() {
|
|
21
|
+
var bc = new BroadcastChannel('contador');
|
|
22
|
+
var myId = String.fromCodePoint(100 + Math.floor(Math.random() * 1000)) + Math.floor(Math.random() * 100); //+'-'+new Date().getTime();
|
|
23
|
+
allOpenedTabs[myId] = 1;
|
|
24
|
+
infoOpenedTabs.myId = myId;
|
|
25
|
+
var event = new Event('my-tabs');
|
|
26
|
+
bc.onmessage = function (ev) {
|
|
27
|
+
if (ev.data.que == 'soy') {
|
|
28
|
+
if (!allOpenedTabs[ev.data.id]) {
|
|
29
|
+
allOpenedTabs[ev.data.id] = 0;
|
|
30
|
+
}
|
|
31
|
+
allOpenedTabs[ev.data.id]++;
|
|
32
|
+
}
|
|
33
|
+
if (ev.data.que == 'unload') {
|
|
34
|
+
delete allOpenedTabs[ev.data.id];
|
|
35
|
+
}
|
|
36
|
+
if (ev.data.que == 'load') {
|
|
37
|
+
allOpenedTabs[ev.data.id] = 1;
|
|
38
|
+
bc.postMessage({ que: 'soy', id: myId });
|
|
39
|
+
}
|
|
40
|
+
infoOpenedTabs.otherTabsNames = likeAr(allOpenedTabs).filter(function (_, id) { return id != myId; }).join(',');
|
|
41
|
+
window.dispatchEvent(event);
|
|
42
|
+
};
|
|
43
|
+
bc.postMessage({ que: 'load', id: myId });
|
|
44
|
+
window.dispatchEvent(event);
|
|
45
|
+
window.addEventListener('unload', function () {
|
|
46
|
+
bc.postMessage({ que: 'unload', id: myId });
|
|
47
|
+
window.dispatchEvent(event);
|
|
48
|
+
});
|
|
49
|
+
//mostrarQuienesSomos();
|
|
50
|
+
}
|
|
51
|
+
window.addEventListener('load', function () {
|
|
52
|
+
loadInstance();
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
//FIN CONTROL PESTAÑAS
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWZvcm11bGFyaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L3JlbmRlci1mb3JtdWxhcmlvLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQWFBLGdDQUFrQztJQWVsQyxxQkFBcUI7SUFDckIsSUFBSSxhQUFhLEdBQXFCLEVBQUUsQ0FBQztJQUN6QyxJQUFJLGNBQWMsR0FBQztRQUNmLGFBQWEsZUFBQTtRQUNiLElBQUksRUFBQyxlQUFlO1FBQ3BCLGNBQWMsRUFBQyxFQUFFO0tBQ3BCLENBQUE7SUFFRCxTQUFTLFlBQVk7UUFDakIsSUFBSSxFQUFFLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQyxJQUFJLElBQUksR0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsNEJBQTRCO1FBQzNILGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBQyxDQUFDLENBQUM7UUFDdEIsY0FBYyxDQUFDLElBQUksR0FBQyxJQUFJLENBQUM7UUFDekIsSUFBSSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsRUFBRSxDQUFDLFNBQVMsR0FBQyxVQUFTLEVBQUU7WUFDcEIsSUFBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBRSxLQUFLLEVBQUMsQ0FBQztnQkFDbkIsSUFBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUM7b0JBQzNCLGFBQWEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFDLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztnQkFDRCxhQUFhLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2hDLENBQUM7WUFDRCxJQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFFLFFBQVEsRUFBQyxDQUFDO2dCQUN0QixPQUFPLGFBQWEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7WUFDRCxJQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFFLE1BQU0sRUFBQyxDQUFDO2dCQUNwQixhQUFhLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBQyxDQUFDLENBQUM7Z0JBQzVCLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBQyxHQUFHLEVBQUMsS0FBSyxFQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7WUFDRCxjQUFjLENBQUMsY0FBYyxHQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBQyxDQUFDLEVBQUMsRUFBRSxJQUFHLE9BQUEsRUFBRSxJQUFFLElBQUksRUFBUixDQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkYsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUM7UUFDRixFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUMsR0FBRyxFQUFDLE1BQU0sRUFBQyxFQUFFLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUNyQyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUM7WUFDN0IsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFDLEdBQUcsRUFBQyxRQUFRLEVBQUMsRUFBRSxFQUFDLElBQUksRUFBQyxDQUFDLENBQUM7WUFDdkMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQTtRQUNGLHdCQUF3QjtJQUM1QixDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtRQUM1QixZQUFZLEVBQUUsQ0FBQTtJQUNsQixDQUFDLENBQUMsQ0FBQTs7QUFDRixzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0ICogYXMgUmVhY3RET00gZnJvbSBcInJlYWN0LWRvbVwiO1xyXG5pbXBvcnQgeyAgXHJcbiAgICBGb2N1c09wdHMsIFJlbmRlclByaW5jaXBhbCwgXHJcbiAgICBjbHN4LFxyXG4gICAgSUNPTixcclxuICAgIGZvY3VzVG9JZCxcclxuICAgIHNjcm9sbFRvVG9wLFxyXG4gICAgc2Nyb2xsVG9Cb3R0b21cclxufSBmcm9tIFwiLi9yZW5kZXItZ2VuZXJhbFwiO1xyXG5cclxuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyB1c2VTZWxlY3RvciwgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjsgXHJcbmltcG9ydCAqIGFzIGxpa2VBciBmcm9tIFwibGlrZS1hclwiO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIEFwcEJhciwgQmFkZ2UsIEJ1dHRvbiwgQnV0dG9uR3JvdXAsIENhcmQsIENoaXAsIENpcmN1bGFyUHJvZ3Jlc3MsIENzc0Jhc2VsaW5lLCBcclxuICAgIERpYWxvZywgRGlhbG9nQWN0aW9ucywgRGlhbG9nQ29udGVudCwgRGlhbG9nQ29udGVudFRleHQsIFxyXG4gICAgRGlhbG9nVGl0bGUsIERpdmlkZXIsIEZhYiwgR3JpZCwgSWNvbkJ1dHRvbiwgSW5wdXRCYXNlLCBcclxuICAgIExpbmssIExpc3QsIExpc3RJdGVtLCBMaXN0SXRlbUljb24sIExpc3RJdGVtVGV4dCwgRHJhd2VyLCBcclxuICAgIE1lbnUsIE1lbnVJdGVtLCBQYXBlciwgUG9wb3ZlcixcclxuICAgIFN0ZXAsIFN0ZXBwZXIsIFN0ZXBDb250ZW50LCBTdGVwTGFiZWwsIFxyXG4gICAgU3ZnSWNvbiwgU3dpdGNoLCBcclxuICAgIFRhYmxlLCBUYWJsZUJvZHksIFRhYmxlQ2VsbCwgVGFibGVIZWFkLCBUYWJsZVJvdywgVGV4dEZpZWxkLCBUaGVtZSwgVG9vbGJhciwgVHlwb2dyYXBoeSwgWm9vbSxcclxuICAgIHVzZVNjcm9sbFRyaWdnZXIsXHJcbiAgICBjcmVhdGVTdHlsZXMsIG1ha2VTdHlsZXNcclxufSBmcm9tIFwiQG1hdGVyaWFsLXVpL2NvcmVcIjtcclxuXHJcbi8vQ09OVFJPTCBERSBQRVNUQcORQVNcclxudmFyIGFsbE9wZW5lZFRhYnM6e1t4OnN0cmluZ106bnVtYmVyfT17fTtcclxudmFyIGluZm9PcGVuZWRUYWJzPXtcclxuICAgIGFsbE9wZW5lZFRhYnMsXHJcbiAgICBteUlkOidjYWxjdWxhbmRvLi4uJyxcclxuICAgIG90aGVyVGFic05hbWVzOicnXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGxvYWRJbnN0YW5jZSgpe1xyXG4gICAgdmFyIGJjID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoJ2NvbnRhZG9yJyk7XHJcbiAgICB2YXIgbXlJZD1TdHJpbmcuZnJvbUNvZGVQb2ludCgxMDArTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMDApKStNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTAwKS8vKyctJytuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIGFsbE9wZW5lZFRhYnNbbXlJZF09MTtcclxuICAgIGluZm9PcGVuZWRUYWJzLm15SWQ9bXlJZDtcclxuICAgIHZhciBldmVudCA9IG5ldyBFdmVudCgnbXktdGFicycpO1xyXG4gICAgYmMub25tZXNzYWdlPWZ1bmN0aW9uKGV2KXtcclxuICAgICAgICBpZihldi5kYXRhLnF1ZT09J3NveScpe1xyXG4gICAgICAgICAgICBpZighYWxsT3BlbmVkVGFic1tldi5kYXRhLmlkXSl7XHJcbiAgICAgICAgICAgICAgICBhbGxPcGVuZWRUYWJzW2V2LmRhdGEuaWRdPTA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYWxsT3BlbmVkVGFic1tldi5kYXRhLmlkXSsrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihldi5kYXRhLnF1ZT09J3VubG9hZCcpe1xyXG4gICAgICAgICAgICBkZWxldGUgYWxsT3BlbmVkVGFic1tldi5kYXRhLmlkXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoZXYuZGF0YS5xdWU9PSdsb2FkJyl7XHJcbiAgICAgICAgICAgIGFsbE9wZW5lZFRhYnNbZXYuZGF0YS5pZF09MTtcclxuICAgICAgICAgICAgYmMucG9zdE1lc3NhZ2Uoe3F1ZTonc295JyxpZDpteUlkfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluZm9PcGVuZWRUYWJzLm90aGVyVGFic05hbWVzPWxpa2VBcihhbGxPcGVuZWRUYWJzKS5maWx0ZXIoKF8saWQpPT5pZCE9bXlJZCkuam9pbignLCcpO1xyXG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcclxuICAgIH07XHJcbiAgICBiYy5wb3N0TWVzc2FnZSh7cXVlOidsb2FkJyxpZDpteUlkfSk7XHJcbiAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndW5sb2FkJyxmdW5jdGlvbigpe1xyXG4gICAgICAgIGJjLnBvc3RNZXNzYWdlKHtxdWU6J3VubG9hZCcsaWQ6bXlJZH0pO1xyXG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcclxuICAgIH0pXHJcbiAgICAvL21vc3RyYXJRdWllbmVzU29tb3MoKTtcclxufVxyXG5cclxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpe1xyXG4gICAgbG9hZEluc3RhbmNlKClcclxufSlcclxuLy9GSU4gQ09OVFJPTCBQRVNUQcORQVMiXX0=
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as ReactDOM from "react-dom";
|
|
3
|
+
import {
|
|
4
|
+
FocusOpts, RenderPrincipal,
|
|
5
|
+
clsx,
|
|
6
|
+
ICON,
|
|
7
|
+
focusToId,
|
|
8
|
+
scrollToTop,
|
|
9
|
+
scrollToBottom
|
|
10
|
+
} from "./render-general";
|
|
11
|
+
|
|
12
|
+
import { useState, useEffect } from "react";
|
|
13
|
+
import { useSelector, useDispatch } from "react-redux";
|
|
14
|
+
import * as likeAr from "like-ar";
|
|
15
|
+
|
|
16
|
+
import {
|
|
17
|
+
AppBar, Badge, Button, ButtonGroup, Card, Chip, CircularProgress, CssBaseline,
|
|
18
|
+
Dialog, DialogActions, DialogContent, DialogContentText,
|
|
19
|
+
DialogTitle, Divider, Fab, Grid, IconButton, InputBase,
|
|
20
|
+
Link, List, ListItem, ListItemIcon, ListItemText, Drawer,
|
|
21
|
+
Menu, MenuItem, Paper, Popover,
|
|
22
|
+
Step, Stepper, StepContent, StepLabel,
|
|
23
|
+
SvgIcon, Switch,
|
|
24
|
+
Table, TableBody, TableCell, TableHead, TableRow, TextField, Theme, Toolbar, Typography, Zoom,
|
|
25
|
+
useScrollTrigger,
|
|
26
|
+
createStyles, makeStyles
|
|
27
|
+
} from "@material-ui/core";
|
|
28
|
+
|
|
29
|
+
//CONTROL DE PESTAÑAS
|
|
30
|
+
var allOpenedTabs:{[x:string]:number}={};
|
|
31
|
+
var infoOpenedTabs={
|
|
32
|
+
allOpenedTabs,
|
|
33
|
+
myId:'calculando...',
|
|
34
|
+
otherTabsNames:''
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function loadInstance(){
|
|
38
|
+
var bc = new BroadcastChannel('contador');
|
|
39
|
+
var myId=String.fromCodePoint(100+Math.floor(Math.random()*1000))+Math.floor(Math.random()*100)//+'-'+new Date().getTime();
|
|
40
|
+
allOpenedTabs[myId]=1;
|
|
41
|
+
infoOpenedTabs.myId=myId;
|
|
42
|
+
var event = new Event('my-tabs');
|
|
43
|
+
bc.onmessage=function(ev){
|
|
44
|
+
if(ev.data.que=='soy'){
|
|
45
|
+
if(!allOpenedTabs[ev.data.id]){
|
|
46
|
+
allOpenedTabs[ev.data.id]=0;
|
|
47
|
+
}
|
|
48
|
+
allOpenedTabs[ev.data.id]++;
|
|
49
|
+
}
|
|
50
|
+
if(ev.data.que=='unload'){
|
|
51
|
+
delete allOpenedTabs[ev.data.id];
|
|
52
|
+
}
|
|
53
|
+
if(ev.data.que=='load'){
|
|
54
|
+
allOpenedTabs[ev.data.id]=1;
|
|
55
|
+
bc.postMessage({que:'soy',id:myId});
|
|
56
|
+
}
|
|
57
|
+
infoOpenedTabs.otherTabsNames=likeAr(allOpenedTabs).filter((_,id)=>id!=myId).join(',');
|
|
58
|
+
window.dispatchEvent(event);
|
|
59
|
+
};
|
|
60
|
+
bc.postMessage({que:'load',id:myId});
|
|
61
|
+
window.dispatchEvent(event);
|
|
62
|
+
window.addEventListener('unload',function(){
|
|
63
|
+
bc.postMessage({que:'unload',id:myId});
|
|
64
|
+
window.dispatchEvent(event);
|
|
65
|
+
})
|
|
66
|
+
//mostrarQuienesSomos();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
window.addEventListener('load', function(){
|
|
70
|
+
loadInstance()
|
|
71
|
+
})
|
|
72
|
+
//FIN CONTROL PESTAÑAS
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
if (typeof b !== "function" && b !== null)
|
|
10
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
+
extendStatics(d, b);
|
|
12
|
+
function __() { this.constructor = d; }
|
|
13
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
(function (factory) {
|
|
17
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
18
|
+
var v = factory(require, exports);
|
|
19
|
+
if (v !== undefined) module.exports = v;
|
|
20
|
+
}
|
|
21
|
+
else if (typeof define === "function" && define.amd) {
|
|
22
|
+
define(["require", "exports", "react", "react-redux", "like-ar", "clsx", "@material-ui/core"], factory);
|
|
23
|
+
}
|
|
24
|
+
})(function (require, exports) {
|
|
25
|
+
"use strict";
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.RenderAndCaptureError = exports.scrollToBottom = exports.scrollToTop = exports.totalsStyles = exports.ICON = exports.materialIoIconsSvgPath = exports.clsx = void 0;
|
|
28
|
+
exports.ScrollTop = ScrollTop;
|
|
29
|
+
exports.focusToId = focusToId;
|
|
30
|
+
exports.AltoImpresionStyle = AltoImpresionStyle;
|
|
31
|
+
exports.ReseterForm = ReseterForm;
|
|
32
|
+
exports.RenderPrincipal = RenderPrincipal;
|
|
33
|
+
var React = require("react");
|
|
34
|
+
var react_redux_1 = require("react-redux");
|
|
35
|
+
var likeAr = require("like-ar");
|
|
36
|
+
var clsxx = require("clsx");
|
|
37
|
+
//@ts-ignore el módulo clsx no tiene bien puesto los tipos en su .d.ts
|
|
38
|
+
exports.clsx = clsxx;
|
|
39
|
+
var core_1 = require("@material-ui/core");
|
|
40
|
+
// https://material-ui.com/components/material-icons/
|
|
41
|
+
exports.materialIoIconsSvgPath = {
|
|
42
|
+
Add: "M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z",
|
|
43
|
+
Assignment: "M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm2 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z",
|
|
44
|
+
Cancel: "M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z",
|
|
45
|
+
Check: "M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z",
|
|
46
|
+
CheckBoxOutlineBlankOutlined: "M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z",
|
|
47
|
+
CheckBoxOutlined: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zM17.99 9l-1.41-1.42-6.59 6.59-2.58-2.57-1.42 1.41 4 3.99z",
|
|
48
|
+
ChevronLeft: "M14.71 6.71a.9959.9959 0 00-1.41 0L8.71 11.3c-.39.39-.39 1.02 0 1.41l4.59 4.59c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L10.83 12l3.88-3.88c.39-.39.38-1.03 0-1.41z",
|
|
49
|
+
ChevronRight: "M9.29 6.71c-.39.39-.39 1.02 0 1.41L13.17 12l-3.88 3.88c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0l4.59-4.59c.39-.39.39-1.02 0-1.41L10.7 6.7c-.38-.38-1.02-.38-1.41.01z",
|
|
50
|
+
Clear: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z",
|
|
51
|
+
Close: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z",
|
|
52
|
+
Code: "M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z",
|
|
53
|
+
Delete: "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z",
|
|
54
|
+
DeleteOutline: "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM8 9h8v10H8V9zm7.5-5l-1-1h-5l-1 1H5v2h14V4z",
|
|
55
|
+
Description: "M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z",
|
|
56
|
+
Edit: "M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 00-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z",
|
|
57
|
+
EmojiObjects: "M12 3c-.46 0-.93.04-1.4.14-2.76.53-4.96 2.76-5.48 5.52-.48 2.61.48 5.01 2.22 6.56.43.38.66.91.66 1.47V19c0 1.1.9 2 2 2h.28c.35.6.98 1 1.72 1s1.38-.4 1.72-1H14c1.1 0 2-.9 2-2v-2.31c0-.55.22-1.09.64-1.46C18.09 13.95 19 12.08 19 10c0-3.87-3.13-7-7-7zm2 16h-4v-1h4v1zm0-2h-4v-1h4v1zm-1.5-5.59V14h-1v-2.59L9.67 9.59l.71-.71L12 10.5l1.62-1.62.71.71-1.83 1.82z",
|
|
58
|
+
ExitToApp: "M10.09 15.59L11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z",
|
|
59
|
+
ExpandLess: "M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z",
|
|
60
|
+
ExpandMore: "M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z",
|
|
61
|
+
FormatLineSpacing: "M6 7h2.5L5 3.5 1.5 7H4v10H1.5L5 20.5 8.5 17H6V7zm4-2v2h12V5H10zm0 14h12v-2H10v2zm0-6h12v-2H10v2z",
|
|
62
|
+
Info: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z",
|
|
63
|
+
KeyboardArrowUp: "M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z",
|
|
64
|
+
Label: "M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1.9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12l-4.37-6.16z",
|
|
65
|
+
LocalAtm: "M11 17h2v-1h1c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1h-3v-1h4V8h-2V7h-2v1h-1c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3v1H9v2h2v1zm9-13H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4V6h16v12z",
|
|
66
|
+
Menu: "M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z",
|
|
67
|
+
Print: "M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z",
|
|
68
|
+
Remove: "M19 13H5v-2h14v2z",
|
|
69
|
+
RemoveShoppingCart: "M22.73 22.73L2.77 2.77 2 2l-.73-.73L0 2.54l4.39 4.39 2.21 4.66-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h7.46l1.38 1.38c-.5.36-.83.95-.83 1.62 0 1.1.89 2 1.99 2 .67 0 1.26-.33 1.62-.84L21.46 24l1.27-1.27zM7.42 15c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h2.36l2 2H7.42zm8.13-2c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H6.54l9.01 9zM7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2z",
|
|
70
|
+
Save: "M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z",
|
|
71
|
+
Search: "M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z",
|
|
72
|
+
Send: "M2.01 21L23 12 2.01 3 2 10l15 2-15 2z",
|
|
73
|
+
Settings: "M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z",
|
|
74
|
+
SyncAlt: "M22 8l-4-4v3H3v2h15v3l4-4zM2 16l4 4v-3h15v-2H6v-3l-4 4z",
|
|
75
|
+
Visibility: "M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z",
|
|
76
|
+
Warning: "M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z",
|
|
77
|
+
};
|
|
78
|
+
exports.ICON = likeAr(exports.materialIoIconsSvgPath).map(function (svgText) { return function () {
|
|
79
|
+
return React.createElement(core_1.SvgIcon, null,
|
|
80
|
+
React.createElement("path", { d: svgText }));
|
|
81
|
+
}; }).plain();
|
|
82
|
+
exports.totalsStyles = {
|
|
83
|
+
paddingRight: "24px",
|
|
84
|
+
fontSize: "12pt"
|
|
85
|
+
};
|
|
86
|
+
var useStylesScrollTop = (0, core_1.makeStyles)(function (theme) {
|
|
87
|
+
return (0, core_1.createStyles)({
|
|
88
|
+
root: {
|
|
89
|
+
position: 'fixed',
|
|
90
|
+
bottom: theme.spacing(2),
|
|
91
|
+
right: theme.spacing(2),
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
var scrollToTop = function () {
|
|
96
|
+
window.scroll({ behavior: 'smooth', top: 0, left: 0 });
|
|
97
|
+
};
|
|
98
|
+
exports.scrollToTop = scrollToTop;
|
|
99
|
+
var scrollToBottom = function () {
|
|
100
|
+
window.scroll({ behavior: 'smooth', top: document.body.clientHeight - window.innerHeight, left: 0 });
|
|
101
|
+
};
|
|
102
|
+
exports.scrollToBottom = scrollToBottom;
|
|
103
|
+
function ScrollTop(props) {
|
|
104
|
+
var children = props.children;
|
|
105
|
+
var classes = useStylesScrollTop();
|
|
106
|
+
// Note that you normally won't need to set the window ref as useScrollTrigger
|
|
107
|
+
// will default to window.
|
|
108
|
+
// This is only being set here because the demo is in an iframe.
|
|
109
|
+
var trigger = (0, core_1.useScrollTrigger)({
|
|
110
|
+
disableHysteresis: true,
|
|
111
|
+
threshold: 100,
|
|
112
|
+
});
|
|
113
|
+
return (React.createElement(core_1.Zoom, { in: trigger },
|
|
114
|
+
React.createElement("div", { onClick: exports.scrollToTop, role: "presentation", className: classes.root }, children)));
|
|
115
|
+
}
|
|
116
|
+
function focusToId(id, opts, cb) {
|
|
117
|
+
var element = document.getElementById(id);
|
|
118
|
+
var padre = element;
|
|
119
|
+
while (padre && padre.className != 'pregunta' && padre != document.body)
|
|
120
|
+
padre = padre.parentElement;
|
|
121
|
+
if (padre && padre.className == 'pregunta')
|
|
122
|
+
element = padre;
|
|
123
|
+
if (element) {
|
|
124
|
+
if (cb) {
|
|
125
|
+
cb(element);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
element.focus();
|
|
129
|
+
if (opts.moveToElement) {
|
|
130
|
+
element.scrollIntoView();
|
|
131
|
+
window.scroll({ behavior: opts.moveBehavior || 'auto', top: window.scrollY - 100, left: 0 });
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
function AltoImpresionStyle(props) {
|
|
137
|
+
var id = props.componentId;
|
|
138
|
+
var valorIngresado = props.value;
|
|
139
|
+
var lineHeigth = props.lineHeight, charsPerLine = props.charsPerLine;
|
|
140
|
+
return React.createElement("style", null, "@media print {#".concat(id, "{height: ").concat((lineHeigth + lineHeigth * Math.floor(valorIngresado.length / charsPerLine)).toString(), "px !important}}"));
|
|
141
|
+
}
|
|
142
|
+
function ReseterForm(props) {
|
|
143
|
+
var dispatch = (0, react_redux_1.useDispatch)();
|
|
144
|
+
return React.createElement(React.Fragment, null,
|
|
145
|
+
React.createElement(core_1.Button, { variant: "outlined", onClick: function () {
|
|
146
|
+
dispatch(props.dispatchers.RESET_OPCIONES({}));
|
|
147
|
+
props.onTryAgain();
|
|
148
|
+
} }, props.mensaje));
|
|
149
|
+
}
|
|
150
|
+
var RenderAndCaptureError = /** @class */ (function (_super) {
|
|
151
|
+
__extends(RenderAndCaptureError, _super);
|
|
152
|
+
function RenderAndCaptureError(props) {
|
|
153
|
+
var _this = _super.call(this, props) || this;
|
|
154
|
+
_this.state = { hasError: false, error: {} };
|
|
155
|
+
return _this;
|
|
156
|
+
}
|
|
157
|
+
RenderAndCaptureError.prototype.componentDidCatch = function (error, info) {
|
|
158
|
+
this.setState({ hasError: true, error: error, info: info });
|
|
159
|
+
};
|
|
160
|
+
RenderAndCaptureError.prototype.render = function () {
|
|
161
|
+
var _this = this;
|
|
162
|
+
if (this.state.hasError) {
|
|
163
|
+
return React.createElement(React.Fragment, null,
|
|
164
|
+
React.createElement(core_1.Typography, null, "Hubo un problema en la programaci\u00F3n de la pantalla."),
|
|
165
|
+
React.createElement(ReseterForm, { dispatchers: this.props.dispatchers, mensaje: this.props.mensajeRetorno, onTryAgain: function () {
|
|
166
|
+
return _this.setState({ hasError: false, error: {} });
|
|
167
|
+
} }),
|
|
168
|
+
React.createElement(core_1.Typography, null, "Error detectado:"),
|
|
169
|
+
React.createElement(core_1.Typography, null, this.state.error instanceof Error ? this.state.error.message : 'unknown error'),
|
|
170
|
+
React.createElement(core_1.Typography, null, JSON.stringify(this.state.info)));
|
|
171
|
+
}
|
|
172
|
+
return this.props.children;
|
|
173
|
+
};
|
|
174
|
+
return RenderAndCaptureError;
|
|
175
|
+
}(React.Component));
|
|
176
|
+
exports.RenderAndCaptureError = RenderAndCaptureError;
|
|
177
|
+
var theme = (0, core_1.createMuiTheme)({
|
|
178
|
+
overrides: {
|
|
179
|
+
MuiCssBaseline: {
|
|
180
|
+
'@global': {
|
|
181
|
+
html: {
|
|
182
|
+
WebkitFontSmoothing: 'auto',
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
});
|
|
188
|
+
function RenderPrincipal(props) {
|
|
189
|
+
return React.createElement(React.StrictMode, null,
|
|
190
|
+
React.createElement(react_redux_1.Provider, { store: props.store },
|
|
191
|
+
React.createElement(core_1.ThemeProvider, { theme: theme },
|
|
192
|
+
React.createElement(RenderAndCaptureError, { dispatchers: props.dispatchers, mensajeRetorno: props.mensajeRetorno },
|
|
193
|
+
React.createElement(core_1.CssBaseline, null),
|
|
194
|
+
props.children))));
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWdlbmVyYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L3JlbmRlci1nZW5lcmFsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUErRkEsOEJBaUJDO0lBT0QsOEJBZ0JDO0lBRUQsZ0RBT0M7SUFJRCxrQ0FVQztJQXlDRCwwQ0FXQztJQWxORCw2QkFBK0I7SUFHL0IsMkNBQWlFO0lBQ2pFLGdDQUFrQztJQUNsQyw0QkFBOEI7SUFDOUIsc0VBQXNFO0lBQzNELFFBQUEsSUFBSSxHQUF1QyxLQUFLLENBQUM7SUFHNUQsMENBVTJCO0lBRzNCLHFEQUFxRDtJQUN4QyxRQUFBLHNCQUFzQixHQUFDO1FBQ2hDLEdBQUcsRUFBQyxxQ0FBcUM7UUFDekMsVUFBVSxFQUFFLGdPQUFnTztRQUM1TyxNQUFNLEVBQUMsaUxBQWlMO1FBQ3hMLEtBQUssRUFBRSxtREFBbUQ7UUFDMUQsNEJBQTRCLEVBQUUsNEZBQTRGO1FBQzFILGdCQUFnQixFQUFFLHVKQUF1SjtRQUN6SyxXQUFXLEVBQUUsd0tBQXdLO1FBQ3JMLFlBQVksRUFBRSwwS0FBMEs7UUFDeEwsS0FBSyxFQUFFLHVHQUF1RztRQUM5RyxLQUFLLEVBQUUsdUdBQXVHO1FBQzlHLElBQUksRUFBRSw0RkFBNEY7UUFDbEcsTUFBTSxFQUFDLCtFQUErRTtRQUN0RixhQUFhLEVBQUMseUZBQXlGO1FBQ3ZHLFdBQVcsRUFBRSxnSUFBZ0k7UUFDN0ksSUFBSSxFQUFFLHFKQUFxSjtRQUMzSixZQUFZLEVBQUUsbVdBQW1XO1FBQ2pYLFNBQVMsRUFBRSxzS0FBc0s7UUFDakwsVUFBVSxFQUFFLGdEQUFnRDtRQUM1RCxVQUFVLEVBQUUsOENBQThDO1FBQzFELGlCQUFpQixFQUFFLGtHQUFrRztRQUNySCxJQUFJLEVBQUUsa0dBQWtHO1FBQ3hHLGVBQWUsRUFBRSxnREFBZ0Q7UUFDakUsS0FBSyxFQUFFLHNJQUFzSTtRQUM3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QUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFjO29CQUN6RyxvQkFBQyxpQkFBVSxRQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBYyxDQUMzRCxDQUFDO1lBQ1IsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDL0IsQ0FBQztRQUNMLDRCQUFDO0lBQUQsQ0FBQyxBQXpCRCxDQUEyQyxLQUFLLENBQUMsU0FBUyxHQXlCekQ7SUF6Qlksc0RBQXFCO0lBMkJsQyxJQUFNLEtBQUssR0FBRyxJQUFBLHFCQUFjLEVBQUM7UUFDM0IsU0FBUyxFQUFFO1lBQ1QsY0FBYyxFQUFFO2dCQUNkLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUU7d0JBQ0osbUJBQW1CLEVBQUUsTUFBTTtxQkFDNUI7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsU0FBZ0IsZUFBZSxDQUFzQixLQUFvRztRQUNySixPQUFPLG9CQUFDLEtBQUssQ0FBQyxVQUFVO1lBQ3BCLG9CQUFDLHNCQUFRLElBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUN4QixvQkFBQyxvQkFBYSxJQUFDLEtBQUssRUFBRSxLQUFLO29CQUN2QixvQkFBQyxxQkFBcUIsSUFBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7d0JBQ3ZGLG9CQUFDLGtCQUFXLE9BQUc7d0JBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FDSyxDQUNaLENBQ1QsQ0FDSSxDQUFBO0lBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0ICogYXMgUmVhY3RET00gZnJvbSBcInJlYWN0LWRvbVwiO1xyXG5pbXBvcnQge3VzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZn0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFByb3ZpZGVyLCB1c2VTZWxlY3RvciwgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjsgXHJcbmltcG9ydCAqIGFzIGxpa2VBciBmcm9tIFwibGlrZS1hclwiO1xyXG5pbXBvcnQgKiBhcyBjbHN4eCBmcm9tICdjbHN4JztcclxuLy9AdHMtaWdub3JlIGVsIG3Ds2R1bG8gY2xzeCBubyB0aWVuZSBiaWVuIHB1ZXN0byBsb3MgdGlwb3MgZW4gc3UgLmQudHNcclxuZXhwb3J0IHZhciBjbHN4OiAoPFQ+KGExOnN0cmluZ3xULCBhMj86VCk9PiBzdHJpbmcpID0gY2xzeHg7XHJcblxyXG5cclxuaW1wb3J0IHtcclxuICAgIEFwcEJhciwgQmFkZ2UsIEJ1dHRvbiwgQnV0dG9uR3JvdXAsIENhcmQsIENoaXAsIENpcmN1bGFyUHJvZ3Jlc3MsIENzc0Jhc2VsaW5lLCBcclxuICAgIERpYWxvZywgRGlhbG9nQWN0aW9ucywgRGlhbG9nQ29udGVudCwgRGlhbG9nQ29udGVudFRleHQsIFxyXG4gICAgRGlhbG9nVGl0bGUsIERpdmlkZXIsIEZhYiwgR3JpZCwgSWNvbkJ1dHRvbiwgSW5wdXRCYXNlLCBcclxuICAgIExpc3QsIExpc3RJdGVtLCBMaXN0SXRlbUljb24sIExpc3RJdGVtVGV4dCwgRHJhd2VyLCBcclxuICAgIE1lbnUsIE1lbnVJdGVtLCBQYXBlciwgU3ZnSWNvbiwgU3dpdGNoLCBcclxuICAgIFRhYmxlLCBUYWJsZUJvZHksIFRhYmxlQ2VsbCwgVGFibGVIZWFkLCBUYWJsZVJvdywgVGV4dEZpZWxkLCBUaGVtZVByb3ZpZGVyLCBUb29sYmFyLCBUeXBvZ3JhcGh5LCBab29tLFxyXG4gICAgdXNlU2Nyb2xsVHJpZ2dlcixcclxuICAgIC8vIHN0eWxlczpcclxuICAgIGNyZWF0ZVN0eWxlcywgbWFrZVN0eWxlcywgVGhlbWUsIGZhZGUsIGNyZWF0ZU11aVRoZW1lXHJcbn0gZnJvbSBcIkBtYXRlcmlhbC11aS9jb3JlXCI7XHJcbmltcG9ydCB7IFN0b3JlLCBBY3Rpb24gfSBmcm9tIFwicmVkdXhcIjtcclxuXHJcbi8vIGh0dHBzOi8vbWF0ZXJpYWwtdWkuY29tL2NvbXBvbmVudHMvbWF0ZXJpYWwtaWNvbnMvXHJcbmV4cG9ydCBjb25zdCBtYXRlcmlhbElvSWNvbnNTdmdQYXRoPXtcclxuICAgIEFkZDpcIk0xOSAxM2gtNnY2aC0ydi02SDV2LTJoNlY1aDJ2Nmg2djJ6XCIsXHJcbiAgICBBc3NpZ25tZW50OiBcIk0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMiAxNEg3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyelwiLFxyXG4gICAgQ2FuY2VsOlwiTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTUgMTMuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5elwiLFxyXG4gICAgQ2hlY2s6IFwiTTkgMTYuMTdMNC44MyAxMmwtMS40MiAxLjQxTDkgMTkgMjEgN2wtMS40MS0xLjQxelwiLFxyXG4gICAgQ2hlY2tCb3hPdXRsaW5lQmxhbmtPdXRsaW5lZDogXCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIixcclxuICAgIENoZWNrQm94T3V0bGluZWQ6IFwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpNMTcuOTkgOWwtMS40MS0xLjQyLTYuNTkgNi41OS0yLjU4LTIuNTctMS40MiAxLjQxIDQgMy45OXpcIixcclxuICAgIENoZXZyb25MZWZ0OiBcIk0xNC43MSA2LjcxYS45OTU5Ljk5NTkgMCAwMC0xLjQxIDBMOC43MSAxMS4zYy0uMzkuMzktLjM5IDEuMDIgMCAxLjQxbDQuNTkgNC41OWMuMzkuMzkgMS4wMi4zOSAxLjQxIDAgLjM5LS4zOS4zOS0xLjAyIDAtMS40MUwxMC44MyAxMmwzLjg4LTMuODhjLjM5LS4zOS4zOC0xLjAzIDAtMS40MXpcIixcclxuICAgIENoZXZyb25SaWdodDogXCJNOS4yOSA2LjcxYy0uMzkuMzktLjM5IDEuMDIgMCAxLjQxTDEzLjE3IDEybC0zLjg4IDMuODhjLS4zOS4zOS0uMzkgMS4wMiAwIDEuNDEuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5Yy4zOS0uMzkuMzktMS4wMiAwLTEuNDFMMTAuNyA2LjdjLS4zOC0uMzgtMS4wMi0uMzgtMS40MS4wMXpcIixcclxuICAgIENsZWFyOiBcIk0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6XCIsXHJcbiAgICBDbG9zZTogXCJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyelwiLFxyXG4gICAgQ29kZTogXCJNOS40IDE2LjZMNC44IDEybDQuNi00LjZMOCA2bC02IDYgNiA2IDEuNC0xLjR6bTUuMiAwbDQuNi00LjYtNC42LTQuNkwxNiA2bDYgNi02IDYtMS40LTEuNHpcIixcclxuICAgIERlbGV0ZTpcIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTE5IDRoLTMuNWwtMS0xaC01bC0xIDFINXYyaDE0VjR6XCIsXHJcbiAgICBEZWxldGVPdXRsaW5lOlwiTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnpNOCA5aDh2MTBIOFY5em03LjUtNWwtMS0xaC01bC0xIDFINXYyaDE0VjR6XCIsXHJcbiAgICBEZXNjcmlwdGlvbjogXCJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0yIDE2SDh2LTJoOHYyem0wLTRIOHYtMmg4djJ6bS0zLTVWMy41TDE4LjUgOUgxM3pcIixcclxuICAgIEVkaXQ6IFwiTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRhLjk5NTkuOTk1OSAwIDAwLTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6XCIsXHJcbiAgICBFbW9qaU9iamVjdHM6IFwiTTEyIDNjLS40NiAwLS45My4wNC0xLjQuMTQtMi43Ni41My00Ljk2IDIuNzYtNS40OCA1LjUyLS40OCAyLjYxLjQ4IDUuMDEgMi4yMiA2LjU2LjQzLjM4LjY2LjkxLjY2IDEuNDdWMTljMCAxLjEuOSAyIDIgMmguMjhjLjM1LjYuOTggMSAxLjcyIDFzMS4zOC0uNCAxLjcyLTFIMTRjMS4xIDAgMi0uOSAyLTJ2LTIuMzFjMC0uNTUuMjItMS4wOS42NC0xLjQ2QzE4LjA5IDEzLjk1IDE5IDEyLjA4IDE5IDEwYzAtMy44Ny0zLjEzLTctNy03em0yIDE2aC00di0xaDR2MXptMC0yaC00di0xaDR2MXptLTEuNS01LjU5VjE0aC0xdi0yLjU5TDkuNjcgOS41OWwuNzEtLjcxTDEyIDEwLjVsMS42Mi0xLjYyLjcxLjcxLTEuODMgMS44MnpcIixcclxuICAgIEV4aXRUb0FwcDogXCJNMTAuMDkgMTUuNTlMMTEuNSAxN2w1LTUtNS01LTEuNDEgMS40MUwxMi42NyAxMUgzdjJoOS42N2wtMi41OCAyLjU5ek0xOSAzSDVjLTEuMTEgMC0yIC45LTIgMnY0aDJWNWgxNHYxNEg1di00SDN2NGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yelwiLFxyXG4gICAgRXhwYW5kTGVzczogXCJNMTIgOGwtNiA2IDEuNDEgMS40MUwxMiAxMC44M2w0LjU5IDQuNThMMTggMTR6XCIsXHJcbiAgICBFeHBhbmRNb3JlOiBcIk0xNi41OSA4LjU5TDEyIDEzLjE3IDcuNDEgOC41OSA2IDEwbDYgNiA2LTZ6XCIsXHJcbiAgICBGb3JtYXRMaW5lU3BhY2luZzogXCJNNiA3aDIuNUw1IDMuNSAxLjUgN0g0djEwSDEuNUw1IDIwLjUgOC41IDE3SDZWN3ptNC0ydjJoMTJWNUgxMHptMCAxNGgxMnYtMkgxMHYyem0wLTZoMTJ2LTJIMTB2MnpcIixcclxuICAgIEluZm86IFwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6XCIsXHJcbiAgICBLZXlib2FyZEFycm93VXA6IFwiTTcuNDEgMTUuNDFMMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0bC02LTYtNiA2elwiLFxyXG4gICAgTGFiZWw6IFwiTTE3LjYzIDUuODRDMTcuMjcgNS4zMyAxNi42NyA1IDE2IDVMNSA1LjAxQzMuOSA1LjAxIDMgNS45IDMgN3YxMGMwIDEuMS45IDEuOTkgMiAxLjk5TDE2IDE5Yy42NyAwIDEuMjctLjMzIDEuNjMtLjg0TDIyIDEybC00LjM3LTYuMTZ6XCIsXHJcbiAgICBMb2NhbEF0bTogXCJNMTEgMTdoMnYtMWgxYy41NSAwIDEtLjQ1IDEtMXYtM2MwLS41NS0uNDUtMS0xLTFoLTN2LTFoNFY4aC0yVjdoLTJ2MWgtMWMtLjU1IDAtMSAuNDUtMSAxdjNjMCAuNTUuNDUgMSAxIDFoM3YxSDl2MmgydjF6bTktMTNINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmMwLTEuMTEtLjg5LTItMi0yem0wIDE0SDRWNmgxNnYxMnpcIixcclxuICAgIE1lbnU6IFwiTTMgMThoMTh2LTJIM3Yyem0wLTVoMTh2LTJIM3Yyem0wLTd2MmgxOFY2SDN6XCIsXHJcbiAgICBQcmludDogXCJNMTkgOEg1Yy0xLjY2IDAtMyAxLjM0LTMgM3Y2aDR2NGgxMnYtNGg0di02YzAtMS42Ni0xLjM0LTMtMy0zem0tMyAxMUg4di01aDh2NXptMy03Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS0xLTlINnY0aDEyVjN6XCIsXHJcbiAgICBSZW1vdmU6IFwiTTE5IDEzSDV2LTJoMTR2MnpcIixcclxuICAgIFJlbW92ZVNob3BwaW5nQ2FydDogXCJNMjIuNzMgMjIuNzNMMi43NyAyLjc3IDIgMmwtLjczLS43M0wwIDIuNTRsNC4zOSA0LjM5IDIuMjEgNC42Ni0xLjM1IDIuNDVjLS4xNi4yOC0uMjUuNjEtLjI1Ljk2IDAgMS4xLjkgMiAyIDJoNy40NmwxLjM4IDEuMzhjLS41LjM2LS44My45NS0uODMgMS42MiAwIDEuMS44OSAyIDEuOTkgMiAuNjcgMCAxLjI2LS4zMyAxLjYyLS44NEwyMS40NiAyNGwxLjI3LTEuMjd6TTcuNDIgMTVjLS4xNCAwLS4yNS0uMTEtLjI1LS4yNWwuMDMtLjEyLjktMS42M2gyLjM2bDIgMkg3LjQyem04LjEzLTJjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuNTgtNi40OWMuMDgtLjE0LjEyLS4zMS4xMi0uNDggMC0uNTUtLjQ1LTEtMS0xSDYuNTRsOS4wMSA5ek03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yelwiLFxyXG4gICAgU2F2ZTpcIk0xNyAzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY3bC00LTR6bS01IDE2Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3ptMy0xMEg1VjVoMTB2NHpcIixcclxuICAgIFNlYXJjaDogXCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIixcclxuICAgIFNlbmQ6IFwiTTIuMDEgMjFMMjMgMTIgMi4wMSAzIDIgMTBsMTUgMi0xNSAyelwiLFxyXG4gICAgU2V0dGluZ3M6IFwiTTE1Ljk1IDEwLjc4Yy4wMy0uMjUuMDUtLjUxLjA1LS43OHMtLjAyLS41My0uMDYtLjc4bDEuNjktMS4zMmMuMTUtLjEyLjE5LS4zNC4xLS41MWwtMS42LTIuNzdjLS4xLS4xOC0uMzEtLjI0LS40OS0uMThsLTEuOTkuOGMtLjQyLS4zMi0uODYtLjU4LTEuMzUtLjc4TDEyIDIuMzRjLS4wMy0uMi0uMi0uMzQtLjQtLjM0SDguNGMtLjIgMC0uMzYuMTQtLjM5LjM0bC0uMyAyLjEyYy0uNDkuMi0uOTQuNDctMS4zNS43OGwtMS45OS0uOGMtLjE4LS4wNy0uMzkgMC0uNDkuMThsLTEuNiAyLjc3Yy0uMS4xOC0uMDYuMzkuMS41MWwxLjY5IDEuMzJjLS4wNC4yNS0uMDcuNTItLjA3Ljc4cy4wMi41My4wNi43OEwyLjM3IDEyLjFjLS4xNS4xMi0uMTkuMzQtLjEuNTFsMS42IDIuNzdjLjEuMTguMzEuMjQuNDkuMThsMS45OS0uOGMuNDIuMzIuODYuNTggMS4zNS43OGwuMyAyLjEyYy4wNC4yLjIuMzQuNC4zNGgzLjJjLjIgMCAuMzctLjE0LjM5LS4zNGwuMy0yLjEyYy40OS0uMi45NC0uNDcgMS4zNS0uNzhsMS45OS44Yy4xOC4wNy4zOSAwIC40OS0uMThsMS42LTIuNzdjLjEtLjE4LjA2LS4zOS0uMS0uNTFsLTEuNjctMS4zMnpNMTAgMTNjLTEuNjUgMC0zLTEuMzUtMy0zczEuMzUtMyAzLTMgMyAxLjM1IDMgMy0xLjM1IDMtMyAzelwiLFxyXG4gICAgU3luY0FsdDpcIk0yMiA4bC00LTR2M0gzdjJoMTV2M2w0LTR6TTIgMTZsNCA0di0zaDE1di0ySDZ2LTNsLTQgNHpcIixcclxuICAgIFZpc2liaWxpdHk6XCJNMTIgNC41QzcgNC41IDIuNzMgNy42MSAxIDEyYzEuNzMgNC4zOSA2IDcuNSAxMSA3LjVzOS4yNy0zLjExIDExLTcuNWMtMS43My00LjM5LTYtNy41LTExLTcuNXpNMTIgMTdjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1em0wLThjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zelwiLFxyXG4gICAgV2FybmluZzogXCJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0elwiLFxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgSUNPTiA9IGxpa2VBcihtYXRlcmlhbElvSWNvbnNTdmdQYXRoKS5tYXAoc3ZnVGV4dD0+ICgpID0+XHJcbiAgICA8U3ZnSWNvbj48cGF0aCBkPXtzdmdUZXh0fS8+PC9TdmdJY29uPlxyXG4pLnBsYWluKCk7XHJcblxyXG5leHBvcnQgdHlwZSBTdHlsZXMgPSBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xyXG5cclxuZXhwb3J0IGNvbnN0IHRvdGFsc1N0eWxlcz17XHJcbiAgICBwYWRkaW5nUmlnaHQ6XCIyNHB4XCIsXHJcbiAgICBmb250U2l6ZTogXCIxMnB0XCJcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgT25VcGRhdGU8VD4gPSAoZGF0YTpUKT0+dm9pZFxyXG5cclxuZXhwb3J0IHR5cGUgSW5wdXRUeXBlcyA9ICdkYXRlJ3wnbnVtYmVyJ3wndGVsJ3wndGV4dCc7XHJcblxyXG5jb25zdCB1c2VTdHlsZXNTY3JvbGxUb3AgPSBtYWtlU3R5bGVzKCh0aGVtZTogVGhlbWUpID0+XHJcbiAgICBjcmVhdGVTdHlsZXMoe1xyXG4gICAgICAgIHJvb3Q6IHtcclxuICAgICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXHJcbiAgICAgICAgICAgIGJvdHRvbTogdGhlbWUuc3BhY2luZygyKSxcclxuICAgICAgICAgICAgcmlnaHQ6IHRoZW1lLnNwYWNpbmcoMiksXHJcbiAgICAgICAgfSxcclxuICAgIH0pLFxyXG4pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNjcm9sbFRvVG9wID0gKCkgPT4ge1xyXG4gICAgd2luZG93LnNjcm9sbCh7YmVoYXZpb3I6J3Ntb290aCcsIHRvcDowLCBsZWZ0OjB9KVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHNjcm9sbFRvQm90dG9tID0gKCkgPT4ge1xyXG4gICAgd2luZG93LnNjcm9sbCh7YmVoYXZpb3I6J3Ntb290aCcsIHRvcDpkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodC13aW5kb3cuaW5uZXJIZWlnaHQsIGxlZnQ6MH0pXHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gU2Nyb2xsVG9wKHByb3BzOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHByb3BzO1xyXG4gICAgY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlc1Njcm9sbFRvcCgpO1xyXG4gICAgLy8gTm90ZSB0aGF0IHlvdSBub3JtYWxseSB3b24ndCBuZWVkIHRvIHNldCB0aGUgd2luZG93IHJlZiBhcyB1c2VTY3JvbGxUcmlnZ2VyXHJcbiAgICAvLyB3aWxsIGRlZmF1bHQgdG8gd2luZG93LlxyXG4gICAgLy8gVGhpcyBpcyBvbmx5IGJlaW5nIHNldCBoZXJlIGJlY2F1c2UgdGhlIGRlbW8gaXMgaW4gYW4gaWZyYW1lLlxyXG4gICAgY29uc3QgdHJpZ2dlciA9IHVzZVNjcm9sbFRyaWdnZXIoe1xyXG4gICAgICAgIGRpc2FibGVIeXN0ZXJlc2lzOiB0cnVlLFxyXG4gICAgICAgIHRocmVzaG9sZDogMTAwLFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxab29tIGluPXt0cmlnZ2VyfT5cclxuICAgICAgICAgICAgPGRpdiBvbkNsaWNrPXtzY3JvbGxUb1RvcH0gcm9sZT1cInByZXNlbnRhdGlvblwiIGNsYXNzTmFtZT17Y2xhc3Nlcy5yb290fT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9ab29tPlxyXG4gICAgKTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRm9jdXNPcHRzPXtcclxuICAgIG1vdmVUb0VsZW1lbnQ6IGJvb2xlYW5cclxuICAgIG1vdmVCZWhhdmlvcj86ICdhdXRvJyB8ICdzbW9vdGgnXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmb2N1c1RvSWQoaWQ6c3RyaW5nLCBvcHRzOkZvY3VzT3B0cywgY2I/OihlOkhUTUxFbGVtZW50KT0+dm9pZCl7XHJcbiAgICB2YXIgZWxlbWVudD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICB2YXIgcGFkcmU9ZWxlbWVudDtcclxuICAgIHdoaWxlKHBhZHJlICYmIHBhZHJlLmNsYXNzTmFtZSE9J3ByZWd1bnRhJyAmJiBwYWRyZSE9ZG9jdW1lbnQuYm9keSkgcGFkcmUgPSBwYWRyZS5wYXJlbnRFbGVtZW50O1xyXG4gICAgaWYocGFkcmUgJiYgcGFkcmUuY2xhc3NOYW1lPT0ncHJlZ3VudGEnKSBlbGVtZW50PXBhZHJlO1xyXG4gICAgaWYoZWxlbWVudCl7XHJcbiAgICAgICAgaWYoY2Ipe1xyXG4gICAgICAgICAgICBjYihlbGVtZW50KTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgICAgICBpZihvcHRzLm1vdmVUb0VsZW1lbnQpe1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xyXG4gICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbCh7YmVoYXZpb3I6b3B0cy5tb3ZlQmVoYXZpb3J8fCdhdXRvJywgdG9wOndpbmRvdy5zY3JvbGxZLTEwMCwgbGVmdDowfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEFsdG9JbXByZXNpb25TdHlsZShwcm9wczp7Y29tcG9uZW50SWQ6c3RyaW5nLCBsaW5lSGVpZ2h0Om51bWJlcixjaGFyc1BlckxpbmU6bnVtYmVyLCB2YWx1ZTpzdHJpbmd9KXtcclxuICAgIGNvbnN0IGlkID0gcHJvcHMuY29tcG9uZW50SWQ7XHJcbiAgICBjb25zdCB2YWxvckluZ3Jlc2FkbyA9IHByb3BzLnZhbHVlO1xyXG4gICAgY29uc3Qge2xpbmVIZWlnaHQ6IGxpbmVIZWlndGgsY2hhcnNQZXJMaW5lfSA9IHByb3BzO1xyXG4gICAgcmV0dXJuIDxzdHlsZT5cclxuICAgICAgICB7YEBtZWRpYSBwcmludCB7IyR7aWR9e2hlaWdodDogJHsobGluZUhlaWd0aCArIGxpbmVIZWlndGggKiBNYXRoLmZsb29yKHZhbG9ySW5ncmVzYWRvLmxlbmd0aC9jaGFyc1BlckxpbmUpKS50b1N0cmluZygpfXB4ICFpbXBvcnRhbnR9fWB9XHJcbiAgICA8L3N0eWxlPlxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBJRGlzcGF0Y2hlcnMgPSB7UkVTRVRfT1BDSU9ORVM6RnVuY3Rpb259O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFJlc2V0ZXJGb3JtKHByb3BzOntvblRyeUFnYWluOigpPT52b2lkLCBkaXNwYXRjaGVyczpJRGlzcGF0Y2hlcnMsIG1lbnNhamU6c3RyaW5nfSl7XHJcbiAgICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XHJcbiAgICByZXR1cm4gPD5cclxuICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpPT57XHJcbiAgICAgICAgICAgICAgICBkaXNwYXRjaChwcm9wcy5kaXNwYXRjaGVycy5SRVNFVF9PUENJT05FUyh7fSkpO1xyXG4gICAgICAgICAgICAgICAgcHJvcHMub25UcnlBZ2FpbigpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgID57cHJvcHMubWVuc2FqZX08L0J1dHRvbj5cclxuICAgIDwvPjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJlbmRlckFuZENhcHR1cmVFcnJvciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxcclxuICAgIHtkaXNwYXRjaGVyczpJRGlzcGF0Y2hlcnMsIG1lbnNhamVSZXRvcm5vOnN0cmluZ30sXHJcbiAgICB7aGFzRXJyb3I6Ym9vbGVhbiwgZXJyb3I6RXJyb3J8e30sIGluZm8/OmFueX1cclxuPntcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzOmFueSkge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0geyBoYXNFcnJvcjogZmFsc2UsIGVycm9yOnt9fTtcclxuICAgIH1cclxuICAgIGNvbXBvbmVudERpZENhdGNoKGVycm9yOkVycm9yLCBpbmZvOmFueSl7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGhhc0Vycm9yOiB0cnVlICwgZXJyb3IsIGluZm8gfSk7XHJcbiAgICB9XHJcbiAgICByZW5kZXIoKXtcclxuICAgICAgICBpZih0aGlzLnN0YXRlLmhhc0Vycm9yKXtcclxuICAgICAgICAgICAgcmV0dXJuIDw+XHJcbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5IdWJvIHVuIHByb2JsZW1hIGVuIGxhIHByb2dyYW1hY2nDs24gZGUgbGEgcGFudGFsbGEuPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgICAgICAgPFJlc2V0ZXJGb3JtIGRpc3BhdGNoZXJzPXt0aGlzLnByb3BzLmRpc3BhdGNoZXJzfSBtZW5zYWplPXt0aGlzLnByb3BzLm1lbnNhamVSZXRvcm5vfSBvblRyeUFnYWluPXsoKT0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGhhc0Vycm9yOiBmYWxzZSwgZXJyb3I6e319KVxyXG4gICAgICAgICAgICAgICAgfS8+XHJcbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5FcnJvciBkZXRlY3RhZG86PC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+e3RoaXMuc3RhdGUuZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IHRoaXMuc3RhdGUuZXJyb3IubWVzc2FnZSA6ICd1bmtub3duIGVycm9yJ308L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT57SlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0ZS5pbmZvKX08L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICAgIDwvPjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW47XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IHRoZW1lID0gY3JlYXRlTXVpVGhlbWUoe1xyXG4gIG92ZXJyaWRlczoge1xyXG4gICAgTXVpQ3NzQmFzZWxpbmU6IHtcclxuICAgICAgJ0BnbG9iYWwnOiB7XHJcbiAgICAgICAgaHRtbDoge1xyXG4gICAgICAgICAgV2Via2l0Rm9udFNtb290aGluZzogJ2F1dG8nLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gIH0sXHJcbn0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFJlbmRlclByaW5jaXBhbDxULFQyIGV4dGVuZHMgQWN0aW9uPihwcm9wczp7c3RvcmU6U3RvcmU8VCxUMj4sIGRpc3BhdGNoZXJzOklEaXNwYXRjaGVycywgbWVuc2FqZVJldG9ybm86c3RyaW5nLCBjaGlsZHJlbjpSZWFjdC5SZWFjdE5vZGV9KXtcclxuICAgIHJldHVybiA8UmVhY3QuU3RyaWN0TW9kZT5cclxuICAgICAgICA8UHJvdmlkZXIgc3RvcmU9e3Byb3BzLnN0b3JlfT5cclxuICAgICAgICAgICAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT5cclxuICAgICAgICAgICAgICAgIDxSZW5kZXJBbmRDYXB0dXJlRXJyb3IgZGlzcGF0Y2hlcnM9e3Byb3BzLmRpc3BhdGNoZXJzfSBtZW5zYWplUmV0b3Jubz17cHJvcHMubWVuc2FqZVJldG9ybm99PlxyXG4gICAgICAgICAgICAgICAgICAgIDxDc3NCYXNlbGluZSAvPlxyXG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cclxuICAgICAgICAgICAgICAgIDwvUmVuZGVyQW5kQ2FwdHVyZUVycm9yPlxyXG4gICAgICAgICAgICA8L1RoZW1lUHJvdmlkZXI+ICAgICAgICBcclxuICAgICAgICA8L1Byb3ZpZGVyPlxyXG4gICAgPC9SZWFjdC5TdHJpY3RNb2RlPlxyXG59XHJcblxyXG4iXX0=
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as ReactDOM from "react-dom";
|
|
3
|
+
import {useState, useEffect, useRef} from "react";
|
|
4
|
+
import { Provider, useSelector, useDispatch } from "react-redux";
|
|
5
|
+
import * as likeAr from "like-ar";
|
|
6
|
+
import * as clsxx from 'clsx';
|
|
7
|
+
//@ts-ignore el módulo clsx no tiene bien puesto los tipos en su .d.ts
|
|
8
|
+
export var clsx: (<T>(a1:string|T, a2?:T)=> string) = clsxx;
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
import {
|
|
12
|
+
AppBar, Badge, Button, ButtonGroup, Card, Chip, CircularProgress, CssBaseline,
|
|
13
|
+
Dialog, DialogActions, DialogContent, DialogContentText,
|
|
14
|
+
DialogTitle, Divider, Fab, Grid, IconButton, InputBase,
|
|
15
|
+
List, ListItem, ListItemIcon, ListItemText, Drawer,
|
|
16
|
+
Menu, MenuItem, Paper, SvgIcon, Switch,
|
|
17
|
+
Table, TableBody, TableCell, TableHead, TableRow, TextField, ThemeProvider, Toolbar, Typography, Zoom,
|
|
18
|
+
useScrollTrigger,
|
|
19
|
+
// styles:
|
|
20
|
+
createStyles, makeStyles, Theme, fade, createMuiTheme
|
|
21
|
+
} from "@material-ui/core";
|
|
22
|
+
import { Store, Action } from "redux";
|
|
23
|
+
|
|
24
|
+
// https://material-ui.com/components/material-icons/
|
|
25
|
+
export const materialIoIconsSvgPath={
|
|
26
|
+
Add:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z",
|
|
27
|
+
Assignment: "M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm2 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z",
|
|
28
|
+
Cancel:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z",
|
|
29
|
+
Check: "M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z",
|
|
30
|
+
CheckBoxOutlineBlankOutlined: "M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z",
|
|
31
|
+
CheckBoxOutlined: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zM17.99 9l-1.41-1.42-6.59 6.59-2.58-2.57-1.42 1.41 4 3.99z",
|
|
32
|
+
ChevronLeft: "M14.71 6.71a.9959.9959 0 00-1.41 0L8.71 11.3c-.39.39-.39 1.02 0 1.41l4.59 4.59c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L10.83 12l3.88-3.88c.39-.39.38-1.03 0-1.41z",
|
|
33
|
+
ChevronRight: "M9.29 6.71c-.39.39-.39 1.02 0 1.41L13.17 12l-3.88 3.88c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0l4.59-4.59c.39-.39.39-1.02 0-1.41L10.7 6.7c-.38-.38-1.02-.38-1.41.01z",
|
|
34
|
+
Clear: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z",
|
|
35
|
+
Close: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z",
|
|
36
|
+
Code: "M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z",
|
|
37
|
+
Delete:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z",
|
|
38
|
+
DeleteOutline:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM8 9h8v10H8V9zm7.5-5l-1-1h-5l-1 1H5v2h14V4z",
|
|
39
|
+
Description: "M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z",
|
|
40
|
+
Edit: "M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 00-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z",
|
|
41
|
+
EmojiObjects: "M12 3c-.46 0-.93.04-1.4.14-2.76.53-4.96 2.76-5.48 5.52-.48 2.61.48 5.01 2.22 6.56.43.38.66.91.66 1.47V19c0 1.1.9 2 2 2h.28c.35.6.98 1 1.72 1s1.38-.4 1.72-1H14c1.1 0 2-.9 2-2v-2.31c0-.55.22-1.09.64-1.46C18.09 13.95 19 12.08 19 10c0-3.87-3.13-7-7-7zm2 16h-4v-1h4v1zm0-2h-4v-1h4v1zm-1.5-5.59V14h-1v-2.59L9.67 9.59l.71-.71L12 10.5l1.62-1.62.71.71-1.83 1.82z",
|
|
42
|
+
ExitToApp: "M10.09 15.59L11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z",
|
|
43
|
+
ExpandLess: "M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z",
|
|
44
|
+
ExpandMore: "M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z",
|
|
45
|
+
FormatLineSpacing: "M6 7h2.5L5 3.5 1.5 7H4v10H1.5L5 20.5 8.5 17H6V7zm4-2v2h12V5H10zm0 14h12v-2H10v2zm0-6h12v-2H10v2z",
|
|
46
|
+
Info: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z",
|
|
47
|
+
KeyboardArrowUp: "M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z",
|
|
48
|
+
Label: "M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1.9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12l-4.37-6.16z",
|
|
49
|
+
LocalAtm: "M11 17h2v-1h1c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1h-3v-1h4V8h-2V7h-2v1h-1c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3v1H9v2h2v1zm9-13H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4V6h16v12z",
|
|
50
|
+
Menu: "M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z",
|
|
51
|
+
Print: "M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z",
|
|
52
|
+
Remove: "M19 13H5v-2h14v2z",
|
|
53
|
+
RemoveShoppingCart: "M22.73 22.73L2.77 2.77 2 2l-.73-.73L0 2.54l4.39 4.39 2.21 4.66-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h7.46l1.38 1.38c-.5.36-.83.95-.83 1.62 0 1.1.89 2 1.99 2 .67 0 1.26-.33 1.62-.84L21.46 24l1.27-1.27zM7.42 15c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h2.36l2 2H7.42zm8.13-2c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H6.54l9.01 9zM7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2z",
|
|
54
|
+
Save:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z",
|
|
55
|
+
Search: "M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z",
|
|
56
|
+
Send: "M2.01 21L23 12 2.01 3 2 10l15 2-15 2z",
|
|
57
|
+
Settings: "M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z",
|
|
58
|
+
SyncAlt:"M22 8l-4-4v3H3v2h15v3l4-4zM2 16l4 4v-3h15v-2H6v-3l-4 4z",
|
|
59
|
+
Visibility:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z",
|
|
60
|
+
Warning: "M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z",
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export const ICON = likeAr(materialIoIconsSvgPath).map(svgText=> () =>
|
|
64
|
+
<SvgIcon><path d={svgText}/></SvgIcon>
|
|
65
|
+
).plain();
|
|
66
|
+
|
|
67
|
+
export type Styles = React.CSSProperties;
|
|
68
|
+
|
|
69
|
+
export const totalsStyles={
|
|
70
|
+
paddingRight:"24px",
|
|
71
|
+
fontSize: "12pt"
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export type OnUpdate<T> = (data:T)=>void
|
|
75
|
+
|
|
76
|
+
export type InputTypes = 'date'|'number'|'tel'|'text';
|
|
77
|
+
|
|
78
|
+
const useStylesScrollTop = makeStyles((theme: Theme) =>
|
|
79
|
+
createStyles({
|
|
80
|
+
root: {
|
|
81
|
+
position: 'fixed',
|
|
82
|
+
bottom: theme.spacing(2),
|
|
83
|
+
right: theme.spacing(2),
|
|
84
|
+
},
|
|
85
|
+
}),
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
export const scrollToTop = () => {
|
|
89
|
+
window.scroll({behavior:'smooth', top:0, left:0})
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export const scrollToBottom = () => {
|
|
93
|
+
window.scroll({behavior:'smooth', top:document.body.clientHeight-window.innerHeight, left:0})
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
export function ScrollTop(props: any) {
|
|
97
|
+
const { children } = props;
|
|
98
|
+
const classes = useStylesScrollTop();
|
|
99
|
+
// Note that you normally won't need to set the window ref as useScrollTrigger
|
|
100
|
+
// will default to window.
|
|
101
|
+
// This is only being set here because the demo is in an iframe.
|
|
102
|
+
const trigger = useScrollTrigger({
|
|
103
|
+
disableHysteresis: true,
|
|
104
|
+
threshold: 100,
|
|
105
|
+
});
|
|
106
|
+
return (
|
|
107
|
+
<Zoom in={trigger}>
|
|
108
|
+
<div onClick={scrollToTop} role="presentation" className={classes.root}>
|
|
109
|
+
{children}
|
|
110
|
+
</div>
|
|
111
|
+
</Zoom>
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export type FocusOpts={
|
|
116
|
+
moveToElement: boolean
|
|
117
|
+
moveBehavior?: 'auto' | 'smooth'
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export function focusToId(id:string, opts:FocusOpts, cb?:(e:HTMLElement)=>void){
|
|
121
|
+
var element=document.getElementById(id);
|
|
122
|
+
var padre=element;
|
|
123
|
+
while(padre && padre.className!='pregunta' && padre!=document.body) padre = padre.parentElement;
|
|
124
|
+
if(padre && padre.className=='pregunta') element=padre;
|
|
125
|
+
if(element){
|
|
126
|
+
if(cb){
|
|
127
|
+
cb(element);
|
|
128
|
+
}else{
|
|
129
|
+
element.focus();
|
|
130
|
+
if(opts.moveToElement){
|
|
131
|
+
element.scrollIntoView();
|
|
132
|
+
window.scroll({behavior:opts.moveBehavior||'auto', top:window.scrollY-100, left:0})
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export function AltoImpresionStyle(props:{componentId:string, lineHeight:number,charsPerLine:number, value:string}){
|
|
139
|
+
const id = props.componentId;
|
|
140
|
+
const valorIngresado = props.value;
|
|
141
|
+
const {lineHeight: lineHeigth,charsPerLine} = props;
|
|
142
|
+
return <style>
|
|
143
|
+
{`@media print {#${id}{height: ${(lineHeigth + lineHeigth * Math.floor(valorIngresado.length/charsPerLine)).toString()}px !important}}`}
|
|
144
|
+
</style>
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export type IDispatchers = {RESET_OPCIONES:Function};
|
|
148
|
+
|
|
149
|
+
export function ReseterForm(props:{onTryAgain:()=>void, dispatchers:IDispatchers, mensaje:string}){
|
|
150
|
+
const dispatch = useDispatch();
|
|
151
|
+
return <>
|
|
152
|
+
<Button variant="outlined"
|
|
153
|
+
onClick={()=>{
|
|
154
|
+
dispatch(props.dispatchers.RESET_OPCIONES({}));
|
|
155
|
+
props.onTryAgain();
|
|
156
|
+
}}
|
|
157
|
+
>{props.mensaje}</Button>
|
|
158
|
+
</>;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export class RenderAndCaptureError extends React.Component<
|
|
162
|
+
{dispatchers:IDispatchers, mensajeRetorno:string},
|
|
163
|
+
{hasError:boolean, error:Error|{}, info?:any}
|
|
164
|
+
>{
|
|
165
|
+
constructor(props:any) {
|
|
166
|
+
super(props);
|
|
167
|
+
this.state = { hasError: false, error:{}};
|
|
168
|
+
}
|
|
169
|
+
componentDidCatch(error:Error, info:any){
|
|
170
|
+
this.setState({ hasError: true , error, info });
|
|
171
|
+
}
|
|
172
|
+
render(){
|
|
173
|
+
if(this.state.hasError){
|
|
174
|
+
return <>
|
|
175
|
+
<Typography>Hubo un problema en la programación de la pantalla.</Typography>
|
|
176
|
+
<ReseterForm dispatchers={this.props.dispatchers} mensaje={this.props.mensajeRetorno} onTryAgain={()=>
|
|
177
|
+
this.setState({ hasError: false, error:{}})
|
|
178
|
+
}/>
|
|
179
|
+
<Typography>Error detectado:</Typography>
|
|
180
|
+
<Typography>{this.state.error instanceof Error ? this.state.error.message : 'unknown error'}</Typography>
|
|
181
|
+
<Typography>{JSON.stringify(this.state.info)}</Typography>
|
|
182
|
+
</>;
|
|
183
|
+
}
|
|
184
|
+
return this.props.children;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
const theme = createMuiTheme({
|
|
189
|
+
overrides: {
|
|
190
|
+
MuiCssBaseline: {
|
|
191
|
+
'@global': {
|
|
192
|
+
html: {
|
|
193
|
+
WebkitFontSmoothing: 'auto',
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
export function RenderPrincipal<T,T2 extends Action>(props:{store:Store<T,T2>, dispatchers:IDispatchers, mensajeRetorno:string, children:React.ReactNode}){
|
|
201
|
+
return <React.StrictMode>
|
|
202
|
+
<Provider store={props.store}>
|
|
203
|
+
<ThemeProvider theme={theme}>
|
|
204
|
+
<RenderAndCaptureError dispatchers={props.dispatchers} mensajeRetorno={props.mensajeRetorno}>
|
|
205
|
+
<CssBaseline />
|
|
206
|
+
{props.children}
|
|
207
|
+
</RenderAndCaptureError>
|
|
208
|
+
</ThemeProvider>
|
|
209
|
+
</Provider>
|
|
210
|
+
</React.StrictMode>
|
|
211
|
+
}
|
|
212
|
+
|