{"_id":"@sassoftware/viyaeditmui","_rev":"52-1aa09b59968e5082d05c881942f4270c","name":"@sassoftware/viyaeditmui","dist-tags":{"next":"0.3.13","latest":"0.4.0","dev":"0.11.0"},"versions":{"0.0.1":{"name":"@sassoftware/viyaeditmui","version":"0.0.1","_id":"@sassoftware/viyaeditmui@0.0.1","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf-uidemos/issues"},"dist":{"shasum":"c8e86bad589eb64b4c7b11922335d623f11177fe","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.0.1.tgz","fileCount":53,"integrity":"sha512-jh/2jikQlGAI9w841UBPoZoD05AxGQWd31R9FSHlHZ/bfLKRTklh3paGWLP1CEX1fvT4tLetzKkzHKP2Jt50Yg==","signatures":[{"sig":"MEUCIDnMZePuLxEQGuUq29Ie33+cqKQw7vCkzsO+NTwYSrEmAiEAhWBnH8gY2b/HfWBnj1MJpsb5J9fCdtH4+RYUwWeAg3w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":494030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjFmpZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqLQQ/8CIz/9evSI4sfcvncLIkNc628Io34x3AKfyn8c8n4YHeSX9vx\r\nyyVM4idkd4JEr8eFYx2jS3bsIZZd4PUGPbQmmgxHmEqHYdvGq2bcggJQgwEm\r\nJTEyxloLewqDq5fVzQfwBTDHd2RsNKJ/mi6sdNOsiBhXpAY9DbuRVfrNfpUg\r\n9tJ+P/KRvOpxQpGqCMnpLfPFb8MWh3F1lWGhH/apDpRs1b1NYh+lw6NdpE2d\r\nFuIhPGK1aOzzrcThMvB3/22b5B3u0G3UyLDbDdC6RX9bMGcshp57hRqId6Dz\r\ngy2XQH/6BeMNsrSZf6vV/C3NpEsFC7IFZROMLYTcUj+/sUW+7ZK3pc59vOv8\r\n7pyFAUd7V9mWyJW9uBghe+7ra0scD/1eIqRVZPd4xowIbLOxpfitR7AUqcUa\r\naAKapINfnoOn9XfxfgseQzohpTqaXSrgWgOHxhnRUmSD0DTDWO1+FRAbfNOp\r\nYGQYTNB0BVqSBaHREoL2eZTVu+BNwUtiN+omIcD+1aPDLNTvScd4WxBESsjA\r\nhdcveldln1k95XFXFPp4wTIWMqlFzO1VNMxr5fO3LYryzVYcvZRTcxik/izS\r\nV/e4sFnX3kVprr9oypsEHbX7SKs0SEKb374UFs9rPbUTkErO0gqlC8J72Pjp\r\nanOyJF7AlOa+U0Lz15Pm5J+xS7ykbt1PYyc=\r\n=fPyZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.umd.js","unpkg":"/dist/index.umd.js","module":"/dist/index.module.js","source":"./src/index.js","gitHead":"fe794907470154fc01f865f28a5ab4bda62d0afa","scripts":{"pub":"npm publish --tag test --access public","lint":"eslint ./src","test":"cd editorapp && npm start","build":"microbundle --jsx=React.createElement --name viyaeditmui","tbuild":"rimraf ./editorapp/public/dist && npm run build && cp -r ./dist ./editorapp/public/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"This small react component library serves multiple purposes:","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"prop-types":"^15.8.1","@material-ui/core":"^4.11.0","@material-ui/icons":"^4.9.1","@sassoftware/viyaedit":"^0.11.1"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^3.0.2","core-js":"^3.15.2","prettier":"^2.0.4","cross-env":"^7.0.3","@babel/cli":"^7.14.5","@babel/core":"^7.14.6","microbundle":"^0.15.0","npm-run-all":"^4.1.5","babel-eslint":"^10.1.0","babel-loader":"^8.2.2","@babel/preset-env":"^7.14.7","eslint-plugin-react":"^7.31.6","eslint-config-standard":"^17.0.0","@babel/plugin-transform-spread":"^7.14.6","@babel/plugin-transform-runtime":"^7.14.5","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.14.5","@babel/plugin-proposal-json-strings":"^7.14.5","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.14.5","@babel/plugin-transform-strict-mode":"^7.14.5","@babel/plugin-proposal-function-bind":"^7.14.5","@babel/plugin-proposal-function-sent":"^7.14.5","@babel/plugin-proposal-do-expressions":"^7.14.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-numeric-separator":"^7.14.5","@babel/plugin-proposal-optional-chaining":"^7.14.5","@babel/plugin-proposal-pipeline-operator":"^7.14.5","@babel/plugin-proposal-throw-expressions":"^7.14.5","@babel/plugin-proposal-object-rest-spread":"^7.14.7","@babel/plugin-proposal-export-default-from":"^7.14.5","@babel/plugin-proposal-export-namespace-from":"^7.14.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.14.5","@babel/plugin-proposal-logical-assignment-operators":"^7.14.5"},"peerDependencies":{"react":">=16.1","react-dom":">=16.1","@sassoftware/restaf":">= 4.5.0","@sassoftware/restaflib":">= 4.5.0","@sassoftware/restafedit":">= 0.1.5"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.0.1_1662413401069_0.13923059991931175","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"@sassoftware/viyaeditmui","version":"0.0.3","_id":"@sassoftware/viyaeditmui@0.0.3","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf-uidemos/issues"},"dist":{"shasum":"4710c5913f6b42242fbb2c60effb5f8eaf216dbf","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.0.3.tgz","fileCount":37,"integrity":"sha512-eSe1boeaAgjHLxR8vApzP9RCV2htrDQT2tDpTSWGkGM0WmUm3/PTxbbc1pnDCLaiCPLdIACabde7jnQ0/P2E0A==","signatures":[{"sig":"MEQCIEjOm60ECt+8FTkjlkJ22hvZBmjKbLQQe47oL7aKqffAAiBHirs7ibPoQ1zErbjvXf4VJ3z6Dd6Zq+gUFHySnHOYfQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":342615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjF2KoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmphwg/+PpbEAGucCpn+uj0bC88w6CH2kESbsyVz+M3FDLgqzmBZ4QG/\r\nAT+NAKIlYH5jT54w0F4Gy/BLYUUyQVA7RDtXzugMnXsHgqTd2epJtUxO0NIY\r\nx9RrKjdo7pixAgNttFICUZum8YezRNAWpMh0JQ5fgsMbCzdLJNC5WatfajtR\r\nGDRYltejTJ9vH7ZQfgIOW24CtcftPq3aSkzImKcXVsXPylvg2pTeySTxgiJ9\r\nrUFNC9w0Tq7c6sqgA4g7pjdssp+RGSQDQbyThhkqOm/Puf1wJZ9LIC20vcIQ\r\n+sxuC5AWluzRXXvOzDL/b5GRBXwDgPenRgyhQaR8dbEt/zd3HiK03v6ZvVyy\r\nQWWMxUYwSviYTkuvLxVgADxgFrqR9Qm/Z8dK0VlmsxDpc+GXFpm3PSRx/bLS\r\nnZU6wQ7RTyGimlmscR9jPWOABiLZMFFxEER7i4m6g7A84yJSu2o5tU4LtYym\r\nb15pYqPZOhsg/qg0DK18RPo0YRp8ZaZfrXtqK+ynTofQY7xq+eanuPg6ZPmt\r\nI4EmVSP3Uvb7b76Je3mwY6+lrOv/ILg/WOHSNZ7/rGzAaYxmomul1JF3WoyZ\r\nC0uTi/sXDgmNuW1DDfENj46kt43PidBzve4y0NU76c2vGct7Qgu5K8s4k88t\r\nDvpGg4ysvMSB9DXSsesvrNy6vC809CeRwfQ=\r\n=OKdb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.umd.js","unpkg":"/dist/index.umd.js","module":"/dist/index.module.js","readme":"# Jump Start Data Editing in SAS Viya\r\n\r\nThis small react component library serves multiple purposes:\r\n\r\n- Help build Data Entry Applications quickly with minimal effort\r\n- Uses [@sassoftware/restafedit](https://github.com/sassoftware/restaf/blob/restafedit/README.md) to access CAS tables and support custom calculations.\r\n\r\n    SAS Tables will be supported in the next version\r\n\r\n<blockquote> React version\r\n\r\nDesigned to work with any  React version >= 16.\r\n\r\n</blockquote>\r\n\r\n---\r\n\r\n## Install\r\n\r\n---\r\n\r\n```sh\r\n\r\nnpm install @sassoftware/viyaedit\r\n\r\n```\r\n\r\n### PeerDependencies\r\n\r\nIf your package manager does not install peer dependencies then install these manually.\r\n\r\n```js\r\n{\r\n    \"@sassoftware/restaf\": \">= 4.4.8\",\r\n    \"@sassoftware/restaflib\": \">= 4.4.8\",\r\n    \"@sassoftware/restafedit\": \">= 0.11.0\"\r\n}\r\n\r\n```\r\n\r\n---\r\n\r\n## Usage\r\n\r\n---\r\n\r\nDataEditor is the entry component\r\n\r\n### Sample React Component\r\n\r\n```jsx\r\n\r\n<DataEditor viyaConnection={viyaConnection} appControl={appControl} editor={editorfunction}/>\r\n\r\n```\r\n\r\nHere is a link to a working [sample](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/viewers/Sample.js) that uses this. For convenience the code is included here.\r\n\r\n```jsx\r\n\r\nimport React from 'react';\r\nimport helpers from '../helpers';\r\nimport {DataEditor} from '@sassoftware/viyaedit';\r\n\r\nimport Grid from \"@material-ui/core/Grid\";\r\n\r\nfunction Sample (props) {\r\n\r\n  // See below - moved it to a function for code readability\r\n  let appControl = getAppControl();\r\n  \r\n  let viyaConnection = {\r\n    host: 'https://myViyaServer.com',\r\n    authType: 'code'\r\n  }\r\n  \r\n  // Used as editor function\r\n  const _editor = () => {\r\n    return helpers['SampleForm']; \r\n  };\r\n\r\n // main call\r\n  return (\r\n    <div key={Date()}>\r\n      <Grid container spacing={3} direction=\"row\">\r\n          <Grid item>\r\n            <DataEditor key={Date()}\r\n                  appControl={appControl} \r\n                  viyaConnection={viyaConnection}   \r\n                  editor={_editor}  \r\n                  />\r\n          </Grid>\r\n        </Grid>\r\n    </div>\r\n    \r\n  );\r\n\r\n\r\n//\r\n// handlers for init, main, term and selected columns\r\n//\r\nasync function init (data,row,appEnv,type) {\r\n  let status = {code: 0, msg: `${type} processing completed`};\r\n  data.total = data.x1 + data.x2 + data.x3 ;\r\n  let newData = data; /* you can modify the incoming data and return it */\r\n  return [newData, status];\r\n};\r\n\r\nasync function term (data, type) {\r\n  let status = {code: 0, msg: `${type} processing completed`};\r\n  return [data, status];\r\n};\r\n\r\nasync function x1 (data, value, name) {\r\nlet msg = {code: 0, msg: `${name} handler executed.`};\r\nif (data.x1 > 10) {\r\n    data.x1 = 10;\r\n    msg = {code: 0, msg: \"Exceeded Max. Value reset to max\"};\r\n}\r\n\r\nreturn [data, msg];\r\n};\r\n\r\n// Application control for restafedit to use.\r\n\r\nfunction getAppControl () {\r\n  return {\r\n      description: 'Simple Example',\r\n      dataControl: {\r\n        source: 'cas',\r\n        table : {caslib: 'casuser', name: 'testdata'},\r\n        access: {},\r\n        byvars: ['id'],\r\n        where : {},\r\n\r\n        cachePolicy: true,\r\n\r\n        initialFetch: {\r\n          count : 1,\r\n          from  : 1,\r\n          format: false\r\n        },\r\n\r\n        customColumns: {\r\n          total: {\r\n            Column         : \"Total\",\r\n            Label          : \"Grand Total\",\r\n            FormattedLength: 12,\r\n            Type           : \"double\"\r\n            }\r\n        },\r\n        customRows: []\r\n      },\r\n      editControl: {\r\n        handlers: {init: init, main: init, term: term, x1: x1}, \r\n        save    : true,  \r\n        autoSave: true, \r\n    \r\n      },\r\n      appData: {}    /* put here whatever you want to pass to your editor component */\r\n      \r\n   };\r\n  }\r\n\r\n}\r\nexport default Sample;\r\n\r\n```\r\n\r\n## Props to DataEditor\r\n\r\n### `viyaConnection`\r\n\r\nUsually your app is running with authorization_code flow. So use this:\r\n\r\n```js\r\n{\r\n    host: <your Viya server url>,\r\n    authType: 'code'\r\n}\r\n```\r\n\r\nSometime, even with authorization_code you might want to use tokens. Then use this:\r\n\r\n```js\r\n{\r\n    host: <your Viya server url>,\r\n    authType: 'code',\r\n    token: <your token>\r\n    tokenType: 'bearer\r\n}\r\n```\r\n\r\n### `AppControl`\r\n\r\nThis is the same appControl used with @sassoftware/restafedit (see [here](https://github.com/sassoftware/restaf/blob/restafedit/README.md))\r\n\r\n### `editor`\r\n\r\nThis is a function that returns your editor component.\r\nFor example if your editor component(written with any react component library) MyEditor. See below for its props.\r\n\r\nSee these links for examples.\r\n\r\n- [Sample Form Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/SampleForm.js)\r\n\r\n- [Form Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/DataFormMulti.js)\r\n\r\n- [Table Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/TableEditorMui.js)\r\n\r\n```js\r\n\r\nconst V = editorFunc();\r\n\r\n```\r\n\r\nThe viyaedit component will use this prop as follows:\r\n\r\n```js\r\n\r\nconst V = props.editor();\r\n\r\nreturn (\r\n      <Fragment>\r\n            <V \r\n             onEdit={_onEdit}\r\n             onScroll={_onScroll}\r\n             onSave={_onSave}\r\n             status={status}\r\n             appEnv={appEnv}\r\n             />\r\n        </Fragment>\r\n\r\n)\r\n```\r\n\r\n---  \r\n\r\n## Details on the editor prop\r\n\r\n---\r\n\r\nThe editor component needs to handle the following props\r\n\r\n### onEdit\r\n\r\nThis callback will run your custom calculations and save the record to the server. The autosave is controlled by the option in appControl.\r\nTypically you will call this after the user enters a value and presses enter or changes cursor focus.\r\n\r\nTo call it use this sample code:\r\n\r\n```js\r\nprops.onEdit(\r\n    name, /* name of the column */\r\n    value, /* new value to be saved */\r\n    rowIndex, /*index of the row. Between 0 and the number of records retrieve on last fetch */\r\n    data, /* the data for the row */\r\n    appEnv /* control object that was passed into your component */ \r\n```\r\n\r\n#### onScroll\r\n\r\nTo scroll to previous or next record call this. This callback will retrieve new records from the server.\r\n\r\n```js\r\n\r\nprops.onScroll(direction)\r\n\r\n```\r\n\r\nDirection can be 'first', 'prev', 'next'\r\n\r\n#### onSave\r\n\r\nUse this if you are not doing a autoSave on each edit\r\n\r\n---\r\n\r\nprops.onSave(data, appEnv);\r\n\r\n---\r\n\r\ndata is the current row\r\n\r\n#### status\r\n\r\nThe status is returned by DataEditor. it is of the form\r\n\r\n{\r\n    status: 0|1|2,\r\n    msg: <some string>\r\n}\r\n\r\nCould be null to indicate that there is no status to report\r\n\r\n##### appEnv\r\n\r\nThis is the control object for the edit session. For details on this see @sassoftware/restafedit.  \r\n\r\nThis object is useful in more advanced use cases. See the documentation for @sassoftware/restafedit.\r\n","source":"./src/index.js","gitHead":"27835db6d9790169833c60109e13889b0c25d8d9","scripts":{"pub":"npm publish --tag test --access public","lint":"eslint ./src","test":"cd editorapp && npm start","build":"rimraf ./test/public/dist && npm run buildm && cp -r ./dist ./test/public/dist","buildm":"microbundle --jsx React.createElement --jsxFragment React.Fragment --jsxImportSource react --name viyaeditmui"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"This small react component library serves multiple purposes:","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"react":"^17.0.2","react-dom":"^17.0.2","prop-types":"^15.8.1","@material-ui/core":"^4.11.0","@material-ui/icons":"^4.9.1","@babel/eslint-parser":"^7.18.9","@sassoftware/viyaedit":"^0.11.1","@sassoftware/restafedit":">= 0.1.5"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rimraf":"^3.0.2","core-js":"^3.15.2","prettier":"^2.0.4","cross-env":"^7.0.3","@babel/cli":"^7.14.5","@babel/core":"^7.14.6","microbundle":"^0.15.0","npm-run-all":"^4.1.5","babel-loader":"^8.2.2","@babel/preset-env":"^7.14.7","eslint-plugin-react":"^7.31.6","eslint-config-standard":"^17.0.0","@babel/plugin-transform-spread":"^7.14.6","@babel/plugin-transform-runtime":"^7.14.5","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.14.5","@babel/plugin-proposal-json-strings":"^7.14.5","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.14.5","@babel/plugin-transform-strict-mode":"^7.14.5","@babel/plugin-proposal-function-bind":"^7.14.5","@babel/plugin-proposal-function-sent":"^7.14.5","@babel/plugin-proposal-do-expressions":"^7.14.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-numeric-separator":"^7.14.5","@babel/plugin-proposal-optional-chaining":"^7.14.5","@babel/plugin-proposal-pipeline-operator":"^7.14.5","@babel/plugin-proposal-throw-expressions":"^7.14.5","@babel/plugin-proposal-object-rest-spread":"^7.14.7","@babel/plugin-proposal-export-default-from":"^7.14.5","@babel/plugin-proposal-export-namespace-from":"^7.14.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.14.5","@babel/plugin-proposal-logical-assignment-operators":"^7.14.5"},"peerDependencies":{"@sassoftware/restaf":">= 4.5.0","@sassoftware/restaflib":">= 4.5.0"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.0.3_1662476968034_0.7583519708552382","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"@sassoftware/viyaeditmui","version":"0.0.4","_id":"@sassoftware/viyaeditmui@0.0.4","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf-uidemos/issues"},"dist":{"shasum":"802b17ed601725eac22f20082b20da7263896277","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.0.4.tgz","fileCount":39,"integrity":"sha512-Uv6/BuyAqMdxSB+zCH3I3Vzo500ouBULaPMGW4IXYfZ8APJFa+nxaOkktnoVS4FmcZGGrPqmzofVJdXcPggkOg==","signatures":[{"sig":"MEYCIQC3bjKV8f7MDQJkgNo3Oz8ilME5M1R2UCP2ifwTtQxgfwIhAPDIrWs5e5rhuuTPc7ailMw2VAgOeN8F1YYcRw2jPHFs","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":406888,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjF2hLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmocbA//Wf8uUa0SppN0+/vj7GaXHh81Xe6s2KWpnP32YBOGpnd3XsNw\r\nEKmPkoE1i2Vxx7U+7Ly2fxf8AH6AAEIpAWhTXqYi+6UbvSFCToQxKtYHneyO\r\nErdFLBLNsa7ibuvqZbMcPmdtwvb6t04lGqYua/s98/PST5nDMwOpTzOLInAT\r\nwI7ZujoKg3NCchTmpGoGu4uCgzc3GR+SmBPReHM0HI+hn9PCudV2FoXg/6lJ\r\nndZvwQoOGSCH1t0NTgLaKGOjP1EUwPKeelyT3mRhKlBSoBYR2pemvGkEzh6v\r\n6TC0QIxsaaMxjkx1fLnCv93XVUs/cpfTofdpmW3RzQ7+cP843/jZn/2yJytb\r\nzXJfxhlYGUa/o12wmnuZH8RxVO2Vcw3cARD0oX57Mm7xVQH3dThvKY+1IYrY\r\nrlxJbbbTYt5mXbAYvtycVfz5Ap/ZymScaqCbfj9DJWBMTjRF6Ms1ex3Pv/R9\r\n+fzYkxhgjdTexihtwIs6zPzS/4UTjvt6vwQsIIkgd8I2S8Faunxjc+5JsTIj\r\nMXynsjiecUFXTyDREV9a9qC0h8PfcGog+AZlR7K8T0lwe9JQrCNOMWtrAqqO\r\nxCSPP0+bigRpgz1RyPc8ipo3IQ0A6zjyHY3DDvh/71rQIVHeZy36PUp5IIHv\r\nszVqYtVYHz5R5vglSbA3NPZtbwuUMeYLbiU=\r\n=/Seg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.umd.js","unpkg":"/dist/index.umd.js","module":"/dist/index.module.js","readme":"# Jump Start Data Editing in SAS Viya\r\n\r\nThis small react component library serves multiple purposes:\r\n\r\n- Help build Data Entry Applications quickly with minimal effort\r\n- Uses [@sassoftware/restafedit](https://github.com/sassoftware/restaf/blob/restafedit/README.md) to access CAS tables and support custom calculations.\r\n\r\n    SAS Tables will be supported in the next version\r\n\r\n<blockquote> React version\r\n\r\nDesigned to work with any  React version >= 16.\r\n\r\n</blockquote>\r\n\r\n---\r\n\r\n## Install\r\n\r\n---\r\n\r\n```sh\r\n\r\nnpm install @sassoftware/viyaedit\r\n\r\n```\r\n\r\n### PeerDependencies\r\n\r\nIf your package manager does not install peer dependencies then install these manually.\r\n\r\n```js\r\n{\r\n    \"@sassoftware/restaf\": \">= 4.4.8\",\r\n    \"@sassoftware/restaflib\": \">= 4.4.8\",\r\n    \"@sassoftware/restafedit\": \">= 0.11.0\"\r\n}\r\n\r\n```\r\n\r\n---\r\n\r\n## Usage\r\n\r\n---\r\n\r\nDataEditor is the entry component\r\n\r\n### Sample React Component\r\n\r\n```jsx\r\n\r\n<DataEditor viyaConnection={viyaConnection} appControl={appControl} editor={editorfunction}/>\r\n\r\n```\r\n\r\nHere is a link to a working [sample](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/viewers/Sample.js) that uses this. For convenience the code is included here.\r\n\r\n```jsx\r\n\r\nimport React from 'react';\r\nimport helpers from '../helpers';\r\nimport {DataEditor} from '@sassoftware/viyaedit';\r\n\r\nimport Grid from \"@material-ui/core/Grid\";\r\n\r\nfunction Sample (props) {\r\n\r\n  // See below - moved it to a function for code readability\r\n  let appControl = getAppControl();\r\n  \r\n  let viyaConnection = {\r\n    host: 'https://myViyaServer.com',\r\n    authType: 'code'\r\n  }\r\n  \r\n  // Used as editor function\r\n  const _editor = () => {\r\n    return helpers['SampleForm']; \r\n  };\r\n\r\n // main call\r\n  return (\r\n    <div key={Date()}>\r\n      <Grid container spacing={3} direction=\"row\">\r\n          <Grid item>\r\n            <DataEditor key={Date()}\r\n                  appControl={appControl} \r\n                  viyaConnection={viyaConnection}   \r\n                  editor={_editor}  \r\n                  />\r\n          </Grid>\r\n        </Grid>\r\n    </div>\r\n    \r\n  );\r\n\r\n\r\n//\r\n// handlers for init, main, term and selected columns\r\n//\r\nasync function init (data,row,appEnv,type) {\r\n  let status = {code: 0, msg: `${type} processing completed`};\r\n  data.total = data.x1 + data.x2 + data.x3 ;\r\n  let newData = data; /* you can modify the incoming data and return it */\r\n  return [newData, status];\r\n};\r\n\r\nasync function term (data, type) {\r\n  let status = {code: 0, msg: `${type} processing completed`};\r\n  return [data, status];\r\n};\r\n\r\nasync function x1 (data, value, name) {\r\nlet msg = {code: 0, msg: `${name} handler executed.`};\r\nif (data.x1 > 10) {\r\n    data.x1 = 10;\r\n    msg = {code: 0, msg: \"Exceeded Max. Value reset to max\"};\r\n}\r\n\r\nreturn [data, msg];\r\n};\r\n\r\n// Application control for restafedit to use.\r\n\r\nfunction getAppControl () {\r\n  return {\r\n      description: 'Simple Example',\r\n      dataControl: {\r\n        source: 'cas',\r\n        table : {caslib: 'casuser', name: 'testdata'},\r\n        access: {},\r\n        byvars: ['id'],\r\n        where : {},\r\n\r\n        cachePolicy: true,\r\n\r\n        initialFetch: {\r\n          count : 1,\r\n          from  : 1,\r\n          format: false\r\n        },\r\n\r\n        customColumns: {\r\n          total: {\r\n            Column         : \"Total\",\r\n            Label          : \"Grand Total\",\r\n            FormattedLength: 12,\r\n            Type           : \"double\"\r\n            }\r\n        },\r\n        customRows: []\r\n      },\r\n      editControl: {\r\n        handlers: {init: init, main: init, term: term, x1: x1}, \r\n        save    : true,  \r\n        autoSave: true, \r\n    \r\n      },\r\n      appData: {}    /* put here whatever you want to pass to your editor component */\r\n      \r\n   };\r\n  }\r\n\r\n}\r\nexport default Sample;\r\n\r\n```\r\n\r\n## Props to DataEditor\r\n\r\n### `viyaConnection`\r\n\r\nUsually your app is running with authorization_code flow. So use this:\r\n\r\n```js\r\n{\r\n    host: <your Viya server url>,\r\n    authType: 'code'\r\n}\r\n```\r\n\r\nSometime, even with authorization_code you might want to use tokens. Then use this:\r\n\r\n```js\r\n{\r\n    host: <your Viya server url>,\r\n    authType: 'code',\r\n    token: <your token>\r\n    tokenType: 'bearer\r\n}\r\n```\r\n\r\n### `AppControl`\r\n\r\nThis is the same appControl used with @sassoftware/restafedit (see [here](https://github.com/sassoftware/restaf/blob/restafedit/README.md))\r\n\r\n### `editor`\r\n\r\nThis is a function that returns your editor component.\r\nFor example if your editor component(written with any react component library) MyEditor. See below for its props.\r\n\r\nSee these links for examples.\r\n\r\n- [Sample Form Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/SampleForm.js)\r\n\r\n- [Form Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/DataFormMulti.js)\r\n\r\n- [Table Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/TableEditorMui.js)\r\n\r\n```js\r\n\r\nconst V = editorFunc();\r\n\r\n```\r\n\r\nThe viyaedit component will use this prop as follows:\r\n\r\n```js\r\n\r\nconst V = props.editor();\r\n\r\nreturn (\r\n      <Fragment>\r\n            <V \r\n             onEdit={_onEdit}\r\n             onScroll={_onScroll}\r\n             onSave={_onSave}\r\n             status={status}\r\n             appEnv={appEnv}\r\n             />\r\n        </Fragment>\r\n\r\n)\r\n```\r\n\r\n---  \r\n\r\n## Details on the editor prop\r\n\r\n---\r\n\r\nThe editor component needs to handle the following props\r\n\r\n### onEdit\r\n\r\nThis callback will run your custom calculations and save the record to the server. The autosave is controlled by the option in appControl.\r\nTypically you will call this after the user enters a value and presses enter or changes cursor focus.\r\n\r\nTo call it use this sample code:\r\n\r\n```js\r\nprops.onEdit(\r\n    name, /* name of the column */\r\n    value, /* new value to be saved */\r\n    rowIndex, /*index of the row. Between 0 and the number of records retrieve on last fetch */\r\n    data, /* the data for the row */\r\n    appEnv /* control object that was passed into your component */ \r\n```\r\n\r\n#### onScroll\r\n\r\nTo scroll to previous or next record call this. This callback will retrieve new records from the server.\r\n\r\n```js\r\n\r\nprops.onScroll(direction)\r\n\r\n```\r\n\r\nDirection can be 'first', 'prev', 'next'\r\n\r\n#### onSave\r\n\r\nUse this if you are not doing a autoSave on each edit\r\n\r\n---\r\n\r\nprops.onSave(data, appEnv);\r\n\r\n---\r\n\r\ndata is the current row\r\n\r\n#### status\r\n\r\nThe status is returned by DataEditor. it is of the form\r\n\r\n{\r\n    status: 0|1|2,\r\n    msg: <some string>\r\n}\r\n\r\nCould be null to indicate that there is no status to report\r\n\r\n##### appEnv\r\n\r\nThis is the control object for the edit session. For details on this see @sassoftware/restafedit.  \r\n\r\nThis object is useful in more advanced use cases. See the documentation for @sassoftware/restafedit.\r\n","source":"./src/index.js","gitHead":"c2638f4204f9e8df34878be1e72e429aba3f8570","scripts":{"pub":"npm publish --tag test --access public","lint":"eslint ./src","test":"cd editorapp && npm start","build":"rimraf ./test/public/dist && npm run buildm && cp -r ./dist ./test/public/dist","buildm":"microbundle --jsx React.createElement --jsxFragment React.Fragment --jsxImportSource react --name viyaeditmui"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"This small react component library serves multiple purposes:","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"react":"^17.0.2","react-dom":"^17.0.2","prop-types":"^15.8.1","@material-ui/core":"^4.11.0","@material-ui/icons":"^4.9.1","@babel/eslint-parser":"^7.18.9","@sassoftware/restafedit":">= 0.1.5"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rimraf":"^3.0.2","core-js":"^3.15.2","prettier":"^2.0.4","cross-env":"^7.0.3","@babel/cli":"^7.14.5","@babel/core":"^7.14.6","microbundle":"^0.15.0","npm-run-all":"^4.1.5","babel-loader":"^8.2.2","@babel/preset-env":"^7.14.7","eslint-plugin-react":"^7.31.6","eslint-config-standard":"^17.0.0","@babel/plugin-transform-spread":"^7.14.6","@babel/plugin-transform-runtime":"^7.14.5","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.14.5","@babel/plugin-proposal-json-strings":"^7.14.5","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.14.5","@babel/plugin-transform-strict-mode":"^7.14.5","@babel/plugin-proposal-function-bind":"^7.14.5","@babel/plugin-proposal-function-sent":"^7.14.5","@babel/plugin-proposal-do-expressions":"^7.14.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-numeric-separator":"^7.14.5","@babel/plugin-proposal-optional-chaining":"^7.14.5","@babel/plugin-proposal-pipeline-operator":"^7.14.5","@babel/plugin-proposal-throw-expressions":"^7.14.5","@babel/plugin-proposal-object-rest-spread":"^7.14.7","@babel/plugin-proposal-export-default-from":"^7.14.5","@babel/plugin-proposal-export-namespace-from":"^7.14.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.14.5","@babel/plugin-proposal-logical-assignment-operators":"^7.14.5"},"peerDependencies":{"@sassoftware/restaf":">= 4.5.0","@sassoftware/restaflib":">= 4.5.0"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.0.4_1662478411709_0.44882333719252565","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"@sassoftware/viyaeditmui","version":"0.0.5","_id":"@sassoftware/viyaeditmui@0.0.5","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf-uidemos/issues"},"dist":{"shasum":"83dff35e2287296420cdc34fde34a5962932ab57","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.0.5.tgz","fileCount":39,"integrity":"sha512-/4A17/7eCluutx9K6Ay1sXjLrzd06GiIYyENzNkBlGF0qjYHmxi+pVuYtziX/uvZWY2H/sAJE1YlH2ZfC5+76w==","signatures":[{"sig":"MEYCIQCKOvaYTEJATRi8vRI3bM+z/fGkcl/Ba/BObNwZ+0xPtgIhAOqxznlpHlBslsEI1qryxDLl1AYGAAAwJhG7eNXbJCLA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":406886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjF2uLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrJ7w//VklxmuaSxv44JKrsv1vFHEmhVcXoxi0kyBR+ocFA3UoilhFg\r\njhJzb+QgcncCXDWEbef0D264Fu/0ZEj1NqdZYfmPOnlEZgl+fk7Dyeax4qCQ\r\noz1Hbhf1Lr8TkvzbhZTfKuicjfDH94LG7U490gfdFrI8XYdJVF6mfFRkTadf\r\nygx41BR3q0lq26dM/gHZTyVq7KURd5mapsj9iHdlt2Lx2t0Swa4mz/ydrL+I\r\niXK+xrQK1OfQP4li8Wslxff4G/k6J+xVzOy3X2SvRoJ6gECGNPz/ujx+qoz3\r\nCvhqlxZidZmRxEUydheTpq/jOhRvXb30yG/rOSAGzvMx/+kb04MEUugKncnG\r\nyoc8ezPnJkNL5DJPf9wckoizxPjQEK1faZWgHMEtqDwJ43fDUEQRpoRPpM8+\r\noiRTwswzxtrIGsZS5xvSJJZhUdtXi1M+L/A+mDnrFwjz4Uy2NF1rLs8ooCg/\r\nLAu924QF1zsWnWxjfwKAtTj1pX06vvb/m4Ehv8IpEPqap8c6DNSgu1ZZs9sH\r\nYewmDkCXoYoRSSFwR7j2V5nHJyUBVBGnBmOaakuPTDeco4W+a70q1O2xQTOo\r\n3WHrQXK7R0BAy+fghunmZhHS2+1itqFpC8M3heBNSpsPS3SF8/HmtuDn3eyv\r\n0TmVGIFPpZRapwZcDGeZhUqLqxMwBELWLHE=\r\n=v9lI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.umd.js","unpkg":"/dist/index.umd.js","module":"/dist/index.module.js","readme":"# Jump Start Data Editing in SAS Viya\r\n\r\nThis small react component library serves multiple purposes:\r\n\r\n- Help build Data Entry Applications quickly with minimal effort\r\n- Uses [@sassoftware/restafedit](https://github.com/sassoftware/restaf/blob/restafedit/README.md) to access CAS tables and support custom calculations.\r\n\r\n    SAS Tables will be supported in the next version\r\n\r\n<blockquote> React version\r\n\r\nDesigned to work with any  React version >= 16.\r\n\r\n</blockquote>\r\n\r\n---\r\n\r\n## Install\r\n\r\n---\r\n\r\n```sh\r\n\r\nnpm install @sassoftware/viyaedit\r\n\r\n```\r\n\r\n### PeerDependencies\r\n\r\nIf your package manager does not install peer dependencies then install these manually.\r\n\r\n```js\r\n{\r\n    \"@sassoftware/restaf\": \">= 4.4.8\",\r\n    \"@sassoftware/restaflib\": \">= 4.4.8\",\r\n    \"@sassoftware/restafedit\": \">= 0.11.0\"\r\n}\r\n\r\n```\r\n\r\n---\r\n\r\n## Usage\r\n\r\n---\r\n\r\nDataEditor is the entry component\r\n\r\n### Sample React Component\r\n\r\n```jsx\r\n\r\n<DataEditor viyaConnection={viyaConnection} appControl={appControl} editor={editorfunction}/>\r\n\r\n```\r\n\r\nHere is a link to a working [sample](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/viewers/Sample.js) that uses this. For convenience the code is included here.\r\n\r\n```jsx\r\n\r\nimport React from 'react';\r\nimport helpers from '../helpers';\r\nimport {DataEditor} from '@sassoftware/viyaedit';\r\n\r\nimport Grid from \"@material-ui/core/Grid\";\r\n\r\nfunction Sample (props) {\r\n\r\n  // See below - moved it to a function for code readability\r\n  let appControl = getAppControl();\r\n  \r\n  let viyaConnection = {\r\n    host: 'https://myViyaServer.com',\r\n    authType: 'code'\r\n  }\r\n  \r\n  // Used as editor function\r\n  const _editor = () => {\r\n    return helpers['SampleForm']; \r\n  };\r\n\r\n // main call\r\n  return (\r\n    <div key={Date()}>\r\n      <Grid container spacing={3} direction=\"row\">\r\n          <Grid item>\r\n            <DataEditor key={Date()}\r\n                  appControl={appControl} \r\n                  viyaConnection={viyaConnection}   \r\n                  editor={_editor}  \r\n                  />\r\n          </Grid>\r\n        </Grid>\r\n    </div>\r\n    \r\n  );\r\n\r\n\r\n//\r\n// handlers for init, main, term and selected columns\r\n//\r\nasync function init (data,row,appEnv,type) {\r\n  let status = {code: 0, msg: `${type} processing completed`};\r\n  data.total = data.x1 + data.x2 + data.x3 ;\r\n  let newData = data; /* you can modify the incoming data and return it */\r\n  return [newData, status];\r\n};\r\n\r\nasync function term (data, type) {\r\n  let status = {code: 0, msg: `${type} processing completed`};\r\n  return [data, status];\r\n};\r\n\r\nasync function x1 (data, value, name) {\r\nlet msg = {code: 0, msg: `${name} handler executed.`};\r\nif (data.x1 > 10) {\r\n    data.x1 = 10;\r\n    msg = {code: 0, msg: \"Exceeded Max. Value reset to max\"};\r\n}\r\n\r\nreturn [data, msg];\r\n};\r\n\r\n// Application control for restafedit to use.\r\n\r\nfunction getAppControl () {\r\n  return {\r\n      description: 'Simple Example',\r\n      dataControl: {\r\n        source: 'cas',\r\n        table : {caslib: 'casuser', name: 'testdata'},\r\n        access: {},\r\n        byvars: ['id'],\r\n        where : {},\r\n\r\n        cachePolicy: true,\r\n\r\n        initialFetch: {\r\n          count : 1,\r\n          from  : 1,\r\n          format: false\r\n        },\r\n\r\n        customColumns: {\r\n          total: {\r\n            Column         : \"Total\",\r\n            Label          : \"Grand Total\",\r\n            FormattedLength: 12,\r\n            Type           : \"double\"\r\n            }\r\n        },\r\n        customRows: []\r\n      },\r\n      editControl: {\r\n        handlers: {init: init, main: init, term: term, x1: x1}, \r\n        save    : true,  \r\n        autoSave: true, \r\n    \r\n      },\r\n      appData: {}    /* put here whatever you want to pass to your editor component */\r\n      \r\n   };\r\n  }\r\n\r\n}\r\nexport default Sample;\r\n\r\n```\r\n\r\n## Props to DataEditor\r\n\r\n### `viyaConnection`\r\n\r\nUsually your app is running with authorization_code flow. So use this:\r\n\r\n```js\r\n{\r\n    host: <your Viya server url>,\r\n    authType: 'code'\r\n}\r\n```\r\n\r\nSometime, even with authorization_code you might want to use tokens. Then use this:\r\n\r\n```js\r\n{\r\n    host: <your Viya server url>,\r\n    authType: 'code',\r\n    token: <your token>\r\n    tokenType: 'bearer\r\n}\r\n```\r\n\r\n### `AppControl`\r\n\r\nThis is the same appControl used with @sassoftware/restafedit (see [here](https://github.com/sassoftware/restaf/blob/restafedit/README.md))\r\n\r\n### `editor`\r\n\r\nThis is a function that returns your editor component.\r\nFor example if your editor component(written with any react component library) MyEditor. See below for its props.\r\n\r\nSee these links for examples.\r\n\r\n- [Sample Form Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/SampleForm.js)\r\n\r\n- [Form Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/DataFormMulti.js)\r\n\r\n- [Table Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/TableEditorMui.js)\r\n\r\n```js\r\n\r\nconst V = editorFunc();\r\n\r\n```\r\n\r\nThe viyaedit component will use this prop as follows:\r\n\r\n```js\r\n\r\nconst V = props.editor();\r\n\r\nreturn (\r\n      <Fragment>\r\n            <V \r\n             onEdit={_onEdit}\r\n             onScroll={_onScroll}\r\n             onSave={_onSave}\r\n             status={status}\r\n             appEnv={appEnv}\r\n             />\r\n        </Fragment>\r\n\r\n)\r\n```\r\n\r\n---  \r\n\r\n## Details on the editor prop\r\n\r\n---\r\n\r\nThe editor component needs to handle the following props\r\n\r\n### onEdit\r\n\r\nThis callback will run your custom calculations and save the record to the server. The autosave is controlled by the option in appControl.\r\nTypically you will call this after the user enters a value and presses enter or changes cursor focus.\r\n\r\nTo call it use this sample code:\r\n\r\n```js\r\nprops.onEdit(\r\n    name, /* name of the column */\r\n    value, /* new value to be saved */\r\n    rowIndex, /*index of the row. Between 0 and the number of records retrieve on last fetch */\r\n    data, /* the data for the row */\r\n    appEnv /* control object that was passed into your component */ \r\n```\r\n\r\n#### onScroll\r\n\r\nTo scroll to previous or next record call this. This callback will retrieve new records from the server.\r\n\r\n```js\r\n\r\nprops.onScroll(direction)\r\n\r\n```\r\n\r\nDirection can be 'first', 'prev', 'next'\r\n\r\n#### onSave\r\n\r\nUse this if you are not doing a autoSave on each edit\r\n\r\n---\r\n\r\nprops.onSave(data, appEnv);\r\n\r\n---\r\n\r\ndata is the current row\r\n\r\n#### status\r\n\r\nThe status is returned by DataEditor. it is of the form\r\n\r\n{\r\n    status: 0|1|2,\r\n    msg: <some string>\r\n}\r\n\r\nCould be null to indicate that there is no status to report\r\n\r\n##### appEnv\r\n\r\nThis is the control object for the edit session. For details on this see @sassoftware/restafedit.  \r\n\r\nThis object is useful in more advanced use cases. See the documentation for @sassoftware/restafedit.\r\n","source":"./src/index.js","gitHead":"9fe04d713a36cf57e11aea8db84b331b29a82a69","scripts":{"pub":"npm publish --tag test --access public","lint":"eslint ./src","test":"cd editorapp && npm start","build":"rimraf ./test/public/dist && npm run buildm && cp -r ./dist ./test/public/dist","buildm":"microbundle --jsx React.createElement --jsxFragment React.Fragment --jsxImportSource react --name viyaeditmui"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"This small react component library serves multiple purposes:","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"react":"^17.0.2","react-dom":"^17.0.2","prop-types":"^15.8.1","@material-ui/core":"^4.11.0","@material-ui/icons":"^4.9.1","@babel/eslint-parser":"^7.18.9","@sassoftware/restafedit":"^1.6.1"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rimraf":"^3.0.2","core-js":"^3.15.2","prettier":"^2.0.4","cross-env":"^7.0.3","@babel/cli":"^7.14.5","@babel/core":"^7.14.6","microbundle":"^0.15.0","npm-run-all":"^4.1.5","babel-loader":"^8.2.2","@babel/preset-env":"^7.14.7","eslint-plugin-react":"^7.31.6","eslint-config-standard":"^17.0.0","@babel/plugin-transform-spread":"^7.14.6","@babel/plugin-transform-runtime":"^7.14.5","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.14.5","@babel/plugin-proposal-json-strings":"^7.14.5","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.14.5","@babel/plugin-transform-strict-mode":"^7.14.5","@babel/plugin-proposal-function-bind":"^7.14.5","@babel/plugin-proposal-function-sent":"^7.14.5","@babel/plugin-proposal-do-expressions":"^7.14.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-numeric-separator":"^7.14.5","@babel/plugin-proposal-optional-chaining":"^7.14.5","@babel/plugin-proposal-pipeline-operator":"^7.14.5","@babel/plugin-proposal-throw-expressions":"^7.14.5","@babel/plugin-proposal-object-rest-spread":"^7.14.7","@babel/plugin-proposal-export-default-from":"^7.14.5","@babel/plugin-proposal-export-namespace-from":"^7.14.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.14.5","@babel/plugin-proposal-logical-assignment-operators":"^7.14.5"},"peerDependencies":{"@sassoftware/restaf":">= 4.5.0","@sassoftware/restaflib":">= 4.5.0"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.0.5_1662479242667_0.9201581686946816","host":"s3://npm-registry-packages"}},"0.0.6":{"name":"@sassoftware/viyaeditmui","version":"0.0.6","_id":"@sassoftware/viyaeditmui@0.0.6","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf-uidemos/issues"},"dist":{"shasum":"ce429966e607eec3b43ec0249818641b14692576","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.0.6.tgz","fileCount":39,"integrity":"sha512-hyPNVlMSgaZ9gpKfexbdoWmRzLMnkiaAELvfSjO5TJmUpX3TpyxS/O6FeF2Qrj4H+e8B8PDhi22x/ZbIae/uSw==","signatures":[{"sig":"MEYCIQDdKSqKpwUDrvspFvetU6n6kjhjhYvU185l4fYFA4t92QIhAMyHJrkyS5x00Pm/mK/+DN84IlyGkmApIo7COXODF68w","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":406886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjF231ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoI2g/+P3hKe6aZ040MEp5B4cvEBixlVU4/RQGV0d+PlsRSLERaSFsJ\r\n0AQB4rrz/VRcC+RgexCY8/tRrTCO5vrYiRo8Mp/tt7KGSJj+u/l4pRfv8ogR\r\nYUa4ThfTXhrH1fVHB2e/mucARHa6WysbLh1k8eSQ1540qojZezhk2NtxCEaS\r\n6hRvLNn8+vh+Mnnr+irt/vil9d3S0rNx9+cpTLS6CCyt3PImtoM1UsZ9FogK\r\nWQ0tFNLmP6zjO8nwMazpPomo6clk2VrJ32rgIyLbxbccTMByWp9zGn+DqCCf\r\nxTkfoh3t3FB2qhn/LdWeSxYIXTV2qITuHkBArKX72RVH6dpgfVXeBQRgMxZO\r\nKR8vOH9YUfrrDTNKx7/F58upu3mNqyLuBqBeoSFuvviAl77JDeu54ovGyFrD\r\nLoGq2TBC7SEVWA9K+QVYadpmCGNMbCzWvhnmim4DKOFtwXz9e5bJkZDrSGtH\r\ntNXqceJEnMRXz7LV6AoT9wnMdfQcB8WsavWGCpwubwOMdVOVcvfxF3NfK6nT\r\ncKsITT60DyNPszrb39/Pi3oE1I+/Vuy/6ngxbKF86yZxxAjFnNa6+7ciTDUx\r\nQidWTIyGDDZ9IaUWJypTCLToYEesgQRkdB7WNgl/2iadfjTPRJYdjcfVJfml\r\nbyGoUJbNy11wyuumRX68IvdWGZjxBdUfzjU=\r\n=jtkf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.umd.js","unpkg":"/dist/index.umd.js","module":"/dist/index.module.js","readme":"# Jump Start Data Editing in SAS Viya\r\n\r\nThis small react component library serves multiple purposes:\r\n\r\n- Help build Data Entry Applications quickly with minimal effort\r\n- Uses [@sassoftware/restafedit](https://github.com/sassoftware/restaf/blob/restafedit/README.md) to access CAS tables and support custom calculations.\r\n\r\n    SAS Tables will be supported in the next version\r\n\r\n<blockquote> React version\r\n\r\nDesigned to work with any  React version >= 16.\r\n\r\n</blockquote>\r\n\r\n---\r\n\r\n## Install\r\n\r\n---\r\n\r\n```sh\r\n\r\nnpm install @sassoftware/viyaedit\r\n\r\n```\r\n\r\n### PeerDependencies\r\n\r\nIf your package manager does not install peer dependencies then install these manually.\r\n\r\n```js\r\n{\r\n    \"@sassoftware/restaf\": \">= 4.4.8\",\r\n    \"@sassoftware/restaflib\": \">= 4.4.8\",\r\n    \"@sassoftware/restafedit\": \">= 0.11.0\"\r\n}\r\n\r\n```\r\n\r\n---\r\n\r\n## Usage\r\n\r\n---\r\n\r\nDataEditor is the entry component\r\n\r\n### Sample React Component\r\n\r\n```jsx\r\n\r\n<DataEditor viyaConnection={viyaConnection} appControl={appControl} editor={editorfunction}/>\r\n\r\n```\r\n\r\nHere is a link to a working [sample](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/viewers/Sample.js) that uses this. For convenience the code is included here.\r\n\r\n```jsx\r\n\r\nimport React from 'react';\r\nimport helpers from '../helpers';\r\nimport {DataEditor} from '@sassoftware/viyaedit';\r\n\r\nimport Grid from \"@material-ui/core/Grid\";\r\n\r\nfunction Sample (props) {\r\n\r\n  // See below - moved it to a function for code readability\r\n  let appControl = getAppControl();\r\n  \r\n  let viyaConnection = {\r\n    host: 'https://myViyaServer.com',\r\n    authType: 'code'\r\n  }\r\n  \r\n  // Used as editor function\r\n  const _editor = () => {\r\n    return helpers['SampleForm']; \r\n  };\r\n\r\n // main call\r\n  return (\r\n    <div key={Date()}>\r\n      <Grid container spacing={3} direction=\"row\">\r\n          <Grid item>\r\n            <DataEditor key={Date()}\r\n                  appControl={appControl} \r\n                  viyaConnection={viyaConnection}   \r\n                  editor={_editor}  \r\n                  />\r\n          </Grid>\r\n        </Grid>\r\n    </div>\r\n    \r\n  );\r\n\r\n\r\n//\r\n// handlers for init, main, term and selected columns\r\n//\r\nasync function init (data,row,appEnv,type) {\r\n  let status = {code: 0, msg: `${type} processing completed`};\r\n  data.total = data.x1 + data.x2 + data.x3 ;\r\n  let newData = data; /* you can modify the incoming data and return it */\r\n  return [newData, status];\r\n};\r\n\r\nasync function term (data, type) {\r\n  let status = {code: 0, msg: `${type} processing completed`};\r\n  return [data, status];\r\n};\r\n\r\nasync function x1 (data, value, name) {\r\nlet msg = {code: 0, msg: `${name} handler executed.`};\r\nif (data.x1 > 10) {\r\n    data.x1 = 10;\r\n    msg = {code: 0, msg: \"Exceeded Max. Value reset to max\"};\r\n}\r\n\r\nreturn [data, msg];\r\n};\r\n\r\n// Application control for restafedit to use.\r\n\r\nfunction getAppControl () {\r\n  return {\r\n      description: 'Simple Example',\r\n      dataControl: {\r\n        source: 'cas',\r\n        table : {caslib: 'casuser', name: 'testdata'},\r\n        access: {},\r\n        byvars: ['id'],\r\n        where : {},\r\n\r\n        cachePolicy: true,\r\n\r\n        initialFetch: {\r\n          count : 1,\r\n          from  : 1,\r\n          format: false\r\n        },\r\n\r\n        customColumns: {\r\n          total: {\r\n            Column         : \"Total\",\r\n            Label          : \"Grand Total\",\r\n            FormattedLength: 12,\r\n            Type           : \"double\"\r\n            }\r\n        },\r\n        customRows: []\r\n      },\r\n      editControl: {\r\n        handlers: {init: init, main: init, term: term, x1: x1}, \r\n        save    : true,  \r\n        autoSave: true, \r\n    \r\n      },\r\n      appData: {}    /* put here whatever you want to pass to your editor component */\r\n      \r\n   };\r\n  }\r\n\r\n}\r\nexport default Sample;\r\n\r\n```\r\n\r\n## Props to DataEditor\r\n\r\n### `viyaConnection`\r\n\r\nUsually your app is running with authorization_code flow. So use this:\r\n\r\n```js\r\n{\r\n    host: <your Viya server url>,\r\n    authType: 'code'\r\n}\r\n```\r\n\r\nSometime, even with authorization_code you might want to use tokens. Then use this:\r\n\r\n```js\r\n{\r\n    host: <your Viya server url>,\r\n    authType: 'code',\r\n    token: <your token>\r\n    tokenType: 'bearer\r\n}\r\n```\r\n\r\n### `AppControl`\r\n\r\nThis is the same appControl used with @sassoftware/restafedit (see [here](https://github.com/sassoftware/restaf/blob/restafedit/README.md))\r\n\r\n### `editor`\r\n\r\nThis is a function that returns your editor component.\r\nFor example if your editor component(written with any react component library) MyEditor. See below for its props.\r\n\r\nSee these links for examples.\r\n\r\n- [Sample Form Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/SampleForm.js)\r\n\r\n- [Form Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/DataFormMulti.js)\r\n\r\n- [Table Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/TableEditorMui.js)\r\n\r\n```js\r\n\r\nconst V = editorFunc();\r\n\r\n```\r\n\r\nThe viyaedit component will use this prop as follows:\r\n\r\n```js\r\n\r\nconst V = props.editor();\r\n\r\nreturn (\r\n      <Fragment>\r\n            <V \r\n             onEdit={_onEdit}\r\n             onScroll={_onScroll}\r\n             onSave={_onSave}\r\n             status={status}\r\n             appEnv={appEnv}\r\n             />\r\n        </Fragment>\r\n\r\n)\r\n```\r\n\r\n---  \r\n\r\n## Details on the editor prop\r\n\r\n---\r\n\r\nThe editor component needs to handle the following props\r\n\r\n### onEdit\r\n\r\nThis callback will run your custom calculations and save the record to the server. The autosave is controlled by the option in appControl.\r\nTypically you will call this after the user enters a value and presses enter or changes cursor focus.\r\n\r\nTo call it use this sample code:\r\n\r\n```js\r\nprops.onEdit(\r\n    name, /* name of the column */\r\n    value, /* new value to be saved */\r\n    rowIndex, /*index of the row. Between 0 and the number of records retrieve on last fetch */\r\n    data, /* the data for the row */\r\n    appEnv /* control object that was passed into your component */ \r\n```\r\n\r\n#### onScroll\r\n\r\nTo scroll to previous or next record call this. This callback will retrieve new records from the server.\r\n\r\n```js\r\n\r\nprops.onScroll(direction)\r\n\r\n```\r\n\r\nDirection can be 'first', 'prev', 'next'\r\n\r\n#### onSave\r\n\r\nUse this if you are not doing a autoSave on each edit\r\n\r\n---\r\n\r\nprops.onSave(data, appEnv);\r\n\r\n---\r\n\r\ndata is the current row\r\n\r\n#### status\r\n\r\nThe status is returned by DataEditor. it is of the form\r\n\r\n{\r\n    status: 0|1|2,\r\n    msg: <some string>\r\n}\r\n\r\nCould be null to indicate that there is no status to report\r\n\r\n##### appEnv\r\n\r\nThis is the control object for the edit session. For details on this see @sassoftware/restafedit.  \r\n\r\nThis object is useful in more advanced use cases. See the documentation for @sassoftware/restafedit.\r\n","source":"./src/index.js","gitHead":"d13651dd81d3290c1742fc5abe38ab056000a6a9","scripts":{"pub":"npm publish --tag test --access public","lint":"eslint ./src","test":"cd editorapp && npm start","build":"rimraf ./test/public/dist && npm run buildm && cp -r ./dist ./test/public/dist","buildm":"microbundle --jsx React.createElement --jsxFragment React.Fragment --jsxImportSource react --name viyaeditmui"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"This small react component library serves multiple purposes:","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"react":"^17.0.2","react-dom":"^17.0.2","prop-types":"^15.8.1","@material-ui/core":"^4.11.0","@material-ui/icons":"^4.9.1","@babel/eslint-parser":"^7.18.9","@sassoftware/restafedit":"^1.6.2"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rimraf":"^3.0.2","core-js":"^3.15.2","prettier":"^2.0.4","cross-env":"^7.0.3","@babel/cli":"^7.14.5","@babel/core":"^7.14.6","microbundle":"^0.15.0","npm-run-all":"^4.1.5","babel-loader":"^8.2.2","@babel/preset-env":"^7.14.7","eslint-plugin-react":"^7.31.6","eslint-config-standard":"^17.0.0","@babel/plugin-transform-spread":"^7.14.6","@babel/plugin-transform-runtime":"^7.14.5","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.14.5","@babel/plugin-proposal-json-strings":"^7.14.5","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.14.5","@babel/plugin-transform-strict-mode":"^7.14.5","@babel/plugin-proposal-function-bind":"^7.14.5","@babel/plugin-proposal-function-sent":"^7.14.5","@babel/plugin-proposal-do-expressions":"^7.14.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-numeric-separator":"^7.14.5","@babel/plugin-proposal-optional-chaining":"^7.14.5","@babel/plugin-proposal-pipeline-operator":"^7.14.5","@babel/plugin-proposal-throw-expressions":"^7.14.5","@babel/plugin-proposal-object-rest-spread":"^7.14.7","@babel/plugin-proposal-export-default-from":"^7.14.5","@babel/plugin-proposal-export-namespace-from":"^7.14.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.14.5","@babel/plugin-proposal-logical-assignment-operators":"^7.14.5"},"peerDependencies":{"@sassoftware/restaf":">= 4.5.0","@sassoftware/restaflib":">= 4.5.0"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.0.6_1662479861146_0.48915054409842895","host":"s3://npm-registry-packages"}},"0.0.7":{"name":"@sassoftware/viyaeditmui","version":"0.0.7","_id":"@sassoftware/viyaeditmui@0.0.7","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf-uidemos/issues"},"dist":{"shasum":"7bc2b2d488a97d599aaddd39d28939201e5fabeb","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.0.7.tgz","fileCount":40,"integrity":"sha512-AJH+4/L+SHkXkO/shNhHA0CPKWySRuBTGglaBOhl2e87tD7tWxODF3Gshn3C9OLamZjqOK5ajpt72sfDmjMhDg==","signatures":[{"sig":"MEUCIBN1oeqMPqDdSbVPjkgpr45OkiN/fy/gL4tNM7X3OW3eAiEAt0JwXDyqdpYOBsqtFdtvRwopEDT6tPDUecQT7nwMXRo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":405967,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjF/fwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpLcw//fcs0qg/QZCVVrKQdjQB4FTys9oq9Yf4RoLRNvyV4L55ZUl6T\r\n9CLJsdmzaKdGaITcBkLDuuAB+/RJPjyJiA0rxwSX9dFW2uWSTG4O21yd3jSZ\r\nN8R8NWm3l8GKpnmflUTYKLx8tYt6C7i1gmhsnc2MkpJTnK/B7couUfuRke55\r\nV7W5VQhUIKcnalQa9xUL7VyBW1mlz2m10TOw7lYIPkq+f0o1cNh2SUJCl9CC\r\nKVblWPldOboE7ePIyd26jaay0XilTPQj0tNSeB76CIIlxKCxhOm9m3pEE15M\r\nO/v8vkpPyKU165HuQR+BuZp2vYpoDZ+Ef18fGdAs9XelWEPfYvYt+uaUD50m\r\n8aWqAtGBjYXNd1v56qlUH74FgO7GRdzx0tJRTVwNnQuColE0CqlS2IZAOKkO\r\nMWDQtKylI8pAKKcMW47bX8btyKkQmpgqrkqflOUpq+MSI97JYWN6GTA8dMkA\r\ndQuHhB9a09oTpCsdbJzY3OK5WQW1qyKPBc6SXxSB1krD4/K0hfAWLcDbh5XC\r\nXLqVDiMOm0yZiVWwbIfEfHOCiKvZtVlUNKXbX6r+QH+b1OoGsioepkyb040f\r\nDbH+KMeOu1AURKTnb/aBZd0BZiQNg3kM3H4Fgg1jOofnl4p8x7K5x1MiASI6\r\nkG+hbb+Mvakz86kMqLQ7mJngWdqMH5BHAQk=\r\n=WVmO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.umd.js","unpkg":"/dist/index.umd.js","module":"/dist/index.module.js","readme":"# Jump Start Data Editing in SAS Viya\r\n\r\nThis small react component library serves multiple purposes:\r\n\r\n- Help build Data Entry Applications quickly with minimal effort\r\n- Uses [@sassoftware/restafedit](https://github.com/sassoftware/restaf/blob/restafedit/README.md) to access CAS tables and support custom calculations.\r\n\r\n    SAS Tables will be supported in the next version\r\n\r\n<blockquote> React version\r\n\r\nDesigned to work with any  React version >= 16.\r\n\r\n</blockquote>\r\n\r\n---\r\n\r\n## Install\r\n\r\n---\r\n\r\n```sh\r\n\r\nnpm install @sassoftware/viyaedit\r\n\r\n```\r\n\r\n### PeerDependencies\r\n\r\nIf your package manager does not install peer dependencies then install these manually.\r\n\r\n```js\r\n{\r\n    \"@sassoftware/restaf\": \">= 4.4.8\",\r\n    \"@sassoftware/restaflib\": \">= 4.4.8\",\r\n    \"@sassoftware/restafedit\": \">= 0.11.0\"\r\n}\r\n\r\n```\r\n\r\n---\r\n\r\n## Usage\r\n\r\n---\r\n\r\nDataEditor is the entry component\r\n\r\n### Sample React Component\r\n\r\n```jsx\r\n\r\n<DataEditor viyaConnection={viyaConnection} appControl={appControl} editor={editorfunction}/>\r\n\r\n```\r\n\r\nHere is a link to a working [sample](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/viewers/Sample.js) that uses this. For convenience the code is included here.\r\n\r\n```jsx\r\n\r\nimport React from 'react';\r\nimport helpers from '../helpers';\r\nimport {DataEditor} from '@sassoftware/viyaedit';\r\n\r\nimport Grid from \"@material-ui/core/Grid\";\r\n\r\nfunction Sample (props) {\r\n\r\n  // See below - moved it to a function for code readability\r\n  let appControl = getAppControl();\r\n  \r\n  let viyaConnection = {\r\n    host: 'https://myViyaServer.com',\r\n    authType: 'code'\r\n  }\r\n  \r\n  // Used as editor function\r\n  const _editor = () => {\r\n    return helpers['SampleForm']; \r\n  };\r\n\r\n // main call\r\n  return (\r\n    <div key={Date()}>\r\n      <Grid container spacing={3} direction=\"row\">\r\n          <Grid item>\r\n            <DataEditor key={Date()}\r\n                  appControl={appControl} \r\n                  viyaConnection={viyaConnection}   \r\n                  editor={_editor}  \r\n                  />\r\n          </Grid>\r\n        </Grid>\r\n    </div>\r\n    \r\n  );\r\n\r\n\r\n//\r\n// handlers for init, main, term and selected columns\r\n//\r\nasync function init (data,row,appEnv,type) {\r\n  let status = {code: 0, msg: `${type} processing completed`};\r\n  data.total = data.x1 + data.x2 + data.x3 ;\r\n  let newData = data; /* you can modify the incoming data and return it */\r\n  return [newData, status];\r\n};\r\n\r\nasync function term (data, type) {\r\n  let status = {code: 0, msg: `${type} processing completed`};\r\n  return [data, status];\r\n};\r\n\r\nasync function x1 (data, value, name) {\r\nlet msg = {code: 0, msg: `${name} handler executed.`};\r\nif (data.x1 > 10) {\r\n    data.x1 = 10;\r\n    msg = {code: 0, msg: \"Exceeded Max. Value reset to max\"};\r\n}\r\n\r\nreturn [data, msg];\r\n};\r\n\r\n// Application control for restafedit to use.\r\n\r\nfunction getAppControl () {\r\n  return {\r\n      description: 'Simple Example',\r\n      dataControl: {\r\n        source: 'cas',\r\n        table : {caslib: 'casuser', name: 'testdata'},\r\n        access: {},\r\n        byvars: ['id'],\r\n        where : {},\r\n\r\n        cachePolicy: true,\r\n\r\n        initialFetch: {\r\n          count : 1,\r\n          from  : 1,\r\n          format: false\r\n        },\r\n\r\n        customColumns: {\r\n          total: {\r\n            Column         : \"Total\",\r\n            Label          : \"Grand Total\",\r\n            FormattedLength: 12,\r\n            Type           : \"double\"\r\n            }\r\n        },\r\n        customRows: []\r\n      },\r\n      editControl: {\r\n        handlers: {init: init, main: init, term: term, x1: x1}, \r\n        save    : true,  \r\n        autoSave: true, \r\n    \r\n      },\r\n      appData: {}    /* put here whatever you want to pass to your editor component */\r\n      \r\n   };\r\n  }\r\n\r\n}\r\nexport default Sample;\r\n\r\n```\r\n\r\n## Props to DataEditor\r\n\r\n### `viyaConnection`\r\n\r\nUsually your app is running with authorization_code flow. So use this:\r\n\r\n```js\r\n{\r\n    host: <your Viya server url>,\r\n    authType: 'code'\r\n}\r\n```\r\n\r\nSometime, even with authorization_code you might want to use tokens. Then use this:\r\n\r\n```js\r\n{\r\n    host: <your Viya server url>,\r\n    authType: 'code',\r\n    token: <your token>\r\n    tokenType: 'bearer\r\n}\r\n```\r\n\r\n### `AppControl`\r\n\r\nThis is the same appControl used with @sassoftware/restafedit (see [here](https://github.com/sassoftware/restaf/blob/restafedit/README.md))\r\n\r\n### `editor`\r\n\r\nThis is a function that returns your editor component.\r\nFor example if your editor component(written with any react component library) MyEditor. See below for its props.\r\n\r\nSee these links for examples.\r\n\r\n- [Sample Form Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/SampleForm.js)\r\n\r\n- [Form Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/DataFormMulti.js)\r\n\r\n- [Table Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/TableEditorMui.js)\r\n\r\n```js\r\n\r\nconst V = editorFunc();\r\n\r\n```\r\n\r\nThe viyaedit component will use this prop as follows:\r\n\r\n```js\r\n\r\nconst V = props.editor();\r\n\r\nreturn (\r\n      <Fragment>\r\n            <V \r\n             onEdit={_onEdit}\r\n             onScroll={_onScroll}\r\n             onSave={_onSave}\r\n             status={status}\r\n             appEnv={appEnv}\r\n             />\r\n        </Fragment>\r\n\r\n)\r\n```\r\n\r\n---  \r\n\r\n## Details on the editor prop\r\n\r\n---\r\n\r\nThe editor component needs to handle the following props\r\n\r\n### onEdit\r\n\r\nThis callback will run your custom calculations and save the record to the server. The autosave is controlled by the option in appControl.\r\nTypically you will call this after the user enters a value and presses enter or changes cursor focus.\r\n\r\nTo call it use this sample code:\r\n\r\n```js\r\nprops.onEdit(\r\n    name, /* name of the column */\r\n    value, /* new value to be saved */\r\n    rowIndex, /*index of the row. Between 0 and the number of records retrieve on last fetch */\r\n    data, /* the data for the row */\r\n    appEnv /* control object that was passed into your component */ \r\n```\r\n\r\n#### onScroll\r\n\r\nTo scroll to previous or next record call this. This callback will retrieve new records from the server.\r\n\r\n```js\r\n\r\nprops.onScroll(direction)\r\n\r\n```\r\n\r\nDirection can be 'first', 'prev', 'next'\r\n\r\n#### onSave\r\n\r\nUse this if you are not doing a autoSave on each edit\r\n\r\n---\r\n\r\nprops.onSave(data, appEnv);\r\n\r\n---\r\n\r\ndata is the current row\r\n\r\n#### status\r\n\r\nThe status is returned by DataEditor. it is of the form\r\n\r\n{\r\n    status: 0|1|2,\r\n    msg: <some string>\r\n}\r\n\r\nCould be null to indicate that there is no status to report\r\n\r\n##### appEnv\r\n\r\nThis is the control object for the edit session. For details on this see @sassoftware/restafedit.  \r\n\r\nThis object is useful in more advanced use cases. See the documentation for @sassoftware/restafedit.\r\n","source":"./src/index.js","gitHead":"27e194256340dce6e957f5c4f26a090f014eaa95","scripts":{"pub":"npm publish --tag test --access public","lint":"eslint ./src","test":"cd editorapp && npm start","build":"rimraf ./test/public/dist && npm run buildm && cp -r ./dist ./test/public/dist","buildm":"microbundle --jsx React.createElement --jsxFragment React.Fragment --jsxImportSource react --name viyaeditmui"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"This small react component library serves multiple purposes:","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"prop-types":"^15.8.1","@material-ui/core":"^4.11.0","@material-ui/icons":"^4.9.1","@babel/eslint-parser":"^7.18.9"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rimraf":"^3.0.2","core-js":"^3.15.2","prettier":"^2.0.4","cross-env":"^7.0.3","@babel/cli":"^7.14.5","@babel/core":"^7.14.6","microbundle":"^0.15.0","npm-run-all":"^4.1.5","babel-loader":"^8.2.2","@babel/preset-env":"^7.14.7","eslint-plugin-react":"^7.31.6","eslint-config-standard":"^17.0.0","@babel/plugin-transform-spread":"^7.14.6","@babel/plugin-transform-runtime":"^7.14.5","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.14.5","@babel/plugin-proposal-json-strings":"^7.14.5","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.14.5","@babel/plugin-transform-strict-mode":"^7.14.5","@babel/plugin-proposal-function-bind":"^7.14.5","@babel/plugin-proposal-function-sent":"^7.14.5","@babel/plugin-proposal-do-expressions":"^7.14.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-numeric-separator":"^7.14.5","@babel/plugin-proposal-optional-chaining":"^7.14.5","@babel/plugin-proposal-pipeline-operator":"^7.14.5","@babel/plugin-proposal-throw-expressions":"^7.14.5","@babel/plugin-proposal-object-rest-spread":"^7.14.7","@babel/plugin-proposal-export-default-from":"^7.14.5","@babel/plugin-proposal-export-namespace-from":"^7.14.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.14.5","@babel/plugin-proposal-logical-assignment-operators":"^7.14.5"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0","react-dom":"^16.8.0 || ^17.0.0","@types/react":"^16.8.6 || ^17.0.0","@sassoftware/restaf":">= 4.5.0","@sassoftware/restaflib":">= 4.5.0","@sassoftware/restafedit":"^1.6.2"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.0.7_1662515184487_0.38026420732884825","host":"s3://npm-registry-packages"}},"0.0.8":{"name":"@sassoftware/viyaeditmui","version":"0.0.8","_id":"@sassoftware/viyaeditmui@0.0.8","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf-uidemos/issues"},"dist":{"shasum":"2bf6348ec475ec96ccdabe387ef3831dadf307d8","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.0.8.tgz","fileCount":10,"integrity":"sha512-pL9A6CNAWb8zNZ60vo9rH01UUW4ajc7hOOSRiUhFvRIJ4UIHD7OosrGW3OS+pv26AD761LrUf03yfmnjuO/ohA==","signatures":[{"sig":"MEUCIQCS5cy1N0yRJ2KtV7cxRldjEHxh0ntoRSTl8jtY9iljTwIgQqKp08M9+ufmDqvAKkdK+wTquU6oJK4GrcVWuCnn5lo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":190750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjHODDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo3Kg/+NrQOP/vrECOi1IpWBWiN7h9N6dk9MmXPucJ2u9rFx6sB/n6O\r\nTHYQLF4vpqYd7t/dWblmaDRmwcI43r+9qNBhLaqwhB9Vw7jL+ODC+Me+vurw\r\nkYqShZUZoNs6Veds0VDZDhooeJ8tJ69mYI2eFpNJaIIACvCRjyZvFJpC9HpY\r\nw58D3THzQ70CGWQ1SP6x7KuGDsWeFcjkaZAcAIQ7zAUvRtj/5UCBpkDsCmhs\r\n23jdH4gKHZFLauip2//68DXGnPolxE3tMlCqawihsx7rZs0XD0ANMZRlJ1C+\r\nzE7RvoO3so4lvonfhbVAjn3UjP3wNZJl8NH0ppQgO2+lSXMrprbIL9vHeM+d\r\nQDyfQchwzYISMWBViwKYGvDmJII6lj93aRb7KbxGSgQT0KEFc/uGMy4MpQeV\r\nfa2xwKlJUo436moJAojE8B+GQfO+WykHkPqHOC7yHCLdAnggicX0Mta8mJir\r\n72DbyXTr+btqxBlvliAnmg2NwRGFQTKhP4JTgFa9y7HkeMTkF6izDH0QlO4t\r\nmcgpV9iPmKHnYXi9Mn6hqXp+CAiMS4p9opPYY1sQwloK2FLwRdLs8pWRr4mg\r\n3HI0qkRjSmSsd2QetlHhryojEaJex7dytbUT7PMBO5/rtefFqCfbaEKQB0y/\r\nmXxrSBJFUTl1SF/AaoKy6Houg5kDIvyKBkI=\r\n=jGEc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.umd.js","module":"/dist/index.module.mjs","readme":"# Jump Start Data Editing in SAS Viya\r\n\r\nThis small react component library serves multiple purposes:\r\n\r\n- Help build Data Entry Applications quickly with minimal effort\r\n- Uses [@sassoftware/restafedit](https://github.com/sassoftware/restaf/blob/restafedit/README.md) to access CAS tables and support custom calculations.\r\n\r\n    SAS Tables will be supported in the next version\r\n\r\n<blockquote> React version\r\n\r\nDesigned to work with any  React version >= 16.\r\n\r\n</blockquote>\r\n\r\n---\r\n\r\n## Install\r\n\r\n---\r\n\r\n```sh\r\n\r\nnpm install @sassoftware/viyaedit\r\n\r\n```\r\n\r\n### PeerDependencies\r\n\r\nIf your package manager does not install peer dependencies then install these manually.\r\n\r\n```js\r\n{\r\n    \"@sassoftware/restaf\": \">= 4.4.8\",\r\n    \"@sassoftware/restaflib\": \">= 4.4.8\",\r\n    \"@sassoftware/restafedit\": \">= 0.11.0\"\r\n}\r\n\r\n```\r\n\r\n---\r\n\r\n## Usage\r\n\r\n---\r\n\r\nDataEditor is the entry component\r\n\r\n### Sample React Component\r\n\r\n```jsx\r\n\r\n<DataEditor viyaConnection={viyaConnection} appControl={appControl} editor={editorfunction}/>\r\n\r\n```\r\n\r\nHere is a link to a working [sample](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/viewers/Sample.js) that uses this. For convenience the code is included here.\r\n\r\n```jsx\r\n\r\nimport React from 'react';\r\nimport helpers from '../helpers';\r\nimport {DataEditor} from '@sassoftware/viyaedit';\r\n\r\nimport Grid from \"@material-ui/core/Grid\";\r\n\r\nfunction Sample (props) {\r\n\r\n  // See below - moved it to a function for code readability\r\n  let appControl = getAppControl();\r\n  \r\n  let viyaConnection = {\r\n    host: 'https://myViyaServer.com',\r\n    authType: 'code'\r\n  }\r\n  \r\n  // Used as editor function\r\n  const _editor = () => {\r\n    return helpers['SampleForm']; \r\n  };\r\n\r\n // main call\r\n  return (\r\n    <div key={Date()}>\r\n      <Grid container spacing={3} direction=\"row\">\r\n          <Grid item>\r\n            <DataEditor key={Date()}\r\n                  appControl={appControl} \r\n                  viyaConnection={viyaConnection}   \r\n                  editor={_editor}  \r\n                  />\r\n          </Grid>\r\n        </Grid>\r\n    </div>\r\n    \r\n  );\r\n\r\n\r\n//\r\n// handlers for init, main, term and selected columns\r\n//\r\nasync function init (data,row,appEnv,type) {\r\n  let status = {code: 0, msg: `${type} processing completed`};\r\n  data.total = data.x1 + data.x2 + data.x3 ;\r\n  let newData = data; /* you can modify the incoming data and return it */\r\n  return [newData, status];\r\n};\r\n\r\nasync function term (data, type) {\r\n  let status = {code: 0, msg: `${type} processing completed`};\r\n  return [data, status];\r\n};\r\n\r\nasync function x1 (data, value, name) {\r\nlet msg = {code: 0, msg: `${name} handler executed.`};\r\nif (data.x1 > 10) {\r\n    data.x1 = 10;\r\n    msg = {code: 0, msg: \"Exceeded Max. Value reset to max\"};\r\n}\r\n\r\nreturn [data, msg];\r\n};\r\n\r\n// Application control for restafedit to use.\r\n\r\nfunction getAppControl () {\r\n  return {\r\n      description: 'Simple Example',\r\n      dataControl: {\r\n        source: 'cas',\r\n        table : {caslib: 'casuser', name: 'testdata'},\r\n        access: {},\r\n        byvars: ['id'],\r\n        where : {},\r\n\r\n        cachePolicy: true,\r\n\r\n        initialFetch: {\r\n          count : 1,\r\n          from  : 1,\r\n          format: false\r\n        },\r\n\r\n        customColumns: {\r\n          total: {\r\n            Column         : \"Total\",\r\n            Label          : \"Grand Total\",\r\n            FormattedLength: 12,\r\n            Type           : \"double\"\r\n            }\r\n        },\r\n        customRows: []\r\n      },\r\n      editControl: {\r\n        handlers: {init: init, main: init, term: term, x1: x1}, \r\n        save    : true,  \r\n        autoSave: true, \r\n    \r\n      },\r\n      appData: {}    /* put here whatever you want to pass to your editor component */\r\n      \r\n   };\r\n  }\r\n\r\n}\r\nexport default Sample;\r\n\r\n```\r\n\r\n## Props to DataEditor\r\n\r\n### `viyaConnection`\r\n\r\nUsually your app is running with authorization_code flow. So use this:\r\n\r\n```js\r\n{\r\n    host: <your Viya server url>,\r\n    authType: 'code'\r\n}\r\n```\r\n\r\nSometime, even with authorization_code you might want to use tokens. Then use this:\r\n\r\n```js\r\n{\r\n    host: <your Viya server url>,\r\n    authType: 'code',\r\n    token: <your token>\r\n    tokenType: 'bearer\r\n}\r\n```\r\n\r\n### `AppControl`\r\n\r\nThis is the same appControl used with @sassoftware/restafedit (see [here](https://github.com/sassoftware/restaf/blob/restafedit/README.md))\r\n\r\n### `editor`\r\n\r\nThis is a function that returns your editor component.\r\nFor example if your editor component(written with any react component library) MyEditor. See below for its props.\r\n\r\nSee these links for examples.\r\n\r\n- [Sample Form Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/SampleForm.js)\r\n\r\n- [Form Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/DataFormMulti.js)\r\n\r\n- [Table Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/TableEditorMui.js)\r\n\r\n```js\r\n\r\nconst V = editorFunc();\r\n\r\n```\r\n\r\nThe viyaedit component will use this prop as follows:\r\n\r\n```js\r\n\r\nconst V = props.editor();\r\n\r\nreturn (\r\n      <Fragment>\r\n            <V \r\n             onEdit={_onEdit}\r\n             onScroll={_onScroll}\r\n             onSave={_onSave}\r\n             status={status}\r\n             appEnv={appEnv}\r\n             />\r\n        </Fragment>\r\n\r\n)\r\n```\r\n\r\n---  \r\n\r\n## Details on the editor prop\r\n\r\n---\r\n\r\nThe editor component needs to handle the following props\r\n\r\n### onEdit\r\n\r\nThis callback will run your custom calculations and save the record to the server. The autosave is controlled by the option in appControl.\r\nTypically you will call this after the user enters a value and presses enter or changes cursor focus.\r\n\r\nTo call it use this sample code:\r\n\r\n```js\r\nprops.onEdit(\r\n    name, /* name of the column */\r\n    value, /* new value to be saved */\r\n    rowIndex, /*index of the row. Between 0 and the number of records retrieve on last fetch */\r\n    data, /* the data for the row */\r\n    appEnv /* control object that was passed into your component */ \r\n```\r\n\r\n#### onScroll\r\n\r\nTo scroll to previous or next record call this. This callback will retrieve new records from the server.\r\n\r\n```js\r\n\r\nprops.onScroll(direction)\r\n\r\n```\r\n\r\nDirection can be 'first', 'prev', 'next'\r\n\r\n#### onSave\r\n\r\nUse this if you are not doing a autoSave on each edit\r\n\r\n---\r\n\r\nprops.onSave(data, appEnv);\r\n\r\n---\r\n\r\ndata is the current row\r\n\r\n#### status\r\n\r\nThe status is returned by DataEditor. it is of the form\r\n\r\n{\r\n    status: 0|1|2,\r\n    msg: <some string>\r\n}\r\n\r\nCould be null to indicate that there is no status to report\r\n\r\n##### appEnv\r\n\r\nThis is the control object for the edit session. For details on this see @sassoftware/restafedit.  \r\n\r\nThis object is useful in more advanced use cases. See the documentation for @sassoftware/restafedit.\r\n","source":"./src/index.js","exports":"./dist/index.modern.mjs","gitHead":"fbe68b28c74f096f994407838b2da94f3870e65c","scripts":{"pub":"npm publish --tag test --access public","lint":"eslint ./src","push":"rimraf ./test/public/dist && cp -r ./dist ./test/public/dist","build":"npm run buildm2 && npm run push","buildm":"microbundle build --name viyaeditmui","buildm2":"rimraf ./dist && microbundle --name viyaeditmui"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"This small react component library serves multiple purposes:","directories":{},"Dependencies":{"rimraf":"^3.0.2","core-js":"^3.15.2","prettier":"^2.0.4","cross-env":"^7.0.3","@babel/cli":"^7.14.5","@babel/core":"^7.14.6","microbundle":"^0.15.0","npm-run-all":"^4.1.5","babel-loader":"^8.2.2","@babel/preset-env":"^7.14.7","eslint-plugin-react":"^7.31.6","eslint-config-standard":"^17.0.0","@babel/plugin-transform-spread":"^7.14.6","@babel/plugin-transform-runtime":"^7.14.5","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.14.5","@babel/plugin-proposal-json-strings":"^7.14.5","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.14.5","@babel/plugin-transform-strict-mode":"^7.14.5","@babel/plugin-proposal-function-bind":"^7.14.5","@babel/plugin-proposal-function-sent":"^7.14.5","@babel/plugin-proposal-do-expressions":"^7.14.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-numeric-separator":"^7.14.5","@babel/plugin-proposal-optional-chaining":"^7.14.5","@babel/plugin-proposal-pipeline-operator":"^7.14.5","@babel/plugin-proposal-throw-expressions":"^7.14.5","@babel/plugin-proposal-object-rest-spread":"^7.14.7","@babel/plugin-proposal-export-default-from":"^7.14.5","@babel/plugin-proposal-export-namespace-from":"^7.14.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.14.5","@babel/plugin-proposal-logical-assignment-operators":"^7.14.5"},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"prop-types":"^15.8.1","@material-ui/core":"^4.11.0","@material-ui/icons":"^4.9.1","@babel/eslint-parser":"^7.18.9"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"react":"^16.8.0 || ^17.0.0","react-dom":"^16.8.0 || ^17.0.0","@sassoftware/restaf":">= 4.5.0","@sassoftware/restaflib":">= 4.5.0","@sassoftware/restafedit":"^1.6.2"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.0.8_1662836931658_0.8621003705651624","host":"s3://npm-registry-packages"}},"0.0.9":{"name":"@sassoftware/viyaeditmui","version":"0.0.9","_id":"@sassoftware/viyaeditmui@0.0.9","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf-uidemos/issues"},"dist":{"shasum":"7a75cd59673ca81222000e2842ec272514ea0a22","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.0.9.tgz","fileCount":10,"integrity":"sha512-yF7upBrzEsGDNm6w0W/Yym/6JMfpi3B1SCSsdge+rrd7+vqavZ6DgzzdzObcPmhg5JivLYVzyXzsjDxqTbbbuQ==","signatures":[{"sig":"MEQCIAN/t8bFlai6MVkI4LlMmKiYXWtL9R9tHtazGiJk0LliAiBBDdoCeWKzXRQzSRBlUrVMVNC2F/jTrMmw6AbcV12vNQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":191618,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjHPfMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpHRA/+OomjBqTGFdRqp+9yw3JLGXgYebPWl4DcxvlDomaJqnTsvD/L\r\n9QdAr7/U5BAVVkfPeAgx7KesFohmKCh4fJEZtOwSItz7G9jjkoLg2hPWsI4l\r\nU/5SG+a9RadmGZh6ONfuXZs/snGmaa4RIGLCyvRJX1VE+HW/3x1qEFpS8TU+\r\n8KL5yzmfWpUfG/1TY/XUzjprZk/xopmeRH2TUKf7wzckw/7ptR4eXVsicj4e\r\nlnq+DDE0FEmV8ev44vgGKpk5LC+EQiuGIy6aZpWKeKKNPPSGQkaRUUVUD/+L\r\neeBqHcqkl3mEOuzQtSvNbQdiFvt5v9AjSW9IwGU31FxsAYgx5AZZPZ47jV+A\r\nt6859md2fmOBCxOzeDHiXFzT1pR+43aA9HtJR+UAL3vS9H0RHHT+pZfnkCF3\r\nmkaPN9fWgt1h6ntvicDG746lEBHueWUHru2KWKru3aRzeafdfqe1cabaQ2hP\r\nujjk6p1YmkNzekGZ3ZgS6VwvjazlFVYUeKDbLVf0scbbRDV6H+jIYL72e26/\r\nSfm8Yxq5qi2Xw+cloPjeKa3pQJg1eYEOpGE4TtSxEEnFNj6DIUkFHE6ZhqBD\r\n3CFH+aAmvy9xfDZRQ2MTgwDpPSS+ZpxWkEZEw20o39fR6kPioJFioYFXaDVX\r\nV6bU23bv4fu6+FPbULi/21kN+wfWNoQ91Q0=\r\n=E+Il\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.umd.js","unpkg":"./dist/index.umd.js","module":"/dist/index.module.mjs","readme":"# Jump Start Data Editing in SAS Viya\r\n\r\nThis small react component library serves multiple purposes:\r\n\r\n- Help build Data Entry Applications quickly with minimal effort\r\n- Uses [@sassoftware/restafedit](https://github.com/sassoftware/restaf/blob/restafedit/README.md) to access CAS tables and support custom calculations.\r\n\r\n    SAS Tables will be supported in the next version\r\n\r\n<blockquote> React version\r\n\r\nDesigned to work with any  React version >= 16.\r\n\r\n</blockquote>\r\n\r\n---\r\n\r\n## Install\r\n\r\n---\r\n\r\n```sh\r\n\r\nnpm install @sassoftware/viyaedit\r\n\r\n```\r\n\r\n### PeerDependencies\r\n\r\nIf your package manager does not install peer dependencies then install these manually.\r\n\r\n```js\r\n{\r\n    \"@sassoftware/restaf\": \">= 4.4.8\",\r\n    \"@sassoftware/restaflib\": \">= 4.4.8\",\r\n    \"@sassoftware/restafedit\": \">= 0.11.0\"\r\n}\r\n\r\n```\r\n\r\n---\r\n\r\n## Usage\r\n\r\n---\r\n\r\nDataEditor is the entry component\r\n\r\n### Sample React Component\r\n\r\n```jsx\r\n\r\n<DataEditor viyaConnection={viyaConnection} appControl={appControl} editor={editorfunction}/>\r\n\r\n```\r\n\r\nHere is a link to a working [sample](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/viewers/Sample.js) that uses this. For convenience the code is included here.\r\n\r\n```jsx\r\n\r\nimport React from 'react';\r\nimport helpers from '../helpers';\r\nimport {DataEditor} from '@sassoftware/viyaedit';\r\n\r\nimport Grid from \"@material-ui/core/Grid\";\r\n\r\nfunction Sample (props) {\r\n\r\n  // See below - moved it to a function for code readability\r\n  let appControl = getAppControl();\r\n  \r\n  let viyaConnection = {\r\n    host: 'https://myViyaServer.com',\r\n    authType: 'code'\r\n  }\r\n  \r\n  // Used as editor function\r\n  const _editor = () => {\r\n    return helpers['SampleForm']; \r\n  };\r\n\r\n // main call\r\n  return (\r\n    <div key={Date()}>\r\n      <Grid container spacing={3} direction=\"row\">\r\n          <Grid item>\r\n            <DataEditor key={Date()}\r\n                  appControl={appControl} \r\n                  viyaConnection={viyaConnection}   \r\n                  editor={_editor}  \r\n                  />\r\n          </Grid>\r\n        </Grid>\r\n    </div>\r\n    \r\n  );\r\n\r\n\r\n//\r\n// handlers for init, main, term and selected columns\r\n//\r\nasync function init (data,row,appEnv,type) {\r\n  let status = {code: 0, msg: `${type} processing completed`};\r\n  data.total = data.x1 + data.x2 + data.x3 ;\r\n  let newData = data; /* you can modify the incoming data and return it */\r\n  return [newData, status];\r\n};\r\n\r\nasync function term (data, type) {\r\n  let status = {code: 0, msg: `${type} processing completed`};\r\n  return [data, status];\r\n};\r\n\r\nasync function x1 (data, value, name) {\r\nlet msg = {code: 0, msg: `${name} handler executed.`};\r\nif (data.x1 > 10) {\r\n    data.x1 = 10;\r\n    msg = {code: 0, msg: \"Exceeded Max. Value reset to max\"};\r\n}\r\n\r\nreturn [data, msg];\r\n};\r\n\r\n// Application control for restafedit to use.\r\n\r\nfunction getAppControl () {\r\n  return {\r\n      description: 'Simple Example',\r\n      dataControl: {\r\n        source: 'cas',\r\n        table : {caslib: 'casuser', name: 'testdata'},\r\n        access: {},\r\n        byvars: ['id'],\r\n        where : {},\r\n\r\n        cachePolicy: true,\r\n\r\n        initialFetch: {\r\n          count : 1,\r\n          from  : 1,\r\n          format: false\r\n        },\r\n\r\n        customColumns: {\r\n          total: {\r\n            Column         : \"Total\",\r\n            Label          : \"Grand Total\",\r\n            FormattedLength: 12,\r\n            Type           : \"double\"\r\n            }\r\n        },\r\n        customRows: []\r\n      },\r\n      editControl: {\r\n        handlers: {init: init, main: init, term: term, x1: x1}, \r\n        save    : true,  \r\n        autoSave: true, \r\n    \r\n      },\r\n      appData: {}    /* put here whatever you want to pass to your editor component */\r\n      \r\n   };\r\n  }\r\n\r\n}\r\nexport default Sample;\r\n\r\n```\r\n\r\n## Props to DataEditor\r\n\r\n### `viyaConnection`\r\n\r\nUsually your app is running with authorization_code flow. So use this:\r\n\r\n```js\r\n{\r\n    host: <your Viya server url>,\r\n    authType: 'code'\r\n}\r\n```\r\n\r\nSometime, even with authorization_code you might want to use tokens. Then use this:\r\n\r\n```js\r\n{\r\n    host: <your Viya server url>,\r\n    authType: 'code',\r\n    token: <your token>\r\n    tokenType: 'bearer\r\n}\r\n```\r\n\r\n### `AppControl`\r\n\r\nThis is the same appControl used with @sassoftware/restafedit (see [here](https://github.com/sassoftware/restaf/blob/restafedit/README.md))\r\n\r\n### `editor`\r\n\r\nThis is a function that returns your editor component.\r\nFor example if your editor component(written with any react component library) MyEditor. See below for its props.\r\n\r\nSee these links for examples.\r\n\r\n- [Sample Form Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/SampleForm.js)\r\n\r\n- [Form Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/DataFormMulti.js)\r\n\r\n- [Table Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/TableEditorMui.js)\r\n\r\n```js\r\n\r\nconst V = editorFunc();\r\n\r\n```\r\n\r\nThe viyaedit component will use this prop as follows:\r\n\r\n```js\r\n\r\nconst V = props.editor();\r\n\r\nreturn (\r\n      <Fragment>\r\n            <V \r\n             onEdit={_onEdit}\r\n             onScroll={_onScroll}\r\n             onSave={_onSave}\r\n             status={status}\r\n             appEnv={appEnv}\r\n             />\r\n        </Fragment>\r\n\r\n)\r\n```\r\n\r\n---  \r\n\r\n## Details on the editor prop\r\n\r\n---\r\n\r\nThe editor component needs to handle the following props\r\n\r\n### onEdit\r\n\r\nThis callback will run your custom calculations and save the record to the server. The autosave is controlled by the option in appControl.\r\nTypically you will call this after the user enters a value and presses enter or changes cursor focus.\r\n\r\nTo call it use this sample code:\r\n\r\n```js\r\nprops.onEdit(\r\n    name, /* name of the column */\r\n    value, /* new value to be saved */\r\n    rowIndex, /*index of the row. Between 0 and the number of records retrieve on last fetch */\r\n    data, /* the data for the row */\r\n    appEnv /* control object that was passed into your component */ \r\n```\r\n\r\n#### onScroll\r\n\r\nTo scroll to previous or next record call this. This callback will retrieve new records from the server.\r\n\r\n```js\r\n\r\nprops.onScroll(direction)\r\n\r\n```\r\n\r\nDirection can be 'first', 'prev', 'next'\r\n\r\n#### onSave\r\n\r\nUse this if you are not doing a autoSave on each edit\r\n\r\n---\r\n\r\nprops.onSave(data, appEnv);\r\n\r\n---\r\n\r\ndata is the current row\r\n\r\n#### status\r\n\r\nThe status is returned by DataEditor. it is of the form\r\n\r\n{\r\n    status: 0|1|2,\r\n    msg: <some string>\r\n}\r\n\r\nCould be null to indicate that there is no status to report\r\n\r\n##### appEnv\r\n\r\nThis is the control object for the edit session. For details on this see @sassoftware/restafedit.  \r\n\r\nThis object is useful in more advanced use cases. See the documentation for @sassoftware/restafedit.\r\n","source":"./src/index.js","gitHead":"315254dcb5c364f0c7ff4c213656cf700f2cc130","scripts":{"pub":"npm publish --tag test --access public","lint":"eslint ./src","push":"rimraf ./test/public/dist && cp -r ./dist ./test/public/dist","build":"npm run buildm2 && npm run push","buildm":"microbundle build --name viyaeditmui","buildm2":"rimraf ./dist && microbundle node--jsx=React.createElement --name viyaeditmui"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"This small react component library serves multiple purposes:","directories":{},"Dependencies":{"rimraf":"^3.0.2","core-js":"^3.15.2","prettier":"^2.0.4","cross-env":"^7.0.3","@babel/cli":"^7.14.5","@babel/core":"^7.14.6","microbundle":"^0.15.0","npm-run-all":"^4.1.5","babel-loader":"^8.2.2","@babel/preset-env":"^7.14.7","eslint-plugin-react":"^7.31.6","eslint-config-standard":"^17.0.0","@babel/plugin-transform-spread":"^7.14.6","@babel/plugin-transform-runtime":"^7.14.5","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.14.5","@babel/plugin-proposal-json-strings":"^7.14.5","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.14.5","@babel/plugin-transform-strict-mode":"^7.14.5","@babel/plugin-proposal-function-bind":"^7.14.5","@babel/plugin-proposal-function-sent":"^7.14.5","@babel/plugin-proposal-do-expressions":"^7.14.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-numeric-separator":"^7.14.5","@babel/plugin-proposal-optional-chaining":"^7.14.5","@babel/plugin-proposal-pipeline-operator":"^7.14.5","@babel/plugin-proposal-throw-expressions":"^7.14.5","@babel/plugin-proposal-object-rest-spread":"^7.14.7","@babel/plugin-proposal-export-default-from":"^7.14.5","@babel/plugin-proposal-export-namespace-from":"^7.14.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.14.5","@babel/plugin-proposal-logical-assignment-operators":"^7.14.5"},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"prop-types":"^15.8.1","@material-ui/core":"^4.11.0","@material-ui/icons":"^4.9.1","@babel/eslint-parser":"^7.18.9"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"react":"^16.8.0 || ^17.0.0","react-dom":"^16.8.0 || ^17.0.0","@sassoftware/restaf":">= 4.5.0","@sassoftware/restaflib":">= 4.5.0","@sassoftware/restafedit":"^1.6.2"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.0.9_1662842828158_0.9927769288003843","host":"s3://npm-registry-packages"}},"0.0.10":{"name":"@sassoftware/viyaeditmui","version":"0.0.10","_id":"@sassoftware/viyaeditmui@0.0.10","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf-uidemos/issues"},"dist":{"shasum":"20bf1d823f2870c1674de5b454c6e07866aeddd9","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.0.10.tgz","fileCount":10,"integrity":"sha512-+6FTS/78LeI6Zep/p+Ht3E+9bn1dwjHE9Mr6+E6+TM316OVS8bXUTGsRBhHgBoSbggATIn0T6hBaUvaVLAkItw==","signatures":[{"sig":"MEYCIQCDllhk4QU3ivYrlPcUQRMMz7suxM6++vWA2tboV4WyjwIhAN+xf1vInM3S/Rb7jTZsEzEG8kS/vtvGLmkBGOJTilsM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":191622,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjHP1UACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmogig//bkFquwww6auNUq9EEPi0f5P8Z0vl4CC77luCmLc8A2oWjr4R\r\ngPKrPLnFPUh0lIEE6oM695lMlyMUmZF+v9rlklqkvQfrIacDmOmiWbEzEAWN\r\n2A5WRBwd7q9p9kEFuU0hZSspjNswLN9MIfMuguk7HbCP21gfvR/EV5LWdr1B\r\nwgJlJWNO9nyDiJcUaQw59MEcdH3srEdYIEQq8Yn9iCHsVNIPGPs0JPpS7ur7\r\nO+FI6TNc2xm991rjxOkvNa4JkgFvX/QR9rMUmoQCgvfSZBwAmMX4A/cH1Z1O\r\nk7r2N7VJM6ojjJGQb3rwFnh1al+5FG/3E/RoNfIXq6TPff2vtAsI91U4tm7Q\r\nocU9ZyLDKGzGD+V7k4PeI37ne2K4f0BuJmdUrtZNCFw9fvv8cpaUAWAL+esP\r\npxORS4Z/TrKkcqAZw2TZTLiYUq3l4JXbCa7sL7aOrSwQ2DEzsFOtuwTCKPAz\r\nyD7upZJuSVIXN223t1gMT7ycCH0sdCJ2ElVRppJ9yy43AAH9MOf8nIkLlXxt\r\n7+yENVY5ZY3w3CBjysgCsOvvBcdbuWN0lz78rkE3LD9R16gtRKWSd2u9Xmx3\r\n0tHdWJS8cs1dMtV3/cbqbMAiZOs8MT+8mn/Wsu8Kn6jfOZOEZGNcf4vVLV7o\r\nFJB/eiTJGccE0TyIh3a3DtcpGaitRiqhBHQ=\r\n=BSAc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.umd.js","unpkg":"/dist/index.umd.js","module":"/dist/index.module.exjs","source":"./src/index.js","gitHead":"3b043e1c6439f70ea101fc32c93768d5865ffd4e","scripts":{"pub":"npm publish --tag test --access public","lint":"eslint ./src","push":"rimraf ./test/public/dist && cp -r ./dist ./test/public/dist","build":"npm run buildm && npm run push","buildm":"microbundle build --name viyaeditmui","buildm2":"rimraf ./dist && microbundle build --jsx React.createElement --name viyaeditmui"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"This small react component library serves multiple purposes:","directories":{},"Dependencies":{"rimraf":"^3.0.2","core-js":"^3.15.2","prettier":"^2.0.4","cross-env":"^7.0.3","@babel/cli":"^7.14.5","@babel/core":"^7.14.6","microbundle":"^0.15.0","npm-run-all":"^4.1.5","babel-loader":"^8.2.2","@babel/preset-env":"^7.14.7","eslint-plugin-react":"^7.31.6","eslint-config-standard":"^17.0.0","@babel/plugin-transform-spread":"^7.14.6","@babel/plugin-transform-runtime":"^7.14.5","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.14.5","@babel/plugin-proposal-json-strings":"^7.14.5","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.14.5","@babel/plugin-transform-strict-mode":"^7.14.5","@babel/plugin-proposal-function-bind":"^7.14.5","@babel/plugin-proposal-function-sent":"^7.14.5","@babel/plugin-proposal-do-expressions":"^7.14.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-numeric-separator":"^7.14.5","@babel/plugin-proposal-optional-chaining":"^7.14.5","@babel/plugin-proposal-pipeline-operator":"^7.14.5","@babel/plugin-proposal-throw-expressions":"^7.14.5","@babel/plugin-proposal-object-rest-spread":"^7.14.7","@babel/plugin-proposal-export-default-from":"^7.14.5","@babel/plugin-proposal-export-namespace-from":"^7.14.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.14.5","@babel/plugin-proposal-logical-assignment-operators":"^7.14.5"},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"prop-types":"^15.8.1","@material-ui/core":"^4.11.0","@material-ui/icons":"^4.9.1","@babel/eslint-parser":"^7.18.9"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"peerDependencies":{"react":"^16.8.0 || ^17.0.0","react-dom":"^16.8.0 || ^17.0.0","@sassoftware/restaf":">= 4.5.0","@sassoftware/restaflib":">= 4.5.0","@sassoftware/restafedit":"^1.6.2"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.0.10_1662844244038_0.7764142386179904","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"@sassoftware/viyaeditmui","version":"0.1.0","_id":"@sassoftware/viyaeditmui@0.1.0","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf-uidemos/issues"},"dist":{"shasum":"2939202d1d8baad1d49dbfa8533b779fe588d57d","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.1.0.tgz","fileCount":12,"integrity":"sha512-X4paykH+FAq9sW04hnEj21Z98KK0PN1RrV5eyQ70pUzqpXbjuubsbtApLway2wNDJBHeXe8G3sqWrWvSEIIMEQ==","signatures":[{"sig":"MEYCIQCDqB1ePXIigr4daj7jGDmIu4L48eAt4tx6g3KQpAlh2AIhAIY5aO8WVSEFOfGsYAr2NorWlDc6rju3760by7OoHDmu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1533695,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjIpYwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpXARAAi/mE8nuRx5hLFe8yF3Tjr3CI2Gzkt8sCUd/2nI5oOtNFcsvT\r\n8taqtz4sRiSUyq+ILoSYT80StFBjku+dcy+FCNeP2qoqBaeRgX8yLhYX15mT\r\npT82bErnFEL+w5KceCr4AnB9627YWcle5RPTpRefQ8hVOjgVzvZlJVhmnmFW\r\n9AXu0R/hyzigQCmH5+sh5w8+XlE7tbsxnRBmWdpCR7ML0y507lCYQu267dIR\r\n3ff6RhH7sVt9DUY/+99eWreMSLFemdinW7Fyx+mW7i5pyecXmNXLJ0DGO9s7\r\n9b7kTgSvQPKefGsUgU0Dpn4KkjCrUpZRQODcvJssiYqN4Yzvi+9ZxLciGDEp\r\ntWhTvA9dAgnIuuCMiCVIs7tNoH0PQzoIFKfCjckPVv865PDfCVfnS904+ac5\r\nn6j+xfzp/MZzgrNJllpIcu/YS4s4eZ+UKZwXXyn6cjzWBbwS6SvU1fz3UHno\r\nECGgLS1FscnlRQl0JLzF5gsZuiz9fM8qwv8FBNz5i4RVni5CP384TQtrzUyO\r\nYT/VYKvEM9l87SypMS/tGckW1nA5n6mRqQvLKJ3uV24/oJhBO/5wcFO7NbMc\r\nJnIQaGTeQSx9liHewuT0GxmtxxNb1EmdPFD4u+SZKr3+SVA71lYPbvdKCGKA\r\nmmaQToEil0IM/wtxCBW6euSoB/Yqt4vcVJ0=\r\n=V4JS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.umd.js","unpkg":"/dist/index.umd.js","module":"/dist/index.module.js","readme":"# Jump Start Data Editing in SAS Viya\r\n\r\nThis small react component library serves multiple purposes:\r\n\r\n- Help build Data Entry Applications quickly with minimal effort\r\n- Uses [@sassoftware/restafedit](https://github.com/sassoftware/restaf/blob/restafedit/README.md) to access CAS tables and support custom calculations.\r\n\r\n    SAS Tables will be supported in the next version\r\n\r\n<blockquote> React version\r\n\r\nDesigned to work with any  React version >= 16.\r\n\r\n</blockquote>\r\n\r\n---\r\n\r\n## Install\r\n\r\n---\r\n\r\n```sh\r\n\r\nnpm install @sassoftware/viyaedit\r\n\r\n```\r\n\r\n### PeerDependencies\r\n\r\nIf your package manager does not install peer dependencies then install these manually.\r\n\r\n```js\r\n{\r\n    \"@sassoftware/restaf\": \">= 4.4.8\",\r\n    \"@sassoftware/restaflib\": \">= 4.4.8\",\r\n    \"@sassoftware/restafedit\": \">= 0.11.0\"\r\n}\r\n\r\n```\r\n\r\n---\r\n\r\n## Usage\r\n\r\n---\r\n\r\nDataEditor is the entry component\r\n\r\n### Sample React Component\r\n\r\n```jsx\r\n\r\n<DataEditor viyaConnection={viyaConnection} appControl={appControl} editor={editorfunction}/>\r\n\r\n```\r\n\r\nHere is a link to a working [sample](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/viewers/Sample.js) that uses this. For convenience the code is included here.\r\n\r\n```jsx\r\n\r\nimport React from 'react';\r\nimport helpers from '../helpers';\r\nimport {DataEditor} from '@sassoftware/viyaedit';\r\n\r\nimport Grid from \"@material-ui/core/Grid\";\r\n\r\nfunction Sample (props) {\r\n\r\n  // See below - moved it to a function for code readability\r\n  let appControl = getAppControl();\r\n  \r\n  let viyaConnection = {\r\n    host: 'https://myViyaServer.com',\r\n    authType: 'code'\r\n  }\r\n  \r\n  // Used as editor function\r\n  const _editor = () => {\r\n    return helpers['SampleForm']; \r\n  };\r\n\r\n // main call\r\n  return (\r\n    <div key={Date()}>\r\n      <Grid container spacing={3} direction=\"row\">\r\n          <Grid item>\r\n            <DataEditor key={Date()}\r\n                  appControl={appControl} \r\n                  viyaConnection={viyaConnection}   \r\n                  editor={_editor}  \r\n                  />\r\n          </Grid>\r\n        </Grid>\r\n    </div>\r\n    \r\n  );\r\n\r\n\r\n//\r\n// handlers for init, main, term and selected columns\r\n//\r\nasync function init (data,row,appEnv,type) {\r\n  let status = {code: 0, msg: `${type} processing completed`};\r\n  data.total = data.x1 + data.x2 + data.x3 ;\r\n  let newData = data; /* you can modify the incoming data and return it */\r\n  return [newData, status];\r\n};\r\n\r\nasync function term (data, type) {\r\n  let status = {code: 0, msg: `${type} processing completed`};\r\n  return [data, status];\r\n};\r\n\r\nasync function x1 (data, value, name) {\r\nlet msg = {code: 0, msg: `${name} handler executed.`};\r\nif (data.x1 > 10) {\r\n    data.x1 = 10;\r\n    msg = {code: 0, msg: \"Exceeded Max. Value reset to max\"};\r\n}\r\n\r\nreturn [data, msg];\r\n};\r\n\r\n// Application control for restafedit to use.\r\n\r\nfunction getAppControl () {\r\n  return {\r\n      description: 'Simple Example',\r\n      dataControl: {\r\n        source: 'cas',\r\n        table : {caslib: 'casuser', name: 'testdata'},\r\n        access: {},\r\n        byvars: ['id'],\r\n        where : {},\r\n\r\n        cachePolicy: true,\r\n\r\n        initialFetch: {\r\n          count : 1,\r\n          from  : 1,\r\n          format: false\r\n        },\r\n\r\n        customColumns: {\r\n          total: {\r\n            Column         : \"Total\",\r\n            Label          : \"Grand Total\",\r\n            FormattedLength: 12,\r\n            Type           : \"double\"\r\n            }\r\n        },\r\n        customRows: []\r\n      },\r\n      editControl: {\r\n        handlers: {init: init, main: init, term: term, x1: x1}, \r\n        save    : true,  \r\n        autoSave: true, \r\n    \r\n      },\r\n      appData: {}    /* put here whatever you want to pass to your editor component */\r\n      \r\n   };\r\n  }\r\n\r\n}\r\nexport default Sample;\r\n\r\n```\r\n\r\n## Props to DataEditor\r\n\r\n### `viyaConnection`\r\n\r\nUsually your app is running with authorization_code flow. So use this:\r\n\r\n```js\r\n{\r\n    host: <your Viya server url>,\r\n    authType: 'code'\r\n}\r\n```\r\n\r\nSometime, even with authorization_code you might want to use tokens. Then use this:\r\n\r\n```js\r\n{\r\n    host: <your Viya server url>,\r\n    authType: 'code',\r\n    token: <your token>\r\n    tokenType: 'bearer\r\n}\r\n```\r\n\r\n### `AppControl`\r\n\r\nThis is the same appControl used with @sassoftware/restafedit (see [here](https://github.com/sassoftware/restaf/blob/restafedit/README.md))\r\n\r\n### `editor`\r\n\r\nThis is a function that returns your editor component.\r\nFor example if your editor component(written with any react component library) MyEditor. See below for its props.\r\n\r\nSee these links for examples.\r\n\r\n- [Sample Form Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/SampleForm.js)\r\n\r\n- [Form Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/DataFormMulti.js)\r\n\r\n- [Table Editor](https://github.com/sassoftware/restaf-uidemos/blob/editorappreact/src/components/helpers/TableEditorMui.js)\r\n\r\n```js\r\n\r\nconst V = editorFunc();\r\n\r\n```\r\n\r\nThe viyaedit component will use this prop as follows:\r\n\r\n```js\r\n\r\nconst V = props.editor();\r\n\r\nreturn (\r\n      <Fragment>\r\n            <V \r\n             onEdit={_onEdit}\r\n             onScroll={_onScroll}\r\n             onSave={_onSave}\r\n             status={status}\r\n             appEnv={appEnv}\r\n             />\r\n        </Fragment>\r\n\r\n)\r\n```\r\n\r\n---  \r\n\r\n## Details on the editor prop\r\n\r\n---\r\n\r\nThe editor component needs to handle the following props\r\n\r\n### onEdit\r\n\r\nThis callback will run your custom calculations and save the record to the server. The autosave is controlled by the option in appControl.\r\nTypically you will call this after the user enters a value and presses enter or changes cursor focus.\r\n\r\nTo call it use this sample code:\r\n\r\n```js\r\nprops.onEdit(\r\n    name, /* name of the column */\r\n    value, /* new value to be saved */\r\n    rowIndex, /*index of the row. Between 0 and the number of records retrieve on last fetch */\r\n    data, /* the data for the row */\r\n    appEnv /* control object that was passed into your component */ \r\n```\r\n\r\n#### onScroll\r\n\r\nTo scroll to previous or next record call this. This callback will retrieve new records from the server.\r\n\r\n```js\r\n\r\nprops.onScroll(direction)\r\n\r\n```\r\n\r\nDirection can be 'first', 'prev', 'next'\r\n\r\n#### onSave\r\n\r\nUse this if you are not doing a autoSave on each edit\r\n\r\n---\r\n\r\nprops.onSave(data, appEnv);\r\n\r\n---\r\n\r\ndata is the current row\r\n\r\n#### status\r\n\r\nThe status is returned by DataEditor. it is of the form\r\n\r\n{\r\n    status: 0|1|2,\r\n    msg: <some string>\r\n}\r\n\r\nCould be null to indicate that there is no status to report\r\n\r\n##### appEnv\r\n\r\nThis is the control object for the edit session. For details on this see @sassoftware/restafedit.  \r\n\r\nThis object is useful in more advanced use cases. See the documentation for @sassoftware/restafedit.\r\n","source":"./src/index.js","gitHead":"3a8c93d64bbecc4437e27f855bf20c0c0da66efe","scripts":{"pub":"npm publish --tag test --access public","lint":"eslint ./src","push":"rimraf ./test/public/dist && cp -r ./dist ./test/public/dist","test":"cd test && npm start","build":"npm run buildm && npm run push","buildm":"microbundle build --name ViyaEditMui","buildm2":"rimraf ./dist && microbundle build --jsx React.createElement --compress false --name viyaeditmui"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"This small react component library serves multiple purposes:","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"@mui/material":"^5.10.5","react-scripts":"^5.0.1","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@sassoftware/restaf":"^4.5.0","@babel/eslint-parser":"^7.17.0","@sassoftware/restaflib":"^4.5.0","@sassoftware/restafedit":"^1.7.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rimraf":"^3.0.2","env-cmd":"^10.1.0","shelljs":"^0.8.4","cross-env":"^7.0.2","microbundle":"^0.15.1","concurrently":"^6.0.2","@babel/eslint-parser":"^7.18.9","@sassoftware/viya-appserverjs":"^2.0.2"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0","react-dom":"^16.8.0 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.1.0_1663211056762_0.2531982135954487","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@sassoftware/viyaeditmui","version":"0.2.0","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.2.0","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"f88a4d82b3a6512c83d4161c4f24f8be17947dfd","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.2.0.tgz","fileCount":51,"integrity":"sha512-BtBkb6CiqeTs5Tp+6k33CQcggsm0b20mKsY/S+F+/JPMtHC6GqnMNlYX/yUcP6zNNNyARlUUpPFQRzHsIybrHA==","signatures":[{"sig":"MEQCIB/wik1syvvq5kHLQ6lDuz/WNcg8cWode+a1UcEP+5lVAiAyTZoPMRbDplfo73ue9dmxsFW3NXBgZFxWdqA/zNjSjw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8329639,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjI1dSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpOmBAAkG9dCmwT+zyeCR1zbpq16/DKkLU0mzO3DKviZD1zdPQd7Gve\r\nJ6EAIDD+WmzOsxoQQq87rSBeTarn1XHm2REWxwGsfNisVckF5ETsLEGAaCct\r\n6qSSz3ZLRMXUkUZgTLicPNVqU2/aOXmEjtS7H9C1pcmtSCwBwkan0LbYo8Yu\r\n0FYN28cHic68f/4BdIaTIiGHUhSEAMalT1Nfv4LVkWJuPQweuDl0SX0To0KI\r\nDU5W03bg1NBU5Lu10ui78XbCfyBig3tcuMTjdsOF0xUUIyFtWx0vGw+x55zY\r\nC4y9+hKWcH1sEzUAuMlEKq4xosuxClA+Gm9g3dg0tZEkwWkQMZ6e8CBAp+jc\r\ncwlzXmO6K1yCZMJ9eI8j3WLZj5GQhuFeoaK45zgXbJws02kyoYlP38DMY7Om\r\nUyyIZmh4fCAtThy6zod7sPMF4mluTiJXOienoTg90YLFFTxOD7XdTMIMguLS\r\nPJcQBgf/dohw/QEHbMiL7LXj2huQ2iWJT70TqSB+RsMZ/u7vb6FI9a1Zw7ol\r\n70wLvOQQZO1zz5biwX1J2JRH3O2KfYrDfkTI2iH8vs+BXWDwF0feofcpw1E0\r\ncEKa7yQxJ4P0zSXtfE5h870NS8jHwaVg5bGUbbhjvtfH/tGHyrGr4Fg4SuR1\r\nOsS5jC6+T5ZbI6RpsZVfbUpcoGM6Co0xI6A=\r\n=9/N8\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui","readme":"# A Data Editor example using @sassoftware/restafedit and React components\r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b editorappreact editorappreact\r\ncd editorappreact\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run buildapp\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","scripts":{"app":"cross-env  APPLOC=./build APPENTRY=index.html node server --env=.env --docker=Dockerfile","dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"react-scripts test","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","lib:pub":"npm publish --tag test --access public","buildapp":"env-cmd --file ./.env react-scripts build","lib:test":"cd test && cross-env  APPLOC=./public APPENTRY=index.html node server --env=.env --docker=Dockerfile","lib:build":"webpack --config=webpack.config.js && rimraf ./test/public/dist && cp -r dist ./test/public/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^17.0.2","rimraf":"^3.0.2","env-cmd":"^10.1.0","shelljs":"^0.8.4","deepcopy":"^2.1.0","cross-env":"^7.0.2","react-ace":"^9.1.3","react-dom":"^17.0.2","concurrently":"^6.0.2","react-select":"^5.4.0","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","react-markdown":"^8.0.1","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^5.2.0","react-json-pretty":"^2.2.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@sassoftware/restaf":"^4.5.0","@babel/eslint-parser":"^7.17.0","http-proxy-middleware":"^1.0.5","@sassoftware/restaflib":"^4.5.0","@sassoftware/restafedit":"^1.7.0","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.16.0","prettier":"^2.1.2","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.2.0_1663260498155_0.21985176406783458","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@sassoftware/viyaeditmui","version":"0.2.1","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.2.1","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"6351a61e7b8f3c9b6f3f5722d1ae5f82ce69f9d4","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.2.1.tgz","fileCount":52,"integrity":"sha512-B5ZFmb2mYCaMv1MPxXMumSezraVzgz7PK9Cj9HqbAx330icv51d0LZiwP5up84vjWkWRH9ZLcIbXPMz+zFzvpw==","signatures":[{"sig":"MEQCIE2nvnhdBZKB/A+uwW3u8xZ966Dv4zlpKYHm+81XwxJ6AiBYQPY1p5Vu6vrvhVPt80llHtQjwt4OLRrMlXPmBui3UQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12429698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjI2P4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqqpA/9EVumcidH+COyMBmzGT3YuNsXCNBKxqBGfVfwX5o9VRqLxVRw\r\nxC4VWjPOUYC5PrOkSFS2jREzBuSMlZuDD5205jfWJN9sJgtBJmhrq1otFEcr\r\nH4jtvjha+N/AJEotDLfnypNrK2S9U4zzXGqYVsGvv/C3Wi3dOnwLT8oUfzOM\r\nqCz2P7fiJtFNIBa5CKuRJNZ5Ws9Pj3QX9BD4UDmFXZIiuF12hSZKLDgtcZlQ\r\nNnbJ2h4UK4+FlKHU31+QtbdXEeZKvL/B4HCYSPwNAtPR4pe0ysZlNpuBuRKp\r\np6bB+LBJitDqh7zKFM1/qO2Ld3HYtmfx4jLBYwAzjgqC48nNgsH3dHRXbixf\r\nia20pXpwJmUNUf7Jz2vt2tW7OlVPCO1o4amcF+qzlfQ69l4l6cLDBhOKvPRF\r\ngVaAB/KsrhLtrDz46hAIIS1kvG9JHv0X/PJPoixU7U2ac+0MaV15Y4jhyW+V\r\n3sA4uWea6bFaaEaLl9uXt+qMd/iEBZdC1JnZd/MmkCqZvE0SJS3ST4uCHtBH\r\nQdsKWsr/7d/QFom6m7AP29qV/xrDRguADFP05AOmx8U9N7DCitSP8hMzRVzO\r\neAqRfYJF8Q4CdGNJNB9SA+yNFWLDDE1z/Wwt6/r6oA65y0lPYUql1JZmExnq\r\nrp7fsFwtZQ/ZjNMXwiCiJvr4BmargiEL6Ug=\r\n=W5a+\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui","readme":"# A Data Editor example using @sassoftware/restafedit and React components\r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b editorappreact editorappreact\r\ncd editorappreact\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run buildapp\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"f456ff3294748813f67b76f063a2c903eda3f8e7","scripts":{"app":"cross-env  APPLOC=./build APPENTRY=index.html node server --env=.env --docker=Dockerfile","dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"react-scripts test","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","lib:pub":"npm publish --tag test --access public","buildapp":"env-cmd --file ./.env react-scripts build","lib:test":"cd test && cross-env  APPLOC=./public APPENTRY=index.html node server --env=.env --docker=Dockerfile","lib:build":"webpack --config=webpack.config.js && rimraf ./test/public/dist && cp -r dist ./test/public/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^17.0.2","rimraf":"^3.0.2","env-cmd":"^10.1.0","shelljs":"^0.8.4","deepcopy":"^2.1.0","cross-env":"^7.0.2","react-ace":"^9.1.3","react-dom":"^17.0.2","concurrently":"^6.0.2","react-select":"^5.4.0","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","react-markdown":"^8.0.1","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^5.2.0","react-json-pretty":"^2.2.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@sassoftware/restaf":"^4.5.0","@babel/eslint-parser":"^7.17.0","http-proxy-middleware":"^1.0.5","@sassoftware/restaflib":"^4.5.0","@sassoftware/restafedit":"^1.7.0","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.16.0","prettier":"^2.1.2","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.2.1_1663263736294_0.029088236304710025","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"@sassoftware/viyaeditmui","version":"0.2.2","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.2.2","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"e707bcd7e8fc227128e5622ac67405e6590f4306","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.2.2.tgz","fileCount":53,"integrity":"sha512-DUT+bmEqVrep4ykDDB21A1vhw+03aiZxJMheC0FxrUguj3vNxuFy/Wj3iuVM4IADaBRIo97Pcj0Ke/zcAoJKQw==","signatures":[{"sig":"MEUCIQDv1tzj3mxIYdSBtVwucC/GdolbGBFoVfnF6gVUTO0jSwIgec2os90acHcyN/dkXPEqCE03bnQnSAu2g0klpkqIyqQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4236419,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjI5dcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpqmg//dcGgfyPk2jG835cI/WkxTgGv9dMIJHaavpJP2TM+DVRlA2Nx\r\n/erWOp0lxCg2Y7fEWlceF0Ls76Q/BMHNH0dSWWvEFKEPh+e4rExVOMGC2R0r\r\nlogUdLxErlx8MPev0wZW4EOhXwHPJevlgySzp5vWVuTqXwDVHPWxYwZJQ6tB\r\n49O9BqPqjs8Pm/bJY0pgovwBNNHHD9Ea/yA5g+1s16XeKFSxFSLr/uCMwaYh\r\n/xlH1GKW/XgufGwaEa4ylihsquhVq+Go6oN5iBVDteFFZ578D6VXWldftHBO\r\nSzaxenSkj7tPIWiblK1ZxwXW2XoCJj359ze8Y/AIgDMny3xSU9cRbER+CpG1\r\nYk5ikFcDWsMLrdJjgQ9KXBZUWyfZybXOOoit0IHtcgadIc0T6KlXGIUr2lK3\r\nBATDCiYWG2tOlDkPCXbyje4AIST2HNWmJ1QAe57Z39SN8iPpLcQMbe3wjloP\r\nnct0nJqgwmEkdO0ZLPVQ5MdQpc739PNJp2svyEdOV0KC3FOeZJLB10xPTwVX\r\nF3oAgdMYv7g4GoJuUdjyLSMNczVKmL9fBqgyaCK0qRoYLv0YZeSsWI9rZ8Ql\r\nIqggQQKcZTFnN6oPuUI7C6P33g1CagUypEH/9vH4GN4m5++8ZubFmo+rFV9k\r\neG5QPLLcxaw5FY62v04/C6QT40NILTs/3FY=\r\n=7KyZ\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui","readme":"# A Data Editor example using @sassoftware/restafedit and React components\r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b editorappreact editorappreact\r\ncd editorappreact\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run buildapp\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"1087eb0d0897fc81d3f8347978389dd80b9e491c","scripts":{"app":"cross-env  APPLOC=./build APPENTRY=index.html node server --env=.env --docker=Dockerfile","dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"react-scripts test","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","lib:pub":"npm publish --tag test --access public","buildapp":"env-cmd --file ./.env react-scripts build","lib:test":"cd test && cross-env  APPLOC=./public APPENTRY=index.html node server --env=.env --docker=Dockerfile","lib:build":"webpack --config=webpack.config.js && rimraf ./test/public/dist && cp -r dist ./test/public/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^17.0.2","rimraf":"^3.0.2","env-cmd":"^10.1.0","shelljs":"^0.8.4","deepcopy":"^2.1.0","cross-env":"^7.0.2","react-ace":"^9.1.3","react-dom":"^17.0.2","concurrently":"^6.0.2","react-select":"^5.4.0","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","react-markdown":"^8.0.1","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^5.2.0","react-json-pretty":"^2.2.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@sassoftware/restaf":"^4.5.0","@babel/eslint-parser":"^7.17.0","http-proxy-middleware":"^1.0.5","@sassoftware/restaflib":"^4.5.0","@sassoftware/restafedit":"^1.7.0","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.16.0","prettier":"^2.1.2","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.2.2_1663276891872_0.9988175392455174","host":"s3://npm-registry-packages"}},"0.2.3":{"name":"@sassoftware/viyaeditmui","version":"0.2.3","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.2.3","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"325ba29c968f4b322b65c5520968895f30e75e87","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.2.3.tgz","fileCount":55,"integrity":"sha512-xUxk611Eh2M8hBtP5roVnnGeOQ9GLrBAV2JPE+j0vR9Uh3Ko6Iz67boJiktNYOWPU+856GI0fG6SaNBHLmT8Rg==","signatures":[{"sig":"MEYCIQCKcf3FM5JpJsumltNWQTRHD/Osvh17Rt7kfd0V46zkigIhAKMBVZmMwzVV3QuQS+SZs/+bA33uXxVJia5vi/jOjPj3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8389405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjI98AACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpTkg//WhIHaZ/k/n4YMsULOsxLDFlqsrHG5u9zLz57tJ76eQetIkO+\r\naGeBN7R2SD/zEkVMKAVDnZQsv2RG+c5Gfx1X9ybBAN58F2BGKZId0PuHDhGo\r\negAiaylaEcKF1brA1URM+N00Nv6MDlsXCOMrsrgyo3WXnqSzDOIBORlNgXmk\r\nDalTHp/7lELUMJYl95i5d9fJ7CEjIsjUSU1O5o4QCl9zdrFIl6bkGb0vqS/f\r\ncqvN3ydiE6Ph8XaEjaOoQW7epz4VY2t7L4PLQdVlV90a5JEb+R4RdggjJuJm\r\nzt36v5VCceTU3xc4BQEAGr04ixFOvAdJ8FTcewLCGSF/m40VISOdRspj/ypq\r\nd/MnWMSThyD/3KsX0dB2ebKqhrujRggmYGHh5fj1bWfOAIXLa3KfbO+e6QQ0\r\nZahaYQ7uwEM0nRG11FYsfuE+4IY+0oQy6Le7XhjaVhBVJXvsqGK/2B3dK+uV\r\nUcjllVQEbLEuwyfFfFq7NjQ3IQjlZG/ALlybiak5ME480pBm7jYkhvtYh0yj\r\nzLcdWie5O7Dt/uGqE58WHNpcVGUmutONjjexm+azHwLqMCS4JPzAf6YP3+0C\r\n++GZjbSeouBG5CYvQstXznGxqPdtkhkxppeM9F7tKASyNmorX87PHiaHLvg2\r\n0kFgiqsPzL1wum8roZgVtF0myXZMHRM1U3g=\r\n=LFCV\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui","readme":"# A Data Editor example using @sassoftware/restafedit and React components\r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b editorappreact editorappreact\r\ncd editorappreact\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run buildapp\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"c77ac54cd8d95be222fb99dcade60e2a11aa964c","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"react-scripts test","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","lib:pub":"npm publish --tag test --access public","app:test":"cross-env  APPLOC=./build APPENTRY=index.html node server --env=.env --docker=Dockerfile","lib:test":"cd test && cross-env  APPLOC=./public APPENTRY=index.html node server --env=.env --docker=Dockerfile","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && webpack --config=webpack.config.js && rimraf ./test/public/dist && cp -r dist ./test/public/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^17.0.2","rimraf":"^3.0.2","env-cmd":"^10.1.0","shelljs":"^0.8.4","deepcopy":"^2.1.0","cross-env":"^7.0.2","react-ace":"^9.1.3","react-dom":"^17.0.2","concurrently":"^6.0.2","react-select":"^5.4.0","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","react-markdown":"^8.0.1","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^5.2.0","react-json-pretty":"^2.2.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@sassoftware/restaf":"^4.5.0","@babel/eslint-parser":"^7.17.0","http-proxy-middleware":"^1.0.5","@sassoftware/restaflib":"^4.5.0","@sassoftware/restafedit":"^1.7.1","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.16.0","prettier":"^2.1.2","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.2.3_1663295232428_0.08368511937546264","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@sassoftware/viyaeditmui","version":"0.3.0","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.3.0","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"1116676ee2da0c8cbd5edceeda7ae5992e579272","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.3.0.tgz","fileCount":64,"integrity":"sha512-x29piCONS5OamUIW0wBFQ0DeAzo6LQg7DPunDi0xmSmEcsaqMviUY/kJKhbL1Nvpm+gv25hcGxS/MQ5/nUT62Q==","signatures":[{"sig":"MEUCIQCLAUW26FZ9pA0SiAqzpw+kiUX/RVUNZytUzMZRLom3aAIgZEWVNXViIfDdaItrhRRKiy2rEZNaB9YV9zbzXVJn78s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8465271,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjJz5aACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpbew//TMaUQj7N52NcDAzczjrodu9u7tWvJ2w58J9/d1x1RH5X0ZYI\r\njMyPnM3s0JtCwbRA+hljYF8VTaZhAxVrc77oLftI8O1UeSP7fewCEPJrir04\r\nbN2bToLy3oMSh/vpF5YXnoXN2viOA5b/QiDrndgrYbUZn8OhrYcpbaTfhvlS\r\nIHNK9K8YtGmlv/ksW8G42Hp6O6VXSSKkn4IbqeMZKrhK5FpKOlu6EbHf5vrw\r\nqg4Y4t0fc56UOHINJnivQ4MiHM9OEJI70C3SgZIFQYwJF4rkKCGwmN9OvsiU\r\neRZYJbyxogaJqoPzBIvjRBRChIGcCeSiAYPUXSwnWsbj9pawp6sJ+ng9Yh3J\r\nDCxE8cd5lcH6+rmfIhxaAFW7+u6P6v02qsX5B1Yv/q8QtDQGx6OuwYSwOGv/\r\n6oQUI+5XyJjzgb+SHegjHR2jaZSZjgAEfLhAKd6Ff3kg/2Muef4AbwRbpd1V\r\nhIBN/V62rpnH9HVMksK35OrsLVXOrZJbeR/8DRaSvvlviKpClGL3HBi2c0Jm\r\n5clFcCw1pMuiNqOAUee5poq+dos/5yDBbbX8itEpWy6wM3nYxZt0c3p9Hi9e\r\n4xpzUFba0D1AL/5AdTmFxEoviYU/MIWzxp6PPjWdwVn5a4TptB49YRVU/h+i\r\nPcZmo0RIDxd73Nj9mAj78F10PYDj86ifOiU=\r\n=5S+q\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui","readme":"# A Data Editor example using @sassoftware/restafedit and React components\r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b editorappreact editorappreact\r\ncd editorappreact\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run buildapp\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"3c01f1926c3072648f3da777dfda59516a6a4dd6","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"react-scripts test","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","app:run":"npm run app:test","lib:pub":"npm publish --tag test --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","lib:test":"cd libtest && cross-env  APPLOC=./public  node server --env=.env --docker=Dockerfile","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && webpack --config=webpack.config.js && rimraf ./libtest/public/dist && cp -r dist ./libtest/public/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^18.2.0","rimraf":"^3.0.2","env-cmd":"^10.1.0","shelljs":"^0.8.4","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^6.0.2","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^6.4.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@sassoftware/restaf":"^4.5.0","@babel/eslint-parser":"^7.17.0","http-proxy-middleware":"^1.0.5","@sassoftware/restaflib":"^4.5.0","@sassoftware/restafedit":"^1.8.0","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.16.0","prettier":"^2.1.2","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.3.0_1663516250357_0.43577306150038186","host":"s3://npm-registry-packages"}},"0.3.1":{"name":"@sassoftware/viyaeditmui","version":"0.3.1","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.3.1","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"e821d92f53e1082645fc25fac62207f4701422ea","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.3.1.tgz","fileCount":65,"integrity":"sha512-pIOM1oGH4iR8VA6PJuzGHWZ2G/fGwFOwI0vSyXZJD5QNbpRfbaYtgwi0AcNRB9qyVItJoe1lbT7+OKDSzjKXqg==","signatures":[{"sig":"MEQCIFDtvu5v9QHmiLyZgl7IS6kr0dsDfNdxbQi173t8oQwLAiAHlMmPBI7R/lWIWP5D3snyC75OfFmFPR0IEVWKuoMemQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8466678,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjJ3i5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqXvw/+M+82PPfZ1j4pP6nH/+suUDWP8BnViKH8ORER720hQt77U52T\r\nJnD2G5/F/TPzsXa1SgZVPDZtCY3n2sgxWWtmuiemu7eCU0pLb1/Yz9LtLFVi\r\n4mohZZHhO6TusoyqsE3RnGl2/EfZnhUvxbEEkv+JcHkEOa/wc3tDBHj7jhqf\r\nHfdHRDN6DbbiP3vAp2eqaxEk8S0YfTGqLxVySBWDzExCQ7eVBPxvZY/4o8S9\r\nGZkOZuwy1BnfaDzQw8na40QTREQFAdFx3ZuqTdWuSYZrK42918d2vcUzleLk\r\nQ/eHAf+0NafRI5pP2qc/f7BtocehPJZLNkpg+Q/oFF6pP2kX3BfmJvNgGNXS\r\nvW7KFYlOmaNcHIZEs7735B5bco0o7QEAb02qBnyFiIh4Rd5ZGgv1PxAQeu4O\r\n50BvAkfZOshXdYVi8OJr8/3Sh2bvZ9PBl2cT4MUynVsYRaS8L7qdjrdHM6RM\r\nuMc0jUs/4cllhYs5u+p/qEZr+gN9WjZdSu+GWXuJg7AZoX3lTv69sIS6wIfG\r\n9ZwL2B6d7+az7AXTT7d7h3Sw0Fw6lprpfGvF5Rs2sjBy4le/VCWiMlISHkKG\r\nykm6EOzqrnTk4JGDJopc6/V26zhbWSaAhNg7KXZE3Yp8bwymbWCseW/CcYug\r\ni8/aiby5R8p7JIIhkdftMDEWPFlw+RO5XJI=\r\n=i8h8\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui","readme":"# A Data Editor example using @sassoftware/restafedit and React components\r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b editorappreact editorappreact\r\ncd editorappreact\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run buildapp\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"37ca2f0351c9d2be620bd7dd36391be2bf7357f7","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"react-scripts test","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","app:run":"npm run app:test","lib:pub":"npm publish --tag test --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","lib:test":"cd viyaeditTest && cross-env  APPLOC=./public  node server --env=.env --docker=Dockerfile","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && webpack --config=webpack.config.js && rimraf ./libtest/public/dist && cp -r dist ./libtest/public/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^18.2.0","rimraf":"^3.0.2","env-cmd":"^10.1.0","shelljs":"^0.8.4","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^6.0.2","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^6.4.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@sassoftware/restaf":"^4.5.0","@babel/eslint-parser":"^7.17.0","@sassoftware/viyaedit":"^0.11.4","http-proxy-middleware":"^1.0.5","@sassoftware/restaflib":"^4.5.0","@sassoftware/restafedit":"^1.8.0","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.16.0","prettier":"^2.1.2","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.3.1_1663531192870_0.9530539881851812","host":"s3://npm-registry-packages"}},"0.3.3":{"name":"@sassoftware/viyaeditmui","version":"0.3.3","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.3.3","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"c076568149f1c803dbf2c73b7669f230793632fc","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.3.3.tgz","fileCount":65,"integrity":"sha512-8oedjkEtPM/19darLLwMUrSZ2nu7T3gjq5wEHTuJU/978NDLRAvbgYNhae2ND687zMuIViLLPVUUiFADMhlGyw==","signatures":[{"sig":"MEUCIQCbBlI/drQvzI5EGJvF9O0OaXtEIutagHuHupCTLcjQ0AIgRMEJxS9k/4+NK0xxaZegTHWbsAcd4niu5LwxclYVrlw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8466555,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjJ4tQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpOPA/+O1T0C2JyCqk7Wwxy/CgDKGmQs92muPdoyotT/Yl7yisGqcGh\r\nyo8rPzFx3zgK1JjKpiU+9NWOsOrhP/hh1mcm1DO/RhlmcRahBItPPEFOcH87\r\n0GWaQaRakIEqA9AkxrFY3H1sveqjD1f0MGCOtEp2dwMLZaQ5QyA+E0eyNxBT\r\nPEZVix0QnzP4X9YTQsbCke0sLpUPbXh9mWgGavOcLxz3h5JBQ3vtEs2oNg8a\r\nvg193X82vXL4fDzhlArIDQRv/jqjl2HFQ7Gcs97+pxwpkbAX3Wply44cZkIq\r\nhkX/u3PTYd1lODeHvmvpzRnqZesMV4fKILls3gV5m8995ogDQlhqPqpsNscJ\r\nT8ZgkIMpNIVxPqQEGrQRd3/DqDetUOa1YI0kdzhwCGD7v0d/ifEsDMF/htWY\r\nRF0m5MIHJ0u+nqOyD5vu0YKjjfADI8K2Y9/UzIuRsg7QzCE8p7v04WMBh7D9\r\nMsE3L90nspcxhv/8equ9U6CvBuePVsbF2e8r80Wn6uY8pvaOfHGCDFwi6QRe\r\nRydprCJNc6jeHOgOzVScVqyqXN83DUhW/vzXVjfJcNmv/jK8/pUfJXuDBloa\r\nrcBbN8OLfBMkAhTaFkgpnJZRZ1+xuusphcPSejIv6zIGSZV1iNwmEcPDiWIF\r\nm0xvOcd50arsJeZEtC9o5Qw65rN8GvqNGF4=\r\n=fSMG\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui","readme":"# A Data Editor example using @sassoftware/restafedit and React components\r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b editorappreact editorappreact\r\ncd editorappreact\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run buildapp\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"e7724f16964f9de101074da79f5bb8f25bac5210","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"react-scripts test","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","lib:test":"cd viyaedit && cross-env  APPLOC=./public  node server --env=.env --docker=Dockerfile","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && webpack --config=webpack.config.js && rimraf ./viyaedit/public/dist && cp -r dist ./viyaedit/public/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^18.2.0","rimraf":"^3.0.2","shelljs":"^0.8.4","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^6.0.2","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^6.4.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@babel/eslint-parser":"^7.17.0","http-proxy-middleware":"^1.0.5","@sassoftware/restafedit":"^1.8.1","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.16.0","env-cmd":"^10.1.0","prettier":"^2.1.2","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.3.3_1663535952169_0.8540384247290853","host":"s3://npm-registry-packages"}},"0.3.4":{"name":"@sassoftware/viyaeditmui","version":"0.3.4","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.3.4","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"8093a0e2cdee31e18dc9910f07d6c186cdace9b4","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.3.4.tgz","fileCount":65,"integrity":"sha512-RlmQZ/PX65LLvZhySffmbDKzO1oCIohwpZm37k/ttGEdKYACW/bqSa4cb8ZAgNaiz8EAZE7feBJ9vMWDD1AtTw==","signatures":[{"sig":"MEUCIF1Kt3v2zJOKrMVyhCSFgz76VDCV66w3xz8grpLn4GvoAiEAi4p8r4FIrcnv1FcwlNplB3KArx273AJXAnNmn+JJArY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8345288,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjJ95IACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpj+xAAgFJAm73XoBwV8wfvTqXtRejghHtXxofnksJGWCBEtAsdoVBB\r\nBMNwUocsN334cAigyfFogykYPlH1CXdlhYe/9iYu7yHZS7IFZljql0pT3DSi\r\nimC40vr37WM0OFcmDtzM7F8klj1AB8Ed7JQY16NzH/weUclWos3tk7+IoOpi\r\nvQfIaM173E1kewE9XEKoVyCe31HwuPqzs/8kWcOyYtkmmcofgvN33vdsfdZp\r\nQI/3baiAGZUKeak/hi+hBLefpV4z8Tc2CmgGtVRmNqpd4JJ6r/P8wpXLdIYr\r\nV5Okv5zHGK7p8BKRtUZJBLIU8XAc3UbAELSxkDvCBfbNZm9B6+OCT4eF2JFP\r\n++tM1Eb8KHo93l87REYFt55BBoHx1FILCVL6MZ4vTWQCEwuX8t2l4w3M2RRi\r\njc67TVZAzq5wR6bnXiRY7nDsbscVvLWzrkFedWaKm9js84anB2DfJxWOguQM\r\nWaJiM81orCdzqUmSksyb9HYdNP4vpLdgG1Ckrng5LXwEemB/Wr1RZ3uIN1q5\r\n5slaKrE+x9RuoEXW0XS1x6qC7uxtzIGYTJ/CZ2oEMAbKJUM9l+iYWB2PdSev\r\nY1mAbMORg29w5L4ieN4MUZKcyALC3NT63LgPraHz8mk9Cso9Px5SNPCAx/6a\r\nDvgoJs79QgIQevvJV8lut3IhMFcU8mJ4c9w=\r\n=P1d/\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditTestmui","readme":"# A Data Editor example using @sassoftware/restafedit and React components\r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b editorappreact editorappreact\r\ncd editorappreact\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run buildapp\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"e962dbf24c6ae700b7521c43ad37dfc10b8b6466","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"react-scripts test","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","lib:test":"cd viyaeditTest && cross-env  APPLOC=./public  node server --env=.env --docker=Dockerfile","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && webpack --config=webpack.config.js && rimraf ./viyaeditTest/public/dist && cp -r dist ./viyaeditTest/public/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^18.2.0","rimraf":"^3.0.2","shelljs":"^0.8.4","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^6.0.2","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^6.4.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@babel/eslint-parser":"^7.17.0","http-proxy-middleware":"^1.0.5","@sassoftware/restafedit":"^1.8.2","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.16.0","env-cmd":"^10.1.0","prettier":"^2.1.2","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.3.4_1663557192546_0.3334866875530036","host":"s3://npm-registry-packages"}},"0.3.5":{"name":"@sassoftware/viyaeditmui","version":"0.3.5","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.3.5","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"5ad39ee1449659a3acb7f7317bc87f1f8296a4fb","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.3.5.tgz","fileCount":65,"integrity":"sha512-dMb1LntJ6Zi5oJEwMbyH0mOJxXZanz5BAJX4zRRYnKhYjKhzu1W6HlncjU5w7JT8YNcYyvuD1i62WnK1klE+vA==","signatures":[{"sig":"MEYCIQCPwFtS739gOjDMK4U6FSbcNODIih/+9LLaeEElf4Bf6QIhAO8EQH4qlcYYINbf/KOi6CACPlivKxa2yjSieeuElruF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8345287,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjJ+NQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq+BQ//eVOxIS/7mftPRPbMXF+vNZASdE6vr18nvN4xIGsKni6bXvTw\r\novlsv1UMnkmBq9akk1od9pPadyT0kU5v9sAUJxU3XxJnBw7ytobQ2B6a05QR\r\ntOHsRUYlbfmC+UEcgY5nF5kmjtXhNc49KW9wzSWbAB4HjGcoml8kpOrB8wg/\r\numTmjjzzQLfh2nwR6ycIXi6YDW6xYiraL4PJP2h29APNDN/BhFPzUgX8EspO\r\nuNa4+gTccKYodlncYyA734kO7vcU83Ddesgpo/leI2Ox1GgX9ONEHSlBdLQ2\r\nblcuSq+ss3brqc2sG0Wi6hWeKzidCbKbkpQiX0vSg6sALp5KLG1z+t5P9YKJ\r\nNbpTMtHbVdIeu03SE4/7GGOmkcL0OVnRErteFfbW9zzie6UEFpM02WL0Hvbp\r\nK77KwFH7yq0ip+/qaudLJ8Ukiy9gmdoSUGEtuwmY1Ajlilaj957Iw2cB4OXl\r\nR5tMDmQrJc749lecw47kd44zR22bD7xBxSupaIEtIXCvQvTbKwvdQEz0nkQd\r\nVttusOqlhjhR+80r/HbXQ0V4WLrCmR5AA9KRKo3r/oPBAcBkIBC3g7r0+1l/\r\nRhDpjnwe+f2vW+oqOlnC1QsULoYccEL8wOnfyMVRPSuoIiIkzajXZyv00tae\r\nkEj5D5Yp5AImZTosGnNmVBByGaAaF/XTOjI=\r\n=1Vgl\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","readme":"# A Data Editor example using @sassoftware/restafedit and React components\r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b editorappreact editorappreact\r\ncd editorappreact\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run buildapp\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"64dbf88de8235290284ca9ae77e97eaa1bc1d7b5","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"react-scripts test","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","lib:test":"cd viyaeditTest && cross-env  APPLOC=./public  node server --env=.env --docker=Dockerfile","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && webpack --config=webpack.config.js && rimraf ./viyaeditTest/public/dist && cp -r dist ./viyaeditTest/public/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^18.2.0","rimraf":"^3.0.2","shelljs":"^0.8.4","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^6.0.2","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^6.4.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@babel/eslint-parser":"^7.17.0","http-proxy-middleware":"^1.0.5","@sassoftware/restafedit":"^1.8.2","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.16.0","env-cmd":"^10.1.0","prettier":"^2.1.2","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.3.5_1663558480409_0.056273384628716894","host":"s3://npm-registry-packages"}},"0.3.6":{"name":"@sassoftware/viyaeditmui","version":"0.3.6","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.3.6","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"742c7690393beecbb370be0de936fe56d43f0288","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.3.6.tgz","fileCount":65,"integrity":"sha512-ZoVEjaRtLQnXaaw8KXqqdpCVHjWKd+1nm/bzu06S3LBKh9dCrMg+CUjE5ozREnRjyWIwO6YU3nyDxnICvDUyTw==","signatures":[{"sig":"MEYCIQCc5m7cz/DjQaEG4WMP2cnQ2QFvZmqc0YwBoOIMXu6NRgIhAJXF6eN1H3/smxkWEYl7pUSR1IvLyc5goPF8sJvL8JRq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8346540,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKJuFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoF7A/9Fq4e1lF5k/hsYDi6AfEYi8Bk03A1+9URiEN5TZtLgE6dTYem\r\nwdbra+ABbx8JWTo+9+Eg5kpaTswP/EluGE068ErmAvNKWaHEnYrsNlOF4Ns0\r\n1+wynJVKa/uGzZ17b2wsMkJ38M+Am8iHdzbigLbCXJMCsPdbOU70JZFTAzkJ\r\nxrYDOaRbla4git5e/9pkKnfodpVMKge1Hwc6NYE28k2GHW3Bngbj9fzPG2hf\r\nFLrXALnk3WyVDXNaLN5Y+0xcar/dd755KgLiCqFrfizieDEpuHMYxz2Ax1WC\r\nYHiqoc58H46whdWEmuNFNzIyNL6ELAvNnIJRL3BfDd8q/3/H+xQwOkOBB3AL\r\n9ACbk0LMlkMS/2tW8qwxkNmiTypgCMUpu8xLLQ8VdxHTaOTqgKspLdjwXkUB\r\n2K2fsFH1SCYbuDQbksznSEQix1UVj6TtdO75M+4Ke+cNVeCYJjtTmhJLuooO\r\n8y4DDzuRHfewmOVYH7u5ZNGJrqEYgpdZ+9qDh5EYj6zD5H5DR70GTHEchejI\r\n1Qd+MBOrvPAgsv0aogI2sxI3NRutCkmiszKV/54rhf6oTFUnsDWK5jmEDBdI\r\nhmUzIyMNu7KH7M5Zn6Vw/a82YNoiM9KnNtXMsjqtvJii7bdA/S6vu6S+l+/c\r\njPoiO6zsozf30wldhjTMlCGEIW9sgOAY0QI=\r\n=zm8X\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","readme":"# A Data Editor example using @sassoftware/restafedit and React components\r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b editorappreact editorappreact\r\ncd editorappreact\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run buildapp\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"d24a3f68931f6f8fa2275fd06ade1bdf06d3c447","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"react-scripts test","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","lib:test":"cd viyaeditTest && cross-env  APPLOC=./public  node server --env=.env --docker=Dockerfile","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && webpack --config=webpack.config.js && rimraf ./viyaeditTest/public/dist && cp -r dist ./viyaeditTest/public/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^18.2.0","rimraf":"^3.0.2","shelljs":"^0.8.4","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^6.0.2","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^6.4.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@babel/eslint-parser":"^7.17.0","http-proxy-middleware":"^1.0.5","@sassoftware/restafedit":"^1.8.2","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.16.0","env-cmd":"^10.1.0","prettier":"^2.1.2","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.3.6_1663605636946_0.05591612675566715","host":"s3://npm-registry-packages"}},"0.3.7":{"name":"@sassoftware/viyaeditmui","version":"0.3.7","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.3.7","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"cf085c0a64f2a398af51cde3b603330503e60791","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.3.7.tgz","fileCount":65,"integrity":"sha512-hJf/LZx3piqUJqO6Ry74OvegwQ6hO92yP5bDiW6HX8QjCvkOII3a27WTeaIjAXsbMw0z+Tn24XSou4yfwRxK4w==","signatures":[{"sig":"MEUCIApbvxgesxjUz1Z9VEOj1S3WZyfmWApMHfUeBcZnUsIAAiEApSOFapu+vIQPuCqflEBpHZ6bBjMOlvcfkj5gUqeGNYo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8346292,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKKC2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrRBw//T21FjvPz4wC1SHUDyaMH+4lQ9os2OQzhTLSeKvUNq9VUsI8E\r\nuW97EWIGUh+cXUb+x9BJqVQsQsYwkiRd4RDqjpJttZhRIet+Tml6pf28goVe\r\nzt3zCuUkeJxKRgzsYRnaSD9pD3NH/I0P4iDr0tnPvHOvMgP09f02NW4tOxvy\r\nIU0ebSPxNQmg9TYWf+fldj8ERaw7p8giO2EhpP6IpYrjV83KXmIgUu4YsxzI\r\n95wp4CoeD3aM+bfNPSauBnXaqjxBrO3IyTV/T8QCrkgGe9UighDxHYwCVjIS\r\n2vk3KHqYmJvdUtSPyWk6tT31wtwJKrUNmGxmgC4G4PG1ygSCD1pqVViF+WyI\r\nqQI//1QUyIMhcQ0zXVcH9cTxYoxi/sHebzFRh84AjggamYTNndw6ew3mW7px\r\nN9T4gcrhFOrWXB1JsGZjHJP6/zMO1866WmwZrvDVg0QXKf9MeJFH2ONCPq5Z\r\nTJoJ3iP8dw+z3bMHmybaM2uKYR9Vfeu6reuKMwyDeyojIIlA1pAOgJ6NCHoW\r\n9vDJBY7UzvdQetxDoh/iX7BkiqzqQMQE61JtxjolrT8aqY663Yp/CX8FTW8x\r\ncCex3mKAjrWA5c3qsPVP2Wv/x/BXmu92vsUiD+rsPrFYvopGinwSVrGBAxbZ\r\nj86EC1aq4YRMUneVmrNkTVPSCANuXMuAT9Q=\r\n=hR26\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","readme":"# A Data Editor example using @sassoftware/restafedit and React components\r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b editorappreact editorappreact\r\ncd editorappreact\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run buildapp\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"fa1e23d211ccbf97b82a82fbd9a978443d3f2144","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"react-scripts test","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","lib:test":"cd viyaeditTest && cross-env  APPLOC=./public  node server --env=.env --docker=Dockerfile","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && webpack --config=webpack.config.js && rimraf ./viyaeditTest/public/dist && cp -r dist ./viyaeditTest/public/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^18.2.0","rimraf":"^3.0.2","shelljs":"^0.8.4","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^6.0.2","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^6.4.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@babel/eslint-parser":"^7.17.0","http-proxy-middleware":"^1.0.5","@sassoftware/restafedit":"^1.8.2","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.16.0","env-cmd":"^10.1.0","prettier":"^2.1.2","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.3.7_1663606966501_0.22231423063433242","host":"s3://npm-registry-packages"}},"0.3.8":{"name":"@sassoftware/viyaeditmui","version":"0.3.8","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.3.8","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"405d549f8db55fa511a2f2fab45ec0023823bf74","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.3.8.tgz","fileCount":65,"integrity":"sha512-aqIXBVZpC5C/ujhgmYL0rE+HOltg4PVT4/S1WKZsxYYfg6kV0YtiaMqKykUEzSCvf2RN1SQJUViUAlDJgpmiIA==","signatures":[{"sig":"MEUCIA2nEFpS/SS8Eo/mE2TAbyMmlMSq1ZkHRcKB01eZVsLOAiEAsQqXaLFZQAzUp6xAcC02u3o4cSkxw2gBWiOxY+915yM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8346041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKLVJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoWjBAApQvxom90jY2X6ISgfYqfX70xo5fkjj5BkbSbYuLn7/SjKI2K\r\nZBrAmrAytFUEt/cTVRVRw2kDnnOj+JTnoFcI4IJ2E/V/u9NXuz4sPn4tlTgl\r\nZuETFJI6jRSfqA4BOEV9/+wlt7+WZIMt8Le44b6fdD39Ha1Cxt7ck0G0gdOx\r\nSKMyBWN8MHxFkv6Aptyl6gXT6O0Cw4SBaAoy4IYXlgH0etQTN+GzCwo0ktUc\r\nKcF3T5SrTrPWs85MFLMO0Zv3Cg27ZVAaQqM3QVz/YolwRXUsT/Dkyz5DPSqz\r\nW5XTVMnNeOsfCebOXcZkar84XVWNUvJrvrzKz7tlF6WwEKMUuUBu8pUmop0M\r\n/GY2QVCHpHh54Lu9bDxWMFNKKihhGkCt3yM/ZGS56qM5aJrAm7wocAOH/bl+\r\nsbpxP9rA8YOg3Q51BZSeXsR3vOKRCExCGrpziFgx9SztiCdyCSqgKv0bhQ+V\r\ndGqjsOP6QvL669bEXJ+MmD/8hGRUbhXmAW3sXkVy2gn1auPvzUetvkZ/kYjk\r\nP/14Zf5zUfuRPRuVm/EQMy+AQ895HTy/hPeLVGPWWseKsZvcdmGVHXDg0u+v\r\n6Ii4A8apIouksWdR4HDV7dwQdjPHAvEoqUNZoYMK8AryWo7W94aimDOk1KQ3\r\nr+m41GTenPOq3vd69D4TU6jAQ8kOOLBrKQU=\r\n=qDUt\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","readme":"# A Data Editor example using @sassoftware/restafedit and React components\r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b editorappreact editorappreact\r\ncd editorappreact\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run buildapp\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"d378e11b18b8330c33462b0edafe454d94140bcf","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"react-scripts test","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","lib:test":"cd viyaeditTest && cross-env  APPLOC=./public  node server --env=.env --docker=Dockerfile","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && webpack --config=webpack.config.js && rimraf ./viyaeditTest/public/dist && cp -r dist ./viyaeditTest/public/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^18.2.0","rimraf":"^3.0.2","shelljs":"^0.8.4","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^6.0.2","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^6.4.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@babel/eslint-parser":"^7.17.0","http-proxy-middleware":"^1.0.5","@sassoftware/restafedit":"^1.8.2","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.16.0","env-cmd":"^10.1.0","prettier":"^2.1.2","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.3.8_1663612233311_0.43844369329681165","host":"s3://npm-registry-packages"}},"0.3.9":{"name":"@sassoftware/viyaeditmui","version":"0.3.9","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.3.9","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"04c0d725f49e74afbd1212884489839263e7d142","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.3.9.tgz","fileCount":65,"integrity":"sha512-G08h9T7PFM0BfbrYQncmDeWxWIH8t8CMt7/XjFFzmWV4vp/i1/VEyqvhtN6iyoe93kz2DgF9nCVyCg2reRbVVA==","signatures":[{"sig":"MEUCIFmAtbikSzKuaMho3acQCoVpwuFjQrZXnYpzWQl/hRdLAiEAhIQG1+M1QkeXyTTf9hY10QV/dRuj2qD1G+I1WioRYJU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8346596,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKRYwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoRaBAAhsLIxfQPpmQh87qFsxxC9cKmt9thB0hzgbK5ygGEv7rdtcyn\r\nhL4i/afIa9rbZMuVMqczMEmg0UwyPgSGHUt1w7OG034BKu96e4Z3HkqgjA62\r\nN2o/CGQ/mqFGZfKU0ZAHJRc0UDZBdEw/66sj93WDFlDiTfDAZvqKEdP13ZWz\r\nuLVYjxif4LvYoJW3Fe2lh4i1TACs/zTFIr9ofUgZnMxRNPDjPZox3g6VdSML\r\navl3qB8Bd9HsNRbo4W61lWO6SEJ9xUlXaXQjDDidyJDeOYLy5UCH3FDJI/xC\r\nJyVXGkgABm29CkCXvyIWkOkECHXT7jpJkrO+wzvEOJDssfOvisWUm93Nl6VX\r\nhbRXP5x0Pm1Dlmob+IZgKGqbDMrx2J52drTcPL54+Mc51WVcj3SIgRg7zXpd\r\n8DRUTSdZ4/5yjpOXa17dExAKbjHTAv4uEWdedutQjihGn3tn/Y/sdkU/K+j2\r\nowjyq1WlaEUwdWhGibaoDuPs0KwyhNTCmAMRP332msR86z/PrHQ2p1ntqaFh\r\nEmW1dFa2h1MS0V/Z229vPWe+M91pwcdK3E6LJApxpcYbVLgsCaGyE2a5Y1FZ\r\nY4YwW2qe2DEcOHtS5gz8PoRhbPEaDCUvGD4K/5mg44qNE75mzXnYD0nDwb0s\r\nc9RBKHhdIMqpAzm1Kgvossr8m7BRBCtjxtU=\r\n=1I7e\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","readme":"# A Data Editor example using @sassoftware/restafedit and React components\r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b editorappreact editorappreact\r\ncd editorappreact\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run buildapp\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"575ad635ad794693e2611f152e00db8478419548","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"react-scripts test","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","lib:test":"cd viyaeditTest && cross-env  APPLOC=./public  node server --env=.env --docker=Dockerfile","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && webpack --config=webpack.config.js && rimraf ./viyaeditTest/public/dist && cp -r dist ./viyaeditTest/public/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^18.2.0","rimraf":"^3.0.2","shelljs":"^0.8.4","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^6.0.2","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^6.4.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@babel/eslint-parser":"^7.17.0","http-proxy-middleware":"^1.0.5","@sassoftware/restafedit":"^1.8.3","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.16.0","env-cmd":"^10.1.0","prettier":"^2.1.2","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.3.9_1663637039993_0.5074491506452525","host":"s3://npm-registry-packages"}},"0.3.10":{"name":"@sassoftware/viyaeditmui","version":"0.3.10","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.3.10","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"61389abca2bb6e4207a332702a9d0768cdcb6fba","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.3.10.tgz","fileCount":54,"integrity":"sha512-HvByqSVR02LX4CQMEOclw6i6Jup6s7CeDsezKq2ZwOtqA/eFB909/mAjqQgNNck1gpvrOUTJGGNG2ofFxq/DSg==","signatures":[{"sig":"MEUCIQCt+Yfc8WBsbxKXTUbbHt/QzVAIPY8wG7ACqHylfRrIFgIgfZPFz1sfU64xLOfVNBLzXx6RJ4/i1GfHFxtLU08n7dk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8327580,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKRwlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrOOQ//TxKt89X3gX0vHwxbRiJq08QsvmbVNh987EiJ8tLm2m/lISDO\r\ncI4JP8xYdu8k/avOC6mf+3n8HJUdgBquYfYL04kPU159+t4DQ5QBWSwqVGOw\r\nhiTYEwqZKt9PqPrNzhY1nPy8FupZ7KKRAchDzuv0AGR7A2SHVXwZhEP33YoV\r\nTXoLCk1ccoYXbzKw/taGXm/+9kWmoyU17lf/qlhecni+jHHwhAwE7yBbw2t8\r\nvifhugWQFu/xPnDuKmJB34nXiamWNGxnmLS22k3GtChEoAlCmmuuXdNS5jTr\r\ndc7aPSNFhKIp8vKFVtG9Odpyp1BMZnvNmhinayxj/Tq+AX0hdzdLCsnFMKXo\r\nUZMtlfFhkx+kCbt8HRwG3jiy63n1M++rIfm5OwRa25NuVlWoGp9e3GoALNGR\r\nrUSUyhjWiRLOCyzTDMIjNcgZ3xxJ5iXeLsY9YOg/ESHzMDAOY+NzXIHtt6Yb\r\nW8PWJ+f3rV2LzdJOnhsBx08//4XRR6Hp4/f1lTFJmnpK7liDkG1j0NJlWTiC\r\nhfgrkjNdvErfbY8lkFp27eHyLYI6SEeMzztHx+Ag7YNVsEzlVne9KpsoheDG\r\nbBU4Rrl0k3+S6xK19d5slu9EFiE9+dS+DwkbBItTg7pyO6Yenh8rULjOf1GK\r\nveJlRA2zXlLG5ofIcVAD2j6Fxk0db8PaGkc=\r\n=zkVu\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","readme":"# A Data Editor example using @sassoftware/restafedit and React components\r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b editorappreact editorappreact\r\ncd editorappreact\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run buildapp\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"f445c6f68972402daea5e9e48ad485255b15125c","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"react-scripts test","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","lib:test":"cd viyaeditTest && cross-env  APPLOC=./public  node server --env=.env --docker=Dockerfile","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && webpack --config=webpack.config.js && rimraf ./viyaeditTest/public/dist && cp -r dist ./viyaeditTest/public/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^18.2.0","rimraf":"^3.0.2","shelljs":"^0.8.4","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^6.0.2","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^6.4.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@babel/eslint-parser":"^7.17.0","http-proxy-middleware":"^1.0.5","@sassoftware/restafedit":"^1.8.3","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.16.0","env-cmd":"^10.1.0","prettier":"^2.1.2","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.3.10_1663638565517_0.9708235163424319","host":"s3://npm-registry-packages"}},"0.3.11":{"name":"@sassoftware/viyaeditmui","version":"0.3.11","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.3.11","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"1d5298c6c95702bedcd60f5912d9e46804f558cf","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.3.11.tgz","fileCount":55,"integrity":"sha512-DqJoiZ/hDyWU/Lliic+zzzLFCi2TVxz0hF3ECsSys4bT8AY+H/Hq5bzHoo1F4qfryee856Bl1UfGi55Bqr4r5Q==","signatures":[{"sig":"MEUCIHauJJyvfk/v9A662nbBykIgbhqEYomtyzcKWg6lUHLpAiEA920Qv2dMbHUPD2Fcl9R4Qtn2GHQ76pQxRF5Msu7+x+4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8370118,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKeWLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpphA/7B0lJacnOR+XsdHj3sLNlDoLXz0h4bB+wfDdA6NSZuRFlnag+\r\nguZLrO6CpHnDW0+PRo6Gy2BIDrlCFjB5jN6B3QsFnFAXbYRSTzSW3Q7dbP9F\r\nRLVUr1RmrMurTqbbuuyQ6e91E6l66s3Y3wAxDZT/opboKyYgYCWYSMPw/fOG\r\nRApNdK9JE1SmgQE8nc6s6hJZzRytIRIOat0mfCZkI6x5BzbWe+tZm85PIEDQ\r\nM3v8cfU5qHWoWGLsjHxUHFDMMKpKIEv8374ffn3YlAPh+5T+ID38pgDBijPU\r\nVLVId5z52TxMJYJqN8k/jbnwqrrHlyOqlw+moDoqTCasawhXBtO2OeolqKop\r\nxOqUfEg5Zq7Z9hwLRQ/8yqYR7gzJgdoVN3UrXD1pkjysppapDpcDiHZuOpVf\r\nxouH9Qe9HML2rRRQTquA/O48BYxIXI6wObUdq5Z0BGQ/+lx+ul3kevdmWrky\r\n8Z7StwvJEdskPi92U0HVZnpiDo+cuF+tsqkCSha1GAHN2NvYE57z4H1mm69P\r\ndBXwP7dkcA/jCjbMMAB/M9wHLSsQd56XIqBVuNNjxYRRc7pLfGCZCxvRtUnJ\r\n86Wx9rT7+tBbwTY4CNdTHrE43yuuS1NDDqDMaVVwyyot33lJmHno3u+a5+/q\r\nuajIOmuY0xPxWotRYw+Wh4S7mEAT0NMMBgU=\r\n=eYQL\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","readme":"# A Data Editor example using @sassoftware/restafedit and React components\r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b editorappreact editorappreact\r\ncd editorappreact\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run buildapp\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"0a2e9fdc8a56df39fa376e88797e833c9c6b907a","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"react-scripts test","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","lib:test":"cd viyaeditTest && cross-env  APPLOC=./public  node server --env=.env --docker=Dockerfile","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && webpack --config=webpack.config.js && rimraf ./viyaeditTest/public/dist && cp -r dist ./viyaeditTest/public/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^18.2.0","rimraf":"^3.0.2","shelljs":"^0.8.4","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^6.0.2","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^6.4.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@babel/eslint-parser":"^7.17.0","http-proxy-middleware":"^1.0.5","@sassoftware/restafedit":"^1.8.3","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.16.0","env-cmd":"^10.1.0","prettier":"^2.1.2","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.3.11_1663690123330_0.4315586131882234","host":"s3://npm-registry-packages"}},"0.3.12":{"name":"@sassoftware/viyaeditmui","version":"0.3.12","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.3.12","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"6fd32f47b82fc288a0889076f505f1bab2056006","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.3.12.tgz","fileCount":67,"integrity":"sha512-J9yIEhcApE6Pg3TRhVwo4R1UG5oOmTn7Yd5kH3VwzSB8bJeDam+cUKGObP+w+Xfuiqw6RjxXCTtf80tFx86c6Q==","signatures":[{"sig":"MEUCIGQAzFtw3+TTURiwJD3/R25voFDvEDqYHjTfAJ43bEdXAiEArFBbNJo6e+6FO2OILq7XssSr5Wl4zfShMaN/gD0OvmQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8394378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKhFlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmquag/+Kbt6F0pz0pkohKMQLHoMVadh5N+qbAIh4OfePdxFAYu5pIAH\r\ni53HQ3MNCMOyhpmPDM6aPsqoLuRIp3RrY8y8+9diIn+N7aqUaG+bXeCnmqUE\r\n5kKgeUSmAMJme3kqGStQsKa2YzbKj553Z5wAgZWR52O1tPz0vjTLqtCYeX9c\r\nkODexKBii730bs3ALueBMEvo7Dt3fjvp2pgu5t8+8PTlNBdVsEbBX85pMmFg\r\nNKoWr/N/uLK99J8VPVFX2swSnb14+ejpc/NKXXT/QqlRo/Po4pVGs0lIttqy\r\nzt4t1Uf6ITyiVfvLXZCXwk7MbM3oNFxGczSY65BI0vuT7g6v1/rpXjhsvwPX\r\nZmBJO7Mv3HyphH47/AhFsjjodXCB3pv0odsWsgmPJctzxX3LrVp4LXC/McK7\r\nZpx4VNysOAzzxozHe7aL7IlQ6gIVL9YmBboWwHNbE8z4aWAeBqZVd6ha66I8\r\nxXt7KARfTgpfPUwszccKBRIH7hadVVevqq6fYmGVrlFRB3aK1QcgSevdcQtP\r\n2VwxkZAGYQVzpEk6MMjnFfJx2k5QDb/GccTkBDP1G9OUSmmjbsKjK54W0pGY\r\nfBP5J1QhLDkXXK0rcAhfRb2wo4Y2dcz2j87iOf3zUe2dqKddTK1QHrKWgykZ\r\nont6XJDW3qCq+eACwXNdzCPImHbPmB0poig=\r\n=pXdj\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","readme":"# A component for Editing Data in SAS Viya \r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b viyaeditmui viyaeditmui\r\ncd viyaeditmui\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run buildapp\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"dbb653e447f22f0af9729f6b5a0cacfbaf517578","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"cross-env  APPLOC=./viyaEditTest  node server --env=./.test.env --docker=Dockerfile","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","testx":"react-scripts test","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && webpack --config=webpack.config.js && rimraf ./viyaEditTest/dist && cp -r dist ./viyaEditTest/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^18.2.0","rimraf":"^3.0.2","shelljs":"^0.8.4","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^6.0.2","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^6.4.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@babel/eslint-parser":"^7.17.0","http-proxy-middleware":"^1.0.5","@sassoftware/restafedit":"^1.8.3","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.16.0","env-cmd":"^10.1.0","prettier":"^2.1.2","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.3.12_1663701348791_0.7960728165774902","host":"s3://npm-registry-packages"}},"0.3.13":{"name":"@sassoftware/viyaeditmui","version":"0.3.13","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.3.13","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"46b77399d1cffeb1aa5caf84d561a633f75db19a","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.3.13.tgz","fileCount":4,"integrity":"sha512-6JzlYxgETX3JeBWmM2xhp6IifU7DV9j5AWAoz8BsqpNoOwSfhMtpl96hAnf8B9w6iikJVbvMUQFVDJa3wxf7/w==","signatures":[{"sig":"MEUCIQDqUaQO+e7XWgaaEDeDen6NWC+iUYFWjp6ay8P9jOR4XAIgb96DtJBfTz06icmDMvS4KKgUSBVsTPCtmEDYSu3Y+qY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4113397,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKhXTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqYNhAAnzsGdRMK/bl8yh/jWrSXZm1XVG3tjz7Y+xoE7/7hhLFs4TAY\r\nWluB52t6ZN3bQi4ivfb+CKNmL6S/2DLzZimH03MUouqnp6CS4sr87fNSwo8G\r\naGBCPe7yLJhPxenzw3HX1Yy/Eq29HMMmb9egw467u5b9dWsHH8JGifAfuxWy\r\nuLr9JlKa/j2+23BRwXKcj+Ck8XdvojpQdfIGAGlU5kyoyO1TdWFq/9F1YPo3\r\nzIIO9zcU6YC9J3ay+9Y23s1dXxWJ+oPaK8rvKUTL2hiN/DLAVYw1CRDglBBX\r\n5INah/vFpQwq8e3YPyTqUFsqpx/rKTewnWND734CfE/BIXXP5AEu0BPmgKH9\r\nsRjjo3/K4qX0oEWsxydFxP7tp5RTz3Fz9gbxgLcAWbOPfo1gVCFAosjeGa9V\r\nk0fy9BC9qKzWM33CY5JA/vCGSJzzMLk0et2sLEkJs6sXw2VmP0srwmAn+kDb\r\n6Tk5qKSask5k0AoCrMB54QU/rPeaeWiAlDwYDi5R0ks1CfkJ8hrLNG8bu19n\r\nSB4tbRgLjC9EWsJyE50UAX2Q+OBHFGSBXQYAzK9BvbUoDBef7zRbpxTK4WsC\r\nsjK6TWK3pS+7IWzG26QFvURkyK7JTLCBgbB8C7uHiObEtEyycDBibF/HVfrZ\r\naNC+GyEariAUvaOprEccm1a5aHLMxbFbKOM=\r\n=ZG+Z\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","gitHead":"44bfa41c8511eb42cf128b31bfd330041ca70e0d","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"cross-env  APPLOC=./viyaEditTest  node server --env=./.test.env --docker=Dockerfile","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","testx":"react-scripts test","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && webpack --config=webpack.config.js && rimraf ./viyaEditTest/dist && cp -r dist ./viyaEditTest/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^18.2.0","rimraf":"^3.0.2","shelljs":"^0.8.4","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^6.0.2","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^6.4.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@babel/eslint-parser":"^7.17.0","http-proxy-middleware":"^1.0.5","@sassoftware/restafedit":"^1.8.3","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.16.0","env-cmd":"^10.1.0","prettier":"^2.1.2","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.3.13_1663702482939_0.8106794278421705","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"@sassoftware/viyaeditmui","version":"0.4.0","author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.4.0","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"35b4e5d9091accc477c0324946f8081df9adaa20","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.4.0.tgz","fileCount":5,"integrity":"sha512-A6Qyetd2DqccuMumFB2SwFm0U4UHBopcVhB8LuzCF/dxXpJGb2Cam3jPrEOFvHwUPkSWUr/Nlt6Uj4wqd9sDBQ==","signatures":[{"sig":"MEYCIQD9UwEcQHWbTwHM1M84SGRv/WpvjP6lahlGIgrXYeNPygIhAJ4QRDQyPFnEkP3aNZqRrpxq44yUD+zssI8peNOHvI1R","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4086908,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKpTOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqHHA//R+PdwpJM5D2ea3ToCEogjplX7ncOqjj3WakFqyOW7QRTcxOz\r\ngZGSpXHO7DHEnei1oOPC1yBjhB4DEZr00Tsfl1KR/v/UeWf9QW4EnaV/6orR\r\nDLRoXNGfXaQQvHD6zb+x6RU+KFGiQotq0BdMLo3AzVRHnuHhI7siSh9UxnKz\r\nWUloDAnmrE5sfUEOFt+TzJUYeHf0DMO/+rI2BoRPPqEVDPjlzy+Ye2Ahh6SK\r\n0JLjuicFyhX9lftnPDMFzjU7iYnnZXStkK/r9eW5SddQfCsvBzSyUzKmXo1C\r\naBGpMTyw2c9jeJRwWjtFeRpXFPTfnZreWpoa1HyVuu38H1tK1mbhVV4e+0r/\r\nx5A1RA7kYmqRHbXuB62UvFkSmU9deaw8Nay5k56+ac3P27g6nWvGLjvrWHP0\r\njxIYgUXBHsB+u8ysAmM+Y6RIgFCm9ZJNrNQ13RXmGEPpU94bMpS5jXu1GE/W\r\nvx8ZXUaaCbcBm/apNve+71iC4NtVe/cLd2EFtMyMB//tp2tB9TZYIfv9VPNh\r\n3cBTdbJB7QIpTp0UJv0M+mQ8bLMylqLpdQIu0uZruFF7dRkQfcXpv60Bg5lo\r\nrVG6J9z0lBmtHmwO7hf1v/vkzDEvr2IOVay5pF/8G7Cshqar45l53Xq9tHwm\r\nBQCXdHNYDx5BzRa6X/JZFSq1zzGiRcX4T/g=\r\n=zwMm\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","gitHead":"94f7a425ac6fc3f69ec839e176884150f7a96161","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"cross-env  APPLOC=./viyaEditTest  node server --env=./.test.env --docker=Dockerfile","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","testx":"react-scripts test","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && webpack --config=webpack.config.js && rimraf ./viyaEditTest/dist && cp -r dist ./viyaEditTest/dist"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^8.3.2","react":"^18.2.0","rimraf":"^3.0.2","shelljs":"^0.8.4","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^6.0.2","@mui/material":"^5.10.5","pretty-format":"^26.2.0","react-scripts":"^5.0.0","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.2","react-router-dom":"^6.4.0","@babel/preset-react":"^7.16.7","@mui/icons-material":"^5.10.3","@babel/eslint-parser":"^7.17.0","http-proxy-middleware":"^1.0.5","@sassoftware/restafedit":"^1.8.3","@sassoftware/viya-appserverjs":"^2.0.2"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.16.0","env-cmd":"^10.1.0","prettier":"^2.1.2","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","prettier-eslint":"^11.0.0","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.30.0","prettier-eslint-cli":"^5.0.0","@babel/eslint-parser":"7.17.0","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.4.0_1663734990505_0.23947346866121055","host":"s3://npm-registry-packages"}},"0.4.2":{"name":"@sassoftware/viyaeditmui","version":"0.4.2","keywords":["Viya","SAS","DataEntry","restafedit","restaf","restaflib","REST API"],"author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.4.2","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"793a90182471445c44e553bfa67e4662280ab275","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.4.2.tgz","fileCount":7,"integrity":"sha512-bQLtN3nX57hZyYpfIKHEs1PaOD5FPWlz7nCTFN1w4pAkO92FvmRP9DVDnQ6do4USGitE5Uz87opxEbGZZaQUFA==","signatures":[{"sig":"MEYCIQDRkK20aTOBn3pemeBJImzvR5epyAOAEsONDk5CODVkegIhAOcKgGr1/MZnLzDMEXNTeMqITuBttIKQ/meS9Gy4Y8E0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5111651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjNeEGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrFQxAAg3huuk0GPe1LZjB+LvkKBUm6VNNNe4QZi28bQTLKP2JDpEns\r\nHqMbOPljlNQOMuAlZ1a89uab2wO36c/sb/oG1TpAfsImBWJeydfIFRI6U9y5\r\n0HkoKmcr//N+s3bGF8lcG2jndONMw5ctUvujHNjeaLETYtt/mZZvT+JfBCIz\r\njsc+Xy8EjT3WDJtSzOeqzkWiBSaudZ0awWm/43Wu+sYlXLcrzwhWjg6bdupq\r\nEDCuU23M0aKmpvU20PICshSKs2VjUJmL+S1sfSVYMs7JzOfyRK/Kh3vzPyh3\r\nMmpAOGfxco8tI07xYCaVTowFMhf0vXITG8xvYi8gWZqMi9vHXCWYam9Wfy+E\r\n2K+N8Hey+AgC0pqj93Wv9pQgY1VBD39HadBpcl3Ft332Vo7aMS0beDc9/b/X\r\n400slPhnyejadIJxud9jdW56gl5VvzLMWex2HmP33p7S6SNViTN7sApwvGNA\r\nhkuMsGzD9F5luczsTrkaCx+7GiksyVbHi8FwaXphjf+dwPIH5xjamCGdiGxx\r\n+wPxukGzLIijscV7EIDxffjQQG7ddtfz6akus9dRIcTxW8rSTNFlb7v5dsx9\r\nfJLwk+Yx+zLSByzzPSWKQ7kHlNfX8lTIijS7wb6vNxs7ZjrYascwmOscqmGi\r\nWa+NqyXbpQ7Gy9EhN0E1RQZ3R2Cmi8IDV5Y=\r\n=tUsM\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","readme":"# A component for Editing Data in SAS Viya \r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b viyaeditmui viyaeditmui\r\ncd viyaeditmui\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run app:build\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"2962a314005a1c0dfb52323943e021a26cc3cf40","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"cross-env  APPLOC=./viyaEditTest node server --env=./.test.env --docker=Dockerfile","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","testx":"react-scripts test","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","buildall":"npm run app:build && npm run lib:build","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && npm run lib:wpack && rimraf ./viyaEditTest/dist && cp -r dist ./viyaEditTest/dist","lib:wpack":"webpack --env p=n --config=webpack.config.js && webpack --env p=y --config=webpack.config.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"resolutions":{"**/fix":"0.0.6","**/@svgr/webpack":"6.2.1","**/underscore.string":"3.3.6"},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^9.0.0","react":"^18.2.0","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^7.4.0","@mui/material":"^5.10.6","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.4","react-router-dom":"^6.4.1","@babel/preset-react":"^7.18.6","@mui/icons-material":"^5.10.6","@babel/eslint-parser":"^7.17.0","@sassoftware/restafedit":"^1.9.3"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.dev.md","devDependencies":{"eslint":"^8.24.0","rimraf":"^3.0.2","env-cmd":"^10.1.0","shelljs":"^0.8.5","prettier":"^2.7.1","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","concurrently":"^7.4.0","@svgr/webpack":"^6.2.1","react-scripts":"^5.0.1","prettier-eslint":"^15.0.1","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.31.8","prettier-eslint-cli":"^7.1.0","@babel/eslint-parser":"7.17.0","http-proxy-middleware":"^2.0.6","@sassoftware/viya-appserverjs":"^2.0.3","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.4.2_1664475398013_0.16878260319353577","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"@sassoftware/viyaeditmui","version":"0.5.0","keywords":["Viya","SAS","DataEntry","restafedit","restaf","restaflib","REST API"],"author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.5.0","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"7be22626f5579b4e6427ca9c8709d46f7e406137","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.5.0.tgz","fileCount":7,"integrity":"sha512-2OvS5hwkAPMt3iVkVOnacfbFPKKcve69MDOI8FCx8Uc1FbFTPSLJ9yni8tBgTFELB9EEyPmCBGb5a6M9zGc/Vg==","signatures":[{"sig":"MEQCIEnt8j8/BeN4Df1tzB3RkcBAK5QK4gn2BR/PmKzY+hadAiBKcERFJOXC9fAGB8HP5OcfnUU5FGLm3J0i/RBTPBJciA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5206780,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjO5ceACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqw0w//a7cpE2PhE3bBsNnUZ6jl8kuMIFB/koQEw8DvzuaN9ZCTgeWt\r\nirSIuRPA6QD6ZVN8Yv5kExhbFA52Q97zC3tfYWTNffWqYuMVkSXOxxk1sN8y\r\nlP7Lsm5t4hB0j99EWUWHr4uJ6X89mOORuaHtRT+onPd1db4PvPb7JDfpWsRm\r\nQwUAxeKWa98hdJqOTjwC49Sm9/ET4oswjodl2tjlO8DuS1hzVRydPusreUrD\r\nAPehukz3/fBYmRJ7Y4wdCP8HYTwJVW+tVi/eWSV2rJqpNzPfU/phfo6sSpmd\r\n3iafCnBKMC6yfKe88Q4mz5AmSPwro6AqbNXw2rxAaSXFknLyojcGZS2/wLey\r\n9IJdQ5jh30vkozeVZ4HtR+KedUB1Xi9jV0lV5aapd2Lv8CXOAzK+/3wX8FaW\r\n5y1YmzMTCKfGpab9u5Y3Ccza0DV9CFMCoeYR6Y0Q3chYgZTKL+nWyn53oqmC\r\nULKH7t7uo82GwJRMGEufyiF8h2aBqn9KOsEQa3kaAcXwDeZ6XuKV286NbPvv\r\ncX1RdvRdEBVzeLeDDVO2pQV6OsE43bLV7l1Ig0g856gR8tz7LA2hs3Ud8ylP\r\nbtR7Yicl86KAF1rYq3hlPrtTw9Io5jIB0eUTH47wzXEoBg/q5zQQt5T1SNn0\r\nWxG/Z6bauE1X1LC+KTHL+0AwC9NXus8HcWw=\r\n=WKZ+\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","readme":"# A component for Editing Data in SAS Viya \r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b viyaeditmui viyaeditmui\r\ncd viyaeditmui\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run app:build\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"30e6c55d780c20578ce615ef19174e7c546074be","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"cross-env  APPLOC=./viyaEditTest node server --env=./.test.env --docker=Dockerfile","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","testx":"react-scripts test","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","buildall":"npm run app:build && npm run lib:build","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && npm run lib:wpack && rimraf ./viyaEditTest/dist && cp -r dist ./viyaEditTest/dist","lib:wpack":"webpack --env p=n --config=webpack.config.js && webpack --env p=y --config=webpack.config.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"resolutions":{"**/fix":"0.0.6","**/@svgr/webpack":"6.2.1","**/underscore.string":"3.3.6"},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^9.0.0","react":"^18.2.0","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^7.4.0","@mui/material":"^5.10.6","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.4","react-router-dom":"^6.4.1","@babel/preset-react":"^7.18.6","@mui/icons-material":"^5.10.6","@babel/eslint-parser":"^7.17.0","@sassoftware/restafedit":"^1.11.0"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.dev.md","devDependencies":{"eslint":"^8.24.0","rimraf":"^3.0.2","env-cmd":"^10.1.0","shelljs":"^0.8.5","prettier":"^2.7.1","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","concurrently":"^7.4.0","@svgr/webpack":"^6.2.1","react-scripts":"^5.0.1","prettier-eslint":"^15.0.1","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.31.8","prettier-eslint-cli":"^7.1.0","@babel/eslint-parser":"7.17.0","http-proxy-middleware":"^2.0.6","@sassoftware/viya-appserverjs":"^2.0.3","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.5.0_1664849694689_0.8627326822445562","host":"s3://npm-registry-packages"}},"0.6.0":{"name":"@sassoftware/viyaeditmui","version":"0.6.0","keywords":["Viya","SAS","DataEntry","restafedit","restaf","restaflib","REST API"],"author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.6.0","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"ba080a5901e571fe24379a06924b5e23858ec172","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.6.0.tgz","fileCount":7,"integrity":"sha512-XlTta6E/OysYTBHvlmFteutaHZSbhSdW4eIXjf6tzSFZIplL07WpA0K3BT/+KMAQlSuYIxFoHaQKvi/MJWOxCg==","signatures":[{"sig":"MEUCIGgQgBwbdbsy/PII1ZGZtCdga0EAgnMP2n+AqeobG6PrAiEAhBflyJKYy9DO3ae0ZbSfGx71ti9BDtGAI4m5Guup+To=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5235765,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjSFLyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqD/g/6Asqdqog4GEhj+GEqdVzLsYpdH21HT0fTT93grurQUPyoK72r\r\nfiZviazOqGs5jJbmmpoQom3Sr1E6li8wn55ISI3lsW0O+VS0dQpyFsuvHRFj\r\nt+t1O/HsgS/JAaBIeSE+lc5D6LmPD8EdBQrbzFIYRcnd6nmEMXL6zCbMr8Pu\r\ndkbUbIqxbbs5jYB0QULZOpHfjIVxmYblhK05wevBdv3VK332+15nZNfoHkny\r\n9G3QQB4EVvtAOOXTC4QXic+booeIj6kx89QhOkYb4b26HzH2BkveRKob0pje\r\nmhpjdMD0oZO1ASgBAjpBx9yw+7IR37+9LBTrpjmnWx6iblD6GyOCBoVe0dDn\r\n4LgU/dr4kgx9gz4Jo1w74KN1lgPF63wqHUA6TQR40AFK/Wm7nwlA7bgUoWmj\r\no4H77X1AaX6ip9Hez3lcKPuE5eodJEdi9BklI2EYZfU+t0V6aUFKTPW+pDcA\r\nMxOrWXRD+ow2pQI4pgn2584B/filoWU5wZ74jV0K0YKPmSdIMw/VXFicKFo5\r\nX5n17KWOXu+pDJnBrlR+a6VTgVal0FWHHFrlCH9MTuYSxtGR0uH6RzmZ46f+\r\nfoBjwwTXgTZiLBSoQnNYXM58CcgXptq/QXb16VIJTG8Pv3q+yUx463dR9y9X\r\nUoKDRKsEP0Gl3UiWAYbW/lNlXeTCI1FZWP4=\r\n=csay\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","readme":"# A component for Editing Data in SAS Viya \r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b viyaeditmui viyaeditmui\r\ncd viyaeditmui\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run app:build\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"c6136cb6e5437cf5a5f6ed7bd62c575789bb4bd9","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"cross-env  APPLOC=./viyaEditTest node server --env=./.test.env --docker=Dockerfile","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","testx":"react-scripts test","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","buildall":"npm run app:build && npm run lib:build","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && npm run lib:wpack && rimraf ./viyaEditTest/dist && cp -r dist ./viyaEditTest/dist","lib:wpack":"webpack --env p=n --config=webpack.config.js && webpack --env p=y --config=webpack.config.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"resolutions":{"**/fix":"0.0.6","**/@svgr/webpack":"6.2.1","**/underscore.string":"3.3.6"},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^9.0.0","react":"^18.2.0","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^7.4.0","@mui/material":"^5.10.6","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.4","react-router-dom":"^6.4.1","@babel/preset-react":"^7.18.6","@mui/icons-material":"^5.10.6","@babel/eslint-parser":"^7.17.0","@sassoftware/restafedit":"^1.12.0"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.dev.md","devDependencies":{"eslint":"^8.24.0","rimraf":"^3.0.2","env-cmd":"^10.1.0","shelljs":"^0.8.5","prettier":"^2.7.1","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","concurrently":"^7.4.0","@svgr/webpack":"^6.2.1","react-scripts":"^5.0.1","prettier-eslint":"^15.0.1","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.31.8","prettier-eslint-cli":"^7.1.0","@babel/eslint-parser":"7.17.0","http-proxy-middleware":"^2.0.6","@sassoftware/viya-appserverjs":"^2.0.3","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.6.0_1665684210299_0.4390120342502941","host":"s3://npm-registry-packages"}},"0.7.0":{"name":"@sassoftware/viyaeditmui","version":"0.7.0","keywords":["Viya","SAS","DataEntry","restafedit","restaf","restaflib","REST API"],"author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.7.0","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"79d18ffd343379f7719435022aae0d11091dc591","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.7.0.tgz","fileCount":7,"integrity":"sha512-BGmn8EB29zj7Ac52PmBeUkPFrQ6nRXIsO3j2wnHw7Hway2s/eNCX5pHxypdkWsNf6pAK603E5KEjn1YBf6TbBg==","signatures":[{"sig":"MEUCIQDkj2y2iOb582t+ceNb/kIheOCfxEJ0Xj75pAwDv6TscwIgFLR/um3tAwIg38J2TvFqDATCyqK3GnB9di7+dVZ614c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5237256,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjSY/yACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrs2Q/+LnikIcdpTpIa5KGsJO40IM/FF7HNQjrIU1+ZIBjWJ5sbrNnx\r\n8SvjxlAF7wC5yN0OpPBEf7HkR1vR1SawLGNjZQbee019YYatzMYRSFSmnlhI\r\nyTTDmQt0dghiQBqLY9aJq5mx4W22rHGTPdy8pC9FbV3lKscf7kFQkbIYErsR\r\nZssrDZH0re6ucTJks3MGDPvUFnWXXJCWxnkkAAFY7WVjZB0tmAv5DfctvzXc\r\nNStdvDm59japY9dKUO9U+AgkbywhjIqcfLto2cK009bPhndp2e0acuLKWBvJ\r\nWrtBiWJqQXLvtq5AwMbWWibt3qibaZpZpa6NpEAsboKQJPw8QNn2jK9rwGzr\r\n2bcviqcZQkch8AIz4LFMMjbJAP9uRJ0q8mXz4HL4J5DAYP7DhSH+OgT1QVhW\r\nXBNEV1v2bYSKw1djMamxuThVkbRAwK545w6l44QY7O76CTUMQyChLtLHguUn\r\nXvrixcpbKnW9kjzAZZLsiPkqhRtoksjkk9sBUvoFU0UNidZGWLtipF9IBUpa\r\nqbse4dSBKnSGAIHKRdCobLC6YU/B3Tcr9X2/SWU6e2aWP9mZCF/ADviMeodI\r\nqPETHV+JXPksExQwK2BQHbuTuYJ2jeKSERulnxM2sdKwq8fFuqgmcHmmImsJ\r\nCJ9UBCafyVYSSUcdpihzQvHHjEmgDvELGuA=\r\n=4xHt\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","readme":"# A component for Editing Data in SAS Viya \r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b viyaeditmui viyaeditmui\r\ncd viyaeditmui\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run app:build\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"1bfd28656cffab3f2bff44a623ca2ac2760618a0","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"cross-env  APPLOC=./viyaEditTest node server --env=./.test.env --docker=Dockerfile","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","testx":"react-scripts test","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","buildall":"npm run app:build && npm run lib:build","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && npm run lib:wpack && rimraf ./viyaEditTest/dist && cp -r dist ./viyaEditTest/dist","lib:wpack":"webpack --env p=n --config=webpack.config.js && webpack --env p=y --config=webpack.config.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"resolutions":{"**/fix":"0.0.6","**/@svgr/webpack":"6.2.1","**/underscore.string":"3.3.6"},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^9.0.0","react":"^18.2.0","deepcopy":"^2.1.0","react-dom":"^18.2.0","concurrently":"^7.4.0","@mui/material":"^5.10.6","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.4","react-router-dom":"^6.4.1","@babel/preset-react":"^7.18.6","@mui/icons-material":"^5.10.6","@babel/eslint-parser":"^7.17.0","@sassoftware/restafedit":"^1.12.0"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.dev.md","devDependencies":{"eslint":"^8.24.0","rimraf":"^3.0.2","env-cmd":"^10.1.0","shelljs":"^0.8.5","prettier":"^2.7.1","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","concurrently":"^7.4.0","@svgr/webpack":"^6.2.1","react-scripts":"^5.0.1","prettier-eslint":"^15.0.1","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.31.8","prettier-eslint-cli":"^7.1.0","@babel/eslint-parser":"7.17.0","http-proxy-middleware":"^2.0.6","@sassoftware/viya-appserverjs":"^2.0.3","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.7.0_1665765362011_0.7542603898540636","host":"s3://npm-registry-packages"}},"0.8.0":{"name":"@sassoftware/viyaeditmui","version":"0.8.0","keywords":["Viya","SAS","DataEntry","restafedit","restaf","restaflib","REST API"],"author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.8.0","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"e575c8fd247f77564dec6a055ab95543166fde1c","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.8.0.tgz","fileCount":7,"integrity":"sha512-FVs9f3ZoJnKYHK2gDnir85t4iDbvdaJtOnLjYf52NC5zQGz+Er5YmFnykISL5G8opSxQcQwb6GgzpelJ60UIkg==","signatures":[{"sig":"MEQCIBtYi2GX7qdGIBkqgrqL7mF4Ah4xHx8h1QBbkB4wniieAiBjwY72eYkZwzv46odlzEq24GAquVozxTg6AOMC58tBUw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5269500,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjTwmZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrTUg/+OBg7looWo3Ib0UhK4CFrciI7WZGPodAJ2Yr/UA7aBUqH2o3E\r\nF6l6oqOx9veaafpH++MvdsfP39JiirdkgFyX0oTq4ASdVN8JFUBu3HFm3d0l\r\nUegrJDdW3O8No+1rfK0WzUpGagCfTft+kQPTZP4gpW+FR7m4Q0gtbvpSRm4y\r\nh+A4LFM+5YyXOe4UVtJpR0oVEK9AdqP3Y3n4FLwqFfd/Io1Us/5bdilaj2NX\r\nt5dNrJl/Xe/3ruTBoKgqza9w9Ht6Rgy5ltOPwyx7bzZ7pyZL0tx/xfyLMVSY\r\neEOhaEWlG2pYsa+AeEPQ9NKPdye41TO/jm23OedrDSLA5TYAl99CtpofxX0a\r\nGJe/fWS/VtIoOmnV+nBXtxwglpHCXsmVRbz7EqHIxU/YV9thkS1tpfuBqyrm\r\nUR9cvYw+hR1M28au5ty9Df2pKAf0wn6M7R0QXaH9kMVq6NEwSha5f6GDWZ9j\r\nTCr0leAwGqliGCuVyzGTgicnsOU6cdQytuQAeI9XqgLWfcaPzrCsg09W5oX7\r\nin/R1Nt8CtzaFkdBvxiAMNSXBprFm3IeA0FDBXPV5DFqfQDmDKj+q43w6dIh\r\nc2i6tLL7yyYl+4dLTadxYAgH+NX5V356S5y/KAVGXIeeqIsiRFR8Iwx+i+rz\r\nKSRsUH1VxkW2jSmBnTAZ0KkrpxmOBNpMrpY=\r\n=x9hl\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","readme":"# A component for Editing Data in SAS Viya \r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b viyaeditmui viyaeditmui\r\ncd viyaeditmui\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run app:build\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"81b01eeede042b98c4e4a757529c0e54c2310186","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"cross-env  APPLOC=./viyaEditTest node server --env=./.test.env --docker=Dockerfile","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","testx":"react-scripts test","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","buildall":"npm run app:build && npm run lib:build","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && npm run lib:wpack && rimraf ./viyaEditTest/dist && cp -r dist ./viyaEditTest/dist","lib:wpack":"webpack --env p=n --config=webpack.config.js && webpack --env p=y --config=webpack.config.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"resolutions":{"**/fix":"0.0.6","**/@svgr/webpack":"6.2.1","**/underscore.string":"3.3.6"},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^9.0.0","react":"^18.2.0","deepcopy":"^2.1.0","react-dom":"^18.2.0","react-uuid":"^1.0.3","concurrently":"^7.4.0","@mui/material":"^5.10.6","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.4","react-router-dom":"^6.4.1","@babel/preset-react":"^7.18.6","@mui/icons-material":"^5.10.6","@babel/eslint-parser":"^7.17.0","@sassoftware/restafedit":"^1.12.0"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.dev.md","devDependencies":{"eslint":"^8.24.0","rimraf":"^3.0.2","env-cmd":"^10.1.0","shelljs":"^0.8.5","prettier":"^2.7.1","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","concurrently":"^7.4.0","@svgr/webpack":"^6.2.1","react-scripts":"^5.0.1","prettier-eslint":"^15.0.1","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.31.8","prettier-eslint-cli":"^7.1.0","@babel/eslint-parser":"7.17.0","http-proxy-middleware":"^2.0.6","@sassoftware/viya-appserverjs":"^2.0.3","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.8.0_1666124184877_0.44126042981668645","host":"s3://npm-registry-packages"}},"0.9.0":{"name":"@sassoftware/viyaeditmui","version":"0.9.0","keywords":["Viya","SAS","DataEntry","restafedit","restaf","restaflib","REST API"],"author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.9.0","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"1cd90e29915cfb05cbafd203f4befd7f92e33b79","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.9.0.tgz","fileCount":7,"integrity":"sha512-VacOpyLpaSaU1KObNPp/JKRwmTlW8Rf6mL7Pf30dsedbs6XcSVmiq9Ao1yCBjStsE9UmMYdkb1WeWjXHoxh9gg==","signatures":[{"sig":"MEUCIQCh0/ukyglUNoAahFao5zEQ6rhEcq8/rjFOQw1jM7fPOAIgdl/I4F1/qno4BvBW2v/snWSuR10rAbgESJt3kfAXL9E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5239576,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjUFR7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpNZw//VkmS6pS2Qgn/To+F2FiELU3zaEX1rMosEdUwze7YErhPxDrX\r\nL4Cv0fwuNWqUMnANEWFFyPROaYw8Y9R1HsSVgcgGOBD0sv4lvTJasfyaOpdS\r\nONOsxYlS3b8VWqf95O1vl9kbnwbCiqp81AJ8TqEYi3KS6O4sZdkNzev+nMe7\r\nzCqPWcOJb0wDnr6kJbDNR0Nj71sBT+wU5EXwXO8lKfkjeCad59TBnVXfkMXF\r\nz3nPkIcPsjGKSkVYmF0SunFb9h4GTpFVOGAEi3S+Guv0o5EU2a6zlcTTgPSi\r\nT8+FIrFUDJYmLeP7+iI5CJmxu+e0raIyvcKVvEtbNXHK5bSInRio3Oj883Lj\r\nV4CDZozaWWOeUgi7hL8+aaT9xPEaOfqA0516aMpKZ/u4mcSJE/YTsktwggJ9\r\ni64vrrjcJ5ZuHyYKabbn1S12KqPYuOlt50z17Nvw6olhBNJg9K/DZNOzOXvM\r\nRBUVYub5e7WWTh3kxf4gNgFSH4OkiIvaB1DLnOyU6tC8b4k3eYdePC/hUcvF\r\n28tGjnxrWWsnhoYf0OZQH9Nh6htGrRsqRQEOWR00Um3K7kSVRAfBe7vdxLpL\r\nl1Y5eaD/Xp2l2YADEe+RkrL7SpdXtAXAOgdaL7NX1sCWHLhcr3npyrGFEMg+\r\nFQKfplCobCfb/xn2Zsphu+AVlfzn31PIJKE=\r\n=Fv2F\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","readme":"# A component for Editing Data in SAS Viya \r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b viyaeditmui viyaeditmui\r\ncd viyaeditmui\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run app:build\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"49a13d6d89633571c99d47bfb28fa09d1c8c79a1","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"cross-env  APPLOC=./viyaEditTest node server --env=./.test.env --docker=Dockerfile","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","testx":"react-scripts test","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","buildall":"npm run app:build && npm run lib:build","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && npm run lib:wpack && rimraf ./viyaEditTest/dist && cp -r dist ./viyaEditTest/dist","lib:wpack":"webpack --env p=n --config=webpack.config.js && webpack --env p=y --config=webpack.config.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"resolutions":{"**/fix":"0.0.6","**/@svgr/webpack":"6.2.1","**/underscore.string":"3.3.6"},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^9.0.0","react":"^18.2.0","deepcopy":"^2.1.0","react-dom":"^18.2.0","react-uuid":"^1.0.3","concurrently":"^7.4.0","@mui/material":"^5.10.6","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.4","react-router-dom":"^6.4.1","@babel/preset-react":"^7.18.6","@mui/icons-material":"^5.10.6","@babel/eslint-parser":"^7.17.0","@sassoftware/restafedit":"^1.12.0"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.dev.md","devDependencies":{"eslint":"^8.24.0","rimraf":"^3.0.2","env-cmd":"^10.1.0","shelljs":"^0.8.5","prettier":"^2.7.1","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","concurrently":"^7.4.0","@svgr/webpack":"^6.2.1","react-scripts":"^5.0.1","prettier-eslint":"^15.0.1","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.31.8","prettier-eslint-cli":"^7.1.0","@babel/eslint-parser":"7.17.0","http-proxy-middleware":"^2.0.6","@sassoftware/viya-appserverjs":"^2.0.3","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.9.0_1666208890800_0.23482744346630136","host":"s3://npm-registry-packages"}},"0.10.0":{"name":"@sassoftware/viyaeditmui","version":"0.10.0","keywords":["Viya","SAS","DataEntry","restafedit","restaf","restaflib","REST API"],"author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.10.0","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"70ac2aab0c9bb30ec3f93f801e193b113260f42f","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.10.0.tgz","fileCount":7,"integrity":"sha512-Uor6ewqknJninaOrgeXLKAzq70zxFBFySdSgIwsH5bWvmxHEp52fSRCNYi+6JVPdX+6dlFtIhu2wZdtc3op5Fw==","signatures":[{"sig":"MEYCIQDSOEZZlyH4Yu9LR51vUkxudb+GUOXmeTqcpihYGzhhiAIhAL7cZcXmr91rq00ee9ap+JZe+fUJ2wyBMeXY7p1DQOA/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5235994,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjV0X5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo/3RAAoUQsCD5NqEyJ6BGwdn+tw6bOGNmiLksqxub0cZd7J+tmTQcC\r\nPsEG/n1FlwyXEGxIdSM7M/XPtyonz2fFd2GmEQJfE6bJwEki7bGyLaAbIRyg\r\n4IRDADX0Bqv/ESVAMJdRe4CDM3CLfblafMho7uwRoHcy14wjzctTWpgco2rL\r\nKKMPs9cZtSKI2AnrcLAGSqhOYVITFyq/RMWjYzPqyluOaiJRgGFIUh/O9qyF\r\npDss9Aj19UCC7s2KFPOOS3z34JnT5gYjpr4OYV2w2bLKb0D1tOEAsZHvwfj0\r\nbazxlijnwQkhGOMljUQLotgpNtAryeqBDlo3DIET4zWuFhFwRTaAVMfVViSU\r\nUgeTkd/1Drc7Fg+l1HSgaFt0Qp6cKc7vgZz8nPRA67wtYXE1mtUfJb5/4Moq\r\nSUkgKkMaUwsvVCHpQnOeMPFYMX/I6NQi/EVYK6S4+WRVU546UtyZGnAi5urY\r\nsnjSJ2zbUP9LtlBbmUiF200Cqk+ku+H6AHlYClFAn/65XPe2hXzGwKX80uqS\r\nJ1YvpVINsbvkLjwQqLpCAjCrPSmrb26k0I/VcRhiTwHrH4Pyf5AEgafa527n\r\njxKY66QZtJJLxNcHwhB33imHT3a7woYM4MZUmdOYejVFOypYAgCymq43eFSg\r\nZ/BMgKGS5V+YheeZD1moleOQE9g4bxNNRNQ=\r\n=ialM\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","readme":"# A component for Editing Data in SAS Viya \r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b viyaeditmui viyaeditmui\r\ncd viyaeditmui\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run app:build\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"6fab1cb56099c1396d0b2e90716a894a72b58e93","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"cross-env  APPLOC=./viyaEditTest node server --env=./.test.env --docker=Dockerfile","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","testx":"react-scripts test","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","buildall":"npm run app:build && npm run lib:build","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && npm run lib:wpack && rimraf ./viyaEditTest/dist && cp -r dist ./viyaEditTest/dist","lib:wpack":"webpack --env p=n --config=webpack.config.js && webpack --env p=y --config=webpack.config.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"resolutions":{"**/fix":"0.0.6","**/@svgr/webpack":"6.2.1","**/underscore.string":"3.3.6"},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^9.0.0","react":"^18.2.0","deepcopy":"^2.1.0","react-dom":"^18.2.0","react-uuid":"^1.0.3","concurrently":"^7.4.0","@mui/material":"^5.10.6","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.4","react-router-dom":"^6.4.1","@babel/preset-react":"^7.18.6","@mui/icons-material":"^5.10.6","@babel/eslint-parser":"^7.17.0"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.dev.md","devDependencies":{"eslint":"^8.24.0","rimraf":"^3.0.2","env-cmd":"^10.1.0","shelljs":"^0.8.5","prettier":"^2.7.1","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","concurrently":"^7.4.0","@svgr/webpack":"^6.2.1","react-scripts":"^5.0.1","prettier-eslint":"^15.0.1","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.31.8","prettier-eslint-cli":"^7.1.0","@babel/eslint-parser":"7.17.0","http-proxy-middleware":"^2.0.6","@sassoftware/viya-appserverjs":"^2.0.3","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.10.0_1666663928908_0.39322225710217285","host":"s3://npm-registry-packages"}},"0.11.0":{"name":"@sassoftware/viyaeditmui","version":"0.11.0","keywords":["Viya","SAS","DataEntry","restafedit","restaf","restaflib","REST API"],"author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/viyaeditmui@0.11.0","maintainers":[{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"dist":{"shasum":"4e3f0de6559289a3b54d9b62cd6d56c6de9ce9ad","tarball":"https://registry.npmjs.org/@sassoftware/viyaeditmui/-/viyaeditmui-0.11.0.tgz","fileCount":7,"integrity":"sha512-+VybpBFvp+og0Na5Ekd4kuloMUYa/JkDJmDMUFZvZHCm8SkYAMpIgdcW7ndxjaarnjJPOUGkvjZb1FpXvlk8Jg==","signatures":[{"sig":"MEYCIQDosVJ6NnfUF4bGevDXPFEmwiHaDtDyikAwqQqbyr50mwIhAPgxNWltvtxKsfmI+XE+wCk0GRi2N28s84xgnPCdWJDf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5262203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjV/K9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo7EA//WTxhRht83HbKMF2m0nwplJu2SUB21HcOPrlOlJ6LH+KX5/0/\r\nXGXYkoaEz/8arZG//8kSUTjC30Citw0W1iocLprPCpKOUslNPfqqEgITlw5s\r\nN659DBrV31RgV+pXbDZowea83XYRShxpWrRDYnOgo0td6Fe968P3f99Zlz9W\r\nX9wBlIP4iVT/go4jAdfhFJmPyrCXbHendJjZU2AYjKN4ZUTD7OXJ+p1EoIBn\r\nrYjFTvR5X2S5+CNDwyOqn3uLF5RmILkp9tfD7daBqF71Pt0Zd0YQ3KMO9daO\r\nUdyVHw65jgAOp7CyTaM7ieP2jjyTGfj34BTOhch6T/J4X1LA3c61LFgWatkV\r\njSfUokCOEX/dE8n57GqABdJe9D5pElfpqw8n4CF23b1/Lnm/sUgEGfg7MPcW\r\nw6yPd9COZJszR54HFUDXoeZTM1Sf0Ffz8HCpoGvpsxiENZDd5P/p18g8BWNL\r\nShFs6Bf0vn1dDTB2SRQTpF+h2oAwJjuxRfXmOmiSf9yowRKaeezuZG4xFSVm\r\nvNUB0xTLrFlG5srW+WStRIbg4ZUzBy9/1l2BkOMCJou8wlfwnjMKAWmcrXnw\r\notKm82EH8ztRTCtpN3RSEKd1iX9tQiUmSB7AGBnjoOKL4ddcyzzlJ2KmnDpj\r\nSQIsjCBmDVT0tIKCNs8Z8xWMTQPBLTLcDeo=\r\n=Uekg\r\n-----END PGP SIGNATURE-----\r\n"},"unpkg":"dist/viyaeditmui.js","readme":"# A component for Editing Data in SAS Viya \r\n\r\n- [Installation](#install)\r\n- [Configuration](#config)\r\n- [Usage](#usage)\r\n- [Modifiying the application](#modify)\r\n- [Configuring CAS](#casconfig)\r\n\r\nThis is an example of editing SAS Tables in a react application. A companion example is [editorapp](https://github.com/sassoftware/restaf-uidemos/tree/editorapp) using HTML and plain old javascript.\r\n\r\nThis particular example used [Version 4 material-ui](https://v4.mui.com/) as the component library. Feel free to use your prefered component library.  \r\n\r\n## Links\r\n\r\nPlease see [this](https://sassoftware.github.io/restaf) for information on **@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit**. These libraries are used in this example.\r\n\r\n## Installation<a name=\"install\"></a>\r\n\r\n```sh\r\ngit clone https://github.com/sassoftware/restaf-uidemos -b viyaeditmui viyaeditmui\r\ncd viyaeditmui\r\nnpm install\r\n```\r\n\r\n## Configuration<a name=\"config\"></a>\r\n\r\n1. The default setting to logon to Viya is defined in the .env file.\r\n2. Make sure to set VIYA_SERVER to the SAS Viya URL\r\n    - An option is to set this as an environment variable and leave the definition as is.\r\n3. See below for configuring CAS server for REST API calls.\r\n4. The appControl is specified in the public/lib/appControl.\r\n5. The sample csv file testdata.csv is included.\r\n6. For demo purposes: Switch between a table view and a form view by setting the VIEWTYPE in the .env file to either *table* or *form* and restart the application\r\n\r\n## Usage<a name=\"#usage\"></a>\r\n\r\n### Building the application\r\n\r\n```sh\r\nnpm run app:build\r\n```\r\n\r\n### Running the application\r\n\r\n```sh\r\nnpm run app\r\n```\r\n\r\n## Modifiying the application<a name=\"modify\"></a>\r\n\r\nYou can use Hot Module Replacement(HMR) to debug any changes.\r\nThe restrictions are:\r\n\r\nThe \"Allowed Origins\" in the CORS setting has to be *\r\n\r\nUse the following command to run in development mode\r\n\r\n```sh\r\nnpm run dev\r\n```\r\n\r\n## Configuring CAS for REST API<a name=\"casconfig\"></a>\r\n\r\n### Notes on CAS env settings\r\n\r\nTo access the CAS APIs your administraor has to set the TKHTTP_CORS_ALLOWED_ORIGINS for CAS as follows\r\n\r\n1. Set your KUBECONFIG\r\n2. Get a copy of the casdeployment custom resource file yaml:\r\nkubectl get casdeployment default -o json > cas.json  \r\n\r\nThis command assumes your casdeployment name is ‘default’. If not default, use your casdeployment name from  the ‘kubectl get casdeployment’ command.\r\n\r\nInstead of directly editing the cas.json file without having a backup copy, you might want to make a copy of the file. This way, if a mistake is made when editing, and CAS won’t re-deploy, you will have a copy of the original you can apply and not have to redo your whole Viya deployment.\r\n\r\n3.If the environment variable TKHTTP_CORS_ALLOWED_ORIGINS does not exist in the json file, add it. If it does, modify it to for your purpose. Here is an example.\r\n\r\nFind the place in the file where the environment variables for containers are specified. For example, find “name”: “SAS_LICENSE”. Here is a snippet.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n```\r\n\r\n4.Add the TKHTTP_CORS_ALLOWED_ORIGINS env var below one of the env variables like so. If you add the new one as the last one, you won’t need the trailing comma of course.\r\n\r\n```js\r\n                \"containers\": [\r\n                    {\r\n                        \"env\": [\r\n                            {\r\n                                \"name\": \"SAS_LICENSE\",\r\n                                \"valueFrom\": {\r\n                                    \"secretKeyRef\": {\r\n                                        \"key\": \"SAS_LICENSE\",\r\n                                        \"name\": \"sas-cas-license\"\r\n                                    }\r\n                                }\r\n                            },\r\n                            {\r\n                                \"name\": \"CONSUL_HTTP_ADDR\",\r\n                                \"value\": https://localhost:8500\r\n                            },\r\n                            {\r\n                                \"name\": \"TKHTTP_CORS_ALLOWED_ORIGINS\",\r\n                                \"value\": https://localhost:5002,https://controller.sas-cas-server-default.cpq.svc.cluster.local:443,https://controller.sas-cas-server-default.cpq.svc.cluster.local:8777\r\n                            },\r\n```\r\n\r\n5.After saving your changes to cas.json, delete the casdeployment.\r\nKubectl delete casdeployment default    (Use your casdeployment name if it is not ‘default’.)\r\n\r\n6.Wait for your casdeployment to go away such that\r\n‘kubectl get casdeployment’ no longer shows your deployment.\r\n\r\n7.Redeploy your casdeployment:\r\nKubectl create -f cas.json\r\n\r\n8.Wait for your casdeployment to come up:\r\nKubectl get casdeployment shows your deployment again.\r\n\r\n---\r\n\r\n## Standard readme from create-react-app\r\n\r\n---\r\n\r\n## Getting Started with Create React App\r\n\r\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\r\n\r\n## Available Scripts\r\n\r\nIn the project directory, you can run:\r\n\r\n### `npm start`\r\n\r\nRuns the app in the development mode.\\\r\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\r\n\r\nThe page will reload when you make changes.\\\r\nYou may also see any lint errors in the console.\r\n\r\n### `npm test`\r\n\r\nLaunches the test runner in the interactive watch mode.\\\r\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\r\n\r\n### `npm run build`\r\n\r\nBuilds the app for production to the `build` folder.\\\r\nIt correctly bundles React in production mode and optimizes the build for the best performance.\r\n\r\nThe build is minified and the filenames include the hashes.\\\r\nYour app is ready to be deployed!\r\n\r\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\r\n\r\n### `npm run eject`\r\n\r\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\r\n\r\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\r\n\r\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\r\n\r\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\r\n\r\n## Learn More\r\n\r\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\r\n\r\nTo learn React, check out the [React documentation](https://reactjs.org/).\r\n\r\n### Code Splitting\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\r\n\r\n### Analyzing the Bundle Size\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\r\n\r\n### Making a Progressive Web App\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\r\n\r\n### Advanced Configuration\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\r\n\r\n### Deployment\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\r\n\r\n### `npm run build` fails to minify\r\n\r\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\r\n","gitHead":"0b066c57cd9d0576efd35ec98c51a6f4974d06fe","scripts":{"dev":"cross-env APPENTRY=/develop APPLOC=./public node server --env=.env --docker=Dockerfile","lint":"eslint . --ext .js --fix","test":"cross-env  APPLOC=./viyaEditTest node server --env=./.test.env --docker=Dockerfile","build":"react-scripts build","eject":"react-scripts eject","start":"react-scripts start","testx":"react-scripts test","app:run":"npm run app:test","lib:pub":"npm publish --tag dev --access public","app:test":"cross-env  APPLOC=./build  node server --env=.env --docker=Dockerfile","buildall":"npm run app:build && npm run lib:build","app:build":"env-cmd --file ./.env react-scripts build","lib:build":"rimraf dist && npm run lib:wpack && rimraf ./viyaEditTest/dist && cp -r dist ./viyaEditTest/dist","lib:wpack":"webpack --env p=n --config=webpack.config.js && webpack --env p=y --config=webpack.config.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"_npmVersion":"8.1.2","description":"Data Entry Example for SAS Viya using React","directories":{},"resolutions":{"**/fix":"0.0.6","**/@svgr/webpack":"6.2.1","**/underscore.string":"3.3.6"},"_nodeVersion":"16.13.1","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"uuid":"^9.0.0","react":"^18.2.0","deepcopy":"^2.1.0","react-dom":"^18.2.0","react-uuid":"^1.0.3","concurrently":"^7.4.0","@mui/material":"^5.10.6","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/x-data-grid":"^5.17.4","react-router-dom":"^6.4.1","@babel/preset-react":"^7.18.6","@mui/icons-material":"^5.10.6","@babel/eslint-parser":"^7.17.0"},"eslintConfig":{"extends":"react-app"},"_hasShrinkwrap":false,"readmeFilename":"README.dev.md","devDependencies":{"eslint":"^8.24.0","rimraf":"^3.0.2","env-cmd":"^10.1.0","shelljs":"^0.8.5","prettier":"^2.7.1","cross-env":"^7.0.3","@babel/core":"^7.11.6","webpack-cli":"^4.10.0","concurrently":"^7.4.0","@svgr/webpack":"^6.2.1","react-scripts":"^5.0.1","prettier-eslint":"^15.0.1","@babel/preset-env":"^7.16.11","eslint-plugin-react":"^7.31.8","prettier-eslint-cli":"^7.1.0","@babel/eslint-parser":"7.17.0","http-proxy-middleware":"^2.0.6","@sassoftware/viya-appserverjs":"^2.0.3","@babel/plugin-transform-spread":"^7.16.7","@babel/plugin-transform-runtime":"^7.17.0","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-proposal-decorators":"^7.17.9","@babel/plugin-proposal-json-strings":"^7.16.7","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-regenerator":"^7.17.9","@babel/plugin-transform-strict-mode":"^7.16.7","@babel/plugin-proposal-function-bind":"^7.16.7","@babel/plugin-proposal-function-sent":"^7.16.7","@babel/plugin-proposal-do-expressions":"^7.16.7","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-numeric-separator":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","@babel/plugin-proposal-pipeline-operator":"^7.17.6","@babel/plugin-proposal-throw-expressions":"^7.16.7","@babel/plugin-proposal-object-rest-spread":"^7.17.3","@babel/plugin-proposal-export-default-from":"^7.16.7","@babel/plugin-proposal-export-namespace-from":"^7.16.7","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7","@babel/plugin-proposal-logical-assignment-operators":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/viyaeditmui_0.11.0_1666708157219_0.554301969864005","host":"s3://npm-registry-packages"}}},"time":{"created":"2022-09-05T21:30:00.993Z","modified":"2026-08-25T15:20:42.347Z","0.0.1":"2022-09-05T21:30:01.228Z","0.0.3":"2022-09-06T15:09:28.190Z","0.0.4":"2022-09-06T15:33:31.898Z","0.0.5":"2022-09-06T15:47:22.827Z","0.0.6":"2022-09-06T15:57:41.363Z","0.0.7":"2022-09-07T01:46:24.660Z","0.0.8":"2022-09-10T19:08:51.819Z","0.0.9":"2022-09-10T20:47:08.388Z","0.0.10":"2022-09-10T21:10:44.245Z","0.1.0":"2022-09-15T03:04:16.948Z","0.2.0":"2022-09-15T16:48:18.337Z","0.2.1":"2022-09-15T17:42:16.529Z","0.2.2":"2022-09-15T21:21:32.232Z","0.2.3":"2022-09-16T02:27:12.667Z","0.3.0":"2022-09-18T15:50:50.567Z","0.3.1":"2022-09-18T19:59:53.095Z","0.3.3":"2022-09-18T21:19:12.422Z","0.3.4":"2022-09-19T03:13:12.756Z","0.3.5":"2022-09-19T03:34:40.655Z","0.3.6":"2022-09-19T16:40:37.181Z","0.3.7":"2022-09-19T17:02:46.755Z","0.3.8":"2022-09-19T18:30:33.587Z","0.3.9":"2022-09-20T01:24:00.269Z","0.3.10":"2022-09-20T01:49:25.755Z","0.3.11":"2022-09-20T16:08:43.595Z","0.3.12":"2022-09-20T19:15:49.063Z","0.3.13":"2022-09-20T19:34:43.183Z","0.4.0":"2022-09-21T04:36:30.741Z","0.4.2":"2022-09-29T18:16:38.273Z","0.5.0":"2022-10-04T02:14:54.835Z","0.6.0":"2022-10-13T18:03:30.537Z","0.7.0":"2022-10-14T16:36:02.280Z","0.8.0":"2022-10-18T20:16:25.139Z","0.9.0":"2022-10-19T19:48:11.003Z","0.10.0":"2022-10-25T02:12:09.226Z","0.11.0":"2022-10-25T14:29:17.520Z"},"bugs":{"url":"https://github.com/sassoftware/restaf/issues"},"author":{"name":"Deva Kumaraswamy","email":"deva.kumar@sas.com"},"license":"Apache-2.0","homepage":"https://github.com/sassoftware/restaf-uidemos/tree/viyaeditmui#readme","repository":{"url":"git+https://github.com/sassoftware/restaf-uidemos.git#viyaeditmui","type":"git"},"description":"Data Entry Example for SAS Viya using React","maintainers":[{"email":"joe.furbee@sas.com","name":"jefurbee"},{"email":"deva.kumar@sas.com","name":"devakumaraswamy"},{"email":"ckedwards24@gmail.com","name":"ckedwards"},{"email":"robert.levey@sas.com","name":"rbtlevey"},{"email":"bradley.morris@sas.com","name":"brmorr"},{"email":"ben.tomlinson@sas.com","name":"bjtomlin"},{"email":"Josh.Lyna@sas.com","name":"jolyna"},{"email":"stephen.mckenna@sas.com","name":"mtlsmc"},{"email":"stephen.gemmell@sas.com","name":"mtlstg"},{"email":"ryan.auld@sas.com","name":"ryanauldsas"},{"email":"kenj55@gmail.com","name":"kenjackson"},{"email":"harry.moore@sas.com","name":"mtlhmo"},{"email":"martin.coutts@sas.com","name":"martin-coutts-sas"},{"email":"robert.macfarlane@sas.com","name":"romacf"},{"email":"timothy.crider@sas.com","name":"timothy.crider-sas"},{"email":"Daniel.Arthur@sas.com","name":"daarth"},{"email":"ewsken_sas@outlook.com","name":"ewsken_sas"},{"email":"Bryan.Behrenshausen@sas.com","name":"semioticrobotic"},{"email":"barry.peddycord@sas.com","name":"barry-sas"},{"email":"nurb.lampert@sas.com","name":"nurb.lampert"},{"email":"craig.mckay@sas.com","name":"mtlcmc"},{"email":"naji.shehab@sas.com","name":"mtlnsh"},{"email":"tom.mceachan@sas.com","name":"tom-mceachan_sasinst"}],"readme":"","readmeFilename":""}