@galadrim/galadmin 0.1.31 → 0.1.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/dist/tsconfig.tsbuildinfo +1 -1
  2. package/package.json +1 -1
  3. package/src/front/build/asset-manifest.json +6 -6
  4. package/src/front/build/index.html +1 -1
  5. package/src/front/build/static/css/{main.6cc4d508.chunk.css → main.4e416844.chunk.css} +2 -2
  6. package/src/front/build/static/css/main.4e416844.chunk.css.map +1 -0
  7. package/src/front/build/static/js/main.4ce5340d.chunk.js +2 -0
  8. package/src/front/build/static/js/main.4ce5340d.chunk.js.map +1 -0
  9. package/src/front/node_modules/.cache/.eslintcache +1 -1
  10. package/src/front/node_modules/.cache/babel-loader/{a442b07ccfc975b334314fdb76b50b42.json → 04b67a528af96a9bceeadf265dfb56d2.json} +1 -1
  11. package/src/front/node_modules/.cache/babel-loader/cdf89c046963294c4cbf7482c8706cbc.json +1 -0
  12. package/src/front/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/c3/3e/f2b5b90044b7bdbb4cff67b2c09e24bb506274240d920de24bb4b678f3f00b80f7e9f0900cd1de883484031488d8603e97ea6b4e39a9c6ab5160353d3be9 +1 -0
  13. package/src/front/node_modules/.cache/terser-webpack-plugin/index-v5/6c/19/fe86ba5d7c4062f185480ad22dd3b9fae9b30149827224339f9a633a9a94 +1 -1
  14. package/src/front/node_modules/.cache/terser-webpack-plugin/index-v5/87/08/421190bfe6e50816e059da6c33526c9943732ef856ebd2752d0cbfb4a852 +1 -1
  15. package/src/front/node_modules/.cache/terser-webpack-plugin/index-v5/{b3/58/c0bc4ec69302d38ceac243da47ee7549ca88af7e0c89962c82ad9b304bbb → c2/e5/5451dd89bb0fd48f988bf27c7ee614c66eb91f7085c5b5c8cb33048d0c32} +1 -1
  16. package/src/front/node_modules/.package-lock.json +50 -58
  17. package/src/front/node_modules/@babel/compat-data/README.md +1 -1
  18. package/src/front/node_modules/@babel/compat-data/data/corejs2-built-ins.json +146 -0
  19. package/src/front/node_modules/@babel/compat-data/data/native-modules.json +1 -1
  20. package/src/front/node_modules/@babel/compat-data/data/plugin-bugfixes.json +15 -0
  21. package/src/front/node_modules/@babel/compat-data/data/plugins.json +68 -9
  22. package/src/front/node_modules/@babel/compat-data/package.json +4 -4
  23. package/src/front/node_modules/@babel/core/README.md +1 -1
  24. package/src/front/node_modules/@babel/core/lib/config/config-chain.js +1 -3
  25. package/src/front/node_modules/@babel/core/lib/config/config-chain.js.map +1 -1
  26. package/src/front/node_modules/@babel/core/lib/config/files/module-types.js +5 -5
  27. package/src/front/node_modules/@babel/core/lib/config/files/module-types.js.map +1 -1
  28. package/src/front/node_modules/@babel/core/lib/config/full.js +2 -3
  29. package/src/front/node_modules/@babel/core/lib/config/full.js.map +1 -1
  30. package/src/front/node_modules/@babel/core/lib/config/helpers/config-api.js +4 -4
  31. package/src/front/node_modules/@babel/core/lib/config/helpers/config-api.js.map +1 -1
  32. package/src/front/node_modules/@babel/core/lib/config/validation/option-assertions.js +1 -3
  33. package/src/front/node_modules/@babel/core/lib/config/validation/option-assertions.js.map +1 -1
  34. package/src/front/node_modules/@babel/core/lib/config/validation/plugins.js +5 -2
  35. package/src/front/node_modules/@babel/core/lib/config/validation/plugins.js.map +1 -1
  36. package/src/front/node_modules/@babel/core/lib/errors/rewrite-stack-trace.js +2 -1
  37. package/src/front/node_modules/@babel/core/lib/errors/rewrite-stack-trace.js.map +1 -1
  38. package/src/front/node_modules/@babel/core/lib/index.js +1 -1
  39. package/src/front/node_modules/@babel/core/lib/transformation/file/file.js +5 -5
  40. package/src/front/node_modules/@babel/core/lib/transformation/file/file.js.map +1 -1
  41. package/src/front/node_modules/@babel/core/package.json +10 -10
  42. package/src/front/node_modules/@babel/generator/README.md +1 -1
  43. package/src/front/node_modules/@babel/generator/lib/buffer.js +6 -6
  44. package/src/front/node_modules/@babel/generator/lib/buffer.js.map +1 -1
  45. package/src/front/node_modules/@babel/generator/lib/generators/types.js +1 -1
  46. package/src/front/node_modules/@babel/generator/lib/generators/types.js.map +1 -1
  47. package/src/front/node_modules/@babel/generator/lib/printer.js +4 -4
  48. package/src/front/node_modules/@babel/generator/lib/printer.js.map +1 -1
  49. package/src/front/node_modules/@babel/generator/package.json +4 -3
  50. package/src/front/node_modules/@babel/helper-compilation-targets/README.md +1 -1
  51. package/src/front/node_modules/@babel/helper-compilation-targets/lib/debug.js +2 -2
  52. package/src/front/node_modules/@babel/helper-compilation-targets/lib/debug.js.map +1 -1
  53. package/src/front/node_modules/@babel/helper-compilation-targets/lib/filter-items.js +5 -9
  54. package/src/front/node_modules/@babel/helper-compilation-targets/lib/filter-items.js.map +1 -1
  55. package/src/front/node_modules/@babel/helper-compilation-targets/lib/index.js +8 -4
  56. package/src/front/node_modules/@babel/helper-compilation-targets/lib/index.js.map +1 -1
  57. package/src/front/node_modules/@babel/helper-compilation-targets/lib/options.js +2 -1
  58. package/src/front/node_modules/@babel/helper-compilation-targets/lib/options.js.map +1 -1
  59. package/src/front/node_modules/@babel/helper-compilation-targets/lib/pretty.js +2 -2
  60. package/src/front/node_modules/@babel/helper-compilation-targets/lib/pretty.js.map +1 -1
  61. package/src/front/node_modules/@babel/helper-compilation-targets/lib/targets.js +1 -1
  62. package/src/front/node_modules/@babel/helper-compilation-targets/lib/targets.js.map +1 -1
  63. package/src/front/node_modules/@babel/helper-compilation-targets/lib/utils.js +3 -3
  64. package/src/front/node_modules/@babel/helper-compilation-targets/lib/utils.js.map +1 -1
  65. package/src/front/node_modules/@babel/helper-compilation-targets/package.json +6 -6
  66. package/src/front/node_modules/@babel/helper-split-export-declaration/README.md +1 -1
  67. package/src/front/node_modules/@babel/helper-split-export-declaration/lib/index.js +5 -1
  68. package/src/front/node_modules/@babel/helper-split-export-declaration/lib/index.js.map +1 -1
  69. package/src/front/node_modules/@babel/helper-split-export-declaration/package.json +1 -1
  70. package/src/front/node_modules/@babel/helpers/README.md +1 -1
  71. package/src/front/node_modules/@babel/helpers/lib/helpers/dispose.js +9 -13
  72. package/src/front/node_modules/@babel/helpers/lib/helpers/dispose.js.map +1 -1
  73. package/src/front/node_modules/@babel/helpers/lib/helpers/using.js +1 -1
  74. package/src/front/node_modules/@babel/helpers/lib/helpers/using.js.map +1 -1
  75. package/src/front/node_modules/@babel/helpers/lib/helpers-generated.js +2 -2
  76. package/src/front/node_modules/@babel/helpers/lib/helpers-generated.js.map +1 -1
  77. package/src/front/node_modules/@babel/helpers/package.json +3 -3
  78. package/src/front/node_modules/@babel/parser/README.md +1 -1
  79. package/src/front/node_modules/@babel/parser/lib/index.js +1 -3
  80. package/src/front/node_modules/@babel/parser/lib/index.js.map +1 -1
  81. package/src/front/node_modules/@babel/parser/lib/parser/statement.js +1 -3
  82. package/src/front/node_modules/@babel/parser/lib/parser/statement.js.map +1 -1
  83. package/src/front/node_modules/@babel/parser/lib/plugins/flow/index.js.map +1 -1
  84. package/src/front/node_modules/@babel/parser/package.json +2 -2
  85. package/src/front/node_modules/@babel/traverse/README.md +1 -1
  86. package/src/front/node_modules/@babel/traverse/lib/path/lib/virtual-types.js.map +1 -1
  87. package/src/front/node_modules/@babel/traverse/lib/scope/index.js +21 -9
  88. package/src/front/node_modules/@babel/traverse/lib/scope/index.js.map +1 -1
  89. package/src/front/node_modules/@babel/traverse/lib/types.js.map +1 -1
  90. package/src/front/node_modules/@babel/traverse/lib/visitors.js +22 -15
  91. package/src/front/node_modules/@babel/traverse/lib/visitors.js.map +1 -1
  92. package/src/front/node_modules/@babel/traverse/package.json +4 -4
  93. package/src/front/node_modules/{@babel/helper-compilation-targets/node_modules/semver → @nicolo-ribaudo/semver-v6}/README.md +13 -2
  94. package/src/front/node_modules/{@babel/core/node_modules/semver → @nicolo-ribaudo/semver-v6}/package.json +4 -4
  95. package/src/front/node_modules/{@babel/helper-compilation-targets/node_modules/semver → @nicolo-ribaudo/semver-v6}/semver.js +40 -27
  96. package/src/front/node_modules/typescript/lib/tsc.js +16 -19
  97. package/src/front/node_modules/typescript/lib/tsserver.js +22 -24
  98. package/src/front/node_modules/typescript/lib/tsserverlibrary.d.ts +0 -1
  99. package/src/front/node_modules/typescript/lib/tsserverlibrary.js +22 -24
  100. package/src/front/node_modules/typescript/lib/typescript.d.ts +0 -1
  101. package/src/front/node_modules/typescript/lib/typescript.js +22 -24
  102. package/src/front/node_modules/typescript/lib/typingsInstaller.js +1 -1
  103. package/src/front/node_modules/typescript/package.json +1 -1
  104. package/src/front/package-lock.json +97 -112
  105. package/src/front/src/App.css +69 -30
  106. package/src/front/src/components/Input.js +6 -0
  107. package/src/front/src/components/Sidebar.js +2 -2
  108. package/src/front/build/static/css/main.6cc4d508.chunk.css.map +0 -1
  109. package/src/front/build/static/js/main.405f6f90.chunk.js +0 -2
  110. package/src/front/build/static/js/main.405f6f90.chunk.js.map +0 -1
  111. package/src/front/node_modules/.cache/babel-loader/964c56108bc43622244156806407d3d8.json +0 -1
  112. package/src/front/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/00/35/f206f48274d030c7a1e2457996323f694ca72c9ec94bddb8ecc8f37aa4632918182acf152491e9b475b95f567493b47644434cdb77f795b23c0b8392aaf7 +0 -1
  113. package/src/front/node_modules/@babel/core/node_modules/semver/README.md +0 -443
  114. package/src/front/node_modules/@babel/core/node_modules/semver/semver.js +0 -1596
  115. package/src/front/node_modules/@babel/helper-compilation-targets/node_modules/semver/CHANGELOG.md +0 -70
  116. package/src/front/node_modules/@babel/helper-compilation-targets/node_modules/semver/LICENSE +0 -15
  117. package/src/front/node_modules/@babel/helper-compilation-targets/node_modules/semver/bin/semver.js +0 -174
  118. package/src/front/node_modules/@babel/helper-compilation-targets/node_modules/semver/package.json +0 -28
  119. package/src/front/node_modules/@babel/helper-compilation-targets/node_modules/semver/range.bnf +0 -16
  120. /package/src/front/node_modules/{@babel/core/node_modules/semver → @nicolo-ribaudo/semver-v6}/CHANGELOG.md +0 -0
  121. /package/src/front/node_modules/{@babel/core/node_modules/semver → @nicolo-ribaudo/semver-v6}/LICENSE +0 -0
  122. /package/src/front/node_modules/{@babel/core/node_modules/semver → @nicolo-ribaudo/semver-v6}/bin/semver.js +0 -0
  123. /package/src/front/node_modules/{@babel/core/node_modules/semver → @nicolo-ribaudo/semver-v6}/range.bnf +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack://src/index.css","webpack://src/App.css"],"names":[],"mappings":"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AgB,CAChB,iBAAkB,CAClB,wBACD,CAEA,kKACC,wBAAyB,CAEzB,iBAAkB,CAElB,wBAAiB,CACjB,oCAAqC,CACrC,aAAc,CACd,cAAe,CACf,UAAW,CACX,cAAe,CACf,qBACD,CAEA,WACC,YACD,CAEA,6CACC,YAAa,CACb,kBACD,CAEA,oBACC,YAAa,CACb,YACD,CAEA,MACC,qBACD,CAEA,2DACC,WAAY,CACZ,eAAgB,CAChB,4BACD,CAEA,SACC,WAAY,CACZ,mBACD,CAEA,2BACC,eAAgB,CAChB,gBACD,CAEA,WACC,aACD,CAEA,qEACC,QACD,CAEA,YACC,yBAA0B,CAC1B,eAAgB,CAChB,iBACD,CAEA,aACC,WAAY,CACZ,qBAAsB,CACtB,wBAAyB,CACzB,aAAc,CACd,cAAiB,CACjB,YAAa,CACb,6BAA8B,CAC9B,wBAAyB,CACzB,kBAAmB,CACnB,cAAe,CACf,iEAAqE,CACrE,oBACD,CAEA,WACC,YAAa,CACb,kBACD,CAEA,iBACC,uCAA8C,CAC9C,0CAAiD,CACjD,aAAc,CACd,cAAiB,CACjB,WAAY,CACZ,kBAAmB,CACnB,YACD,CAEA,+BACC,UAAY,CACZ,cAAe,CACf,qBAAuB,CACvB,cAAe,CACf,WAAY,CACZ,kBAAmB,CACnB,YAAa,CACb,UAAW,CACX,sBACD,CAEA,YACC,WAAY,CACZ,wBAAyB,CACzB,SACD,CAEA,kBACC,wBACD,CAEA,yCACC,wBACD,CAEA,wBACC,iBAAkB,CAClB,oBACD,CAEA,sBACC,iBAAkB,CAClB,SAAU,CACV,QAAS,CACT,SAAU,CACV,yCACD,CAEA,aACC,QACD,CAEA,KACC,uBACD,CAEA,QACC,cAAe,CACf,eAAiB,CACjB,+BAAgC,CAChC,aAAc,CACd,cAAe,CACf,gBAAiB,CACjB,eAAgB,CAChB,iBAAkB,CAClB,eAAgB,CAChB,kBAAmB,CACnB,qBACD,CAEA,sCACC,sBAAe,CAAf,cACD,CAEA,cACC,eACD,CAEA,YACC,aAAc,CACd,eACD,CAEA,YACC,iBACD,CAEA,WACC,aACD,CAEA,oBACC,iBACD,CAEA,WAC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","file":"main.6cc4d508.chunk.css","sourcesContent":["body {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n","@font-face {\n\tfont-family: 'gt-eesti-medium';\n\tsrc: url(\"./fonts/gt-eesti-medium.woff\") format(\"woff\");\n}\n\n@font-face {\n\tfont-family: 'gt-eesti-regular';\n\tsrc: url(\"./fonts/gt-eesti-regular.woff\") format(\"woff\");\n}\n\n@font-face {\n\tfont-family: 'Cubano';\n\tsrc: url(\"./fonts/cubano.woff\") format(\"woff\");\n}\n\n#body {\n\tfont-family: gt-eesti-regular, \"Helvetica Neue\", Helvetica, sans-serif;\n\tmargin: 0px;\n\tdisplay: flex;\n\tflex-direction: row;\n}\n\n.backgroundBlue {\n\tbackground-color: #F2F6FA;\n}\n\n.noData {\n\tbackground-color: #F2F6FA;\n\tcolor: #8798AC;\n\tpadding: 30px;\n\ttext-align: center;\n}\n\n.fileInputContent {\n\tbackground-color: #F2F6FA;\n\tcolor: #8798AC;\n\tpadding: 10px;\n\tbox-shadow: inset 0 1px 1px 0 #C3CCD7;\n\tborder-color: #ADB9C6;\n\tborder-radius: 2px;\n\tborder-style: solid;\n\tborder-width: 1px;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n.fileInputContainer form {\n\tmargin-bottom: 0px;\n}\n\n.clickToSelectFile {\n\tpadding: 30px;\n\ttext-align: center;\n\tdisplay: block;\n}\n\na, .actionButton {\n\tcolor: #3ea065;\n\ttext-decoration: none;\n\tcursor: pointer;\n\tdisplay: inline;\n}\n\ninput, select, button {\n\tfont-family: inherit;\n}\n\n:focus {\n\toutline: 0;\n}\n\n.view {\n\theight: 100vh;\n\tflex-grow: 1;\n\toverflow-y: auto;\n}\n\n.sidebar {\n\tbackground-color: #425060;\n\theight: 100vh;\n\tbox-sizing: border-box;\n\tpadding: 15px;\n\twidth: 260px;\n\tmin-width: 260px;\n\toverflow-y: auto;\n\tpadding-bottom: 60px;\n}\n\n.sidebarItem {\n\tpadding: 20px;\n\tcolor: #ADB9C6;\n\tcursor: pointer;\n\twhite-space: nowrap;\n\tposition: relative;\n}\n\n.sidebarItem:hover {\n\tcolor: white;\n}\n\n.sidebarItem.active {\n\tcolor: white;\n\tbackground-color: #536579;\n}\n\n[data-subview-index] {\n\tfont-size: 13px;\n\tpadding: 10px 0px 10px 30px;\n\tcolor: #ADB9C6 !important;\n}\n\n.subviewsSeparator {\n\tpadding-top: 20px;\n}\n\n[data-subview-index]:hover, [data-subview-index].active {\n\tcolor: white !important;\n}\n\n.sidebarIcon {\n\twidth: 20px;\n\tcolor: #647A93;\n\tmargin-right: 10px;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.sidebarLabel {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\ntable {\n\tborder-collapse: collapse;\n\twidth: 100%;\n}\n\n.record {\n\theight: 47px;\n}\n\n.viewHeaderActions {\n\tdisplay: flex;\n}\n\ntable thead th {\n\ttext-align: left;\n\tbackground-color: #303B47;\n\tcolor: #ADB9C6;\n\tpadding: 15px;\n\tfont-size: 12px;\n\tfont-weight: 500;\n\ttext-transform: uppercase;\n\tletter-spacing: .83px;\n\theight: 43px;\n}\n\ntable tbody td {\n\tpadding: 15px;\n\ttransition: all .1s ease-out;\n\tcolor: #425060;\n}\n\ntable tbody tr:nth-child(2n) td {\n\tbackground-color: #F2F6FA;\n}\n\ntable tbody tr:hover:not(.nonClickableRow) td {\n\tbackground: #647A93;\n\tcolor: white;\n\tcursor: pointer;\n}\n\ntr:hover a {\n\tcolor: white;\n}\n\n.panelTable tr:hover a {\n\tcolor: #3ea065;\n}\n\n.viewHeader {\n\tbox-shadow: 0 1px 0 rgba(0, 0, 0, .1);\n\tpadding: 20px 30px;\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\theight: 70px;\n\tbox-sizing: border-box;\n\tbackground: white;\n}\n\n.panelHeader {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tmargin-bottom: 25px;\n\tbox-sizing: border-box;\n}\n\n.viewTitle, .panelTitle {\n\tfont-family: Cubano, \"Helvetica Neue\", Helvetica, sans-serif;\n\tfont-size: 20px;\n\ttext-transform: uppercase;\n}\n\n.showContainer {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex: 1;\n}\n\n.detailsPanel {\n\tflex: 2;\n}\n\n.recordViewPanels {\n\tmargin-left: 20px;\n\tflex: 1;\n}\n\n.panelTitle {\n\tmargin-bottom: 25px;\n}\n\n.panel {\n\tborder-radius: 4px;\n\tbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\n\tbackground-color: #fff;\n\tpadding: 15px;\n\tposition: relative;\n\tmargin-bottom: 20px;\n\toverflow: auto;\n}\n\n.sidebarTitle {\n\tcolor: white;\n\ttext-align: center;\n\tfont-weight: 500;\n\tfont-size: 22px;\n\tmargin-top: 30px;\n\tmargin-bottom: 10px;\n}\n\n.sidebarSubtitle {\n\tcolor: white;\n\ttext-align: center;\n\tmargin-bottom: 40px;\n\tcolor: #ADB9C6;\n}\n\n.sidebarBranding {\n\tposition: fixed;\n\tbottom: 0px;\n\twidth: 260px;\n\ttext-align: center;\n\tcolor: #647A93;\n\theight: 50px;\n\tline-height: 50px;\n\tleft: 0px;\n\tfont-size: 14px;\n\t/* z-index: 0; */\n}\n\n.button, .button:hover, .button:active, .swal-button, .swal-button:hover, .swal-button:active {\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tborder-radius: 2px;\n\tpadding: 10px 22px;\n\tbackground-color: #F2F6FA;\n\tcolor: #536579;\n\tfont-size: 14px;\n\tmargin-right: 8px;\n}\n\n.button.openBulkActionsButton {\n\tpadding: 7px 22px;\n\tmargin-left: 16px;\n}\n\n.smallButton, .smallButton:hover {\n\tpadding: 5px 22px;\n}\n\n.swal-button, .swal-button:hover, .swal-button:active {\n\tmargin-right: 0px;\n}\n\n.swal-button--danger, .swal-button--danger:hover, .swal-button--danger:active {\n\tbackground-color: #e64942;\n\tcolor: white;\n}\n\n.swal-button:focus {\n\tbox-shadow: none;\n}\n\n.button.loading {\n\topacity: 0.5;\n\tcursor: default;\n}\n\n.downloadButton, .downloadPanelButton {\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tborder-radius: 2px;\n\tfont-size: 12px;\n\tcolor: #647A93;\n\tbackground-color: #F2F6FA;\n\twidth: 30px;\n\theight: 30px;\n\ttext-align: center;\n\tjustify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tline-height: 30px;\n\tmargin-left: 5px;\n}\n\n.plusButton {\n\tmargin-left: 5px;\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tborder-radius: 2px;\n\tfont-size: 14px;\n\tbackground: #45B271;\n\tcolor: white;\n\twidth: 30px;\n\theight: 30px;\n\ttext-align: center;\n\tjustify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tline-height: 30px;\n}\n\n.alternativePlusButton {\n\tmargin-left: 5px;\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tborder-radius: 2px;\n\tfont-size: 14px;\n\tbackground: #45B271;\n\tcolor: white;\n\tpadding: 0px 10px;\n\theight: 30px;\n\ttext-align: center;\n\tjustify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tline-height: 30px;\n}\n\n.greenButton, .greenButton:hover, .greenButton:active {\n\tbackground: #45B271;\n\tcolor: white;\n}\n\n.paddedView {\n\tpadding: 30px;\n}\n\n.formElement {\n\tmargin-bottom: 30px;\n}\n\n.showRecordField {\n\tmargin-bottom: 20px;\n}\n\n.formLabel, .filterLabel {\n\tcolor: #8798AC;\n\tfont-size: 13px;\n\tfont-weight: 500;\n\tmargin-bottom: 6px;\n\ttext-transform: uppercase;\n}\n\n.formInput input, .formInput select, .formInput textarea, .editLocalesTable input, .editLocalesTable textarea, .ql-editor, .addFilterPopup input, .addFilterPopup select {\n\tbackground-color: #F2F6FA;\n\tborder-color: #ADB9C6;\n\tborder-radius: 2px;\n\tborder-style: solid;\n\tborder-width: 1px;\n\tbox-shadow: inset 0 1px 1px 0 #C3CCD7;\n\tcolor: #536579;\n\tpadding: 0 15px;\n\twidth: 100%;\n\tfont-size: 14px;\n\tbox-sizing: border-box;\n}\n\n.ql-editor {\n\tpadding: 15px;\n}\n\n.addFilterPopup input, .addFilterPopup select {\n\tpadding: 10px;\n\tmargin-bottom: 10px;\n}\n\n.formInput textarea {\n\theight: 150px;\n\tpadding: 15px;\n}\n\ninput {\n\tbox-sizing: border-box;\n}\n\n.formInput input, .formInput select, .editLocalesTable input {\n\theight: 38px;\n\tmin-height: 38px;\n\ttransition: all 250ms ease-out;\n}\n\ntextarea {\n\tresize: none;\n\tfont-family: inherit;\n}\n\n.editLocalesTable textarea {\n\tline-height: 1.7;\n\tpadding: 5px 15px;\n}\n\n.formValue {\n\tcolor: #607083;\n}\n\n.formValue p, .formValue ul, .formValue h2, .formValue h1, .formValue h3 {\n\tmargin: 0;\n}\n\n.scrollable {\n\theight: calc(100vh - 40px);\n\toverflow-y: auto;\n\tposition: relative;\n}\n\n.tableFooter {\n\theight: 40px;\n\tbox-sizing: border-box;\n\tbackground-color: #303B47;\n\tcolor: #ADB9C6;\n\tpadding: 0px 15px;\n\tdisplay: flex;\n\tjustify-content: space-between;\n\ttext-transform: uppercase;\n\talign-items: center;\n\tfont-size: 12px;\n\tfont-family: gt-eesti-medium, \"Helvetica Neue\", Helvetica, sans-serif;\n\tletter-spacing: .83px;\n}\n\n.paginator {\n\tdisplay: flex;\n\tflex-direction: row;\n}\n\n.paginatorNumber {\n\tborder-top: 1px solid rgba(255, 255, 255, 0.2);\n\tborder-bottom: 1px solid rgba(255, 255, 255, 0.2);\n\tcolor: #ADB9C6;\n\tpadding: 0px 10px;\n\theight: 20px;\n\talign-items: center;\n\tdisplay: flex;\n}\n\n.paginatorLeft, .paginatorRight {\n\topacity: 0.2;\n\tcursor: pointer;\n\tborder: 1px solid white;\n\tfont-size: 13px;\n\theight: 20px;\n\talign-items: center;\n\tdisplay: flex;\n\twidth: 20px;\n\tjustify-content: center;\n}\n\n.fakeRecord {\n\theight: 10px;\n\tbackground-color: #F2F6FA;\n\twidth: 80%;\n}\n\nthead .fakeRecord {\n\tbackground-color: #ADB9C6;\n}\n\ntable tbody tr:nth-child(2n) .fakeRecord {\n\tbackground-color: #D0D8E0;\n}\n\n.actionButtonsContainer {\n\tposition: relative;\n\tdisplay: inline-block;\n}\n\n.actions, .bulkActions {\n\tposition: absolute;\n\tright: 8px;\n\ttop: 37px;\n\tz-index: 1;\n\tbox-shadow: 0 2px 40px 0 rgba(49, 47, 51, .3);\n}\n\n.bulkActions {\n\ttop: 31px;\n}\n\n.red {\n\tcolor: #FB6669 !important;\n}\n\n.action {\n\tcursor: pointer;\n\tbackground: white;\n\tborder-bottom: 1px solid #F2F6FA;\n\tcolor: #647A93;\n\tfont-size: 14px;\n\tline-height: 14px;\n\tmin-width: 150px;\n\tpadding: 10px 12px;\n\ttext-align: left;\n\twhite-space: nowrap;\n\tbox-sizing: border-box;\n}\n\n.swal-overlay--show-modal .swal-modal {\n\tanimation: none;\n}\n\n.swal-overlay {\n\ttransition: none;\n}\n\n.swal-title {\n\tcolor: #607083;\n\tfont-weight: normal;\n}\n\n.swal-modal {\n\tborder-radius: 2px;\n}\n\n.swal-text {\n\tcolor: #8798AC;\n}\n\n.searchBarContainer {\n\tposition: relative;\n}\n\n.searchBar {\n\tbackground-color: #F2F6FA;\n\tborder-color: #ADB9C6;\n\tborder-radius: 2px;\n\tborder-style: solid;\n\tborder-width: 1px;\n\tcolor: #536579;\n\tdisplay: flex;\n\theight: 30px;\n\toverflow: hidden;\n\twidth: 430px;\n\tbox-shadow: inset 0 1px 1px 0 #C3CCD7;\n\tpadding-left: 30px;\n}\n\n.searchBarIcon {\n\tposition: absolute;\n\tcolor: #647A93;\n\ttop: 0px;\n\tleft: 0px;\n\theight: 30px;\n\tdisplay: flex;\n\twidth: 30px;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.map {\n\theight: 300px;\n}\n\n.galleryPicture {\n\twidth: calc(50% - 4px);\n\tmargin-bottom: 8px;\n\tposition: relative;\n\tdisplay: inline-block;\n}\n\n.deleteIcon, .deleteFile {\n\tcursor: pointer;\n\tborder-radius: 2px;\n\tfont-size: 14px;\n\tbackground-color: #F2F6FA;\n\tcolor: #536579;\n\ttext-align: center;\n\tjustify-content: center;\n\tdisplay: none;\n\talign-items: center;\n\twidth: 30px;\n\theight: 30px;\n\tline-height: 30px;\n}\n\n.galleryPicture .deleteIcon {\n\tposition: absolute;\n\ttop: 8px;\n\tright: 8px;\n}\n\n.record:hover .deleteIcon {\n\tdisplay: flex;\n}\n\n.deleteIconCell {\n\tbox-sizing: border-box;\n\twidth: 40px;\n\tpadding: 0px !important;\n}\n\n.galleryPicture:hover .deleteIcon {\n\tdisplay: flex;\n}\n\n.galleryPicture img {\n\twidth: 100%;\n}\n\n.galleryPicture:nth-child(2n + 1) {\n\tmargin-right: 8px;\n}\n\n.sortable {\n\tcursor: pointer;\n}\n\n.columnSortIcon {\n\tpadding-left: 8px;\n\tdisplay: inline;\n}\n\n.sortable:hover .columnSortIcon {\n\tcolor: white;\n}\n\n.colorPreview {\n\twidth: 80px;\n\theight: 30px;\n\tbox-shadow: 0 1px 4px rgba(0, 0, 0, .1);\n}\n\niframe {\n\twidth: 100%;\n\tmargin: 0;\n\tbox-sizing: border-box;\n\theight: 100%;\n\tborder: none;\n}\n\n.flagContainer {\n\tpadding-top: 0px;\n\tpadding-bottom: 0px;\n\theight: 44px;\n}\n\n.flag {\n\theight: 22px;\n\tvertical-align: middle;\n\tmargin-right: 8px;\n\tmargin-left: 2px;\n}\n\n.flagLabel {\n\tvertical-align: middle;\n\tdisplay: inline-block;\n}\n\n.localesTableHeaderContainer {\n\tbackground-color: #303B47;\n}\n\n.localesTableHeader, .localesTable, .editLocalesTable {\n\twidth: 100%;\n\ttable-layout: fixed;\n}\n\n.localesTableHeader {\n\twidth: calc(100% - 17px);\n}\n\n.localesTableContainer {\n\theight: calc(100vh - 114px);\n\toverflow-y: scroll;\n}\n\n.folded {\n\tdisplay: none;\n}\n\n.quill {\n\theight: 200px;\n}\n\n.ql-container.ql-snow {\n\tborder: none;\n}\n\n.dashboardView {\n\tflex-wrap: wrap;\n\tflex: 1;\n\tdisplay: flex;\n\talign-items: flex-start;\n\talign-content: flex-start;\n\tbox-sizing: border-box;\n}\n\n.dashboardPanel {\n\tborder-radius: 4px;\n\tbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\n\tbackground-color: #fff;\n\tpadding: 15px;\n\tposition: relative;\n\tmargin-bottom: 20px;\n\tmargin-right: 20px;\n\tflex: 0 1 calc(33.33% - 50px);\n}\n\n.dashboardLegend {\n\tcolor: rgb(66, 80, 96);\n\tmargin-bottom: 15px;\n}\n\n.dashboardValue {\n\tfont-size: 30px;\n\tcolor: rgb(31, 38, 46);\n}\n\n.addFilterPopup {\n\tposition: absolute;\n\tbox-shadow: 0 2px 40px 0 rgba(49, 47, 51, .3);\n\tbackground: white;\n\tpadding: 15px;\n\tright: 0px;\n\ttop: 31px;\n\twidth: 280px;\n}\n\n.openFilterPopup {\n\tpadding: 6px 22px !important;\n\tmargin-left: 8px !important;\n\tmargin-right: 0px !important;\n\tposition: relative;\n}\n\n.openFilterPopup i {\n\tmargin-right: 8px;\n\tfont-size: 12px;\n}\n\n.filtersContainer {\n\tpadding: 12px;\n}\n\n.filterItem {\n\tcolor: white;\n\tbackground-color: #647A93;\n\tfont-size: 12px;\n\ttext-transform: uppercase;\n\tdisplay: inline-block;\n\tborder-radius: 2px;\n\tmargin-right: 8px;\n\toverflow: hidden;\n}\n\n.filterItemLabel {\n\tdisplay: inline-block;\n\tpadding: 4px;\n\theight: 22px;\n\tbox-sizing: border-box;\n}\n\n.filterRemove {\n\tpadding: 4px;\n\tcursor: pointer;\n\tdisplay: inline-block;\n\tbackground-color: #536579;\n\theight: 22px;\n\tbox-sizing: border-box;\n}\n\n.logo {\n\twidth: 60%;\n\tleft: 20%;\n\tposition: relative;\n\ttop: 10px;\n}\n\n.notificationWrapper {\n\tcolor: white;\n\tbackground-color: #F44336;\n\tborder-radius: 50%;\n\twidth: 15px;\n\theight: 15px;\n\tposition: absolute;\n\tjustify-content: center;\n\talign-items: center;\n\ttop: 31px;\n\tleft: 28px;\n\tfont-size: 11px;\n\tdisplay: none;\n}\n\n[data-subview-index] {\n\tposition: relative;\n}\n\n.notificationWrapperForSubview {\n\tcolor: white;\n\tbackground-color: #F44336;\n\tborder-radius: 4px;\n\tpadding: 0px 5px;\n\theight: 15px;\n\tposition: absolute;\n\tjustify-content: center;\n\talign-items: center;\n\ttop: 10px;\n\tright: 0px;\n\tfont-size: 11px;\n\tdisplay: none;\n}\n\n.checkbox {\n\twidth: 15px;\n\theight: 15px;\n\tbackground-color: white;\n\tborder: 1px solid black;\n\tborder-radius: 3px;\n}\n\n.checkbox.checked {\n\tposition: relative;\n\tbackground-color: #45B271;\n}\n\n.checkbox.checked::after {\n\tposition: absolute;\n\tfont-family: \"Font Awesome 5 Pro\";\n\tcontent: \"\\f00c\";\n\tcolor: white;\n\tfont-size: 14px;\n}\n\n.fileInputContent {\n\tposition: relative;\n}\n\n.fileInputContent .deleteFile {\n\tposition: absolute;\n\tbottom: 20px;\n\tright: 20px;\n}\n\n.fileInputContent .nonImageFileOutput .deleteFile {\n\tbottom: 4px;\n\tright: 4px;\n}\n\n.fileInputContent:hover .deleteFile {\n\tdisplay: flex;\n}\n\n.labelTooltipContainer {\n\tposition: relative; \n\tdisplay: inline-block; \n\tflex-direction: row;\n}\n\n.labelTooltipIcon {\n\tpadding-left: 5px;\n}\n\n.tooltip {\n\tposition: absolute; \n\ttop: -10px; \n\tleft: 25px; \n\tbackground: white; \n\tpadding: 10px; \n\tbox-shadow: 0 1px 3px 0 #C3CCD7;\n\tfont-size: 12px; \n\tmin-width: 80px; \n\tz-index: 1;\n\ttext-transform: lowercase;\n}\n\n\n.loginPanelBackground {\n\tfont-family: gt-eesti-regular, \"Helvetica Neue\", Helvetica, sans-serif;\n\tmargin: 0px;\n\tdisplay: flex; \n\theight: 100vh;\n\tjustify-content: center;\n\talign-items: center;\n\tbackground: #233550;\n\tflex: 1;\n}\n\n.appLoading {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex: 1;\n\tcolor: #233550;\n\tfont-size: 72px;\n\theight: 100vh;\n}\n\n.loginLogoContainer {\n\ttext-align: center;\n}\n\n.loginLogo {\n\twidth: 180px;\n\tmargin-bottom: 30px;\n}\n\n.loginPanel {\n\tbackground: white;\n\tborder-radius: 2px;\n\tpadding: 30px;\n\tborder: 1px solid #EBEDF8;\n\tmax-width: 250px;\n\tposition: relative;\n}\n\n.loginPanel label {\n\tfont-weight: 500;\n\tfont-size: 14px;\n\tmargin-bottom: 7px;\n\tcolor: #647A93;\n\tfont-size: 12px;\n\ttext-transform: uppercase;\n}\n\n.loginPanel input {\n\twidth: 100%;\n\tmargin-top: 5px;\n\tmargin-bottom: 25px;\n\tfont-family: inherit;\n\t\n\tbackground-color: #F2F6FA;\n\tborder-color: #ADB9C6;\n\tborder-radius: 2px;\n\tborder-style: solid;\n\tborder-width: 1px;\n\tbox-shadow: inset 0 1px 1px 0 #C3CCD7;\n\tcolor: #536579;\n\theight: 38px;\n\tmin-height: 38px;\n\tpadding: 0 15px;\n\twidth: 100%;\n\tfont-size: 14px;\n}\n\n.loginPanel button {\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tborder-radius: 2px;\n\tpadding: 10px 22px;\n\tfont-size: 14px;\n\twidth: 100%;\n\tborder: none;\n\tfont-family: inherit;\n}"]}
@@ -1,2 +0,0 @@
1
- (this["webpackJsonpgaladmin-front"]=this["webpackJsonpgaladmin-front"]||[]).push([[0],{16:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_exports__.a=function(expression,data){try{var varString="";for(var key in data)varString+="var "+key+" = "+("string"===typeof data[key]?"'"+data[key].replace(/'/g,"\\'").replace(/\n/g,"<br>").replace(/\r/g,"")+"'":"object"===typeof data[key]?JSON.stringify(data[key]):data[key])+";";return eval(varString+expression)}catch(e){return console.log(varString+expression),console.error(e),"Error"}}},49:function(e,t,n){},50:function(e,t,n){},7:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return ConfigContext})),__webpack_require__.d(__webpack_exports__,"b",(function(){return ConfigProvider}));var _home_runner_work_galadmin_galadmin_src_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(2),react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),react__WEBPACK_IMPORTED_MODULE_1___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__),axios__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(3),axios__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_2__),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(0),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3___default=__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__),ConfigContext=Object(react__WEBPACK_IMPORTED_MODULE_1__.createContext)(null),ConfigProvider=function ConfigProvider(props){var _useState=Object(react__WEBPACK_IMPORTED_MODULE_1__.useState)(null),_useState2=Object(_home_runner_work_galadmin_galadmin_src_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__.a)(_useState,2),config=_useState2[0],setConfig=_useState2[1];return Object(react__WEBPACK_IMPORTED_MODULE_1__.useEffect)((function(){axios__WEBPACK_IMPORTED_MODULE_2___default.a.get("/config").then((function(response){var _config=eval("("+response.data.config+")");if(setConfig(_config),_config.googleMapsKey){var script=document.createElement("script");return script.src="https://maps.googleapis.com/maps/api/js?key="+_config.googleMapsKey+"&libraries=places,autocomplete",document.body.appendChild(script),function(){document.body.removeChild(script)}}}))}),[]),config?Object(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(ConfigContext.Provider,{value:config,children:props.children}):null}},75:function(e,t,n){"use strict";n.r(t);var c=n(1),a=n.n(c),r=n(39),i=n.n(r),l=(n(49),n(2)),o=n(4),s=n(8),u=(n(50),n(7)),d=n(0),j=function(e){var t=e.view;return Object(d.jsxs)(d.Fragment,{children:[Object(d.jsx)("div",{class:"sidebarIcon",children:Object(d.jsx)("i",{class:"fas fa-".concat(t.icon||"square")})}),Object(d.jsx)("div",{class:"sidebarLabel",children:t.label})]})},b=function(){var e=Object(s.h)(),t=Object(c.useContext)(u.a),n=Object(s.g)();return Object(d.jsxs)("div",{class:"sidebar",children:[t.logo?Object(d.jsx)("img",{src:t.logo,class:"logo"}):null,Object(d.jsx)("div",{class:"sidebarTitle",children:t.name}),Object(d.jsx)("div",{class:"sidebarSubtitle",children:"Back-office"}),t.views.filter((function(e){return!e.hidden})).map((function(t,c){if("link"===t.type)return Object(d.jsx)("a",{href:t.src,children:Object(d.jsx)("div",{class:"sidebarItem",children:Object(d.jsx)("div",{children:Object(d.jsx)(j,{view:t})})})},c);if("iframe"===t.type){var a=e.pathname==="/iframe/".concat(c);return Object(d.jsx)(o.b,{to:"/iframe/".concat(c),children:Object(d.jsx)("div",{class:"sidebarItem ".concat(a?"active":""),children:Object(d.jsx)("div",{children:Object(d.jsx)(j,{view:t})})})},c)}if("custom"===t.type){var r=e.pathname==="/customView/".concat(c);return Object(d.jsx)(o.b,{to:"/customView/".concat(c),children:Object(d.jsx)("div",{class:"sidebarItem ".concat(r?"active":""),children:Object(d.jsx)("div",{children:Object(d.jsx)(j,{view:t})})})},c)}if("table"===t.type){var i=e.pathname.startsWith("/records/".concat(c))||e.pathname==="/createRecord/".concat(c)||e.pathname.startsWith("/record/".concat(c))||e.pathname.startsWith("/editRecord/".concat(c));return Object(d.jsx)("div",{onClick:function(){return n.push("/records/".concat(c))},children:Object(d.jsxs)("div",{class:"sidebarItem ".concat(i?"active":""),children:[Object(d.jsxs)("div",{children:[Object(d.jsx)("div",{class:"notificationWrapper"}),Object(d.jsx)(j,{view:t})]}),t.subviews?Object(d.jsxs)(d.Fragment,{children:[Object(d.jsx)("div",{class:"subviewsSeparator"}),t.subviews.map((function(t,a){var r=e.pathname=="/records/".concat(c,"/").concat(a);return Object(d.jsx)("div",{onClick:function(e){n.push("/records/".concat(c,"/").concat(a)),e.stopPropagation()},children:Object(d.jsxs)("div",{"data-subview-index":a,class:r?"active":"",children:[Object(d.jsx)("div",{class:"notificationWrapperForSubview"}),t.label]})})}))]}):null]},c)})}})),t.hideBranding?null:Object(d.jsxs)("div",{class:"sidebarBranding",children:["Made with ",Object(d.jsx)("i",{class:"fas fa-heart"})," by Galadrim"]})]})},f=function(){var e=Object(c.useContext)(u.a).views[0];return e?"table"===e.type?Object(d.jsx)(s.a,{to:"/records/0"}):"iframe"===e.type?Object(d.jsx)(s.a,{to:"/iframe/0"}):"custom"===e.type?Object(d.jsx)(s.a,{to:"/customView/0"}):null:null},v=n(12),p=n(5),O=n.n(p),h=n(10),x=n(23),m=n(3),_=n.n(m),g=n(6),w=function(e){var t=e.column,n=e.onChange,a=e.initialData,r=Object(c.useRef)(null);return Object(c.useEffect)((function(){return r.current&&(window.$(r.current).spectrum({preferredFormat:"hex",showInput:!0,chooseText:"OK",cancelText:"Annuler",color:null===a||void 0===a?void 0:a[t.name]}),window.$(r.current).on("change.spectrum",(function(e,c){n(Object(g.a)({},t.name,c.toHexString()))}))),function(){return window.$(r.current).off()}}),[r.current]),Object(d.jsx)("input",{ref:r,type:"text",onChange:function(e){return n(Object(g.a)({},t.name,e.target.value))}})};window.Quill.prototype.getHTML=function(){return this.container.querySelector(".ql-editor").innerHTML};var y=function(e){var t=e.column,n=e.onChange,a=e.initialData,r=Object(c.useRef)(null);return Object(c.useEffect)((function(){if(r.current&&!r.current.editor){var e=new window.Quill(r.current,{theme:"snow",modules:{toolbar:[[{header:[1,2,3,4,!1]}],["bold","italic","underline","link"],["image"],[{align:[]}],[{list:"ordered"},{list:"bullet"}],["clean"]]}});if(t.contentField){if(null===a||void 0===a?void 0:a[t.contentField])try{e.setContents(JSON.parse(null===a||void 0===a?void 0:a[t.contentField]))}catch(c){}}else t.htmlField&&e.clipboard.dangerouslyPasteHTML(0,null===a||void 0===a?void 0:a[t.htmlField]);return e.on("text-change",(function(){n(Object(v.a)(Object(g.a)({},t.htmlField,e.getHTML()),t.contentField&&Object(g.a)({},t.contentField,JSON.stringify(e.getContents()))))})),r.current.editor=e,e.off()}}),[r.current]),Object(d.jsx)("div",{class:"quillContainer",children:Object(d.jsx)("div",{class:"quill",ref:r,style:t.height?{height:t.height}:null})})},C=function(e){var t=e.column,n=e.onChange,a=e.initialData,r=e.withTime,i=Object(c.useRef)(null);return Object(c.useEffect)((function(){if(i.current){var e=window.$(i.current).datepicker({language:"fr",autoClose:!0,onSelect:function(e,c){n(Object(g.a)({},t.name,window.moment(c).format(r?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD")))}});(null===a||void 0===a?void 0:a[t.name])&&e.data("datepicker").selectDate(new Date(null===a||void 0===a?void 0:a[t.name]))}}),[i.current]),Object(d.jsx)("div",{children:Object(d.jsx)("input",{type:"text",ref:i,"data-timepicker":r?"true":"false"})})},I=function(e){var t=e.column,n=e.onChange,a=e.initialData,r=Object(c.useRef)(null);return Object(c.useEffect)((function(){if(r.current&&window.google){var e=new window.google.maps.places.Autocomplete(r.current,t.componentRestrictions?{componentRestrictions:t.componentRestrictions}:{});e.addListener("place_changed",(function(){var c=e.getPlace();if(0!==c.length&&c.geometry){var a={latitudeField:function(e){return e.geometry.location.lat()},longitudeField:function(e){return e.geometry.location.lng()},addressField:function(e){return e.formatted_address},streetNumberField:function(e){var t;return null===(t=e.address_components.find((function(e){return"street_number"===e.type})))||void 0===t?void 0:t.long_name},routeField:function(e){var t;return null===(t=e.address_components.find((function(e){return"route"===e.type})))||void 0===t?void 0:t.long_name},localityField:function(e){var t;return null===(t=e.address_components.find((function(e){return"locality"===e.type})))||void 0===t?void 0:t.long_name},administrativeAreaLevel2Field:function(e){var t;return null===(t=e.address_components.find((function(e){return"administrative_area_level_2"===e.type})))||void 0===t?void 0:t.long_name},administrativeAreaLevel1Field:function(e){var t;return null===(t=e.address_components.find((function(e){return"administrative_area_level_1"===e.type})))||void 0===t?void 0:t.long_name},countryField:function(e){var t;return null===(t=e.address_components.find((function(e){return"country"===e.type})))||void 0===t?void 0:t.long_name},postalCodeField:function(e){var t;return null===(t=e.address_components.find((function(e){return"postal_code"===e.type})))||void 0===t?void 0:t.long_name}},i={};for(var l in a)t[l]&&(i[t[l]]=a[l](c));r.current.value=c.formatted_address,n(i)}}))}}),[r.current]),Object(c.useEffect)((function(){var e,t=function(){r.current&&(r.current.value="")};return null===r||void 0===r||null===(e=r.current)||void 0===e||e.addEventListener("focusout",t),function(){var e;return null===r||void 0===r||null===(e=r.current)||void 0===e?void 0:e.removeEventListener("focusout",t)}}),[r.current]),Object(d.jsx)("div",{children:Object(d.jsx)("input",{type:"text",placeholder:"",ref:r,defaultValue:null===a||void 0===a?void 0:a[t.name]})})},k=function(e){var t=e.column,n=e.onChange,a=e.initialData,r=Object(c.useRef)(null),i=Object(s.i)().viewIndex,o=Object(c.useState)(!1),u=Object(l.a)(o,2),j=u[0],b=u[1],f=Object(c.useState)(null===a||void 0===a?void 0:a[t.name]),v=Object(l.a)(f,2),p=v[0],x=v[1],m=function(){var e=Object(h.a)(O.a.mark((function e(){var c,a,l;return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c=new FormData(r.current),b(!0),e.next=4,_()({method:"post",url:"/uploadFile",data:c,params:{viewIndex:i,columnId:t.__id__},headers:{"Content-Type":"multipart/form-data"}});case 4:a=e.sent,l=Object(g.a)({},t.name,a.data.path),t.aspectRatioField&&(l[t.aspectRatioField]=a.data.aspectRatio),t.originalNameField&&(l[t.originalNameField]=a.data.originalFilename),n(l),b(!1),x(a.data.path);case 11:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),w=Math.random().toString();return Object(d.jsx)("div",{class:"fileInputContainer",children:Object(d.jsxs)("label",{htmlFor:w,children:[Object(d.jsx)("form",{ref:r,children:Object(d.jsx)("input",{type:"file",id:w,style:{display:"none"},name:"file",onChange:m})}),Object(d.jsxs)("div",{class:"fileInputContent ".concat(p?"":"clickToSelectFile"),children:[j?Object(d.jsx)("i",{class:"fa fa-circle-notch fa-spin"}):null,j||p?null:Object(d.jsx)("div",{children:"Cliquez pour s\xe9lectionner un fichier"}),!j&&p?Object(d.jsxs)("div",{class:"nonImageFileOutput",children:[Object(d.jsx)("span",{children:"Fichier t\xe9l\xe9charg\xe9"}),Object(d.jsx)("div",{class:"deleteFile",onClick:function(e){x(null);var c=Object(g.a)({},t.name,null);t.aspectRatioField&&(c[t.aspectRatioField]=null),t.originalNameField&&(c[t.originalNameField]=null),n(c),e.preventDefault()},children:Object(d.jsx)("i",{class:"fal fa-trash-alt"})})]}):null]})]})})},E=function(e){var t=e.column,n=e.onChange,a=e.initialData,r=Object(c.useState)(null),i=Object(l.a)(r,2),o=i[0],u=i[1],j=Object(s.i)().viewIndex;return Object(c.useEffect)((function(){_.a.post("/foreignSelectRecords",{viewIndex:j,columnId:t.__id__}).then((function(e){var c,r;u(e.data),n(Object(g.a)({},t.name,(null===a||void 0===a?void 0:a[t.name])||(t.optional?"NULL":null===(c=e.data[0])||void 0===c?void 0:c.value)),{label:t.optional?"-":null===(r=e.data[0])||void 0===r?void 0:r.label})}))}),[]),null===o?Object(d.jsx)("i",{class:"fa fa-circle-notch fa-spin",style:{color:"#536579"}}):Object(d.jsxs)("select",{onChange:function(e){var c;return n(Object(g.a)({},t.name,e.target.value),{label:null===(c=o.find((function(t){return t.value==e.target.value})))||void 0===c?void 0:c.label})},defaultValue:null===a||void 0===a?void 0:a[t.name],children:[t.optional?Object(d.jsx)("option",{value:"NULL",children:"-"}):null,o.map((function(e){return Object(d.jsx)("option",{value:e.value,children:e.label},e.value)}))]})},T=function(e){var t,n=e.column,a=e.onChange,r=e.initialData,i=Object(c.useState)([]),o=Object(l.a)(i,2),u=o[0],j=o[1],b=Object(s.i)().viewIndex,f=Object(c.useState)(""),v=Object(l.a)(f,2),p=v[0],O=v[1],h=Object(c.useRef)(null),x=Object(c.useRef)(!1);Object(c.useEffect)((function(){_.a.post("/foreignSelectRecords",{viewIndex:b,columnId:n.__id__,query:p}).then((function(e){j(e.data)}))}),[p]),Object(c.useEffect)((function(){var e,t=function(){h.current&&!x.current&&(h.current.value="")};return null===h||void 0===h||null===(e=h.current)||void 0===e||e.addEventListener("focusout",t),function(){var e;return null===h||void 0===h||null===(e=h.current)||void 0===e?void 0:e.removeEventListener("focusout",t)}}),[h.current]);var m=Math.random();return null===u?Object(d.jsx)("i",{class:"fa fa-circle-notch fa-spin",style:{color:"#536579"}}):Object(d.jsxs)("div",{children:[Object(d.jsx)("input",{type:"text",list:m,ref:h,onChange:function(e){var t,c,r=null!==(t=null===(c=u.find((function(t){return t.label===e.target.value})))||void 0===c?void 0:c.value)&&void 0!==t?t:null;x.current=!!r,O(e.target.value),a(Object(g.a)({},n.name,r))},defaultValue:null===(t=u.find((function(e){return e.value===(null===r||void 0===r?void 0:r[n.name])})))||void 0===t?void 0:t.label}),Object(d.jsxs)("datalist",{id:m,children:[n.optional?Object(d.jsx)("option",{value:"NULL",children:"-"}):null,u.map((function(e){return Object(d.jsx)("option",{value:e.label,children:e.label},e.value)}))]})]})},D=function(e){var t,n,c,a=e.column,r=e.onChange,i=e.initialData,l=a.dataType;return["int","double","float","decimal"].includes(l)?Object(d.jsx)("input",{type:"number",onChange:function(e){return r(Object(g.a)({},a.name,e.target.value))},defaultValue:null===i||void 0===i?void 0:i[a.name]}):"tinyint"===l?Object(d.jsxs)("select",{onChange:function(e){return r(Object(g.a)({},a.name,e.target.value))},defaultValue:null!==(t=null===i||void 0===i?void 0:i[a.name])&&void 0!==t?t:a.defaultOption,children:[a.optional?Object(d.jsx)("option",{value:"NULL",children:"-"}):null,Object(d.jsx)("option",{value:"0",children:"Non"}),Object(d.jsx)("option",{value:"1",children:"Oui"})]}):"select"===l&&Array.isArray(a.options)?Object(d.jsxs)("select",{onChange:function(e){return r(Object(g.a)({},a.name,e.target.value))},defaultValue:null!==(n=null===i||void 0===i?void 0:i[a.name])&&void 0!==n?n:a.defaultOption,children:[a.optional?Object(d.jsx)("option",{value:"NULL",children:"-"}):null,a.options.map((function(e){return Object(d.jsx)("option",{value:e,children:e},e)}))]}):"select"===l?Object(d.jsxs)("select",{onChange:function(e){return r(Object(g.a)({},a.name,e.target.value))},defaultValue:null!==(c=null===i||void 0===i?void 0:i[a.name])&&void 0!==c?c:a.defaultOption,children:[a.optional?Object(d.jsx)("option",{value:"NULL",children:"-"}):null,Object.keys(a.options).map((function(e){return Object(d.jsx)("option",{value:e,children:a.options[e]},e)}))]}):"datalist"===l?Object(d.jsx)(T,{column:a,onChange:r,initialData:i}):"foreign"===l?Object(d.jsx)(E,{column:a,onChange:r,initialData:i}):"address"===l?Object(d.jsx)(I,{column:a,onChange:r,initialData:i}):"color"===l?Object(d.jsx)(w,{column:a,onChange:r,initialData:i}):"file"===l?Object(d.jsx)(k,{column:a,onChange:r,initialData:i}):"datetime"===l?Object(d.jsx)(C,{column:a,onChange:r,initialData:i,withTime:!0}):"date"===l?Object(d.jsx)(C,{column:a,onChange:r,initialData:i,withTime:!1}):"textarea"===l?Object(d.jsx)("textarea",{onChange:function(e){return r(Object(g.a)({},a.name,e.target.value))},defaultValue:null===i||void 0===i?void 0:i[a.name]}):"richText"===l?Object(d.jsx)(y,{column:a,onChange:r,initialData:i}):Object(d.jsx)("input",{type:"text",onChange:function(e){return r(Object(g.a)({},a.name,e.target.value))},defaultValue:null===i||void 0===i?void 0:i[a.name]})},M=function(e){var t=e.text,n=Object(c.useState)(!1),a=Object(l.a)(n,2),r=a[0],i=a[1];return Object(d.jsxs)("div",{class:"labelTooltipContainer",onMouseLeave:function(){return i(!1)},children:[Object(d.jsx)("div",{class:"labelTooltipIcon",onMouseEnter:function(){return i(!0)},children:Object(d.jsx)("i",{class:"fa fa-question-circle"})}),r?Object(d.jsx)("div",{class:"tooltip",children:t}):null]})};var A=function(e,t){var n,c=e.filter((function(e){return e.required&&(void 0===(n=t[e.name])||null===n||""===n);var n}));return!(c.length>0)||(n=1==c.length?"Le champ requis ".concat(c.map((function(e){return e.label})).join(", ")," n'a pas \xe9t\xe9 rempli"):"Les champs requis ".concat(c.map((function(e){return e.label})).join(", ")," n'ont pas \xe9t\xe9 remplis"),window.swal({title:"Erreur",text:n,dangerMode:!0}),!1)},S=function(){var e,t=Object(c.useContext)(u.a),n=Object(s.i)(),a=n.viewIndex,r=n.panelIndex,i=n.recordId,o=Object(s.g)(),j=t.views[a],b=r?j.recordViewPanels[r]:null,f=b?b.createConfig.columns:j.columns.filter((function(e){return e.dataType&&(!0===e.canEditOnCreation||!1!==e.canEdit)&&!e.hidden})),p={},m=Object(x.a)(f);try{for(m.s();!(e=m.n()).done;){var g=e.value;g.defaultOption?p[g.name]=g.defaultOption:"tinyint"===g.dataType?p[g.name]=g.optional?"NULL":"0":"select"===g.dataType&&Array.isArray(g.options)?p[g.name]=g.options[0]:"select"===g.dataType&&(p[g.name]=Object.keys(g.options)[0]),g.defaultValue&&(p[g.name]=g.defaultValue)}}catch(T){m.e(T)}finally{m.f()}var w=Object(c.useRef)(p),y=Object(c.useState)(!1),C=Object(l.a)(y,2),I=C[0],k=C[1],E=function(){var e=Object(h.a)(O.a.mark((function e(){var t,n,c;return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(A(f,w.current)){e.next=2;break}return e.abrupt("return");case 2:for(t in j.createFilters)w.current[t]=j.createFilters[t];return k(!0),e.prev=4,e.next=7,_.a.post("/createRecord",{viewIndex:a,panelIndex:r,recordId:i,data:w.current});case 7:c=e.sent,k(!1),i?o.push("/record/".concat(a,"/").concat(i)):(null===j||void 0===j||null===(n=j.createConfig)||void 0===n?void 0:n.redirectToCreatedItems)?o.push("/record/".concat(a,"/").concat(c.data.id)):o.push("/records/".concat(a)),e.next=16;break;case 12:e.prev=12,e.t0=e.catch(4),window.swal({title:"Erreur",text:_.a.isAxiosError(e.t0)?e.t0.response.data.message:"Une erreur est survenue",dangerMode:!0}),k(!1);case 16:case"end":return e.stop()}}),e,null,[[4,12]])})));return function(){return e.apply(this,arguments)}}();return Object(d.jsxs)("div",{class:"view",children:[Object(d.jsx)("div",{class:"viewHeader",children:Object(d.jsx)("div",{class:"viewTitle",children:b?b.createConfig.label:"Cr\xe9er ".concat(j.aNewSingular)})}),Object(d.jsxs)("div",{class:"paddedView",children:[Object(d.jsx)("div",{class:"form",children:f.map((function(e,t){return Object(d.jsxs)("div",{class:"formElement",children:[Object(d.jsxs)("div",{class:"formLabel",children:[e.label," ",e.required?"*":"",e.labelTooltip?Object(d.jsx)(M,{text:e.labelTooltip}):null]}),Object(d.jsx)("div",{class:"formInput",children:Object(d.jsx)(D,{column:e,onChange:function(e){w.current=Object(v.a)(Object(v.a)({},w.current),e)}})})]},t)}))}),Object(d.jsx)("div",{class:"button greenButton ".concat(I?"loading":""),onClick:E,children:I?"Sauvegarde en cours...":"Cr\xe9er"}),Object(d.jsx)("div",{class:"button",onClick:function(){return o.goBack()},children:"Annuler"})]})]})},L=function(){var e=Object(c.useContext)(u.a),t=Object(s.i)(),n=t.viewIndex,a=t.recordId,r=Object(s.g)(),i=e.views[n],o=Object(c.useState)(null),j=Object(l.a)(o,2),b=j[0],f=j[1],p=i.columns.filter((function(e){return e.dataType&&!1!==e.canEdit&&!e.hidden})),x=Object(c.useRef)({}),m=Object(c.useState)(!1),g=Object(l.a)(m,2),w=g[0],y=g[1];Object(c.useEffect)((function(){_.a.get("/record",{params:{viewIndex:n,recordId:a}}).then((function(e){x.current={},f(e.data)}))}),[n,a]);var C=function(){var e=Object(h.a)(O.a.mark((function e(){return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(A(p,Object(v.a)(Object(v.a)({},b),x.current))){e.next=2;break}return e.abrupt("return");case 2:return y(!0),e.prev=3,e.next=6,_.a.post("/updateRecord",{viewIndex:n,primaryValue:a,data:x.current,previousData:b});case 6:y(!1),r.push("/record/".concat(n,"/").concat(a)),e.next=14;break;case 10:e.prev=10,e.t0=e.catch(3),e.t0.response.responseText&&window.swal({title:"Erreur",text:e.t0.response.responseText,dangerMode:!0}),y(!1);case 14:case"end":return e.stop()}}),e,null,[[3,10]])})));return function(){return e.apply(this,arguments)}}();return Object(d.jsxs)("div",{class:"view",children:[Object(d.jsx)("div",{class:"viewHeader",children:Object(d.jsx)("div",{class:"viewTitle",children:i.label})}),Object(d.jsx)("div",{class:"paddedView",children:b?Object(d.jsxs)(d.Fragment,{children:[Object(d.jsx)("div",{class:"form",children:p.map((function(e,t){return Object(d.jsxs)("div",{class:"formElement",children:[Object(d.jsxs)("div",{class:"formLabel",children:[e.label," ",e.required?"*":"",e.labelTooltip?Object(d.jsx)(M,{text:e.labelTooltip}):null]}),Object(d.jsx)("div",{class:"formInput",children:Object(d.jsx)(D,{column:e,initialData:b,onChange:function(e){x.current=Object(v.a)(Object(v.a)({},x.current),e)}})})]},t)}))}),Object(d.jsx)("div",{class:"button greenButton ".concat(w?"loading":""),onClick:C,children:w?"Sauvegarde en cours...":"Sauvegarder"}),Object(d.jsx)("div",{class:"button",onClick:function(){return r.goBack()},children:"Annuler"})]}):null})]})},P=n(28),F=function(e){var t=e.view,n=e.viewIndex,a=e.subviewIndex,r=e.currentFilters,i=e.orderBy,o=e.isDesc,s=e.query,u=Object(c.useState)(!1),j=Object(l.a)(u,2),b=j[0],f=j[1];return Object(d.jsx)("div",{class:"downloadButton",onClick:function(){f(!0),_.a.post("/recordsExport",{viewIndex:n,subviewIndex:a,filters:r.map((function(e){return e.query})),orderBy:i,isDesc:o,query:s}).then((function(e){f(!1),window.download(e.data.content,t.label+".csv")}))},children:Object(d.jsx)("i",{class:"fa ".concat(b?"fa-spin fa-circle-notch":"fa-cloud-download")})})};function R(e){var t,n,a=Object(c.useRef)(null);return t=a,n=e.onOutsideClick,Object(c.useEffect)((function(){function e(e){var c;!t.current||t.current.contains(e.target)||(null===(c=document.getElementById("datepickers-container"))||void 0===c?void 0:c.contains(e.target))||n()}return document.addEventListener("mousedown",e),function(){document.removeEventListener("mousedown",e)}}),[t]),Object(d.jsx)("div",{ref:a,children:e.children})}var q=function(e){var t=e.view,n=(e.refreshData,e.onAddFilter),a=Object(c.useState)(!1),r=Object(l.a)(a,2),i=r[0],o=r[1],s=Object(c.useState)(null),u=Object(l.a)(s,2),j=u[0],b=u[1],f=Object(c.useState)("contains"),v=Object(l.a)(f,2),p=v[0],O=v[1],h=Object(c.useState)(null),x=Object(l.a)(h,2),m=x[0],_=x[1],g=Object(c.useRef)("-"),w=t.columns.find((function(e){return(e.searchableName||e.name)===j}));Object(c.useEffect)((function(){"select"===(null===w||void 0===w?void 0:w.dataType)&&_(Array.isArray(w.options)?w.options[0]:Object.keys(w.options)[0])}),[j]);return Object(d.jsx)(R,{onOutsideClick:function(){return o(!1)},children:Object(d.jsxs)("div",{class:"button openFilterPopup",onClick:function(){return o(!i)},children:[Object(d.jsx)("i",{class:"fas fa-filter"})," Ajouter un filtre",i?Object(d.jsxs)("div",{class:"addFilterPopup",onClick:function(e){return e.stopPropagation()},children:[Object(d.jsx)("div",{class:"filterLabel",children:"Champ"}),Object(d.jsxs)("select",{onChange:function(e){return b(e.target.value)},children:[Object(d.jsx)("option",{value:"",children:"S\xe9lectionnez un champ"}),t.columns.filter((function(e){return(e.searchableName||e.name)&&"datalist"!==e.dataType})).map((function(e){var t=e.searchableName||e.name;return Object(d.jsx)("option",{value:t,children:e.label},t)}))]}),"select"===(null===w||void 0===w?void 0:w.dataType)?Object(d.jsxs)(d.Fragment,{children:[Object(d.jsx)("div",{class:"filterLabel",children:"Valeur"}),Object(d.jsx)("select",{onChange:function(e){return _(e.target.value)},children:Array.isArray(w.options)?w.options.map((function(e){return Object(d.jsx)("option",{value:e,children:e})})):Object.keys(w.options).map((function(e){return Object(d.jsx)("option",{value:e,children:w.options[e]})}))})]}):"foreign"===(null===w||void 0===w?void 0:w.dataType)?Object(d.jsxs)(d.Fragment,{children:[Object(d.jsx)("div",{class:"filterLabel",children:"Valeur"}),Object(d.jsx)(E,{column:w,onChange:function(e,t){_(e[w.name]),g.current=t.label}})]}):"date"===(null===w||void 0===w?void 0:w.dataType)||"datetime"===(null===w||void 0===w?void 0:w.dataType)?Object(d.jsxs)(d.Fragment,{children:[Object(d.jsx)("div",{class:"filterLabel",children:"De"}),Object(d.jsx)(C,{column:w,withTime:!0,onChange:function(e){_({from:e[w.name],to:null===m||void 0===m?void 0:m.to})}}),Object(d.jsx)("div",{class:"filterLabel",children:"\xc0"}),Object(d.jsx)(C,{column:w,withTime:!0,onChange:function(e){_({from:null===m||void 0===m?void 0:m.from,to:e[w.name]})}})]}):Object(d.jsxs)(d.Fragment,{children:[Object(d.jsx)("div",{class:"filterLabel",children:"Op\xe9rateur"}),Object(d.jsxs)("select",{onChange:function(e){return O(e.target.value)},children:[Object(d.jsx)("option",{value:"contains",children:"contient"}),Object(d.jsx)("option",{value:"notContains",children:"ne contient pas"}),Object(d.jsx)("option",{value:"startsWith",children:"commence par"}),Object(d.jsx)("option",{value:"endsWith",children:"finit par"}),Object(d.jsx)("option",{value:"is",children:"est"}),Object(d.jsx)("option",{value:"isNot",children:"n'est pas"}),Object(d.jsx)("option",{value:"largerThan",children:"est sup\xe9rieur \xe0"}),Object(d.jsx)("option",{value:"smallerThan",children:"est inf\xe9rieur \xe0"})]}),Object(d.jsx)("div",{class:"filterLabel",children:"Valeur"}),Object(d.jsx)("input",{onChange:function(e){return _(e.target.value)}})]}),Object(d.jsx)("div",{class:"button greenButton",onClick:function(){if(j&&m){var e=null===w||void 0===w?void 0:w.label,t="(".concat((null===w||void 0===w?void 0:w.searchableName)||(null===w||void 0===w?void 0:w.name),")");if("select"===(null===w||void 0===w?void 0:w.dataType)){var c=Array.isArray(null===w||void 0===w?void 0:w.options)?m:w.options[m];n({label:e+" est "+c,query:t+" = '"+m+"'"})}else if("foreign"===(null===w||void 0===w?void 0:w.dataType))n({label:e+" est "+g.current,query:w.name+" = '"+m+"'"});else if("date"===(null===w||void 0===w?void 0:w.dataType)||"datetime"===(null===w||void 0===w?void 0:w.dataType)){var a,r=[];a=m.from&&!m.to?e+" est apr\xe8s "+m.from:m.to&&!m.from?e+" est avant "+m.to:e+" de "+m.from+" \xe0 "+m.to,m.from&&r.push(w.name+" >= '"+m.from+"'"),m.to&&r.push(w.name+" <= '"+m.to+"'"),n({label:a,query:r.join(" AND ")})}else"contains"===p?n({label:e+" contient "+m,query:t+" LIKE '%"+m+"%'"}):"notContains"===p?n({label:e+" ne contient pas "+m,query:t+" NOT LIKE '%"+m+"%'"}):"is"===p?n({label:e+" est "+m,query:t+" = '"+m+"'"}):"isNot"===p?n({label:e+" n'est pas "+m,query:t+" != '"+m+"'"}):"startsWith"===p?n({label:e+" commence par "+m,query:t+" LIKE '"+m+"%'"}):"endsWith"===p?n({label:e+" finit par "+m,query:t+" LIKE '%"+m+"'"}):"largerThan"===p?n({label:e+" sup\xe9rieur \xe0 "+m,query:t+" >= "+m}):"smallerThan"===p&&n({label:e+" inf\xe9rieur \xe0 "+m,query:t+" <= "+m});b(null),_(null),o(!1)}},children:"Ajouter"})]}):null]})})},B=function(e){var t,n,a=e.viewIndex,r=e.selectedRecordIds,i=e.refreshData,o=Object(c.useContext)(u.a),s=o.views[a],j=Object(c.useState)(!1),b=Object(l.a)(j,2),f=b[0],v=b[1];return!o.hideMultiselect&&(!1!==s.canDelete||(null===(t=s.customActions)||void 0===t?void 0:t.length)>0)?Object(d.jsx)(R,{onOutsideClick:function(){return v(!1)},children:Object(d.jsxs)("div",{class:"actionButtonsContainer",children:[Object(d.jsx)("div",{class:"button openBulkActionsButton",onClick:function(){return v(!f)},children:"Actions"}),f?Object(d.jsxs)("div",{class:"bulkActions",children:[null===(n=s.customActions)||void 0===n?void 0:n.map((function(e,t){return Object(d.jsx)("div",{class:"action recordAction",onClick:(n=t,function(){v(!1),_.a.post("customAction",{viewIndex:a,actionIndex:n,selectedRecordIds:r}).then((function(e){e.data.message&&alert(e.data.message),i()})).catch((function(){window.swal({title:"Erreur",text:"L'action a \xe9chou\xe9",dangerMode:!0})}))}),children:e.label});var n})),!1!==s.canDelete?Object(d.jsx)("div",{class:"action recordAction red",onClick:function(){window.swal({title:"\xcates-vous s\xfbr ?",text:"Une fois la suppression confirm\xe9e, il ne sera pas possible de revenir en arri\xe8re.",buttons:["Annuler","Oui"],dangerMode:!0}).then((function(e){e&&_.a.post("deleteRecords",{viewIndex:a,primaryValues:r}).then((function(){i()})).catch((function(){window.swal({title:"Erreur",text:"Suppression impossible",dangerMode:!0})}))}))},children:"Supprimer"}):null]}):null]})}):null},V=n(16),N=function(e,t,n,c){var a="foreign"===e.dataType?n.views.findIndex((function(t){return t.tableName===e.table})):-1;if("foreign"===e.dataType&&a>-1)return e.formatValue?Object(d.jsx)(o.b,{to:"/record/".concat(a,"/").concat(t[e.name]),dangerouslySetInnerHTML:{__html:t["__formatValue-".concat(e.__id__,"__")]}}):e.formattedValue?Object(d.jsx)(o.b,{to:"/record/".concat(a,"/").concat(t[e.name]),children:Object(V.a)(e.formattedValue,t)}):Object(d.jsx)(o.b,{to:"/record/".concat(a,"/").concat(t[e.name]),children:t[e.name]});if(e.showAsPicture){var r=e.baseUrl+t[e.pathField];return t[e.pathField]?Object(d.jsx)("a",{href:r,target:"_blank",children:Object(d.jsx)("img",{src:r,style:{width:c?60:300,height:c?30:150,objectFit:"contain"}})}):null}if(e.formatValue)return Object(d.jsx)("div",{dangerouslySetInnerHTML:{__html:t["__formatValue-".concat(e.__id__,"__")]}});if(e.formattedValue)return Object(d.jsx)("div",{children:Object(V.a)(e.formattedValue,t)});if(e.action){if(e.actionDisplayCondition)if(!Object(V.a)(e.actionDisplayCondition,t))return"";var i=JSON.parse(JSON.stringify(e.data));for(var l in i)i[l]=Object(V.a)(i[l],t);return Object(d.jsx)("div",{class:"actionButton","data-route":'" + column.route + "',"data-data":'" + JSON.stringify(data) + "',children:e.action})}return"tinyint"===e.dataType?Object(d.jsx)("div",{children:1===t[e.name]?"Oui":"Non"}):"color"===e.dataType?Object(d.jsx)("div",{class:"colorPreview",style:{backgroundColor:t[e.name]}}):"richText"===e.dataType?Object(d.jsx)("div",{dangerouslySetInnerHTML:{__html:t[e.htmlField]}}):"select"===e.dataType&&e.options&&e.options.constructor==Object?Object(d.jsx)("div",{children:e.options[t[e.name]]}):Object(d.jsx)("div",{children:t[e.name]})},U=null,W=1,K=[],H=null,J=null,Q="",Y=function(){var e,t,n=Object(s.i)(),a=n.viewIndex,r=n.subviewIndex,i=Object(s.g)(),j=Object(c.useState)(W),b=Object(l.a)(j,2),f=b[0],v=b[1],p=Object(c.useState)(K),O=Object(l.a)(p,2),h=O[0],x=O[1],m=Object(c.useState)(H),g=Object(l.a)(m,2),w=g[0],y=g[1],C=Object(c.useState)(J),I=Object(l.a)(C,2),k=I[0],E=I[1],T=Object(c.useState)(Q),D=Object(l.a)(T,2),M=D[0],A=D[1],S=Object(c.useState)([]),L=Object(l.a)(S,2),R=L[0],V=L[1],Y=Object(c.useState)(null),z=Object(l.a)(Y,2),$=z[0],G=z[1],X=Object(c.useContext)(u.a),Z=X.views[a],ee=null===(e=Z.columns)||void 0===e?void 0:e.filter((function(e){return!e.hideInTable&&!e.hidden}));function te(){G(null),_.a.post("/records",{viewIndex:a,subviewIndex:r,page:f,filters:h.map((function(e){return e.query})),orderBy:w,isDesc:k,query:M}).then((function(e){var t,n;0===(null===(t=e.data)||void 0===t||null===(n=t.records)||void 0===n?void 0:n.length)&&f>1&&v(1),G(e.data)}))}return Object(c.useEffect)((function(){a!==U&&(v(1),A(null),y(null),E(null),A(""),R.length>0&&V([]),h.length>0&&x([]))}),[a]),Object(c.useEffect)((function(){te(),U=a,W=f,Q=M,K=h,H=w,J=k}),[a,r,f,M,h,w,k]),Object(d.jsxs)("div",{class:"view",children:[Object(d.jsxs)("div",{class:"scrollable",children:[Object(d.jsxs)("div",{class:"viewHeader",children:[Object(d.jsx)("div",{class:"viewTitle",children:Z.label}),Object(d.jsxs)("div",{class:"viewHeaderActions",children:[Object(d.jsxs)("div",{class:"searchBarContainer",children:[Object(d.jsx)("input",{type:"text",placeholder:"Rechercher",class:"searchBar",value:M,onChange:function(e){return A(e.target.value)}}),Object(d.jsx)("div",{class:"searchBarIcon",children:Object(d.jsx)("i",{class:"fa fa-search"})})]}),Object(d.jsx)(B,{viewIndex:a,selectedRecordIds:R,refreshData:te}),Object(d.jsx)(q,{view:Z,refreshData:te,onAddFilter:function(e){return x([].concat(Object(P.a)(h),[e]))}}),!1!==Z.canExport?Object(d.jsx)(F,{view:Z,viewIndex:a,subviewIndex:r,currentFilters:h,orderBy:w,isDesc:k,query:M}):null,Z.canCreate?Object(d.jsx)(o.b,{to:"/createRecord/".concat(a),children:Object(d.jsx)("div",{class:"plusButton",children:Object(d.jsx)("i",{class:"fa fa-plus"})})}):null]})]}),h.length>0?Object(d.jsx)("div",{class:"filtersContainer",children:h.map((function(e,t){return Object(d.jsxs)("div",{class:"filterItem",children:[Object(d.jsx)("div",{class:"filterItemLabel",children:e.label}),Object(d.jsx)("div",{class:"filterRemove",onClick:function(){x(h.filter((function(t){return t.query!==e.query})))},children:Object(d.jsx)("i",{class:"fa fa-times"})})]},t)}))}):null,Object(d.jsxs)("table",{class:"table",children:[Object(d.jsx)("thead",{children:Object(d.jsxs)("tr",{children:[X.hideMultiselect?null:Object(d.jsx)("th",{}),ee.map((function(e,t){var n="foreign"===e.dataType||"datalist"===e.dataType?e.formattedValue:e.sortName||e.name;return Object(d.jsxs)("th",{class:n?"sortable":"",onClick:function(){n&&(y(n),E(w===n&&!k))},children:[e.label,n?Object(d.jsx)("div",{class:"columnSortIcon",children:Object(d.jsx)("i",{class:"fas fa-sort".concat(!0===k&&n===w?"-down":!1===k&&n===w?"-up":"")})}):null]},t)}))]})}),Object(d.jsxs)("tbody",{children:[$?null:Array.from({length:10}).map((function(e,t){return Object(d.jsx)("tr",{class:"record",children:Array.from({length:ee.length+(X.hideMultiselect?0:1)}).map((function(e,t){return Object(d.jsx)("td",{children:" "},t)}))},t)})),null===$||void 0===$||null===(t=$.records)||void 0===t?void 0:t.map((function(e){var t=e[Z.primaryId];return Object(d.jsxs)("tr",{class:"record ".concat(Z.notClickable?"nonClickableRow":""),onClick:function(e){"A"!=e.target.tagName?Z.notClickable||(Z.clickToEdit?i.push("/editRecord/".concat(a,"/").concat(t)):i.push("/record/".concat(a,"/").concat(t))):e.stopPropagation()},children:[X.hideMultiselect?null:Object(d.jsx)("td",{class:"checkboxParent",onClick:function(e){V(R.includes(t)?R.filter((function(e){return e!==t})):[].concat(Object(P.a)(R),[t])),e.stopPropagation()},children:Object(d.jsx)("div",{class:"checkbox ".concat(R.includes(t)?"checked":"")})}),ee.map((function(t,n){return Object(d.jsx)("td",{children:N(t,e,X,!0)},n)}))]},t)}))]})]})]}),Object(d.jsxs)("div",{class:"tableFooter",children:[Object(d.jsxs)("div",{class:"tableCounter",children:[(null===$||void 0===$?void 0:$.count)||"-"," ",Z.label]}),Object(d.jsxs)("div",{class:"paginator",children:[Object(d.jsx)("div",{class:"paginatorLeft",onClick:function(){return v(Math.max(1,f-1))},children:Object(d.jsx)("i",{class:"fas fa-caret-left"})}),Object(d.jsxs)("div",{class:"paginatorNumber",children:[f," / ",$&&$.count?Math.ceil($.count/(Z.limit||10)):"-"]}),Object(d.jsx)("div",{class:"paginatorRight",onClick:function(){return v(Math.min(f+1,Math.ceil($.count/(Z.limit||10))))},children:Object(d.jsx)("i",{class:"fas fa-caret-right"})})]})]})]})},z=function(e){var t,n,a=e.viewIndex,r=e.record,i=e.refreshData,o=Object(c.useContext)(u.a).views[a],j=Object(c.useState)(!1),b=Object(l.a)(j,2),f=b[0],v=b[1],p=Object(s.g)(),x=function(){var e=Object(h.a)(O.a.mark((function e(){return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,window.swal({title:"\xcates-vous s\xfbr ?",text:"Une fois la suppression confirm\xe9e, il ne sera pas possible de revenir en arri\xe8re.",buttons:["Annuler","Oui"],dangerMode:!0});case 2:if(!e.sent){e.next=14;break}return o.deleteCallback&&_.a.post(o.deleteCallback,{id:r[o.primaryId],data:r}),e.prev=5,e.next=8,_.a.post("/deleteRecord",{viewIndex:a,primaryValue:r[o.primaryId]});case 8:p.push("/records/".concat(a)),e.next=14;break;case 11:e.prev=11,e.t0=e.catch(5),window.swal({title:"Erreur",text:"Suppression impossible",dangerMode:!0});case 14:case"end":return e.stop()}}),e,null,[[5,11]])})));return function(){return e.apply(this,arguments)}}();return!0===o.canDuplicate||!1!==o.canDelete||(null===(t=o.customActions)||void 0===t?void 0:t.length)>0?Object(d.jsx)(R,{onOutsideClick:function(){return v(!1)},children:Object(d.jsxs)("div",{class:"actionButtonsContainer",children:[Object(d.jsx)("div",{class:"button openActionsButton",onClick:function(){return v(!f)},children:"Actions"}),f?Object(d.jsxs)("div",{class:"actions",children:[null===(n=o.customActions)||void 0===n?void 0:n.map((function(e,t){return Object(d.jsx)("div",{class:"action recordAction",onClick:(n=t,function(){v(!1),_.a.post("customAction",{viewIndex:a,actionIndex:n,selectedRecordIds:[r[o.primaryId]]}).then((function(e){e.data.message&&alert(e.data.message),i()})).catch((function(){window.swal({title:"Erreur",text:"L'action a \xe9chou\xe9",dangerMode:!0})}))}),children:e.label});var n})),!0===o.canDuplicate?Object(d.jsx)("div",{class:"action recordAction duplicateRecord",children:"Dupliquer"}):null,!1!==o.canDelete?Object(d.jsx)("div",{class:"action recordAction red",onClick:x,children:"Supprimer"}):null]}):null]})}):null},$=function(){var e=Object(s.g)();return Object(d.jsx)("div",{class:"button backButton",onClick:function(){return e.goBack()},children:"Retour"})},G=function(e){var t=e.record,n=e.panel;return Object(d.jsx)("div",{class:"downloadPanelButton",onClick:function(){_.a.get("/customQuery",{params:{query:n.query||Object(V.a)(n.formattedQuery,t),primaryValue:2630}}).then((function(e){var t=e.data,c=[];c.push(Object.keys(t[0]).filter((function(e){return e!==n.primaryId})).join(","));var a,r=Object(x.a)(t);try{var i=function(){var e=a.value;c.push(Object.keys(e).filter((function(e){return e!==n.primaryId})).map((function(t){return n.formattedValues&&t in n.formattedValues?Object(V.a)(n.formattedValues[t],e):e[t]})).join(","))};for(r.s();!(a=r.n()).done;)i()}catch(l){r.e(l)}finally{r.f()}window.download(c.join("\r\n"),n.label+".csv")}))},children:Object(d.jsx)("i",{class:"fa fa-cloud-download"})})},X=function(e){var t=e.panel,n=e.record,a=e.view,r=e.index,i=Object(c.useState)(null),o=Object(l.a)(i,2),j=o[0],b=o[1],f=Object(s.g)(),v=Object(s.i)().viewIndex,p=Object(c.useContext)(u.a);Object(c.useEffect)((function(){x()}),[n]);var x=function(){_.a.get("/customQuery",{params:{viewIndex:v,panelIndex:r,query:t.query||Object(V.a)(t.formattedQuery,n),primaryValue:n[a.primaryId]}}).then((function(e){b(e.data)}))},m=function(){var e=Object(h.a)(O.a.mark((function e(n){return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,window.swal({title:"\xcates-vous s\xfbr ?",text:"Une fois la suppression confirm\xe9e, il ne sera pas possible de revenir en arri\xe8re.",buttons:["Annuler","Oui"],dangerMode:!0});case 2:if(!e.sent){e.next=13;break}return e.prev=4,e.next=7,_.a.post("/deleteRecordFromPanel",{viewIndex:v,panelId:t.__id__,primaryValue:n[t.primaryId]});case 7:x(),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(4),window.swal({title:"Erreur",text:"Suppression impossible",dangerMode:!0});case 13:case"end":return e.stop()}}),e,null,[[4,10]])})));return function(t){return e.apply(this,arguments)}}();return Object(d.jsx)("div",{children:(null===j||void 0===j?void 0:j.length)>0?Object(d.jsxs)("table",{class:"table panelTable ".concat(t.folded?"folded":""),children:[Object(d.jsx)("thead",{children:Object(d.jsxs)("tr",{children:[Object.keys(j[0]).filter((function(e){return e!==t.primaryId})).map((function(e){return Object(d.jsx)("th",{children:e},e)})),t.canDelete?Object(d.jsx)("th",{}):null]})}),Object(d.jsx)("tbody",{children:j.map((function(e){return Object(d.jsxs)("tr",{class:"record ".concat(t.canShow?"":"nonClickableRow"),onClick:function(){var n=p.views.findIndex((function(e){return"table"===e.type&&e.tableName===t.tableName}));t.canShow&&f.push("/record/".concat(n,"/").concat(e[t.primaryId]))},children:[Object.keys(e).filter((function(e){return e!==t.primaryId})).map((function(n){return Object(d.jsx)("td",{children:Object(d.jsx)("div",{dangerouslySetInnerHTML:{__html:t.formattedValues&&n in t.formattedValues?Object(V.a)(t.formattedValues[n],e):e[n]}})},n)})),t.canDelete?Object(d.jsx)("td",{class:"deleteIconCell",children:Object(d.jsx)("div",{class:"deleteIcon",onClick:function(t){m(e),t.stopPropagation()},children:Object(d.jsx)("i",{class:"fa fa-minus"})})}):null]})}))})]}):0===(null===j||void 0===j?void 0:j.length)?Object(d.jsx)("div",{class:"noData panelTable ".concat(t.folded?"folded":""),children:"Aucune donn\xe9e"}):null})},Z=function(e){var t=e.panel,n=e.record,a=e.view,r=Object(c.useState)(null),i=Object(l.a)(r,2),o=i[0],u=i[1],j=(Object(s.g)(),Object(s.i)().viewIndex);Object(c.useEffect)((function(){b()}),[t.query,n]);var b=function(){_.a.get("/customQuery",{params:{query:t.query,primaryValue:n[a.primaryId]}}).then((function(e){u(e.data)}))},f=function(){var e=Object(h.a)(O.a.mark((function e(n){return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,window.swal({title:"\xcates-vous s\xfbr ?",text:"Une fois la suppression confirm\xe9e, il ne sera pas possible de revenir en arri\xe8re.",buttons:["Annuler","Oui"],dangerMode:!0});case 2:if(!e.sent){e.next=13;break}return e.prev=4,e.next=7,_.a.post("/deleteRecordFromPanel",{viewIndex:j,panelId:t.__id__,primaryValue:n[t.primaryId]});case 7:b(),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(4),window.swal({title:"Erreur",text:"Suppression impossible",dangerMode:!0});case 13:case"end":return e.stop()}}),e,null,[[4,10]])})));return function(t){return e.apply(this,arguments)}}(),v=t.pathField||"Path";return Object(d.jsx)("div",{children:(null===o||void 0===o?void 0:o.length)>0?Object(d.jsx)("div",{class:"gallery",children:o.map((function(e){return Object(d.jsxs)("div",{class:"galleryPicture",children:[t.canDelete?Object(d.jsx)("div",{class:"deleteIcon",onClick:function(t){f(e),t.stopPropagation()},children:Object(d.jsx)("i",{class:"fa fa-minus"})}):null,Object(d.jsx)("a",{href:t.baseUrl+e[v],target:"_blank",children:Object(d.jsx)("img",{src:t.baseUrl+e[v],style:{width:"100%",height:150,objectFit:t.objectFit||"cover"},onerror:"this.style.height = 0"})})]},e[v])}))}):0===(null===o||void 0===o?void 0:o.length)?Object(d.jsx)("div",{class:"noData panelTable ".concat(t.folded?"folded":""),children:"Aucune donn\xe9e"}):null})},ee=function(e){var t=e.panel,n=e.record,a=e.view,r=Object(c.useRef)();Object(c.useEffect)((function(){window.google&&n&&(t.query?_.a.get("/customQuery",{query:t.query,primaryValue:n[a.primaryId]}).then((function(e){var n,c=null===e||void 0===e||null===(n=e.data)||void 0===n?void 0:n[0];c&&i(c.Lat,c.Lng,t.zoom||12)})):i(n[t.latitudeField],n[t.longitudeField],t.zoom||12))}),[n,window.google]);var i=function(e,t,n){var c=new window.google.maps.Map(r.current,{zoom:n,center:{lat:e,lng:t}});new window.google.maps.Marker({position:{lat:e,lng:t},map:c})};return Object(d.jsx)("div",{class:"map",ref:r})},te=function(){var e,t=Object(c.useContext)(u.a),n=Object(s.i)(),a=n.viewIndex,r=n.recordId,i=Object(c.useState)(null),j=Object(l.a)(i,2),b=j[0],f=j[1],v=t.views[a],p=null===(e=v.columns)||void 0===e?void 0:e.filter((function(e){return!e.hidden}));Object(c.useEffect)((function(){O()}),[a,r]);var O=function(){_.a.get("/record",{params:{viewIndex:a,recordId:r}}).then((function(e){f(e.data)}))};return Object(d.jsxs)("div",{class:"view backgroundBlue",children:[Object(d.jsxs)("div",{class:"viewHeader",children:[Object(d.jsx)("div",{class:"viewTitle",children:v.label}),Object(d.jsxs)("div",{class:"viewHeaderActions",children:[Object(d.jsx)($,{}),Object(d.jsx)(z,{viewIndex:a,record:b,refreshData:O}),!1!==v.canEdit?Object(d.jsx)(o.b,{to:"/editRecord/".concat(a,"/").concat(r),children:Object(d.jsx)("div",{class:"button greenButton recordAction",children:"Modifier"})}):null]})]}),Object(d.jsx)("div",{class:"paddedView",children:Object(d.jsxs)("div",{class:"showContainer",children:[Object(d.jsxs)("div",{class:"panel detailsPanel",children:[Object(d.jsx)("div",{class:"panelTitle",children:"D\xe9tails"}),b?p.map((function(e,n){return Object(d.jsxs)("div",{class:"showRecordField",children:[Object(d.jsx)("div",{class:"formLabel",children:e.label}),Object(d.jsx)("div",{class:"formValue",children:N(e,b,t,!1)||"-"})]},n)})):null]}),v.recordViewPanels&&b?Object(d.jsx)("div",{class:"recordViewPanels",children:v.recordViewPanels.map((function(e,t){return Object(d.jsxs)("div",{class:"panel",children:[Object(d.jsxs)("div",{class:"panelHeader",children:[Object(d.jsx)("div",{class:"viewTitle",children:e.label}),Object(d.jsxs)("div",{class:"viewHeaderActions",children:[e.folded?Object(d.jsx)("div",{class:"button smallButton unfoldPanel",children:"Afficher"}):null,e.canCreate?Object(d.jsx)(o.b,{to:"/createRecord/".concat(a,"/").concat(t,"/").concat(r),children:Object(d.jsx)("div",{class:"plusButton",children:Object(d.jsx)("i",{class:"fa fa-plus"})})}):null,e.canDownload&&"table"===e.type?Object(d.jsx)(G,{record:b,panel:e}):null]})]}),"table"===e.type?Object(d.jsx)(X,{record:b,panel:e,view:v,index:t}):null,"gallery"===e.type?Object(d.jsx)(Z,{record:b,panel:e,view:v,index:t}):null,"map"===e.type?Object(d.jsx)(ee,{record:b,panel:e,view:v,index:t}):null]},t)}))}):null]})})]})},ne=n.p+"static/media/logo.e407b9ca.png",ce=function(e){var t=e.setIsAuthenticated,n=Object(c.useState)(""),a=Object(l.a)(n,2),r=a[0],i=a[1],o=Object(c.useState)(""),s=Object(l.a)(o,2),u=s[0],j=s[1],b=function(){var e=Object(h.a)(O.a.mark((function e(){return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,_.a.post("/login",{username:r,password:u});case 2:e.sent.data.success&&t(!0);case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return Object(d.jsx)("div",{class:"loginPanelBackground",children:Object(d.jsxs)("div",{class:"loginPanel",children:[Object(d.jsx)("div",{class:"loginLogoContainer",children:Object(d.jsx)("img",{class:"loginLogo",src:ne})}),Object(d.jsx)("label",{children:"Nom d'utilisateur"}),Object(d.jsx)("input",{type:"text",name:"username",onChange:function(e){return i(e.target.value)}}),Object(d.jsx)("label",{children:"Mot de passe"}),Object(d.jsx)("input",{type:"password",name:"password",onChange:function(e){return j(e.target.value)}}),Object(d.jsx)("button",{class:"button greenButton fullWidth",onClick:b,children:"Se connecter"})]})})},ae=function(){var e=Object(c.useContext)(u.a),t=Object(s.i)().viewIndex,n=e.views[t];return Object(d.jsx)("div",{class:"view",children:Object(d.jsx)("iframe",{src:n.src})})},re=n(44),ie=n(40),le=["componentPath","children"],oe={react:function(){return{exports:a.a}},axios:function(){return{exports:_.a}},"styled-components":function(){return{exports:ie.a}}};function se(e,t,n){var c=Object.create(n);return function n(a){if(a in c||t!==a){if(!(a in c))throw"Module '".concat(a,"' not found")}else{var r={exports:{}};c[a]=function(){return r},Function("require, exports, module",e)(n,r.exports,r)}return c[a]().exports}(t)}function ue(e){return de.apply(this,arguments)}function de(){return(de=Object(h.a)(O.a.mark((function e(t){var n,c;return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,_.a.get("/customComponent",{params:{componentPath:t}});case 3:return n=e.sent,c=n.data,e.abrupt("return",{default:se(c,"__moduleName__",oe)});case 8:return e.prev=8,e.t0=e.catch(0),console.error(e.t0),e.abrupt("return",{default:function(){return Object(d.jsx)("div",{children:"Erreur de rendu"})}});case 12:case"end":return e.stop()}}),e,null,[[0,8]])})))).apply(this,arguments)}var je=function(e){var t=e.componentPath,n=e.children,r=Object(re.a)(e,le),i=Object(c.useMemo)((function(){return a.a.lazy(Object(h.a)(O.a.mark((function e(){return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",ue(t));case 1:case"end":return e.stop()}}),e)}))))}),[t]);return Object(d.jsx)(c.Suspense,{fallback:null,children:Object(d.jsx)(i,Object(v.a)(Object(v.a)({},r),{},{children:n}))})},be=a.a.memo(je),fe=function(){var e=Object(c.useContext)(u.a),t=Object(s.i)().viewIndex,n=e.views[t].componentPath;return Object(d.jsx)(be,{componentPath:n})};_.a.defaults.withCredentials=!0,_.a.defaults.baseURL="/_HOMEPAGE_/api";var ve=function(){var e=Object(c.useState)(null),t=Object(l.a)(e,2),n=t[0],a=t[1];return Object(c.useEffect)((function(){_.a.get("/isAuthenticated").then((function(e){a(e.data.isAuthenticated)}))}),[]),Object(d.jsx)("div",{id:"body",children:!0===n?Object(d.jsx)(u.b,{children:Object(d.jsxs)(o.a,{basename:"/_HOMEPAGE_",children:[Object(d.jsx)(b,{}),Object(d.jsxs)(s.d,{children:[Object(d.jsx)(s.b,{path:"/records/:viewIndex/:subviewIndex?",children:Object(d.jsx)(Y,{})}),Object(d.jsx)(s.b,{path:"/record/:viewIndex/:recordId",children:Object(d.jsx)(te,{})}),Object(d.jsx)(s.b,{path:"/editRecord/:viewIndex/:recordId",children:Object(d.jsx)(L,{})}),Object(d.jsx)(s.b,{path:"/createRecord/:viewIndex/:panelIndex?/:recordId?",children:Object(d.jsx)(S,{})}),Object(d.jsx)(s.b,{path:"/iframe/:viewIndex",children:Object(d.jsx)(ae,{})}),Object(d.jsx)(s.b,{path:"/customView/:viewIndex",children:Object(d.jsx)(fe,{})}),Object(d.jsx)(s.b,{path:"/",children:Object(d.jsx)(f,{})})]})]})}):!1===n?Object(d.jsx)(ce,{setIsAuthenticated:a}):Object(d.jsx)("div",{class:"appLoading",children:Object(d.jsx)("i",{class:"fa fa-circle-notch fa-spin"})})})};i.a.render(Object(d.jsx)(a.a.StrictMode,{children:Object(d.jsx)(ve,{})}),document.getElementById("root"))}},[[75,1,2]]]);
2
- //# sourceMappingURL=main.405f6f90.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["utils/evalExpression.js","contexts/ConfigContext.js","components/Sidebar.js","components/RedirectToFirstView.js","components/inputs/ColorInput.js","components/inputs/RichTextInput.js","components/inputs/DatetimeInput.js","components/inputs/AddressInput.js","components/inputs/FileInput.js","components/inputs/ForeignSelectInput.js","components/inputs/ForeignDatalistInput.js","components/Input.js","components/LabelTooltip.js","utils/checkRequiredColumns.js","pages/CreateRecord.js","pages/EditRecord.js","components/DownloadButton.js","components/OutsideClickHandler.js","components/AddFilterButton.js","components/BulkActionsButton.js","utils/getFormattedValue.js","pages/Records.js","components/ActionsButton.js","components/BackButton.js","components/DownloadTablePanelButton.js","components/panels/TablePanel.js","components/panels/GalleryPanel.js","components/panels/MapPanel.js","pages/Record.js","images/logo.png","pages/Login.js","pages/Iframe.js","components/CustomComponent.js","pages/CustomView.js","App.js","index.js"],"names":["expression","data","varString","key","replace","JSON","stringify","eval","e","console","log","error","ConfigContext","createContext","ConfigProvider","props","_useState","useState","_useState2","_slicedToArray","config","setConfig","useEffect","axios","get","then","response","_config","googleMapsKey","script","document","createElement","src","body","appendChild","removeChild","_jsx","Provider","value","children","SidebarItemIconAndLabel","_ref","view","_jsxs","_Fragment","class","concat","icon","label","location","useLocation","useContext","history","useHistory","logo","name","views","filter","hidden","map","i","type","href","isActive","pathname","Link","to","startsWith","onClick","push","subviews","subview","j","stopPropagation","hideBranding","firstView","Redirect","column","onChange","initialData","colorPicker","useRef","current","window","$","spectrum","preferredFormat","showInput","chooseText","cancelText","color","on","_","_defineProperty","toHexString","off","ref","target","Quill","prototype","getHTML","this","container","querySelector","innerHTML","quillContainer","editor","theme","modules","toolbar","contentField","setContents","parse","htmlField","clipboard","dangerouslyPasteHTML","_objectSpread","getContents","style","height","withTime","datepicker","datepickerEl","language","autoClose","onSelect","date","moment","format","selectDate","Date","googleMapsInput","google","autocomplete","maps","places","Autocomplete","componentRestrictions","addListener","place","getPlace","length","geometry","fieldValues","latitudeField","lat","longitudeField","lng","addressField","formatted_address","streetNumberField","_place$address_compon","address_components","find","x","long_name","routeField","_place$address_compon2","localityField","_place$address_compon3","administrativeAreaLevel2Field","_place$address_compon4","administrativeAreaLevel1Field","_place$address_compon5","countryField","_place$address_compon6","postalCodeField","_place$address_compon7","placeData","_googleMapsInput$curr","setInputValue","addEventListener","_googleMapsInput$curr2","removeEventListener","placeholder","defaultValue","form","viewIndex","useParams","isLoading","setIsLoading","_useState3","_useState4","path","setPath","onInputChange","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","f","fileData","wrap","_context","prev","next","FormData","method","url","params","columnId","__id__","headers","sent","aspectRatioField","aspectRatio","originalNameField","originalFilename","stop","apply","arguments","id","Math","random","toString","htmlFor","display","preventDefault","options","setOptions","post","_response$data$","_response$data$2","optional","_options$find","option","_options$find2","query","setQuery","input","isInputValid","_input$current","_input$current2","list","_options$find$value","_initialData$column$n","_initialData$column$n2","_initialData$column$n3","dataType","includes","defaultOption","Array","isArray","Object","keys","ForeignDatalistInput","ForeignSelectInput","AddressInput","ColorInput","FileInput","DatetimeInput","RichTextInput","text","visible","setVisible","onMouseLeave","onMouseEnter","columns","message","requiredUnfilledColumns","required","undefined","join","swal","title","dangerMode","_step","_useParams","panelIndex","recordId","panel","recordViewPanels","filteredColumns","createConfig","canEditOnCreation","canEdit","_iterator","_createForOfIteratorHelper","s","n","done","err","isCreating","setIsCreating","createRecord","_view$createConfig","checkRequiredColumns","abrupt","createFilters","redirectToCreatedItems","t0","isAxiosError","aNewSingular","index","labelTooltip","LabelTooltip","Input","newValues","goBack","record","setRecord","dataToUpdate","isUpdating","setIsUpdating","updateRecord","primaryValue","previousData","responseText","subviewIndex","currentFilters","orderBy","isDesc","isDownloading","setIsDownloading","filters","download","content","OutsideClickHandler","handler","wrapperRef","onOutsideClick","handleClickOutside","event","_document$getElementB","contains","getElementById","onAddFilter","refreshData","filtersOpened","setFiltersOpened","field","setField","_useState5","_useState6","operator","setOperator","_useState7","_useState8","setValue","foreignSelectedLabel","c","searchableName","_column","info","from","fieldLabel","searchedField","formattedValue","queryItems","_view$customActions","_view$customActions2","selectedRecordIds","bulkActionsOpened","setBulkActionsOpened","hideMultiselect","canDelete","customActions","action","actionIndex","alert","catch","buttons","willDelete","primaryValues","onTable","foreignViewIndex","findIndex","tableName","table","formatValue","dangerouslySetInnerHTML","__html","evalExpression","showAsPicture","imageUrl","baseUrl","pathField","width","objectFit","actionDisplayCondition","backgroundColor","constructor","_viewIndex","_page","_currentFilters","_orderBy","_isDesc","_query","_view$columns","_data$records","page","setPage","setCurrentFilters","setOrderBy","setIsDesc","_useState9","_useState10","_useState11","_useState12","setSelectedRecordIds","_useState13","_useState14","setData","hideInTable","_response$data","_response$data$record","records","BulkActionsButton","AddFilterButton","_toConsumableArray","canExport","DownloadButton","canCreate","sortName","cellIndex","primaryId","notClickable","tagName","clickToEdit","getFormattedValue","count","max","ceil","limit","min","actionsOpened","setActionsOpened","deleteRecord","deleteCallback","canDuplicate","formattedQuery","results","lines","_loop","result","formattedValues","setResults","deleteRow","row","panelId","_x","folded","canShow","onerror","mapRef","initMap","Lat","Lng","zoom","Map","center","Marker","position","BackButton","ActionsButton","canDownload","DownloadTablePanelButton","TablePanel","GalleryPanel","MapPanel","setIsAuthenticated","username","setUsername","password","setPassword","login","success","packages","exports","React","styled","getParsedModule","code","moduleName","_this","create","require","module","Function","wrapper","fetchComponent","_fetchComponent","_callee2","componentPath","_context2","default","CustomComponent","_objectWithoutProperties","_excluded","Component","useMemo","lazy","Suspense","fallback","memo","defaults","withCredentials","baseURL","App","isAuthenticated","Router","basename","Sidebar","Switch","Route","Records","Record","EditRecord","CreateRecord","Iframe","CustomView","RedirectToFirstView","Login","ReactDOM","render","StrictMode"],"mappings":"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","file":"static/js/main.405f6f90.chunk.js","sourcesContent":["\nexport default (expression, data) => {\n try {\n var varString = '';\n for (var key in data) {\n varString += \"var \" + key + \" = \" + (typeof data[key] === \"string\" ? \"'\" + data[key].replace(/'/g, \"\\\\'\").replace(/\\n/g, \"<br>\").replace(/\\r/g, \"\") + \"'\" : (typeof data[key] === \"object\" ? JSON.stringify(data[key]) : data[key])) + \";\"\n }\n return eval(varString + expression)\n } catch (e) {\n console.log(varString + expression);\n console.error(e);\n return \"Error\"\n }\n}","import React, { useEffect, createContext, useState } from \"react\";\nimport axios from \"axios\";\n\nconst ConfigContext = createContext(null);\n\nconst ConfigProvider = (props) => {\n const [config, setConfig] = useState(null);\n\n useEffect(() => {\n axios.get(\"/config\").then(response => {\n const _config = eval('(' + response.data.config + ')')\n setConfig(_config)\n\n if (_config.googleMapsKey) {\n const script = document.createElement('script');\n script.src = \"https://maps.googleapis.com/maps/api/js?key=\" + _config.googleMapsKey + \"&libraries=places,autocomplete\";\n document.body.appendChild(script);\n return () => {\n document.body.removeChild(script);\n }\n }\n })\n }, []);\n\n return config ? (\n <ConfigContext.Provider value={config} >\n {props.children}\n </ConfigContext.Provider >\n ) : null\n};\n\nexport { ConfigContext, ConfigProvider };\n","\nimport { useContext } from \"react\";\nimport {\n Link,\n useHistory,\n useLocation\n} from \"react-router-dom\";\nimport { ConfigContext } from '../contexts/ConfigContext'\n\nconst SidebarItemIconAndLabel = ({ view }) => (\n <>\n <div class=\"sidebarIcon\">\n <i class={`fas fa-${view.icon || \"square\"}`}></i>\n </div>\n <div class=\"sidebarLabel\">{view.label}</div>\n </>\n)\n\nexport default () => {\n const location = useLocation();\n const config = useContext(ConfigContext)\n const history = useHistory();\n\n return (\n <div class=\"sidebar\">\n {config.logo ? <img src={config.logo} class=\"logo\" /> : null}\n <div class=\"sidebarTitle\">{config.name}</div>\n <div class=\"sidebarSubtitle\">Back-office</div>\n {config.views.filter(view => !view.hidden).map((view, i) => {\n if (view.type === \"link\") {\n return (\n <a href={view.src} key={i}>\n <div class=\"sidebarItem\">\n <div>\n <SidebarItemIconAndLabel view={view} />\n </div>\n </div>\n </a>\n )\n } else if (view.type === \"iframe\") {\n const isActive = location.pathname === `/iframe/${i}`\n return (\n <Link to={`/iframe/${i}`} key={i}>\n <div class={`sidebarItem ${isActive ? \"active\" : \"\"}`}>\n <div>\n <SidebarItemIconAndLabel view={view} />\n </div>\n </div>\n </Link>\n )\n } else if (view.type === \"custom\") {\n const isActive = location.pathname === `/customView/${i}`\n return (\n <Link to={`/customView/${i}`} key={i}>\n <div class={`sidebarItem ${isActive ? \"active\" : \"\"}`}>\n <div>\n <SidebarItemIconAndLabel view={view} />\n </div>\n </div>\n </Link>\n )\n } else if (view.type === \"table\") {\n // TODO: bug quand la vue 10 est sélectionnée, la 1 aussi\n const isActive =\n location.pathname.startsWith(`/records/${i}`) ||\n location.pathname === `/createRecord/${i}` ||\n location.pathname.startsWith(`/record/${i}`) ||\n location.pathname.startsWith(`/editRecord/${i}`)\n return (\n <div onClick={() => history.push(`/records/${i}`)}>\n <div class={`sidebarItem ${isActive ? \"active\" : \"\"}`} key={i}>\n <div>\n <div class=\"notificationWrapper\"></div>\n <SidebarItemIconAndLabel view={view} />\n </div>\n {view.subviews ? (\n <>\n <div class=\"subviewsSeparator\"></div>\n {view.subviews.map((subview, j) => {\n const isActive = location.pathname == `/records/${i}/${j}`\n return (\n <div onClick={(e) => {\n history.push(`/records/${i}/${j}`);\n e.stopPropagation();\n }}>\n <div data-subview-index={j} class={isActive ? \"active\" : \"\"}>\n <div class=\"notificationWrapperForSubview\"></div>\n {subview.label}\n </div>\n </div>\n )\n })}\n </>\n ) : null}\n </div>\n </div>\n )\n }\n })}\n {!config.hideBranding ? (\n <div class=\"sidebarBranding\">Made with <i class=\"fas fa-heart\"></i> by Galadrim</div>\n ) : null}\n </div>\n )\n}","import { useContext } from \"react\"\nimport {\n\tRedirect\n} from \"react-router-dom\";\nimport { ConfigContext } from '../contexts/ConfigContext'\n\nexport default () => {\n\tconst config = useContext(ConfigContext)\n\tconst firstView = config.views[0]\n\n\tif (!firstView) {\n\t\treturn null\n\t}\n\tif (firstView.type === \"table\") {\n\t\treturn <Redirect to=\"/records/0\" />\n\t}\n\tif (firstView.type === \"iframe\") {\n\t\treturn <Redirect to=\"/iframe/0\" />\n\t}\n\tif (firstView.type === \"custom\") {\n\t\treturn <Redirect to=\"/customView/0\" />\n\t}\n\treturn null;\n}","import { useEffect, useRef } from \"react\";\n\nexport default ({ column, onChange, initialData }) => {\n const colorPicker = useRef(null);\n\n useEffect(() => {\n if (colorPicker.current) {\n window.$(colorPicker.current).spectrum({\n preferredFormat: \"hex\",\n showInput: true,\n chooseText: \"OK\",\n cancelText: \"Annuler\",\n color: initialData?.[column.name]\n });\n window.$(colorPicker.current).on(\"change.spectrum\", (_, value) => {\n onChange({ [column.name]: value.toHexString() })\n })\n }\n return () => window.$(colorPicker.current).off()\n }, [colorPicker.current])\n\n return (\n <input\n ref={colorPicker}\n type='text'\n onChange={(e) => onChange({ [column.name]: e.target.value })}\n />\n );\n}","import { useEffect, useRef } from \"react\";\n\nwindow.Quill.prototype.getHTML = function () {\n return this.container.querySelector('.ql-editor').innerHTML;\n};\n\nexport default ({ column, onChange, initialData }) => {\n const quillContainer = useRef(null);\n\n useEffect(() => {\n if (quillContainer.current && !quillContainer.current.editor) {\n const editor = new window.Quill(quillContainer.current, {\n theme: 'snow',\n modules: {\n toolbar: [\n [{\n 'header': [1, 2, 3, 4, false]\n }],\n ['bold', 'italic', 'underline', 'link'],\n ['image'],\n [{\n 'align': []\n }],\n [{\n 'list': 'ordered'\n }, {\n 'list': 'bullet'\n }],\n ['clean']\n ]\n }\n });\n if (column.contentField) {\n if (initialData?.[column.contentField]) {\n try {\n editor.setContents(JSON.parse(initialData?.[column.contentField]))\n } catch (e) { }\n }\n } else if (column.htmlField) {\n editor.clipboard.dangerouslyPasteHTML(0, initialData?.[column.htmlField])\n }\n editor.on('text-change', () => {\n onChange({\n [column.htmlField]: editor.getHTML(),\n ...(column.contentField && { [column.contentField]: JSON.stringify(editor.getContents()) })\n })\n });\n quillContainer.current.editor = editor\n return editor.off();\n }\n }, [quillContainer.current])\n\n return (\n <div class='quillContainer'>\n <div class=\"quill\" ref={quillContainer} style={column.height ? { height: column.height } : null} />\n </div>\n );\n};\n","import { useEffect, useRef } from \"react\";\n\nexport default ({ column, onChange, initialData, withTime }) => {\n const datepicker = useRef(null);\n\n useEffect(() => {\n if (datepicker.current) {\n const datepickerEl = window.$(datepicker.current).datepicker({\n language: \"fr\",\n autoClose: true,\n onSelect: (_, date) => {\n onChange({ [column.name]: window.moment(date).format(withTime ? \"YYYY-MM-DD HH:mm:ss\" : \"YYYY-MM-DD\") })\n }\n })\n if (initialData?.[column.name]) {\n datepickerEl.data(\"datepicker\").selectDate(new Date(initialData?.[column.name]))\n }\n }\n }, [datepicker.current])\n\n return (\n <div>\n <input type='text' ref={datepicker} data-timepicker={withTime ? \"true\" : \"false\"} />\n </div>\n )\n}","import { useEffect, useRef } from \"react\";\n\nexport default ({ column, onChange, initialData }) => {\n const googleMapsInput = useRef(null);\n\n useEffect(() => {\n if (googleMapsInput.current && window.google) {\n const autocomplete = new window.google.maps.places.Autocomplete(\n googleMapsInput.current,\n column.componentRestrictions ? {\n componentRestrictions: column.componentRestrictions\n } : {}\n )\n autocomplete.addListener('place_changed', () => {\n const place = autocomplete.getPlace();\n if (place.length === 0) {\n return;\n }\n if (!place.geometry) {\n return;\n } else {\n const fieldValues = {\n latitudeField: (place) => place.geometry.location.lat(),\n longitudeField: (place) => place.geometry.location.lng(),\n addressField: (place) => place.formatted_address,\n streetNumberField: (place) => place.address_components.find(x => x.type === \"street_number\")?.long_name,\n routeField: (place) => place.address_components.find(x => x.type === \"route\")?.long_name,\n localityField: (place) => place.address_components.find(x => x.type === \"locality\")?.long_name,\n administrativeAreaLevel2Field: (place) => place.address_components.find(x => x.type === \"administrative_area_level_2\")?.long_name,\n administrativeAreaLevel1Field: (place) => place.address_components.find(x => x.type === \"administrative_area_level_1\")?.long_name,\n countryField: (place) => place.address_components.find(x => x.type === \"country\")?.long_name,\n postalCodeField: (place) => place.address_components.find(x => x.type === \"postal_code\")?.long_name\n }\n const placeData = {}\n for (const key in fieldValues) {\n if (column[key]) {\n placeData[column[key]] = fieldValues[key](place)\n }\n }\n googleMapsInput.current.value = place.formatted_address\n onChange(placeData);\n }\n });\n }\n }, [googleMapsInput.current]);\n\n useEffect(() => {\n const setInputValue = () => {\n if (googleMapsInput.current) {\n googleMapsInput.current.value = \"\"\n }\n }\n googleMapsInput?.current?.addEventListener(\"focusout\", setInputValue)\n return () => googleMapsInput?.current?.removeEventListener(\"focusout\", setInputValue)\n }, [googleMapsInput.current])\n\n return (\n <div>\n <input\n type='text'\n placeholder=''\n ref={googleMapsInput}\n defaultValue={initialData?.[column.name]}\n />\n </div>\n )\n}","import { useRef, useState } from \"react\";\nimport axios from \"axios\";\nimport {\n useParams\n} from \"react-router-dom\";\n\nexport default ({ column, onChange, initialData }) => {\n const form = useRef(null);\n const { viewIndex } = useParams();\n const [isLoading, setIsLoading] = useState(false)\n const [path, setPath] = useState(initialData?.[column.name])\n\n const onInputChange = async () => {\n const f = new FormData(form.current);\n setIsLoading(true);\n\n const response = await axios({\n method: \"post\",\n url: `/uploadFile`,\n data: f,\n params: {\n viewIndex,\n columnId: column.__id__\n },\n headers: { \"Content-Type\": \"multipart/form-data\" }\n })\n const fileData = {\n [column.name]: response.data.path\n }\n if (column.aspectRatioField) {\n fileData[column.aspectRatioField] = response.data.aspectRatio\n }\n if (column.originalNameField) {\n fileData[column.originalNameField] = response.data.originalFilename\n }\n onChange(fileData)\n setIsLoading(false)\n setPath(response.data.path)\n // var showAsPicture = $(this).data(\"showAsPicture\") === 1\n //var baseUrl = $(\".fileInputContent[data-input-id='\" + inputId + \"']\").data(\"baseUrl\")\n //$(\".fileInputContent[data-input-id='\" + inputId + \"']\").removeClass(\"clickToSelectFile\").html(showAsPicture ? \"<div><img src='https://res.cloudinary.com/forest2/image/fetch/w_600,h_300,c_fit/\" + baseUrl + data.path + \"' /><div class='deleteFile'><i class='fal fa-trash-alt'></i></div></div>\" : \"<div class='nonImageFileOutput'><span>Fichier téléchargé</span><div class='deleteFile'><i class='fal fa-trash-alt'></i></div></div>\"\n }\n\n const deleteFile = (e) => {\n setPath(null);\n const fileData = {\n [column.name]: null\n }\n if (column.aspectRatioField) {\n fileData[column.aspectRatioField] = null\n }\n if (column.originalNameField) {\n fileData[column.originalNameField] = null\n }\n onChange(fileData)\n e.preventDefault()\n }\n\n var id = Math.random().toString()\n return (\n <div class='fileInputContainer'>\n <label htmlFor={id}>\n <form ref={form}>\n <input type='file' id={id} style={{ display: \"none\" }} name='file' onChange={onInputChange} />\n </form>\n <div class={`fileInputContent ${!path ? \"clickToSelectFile\" : \"\"}`}>\n {isLoading ?\n <i class='fa fa-circle-notch fa-spin'></i>\n : null\n }\n {!isLoading && !path ?\n <div>Cliquez pour sélectionner un fichier</div>\n : null}\n {!isLoading && path ? (\n <div class='nonImageFileOutput'>\n <span>Fichier téléchargé</span>\n <div class='deleteFile' onClick={deleteFile}><i class='fal fa-trash-alt'></i></div>\n </div>\n ) : null}\n </div>\n </label>\n </div>\n )\n}\n","import axios from \"axios\";\nimport { useEffect, useState } from \"react\"\nimport {\n useParams\n} from \"react-router-dom\";\n\nexport default ({ column, onChange, initialData }) => {\n const [options, setOptions] = useState(null)\n const { viewIndex } = useParams();\n\n useEffect(() => {\n axios.post(\"/foreignSelectRecords\", {\n viewIndex,\n columnId: column.__id__\n }).then((response) => {\n setOptions(response.data)\n onChange({ \n [column.name]: initialData?.[column.name] || (column.optional ? \"NULL\" : response.data[0]?.value) \n }, {\n label: column.optional ? \"-\" : response.data[0]?.label\n })\n })\n }, [])\n\n return options === null ? (\n <i class='fa fa-circle-notch fa-spin' style={{ color: \"#536579\" }}></i>\n ) : (\n <select\n onChange={(e) => onChange({ \n [column.name]: e.target.value \n }, {\n label: options.find(x => x.value == e.target.value)?.label\n })}\n defaultValue={initialData?.[column.name]}\n >\n {column.optional ? <option value='NULL'>-</option> : null}\n {options.map((option) => {\n return (\n <option value={option.value} key={option.value}>\n {option.label}\n </option>\n )\n })}\n </select>\n );\n}\n","import axios from \"axios\";\nimport { useEffect, useRef, useState } from \"react\"\nimport {\n useParams\n} from \"react-router-dom\";\n\nexport default ({ column, onChange, initialData }) => {\n const [options, setOptions] = useState([])\n const { viewIndex } = useParams();\n const [query, setQuery] = useState(\"\")\n const input = useRef(null)\n const isInputValid = useRef(false)\n\n useEffect(() => {\n axios.post(\"/foreignSelectRecords\", {\n viewIndex,\n columnId: column.__id__,\n query\n }).then((response) => {\n setOptions(response.data)\n })\n }, [query])\n\n useEffect(() => {\n const setInputValue = () => {\n if (input.current && !isInputValid.current) {\n input.current.value = \"\"\n }\n }\n input?.current?.addEventListener(\"focusout\", setInputValue)\n return () => input?.current?.removeEventListener(\"focusout\", setInputValue)\n }, [input.current])\n\n const id = Math.random();\n\n return options === null ? (\n <i class='fa fa-circle-notch fa-spin' style={{ color: \"#536579\" }}></i>\n ) : (\n <div>\n <input\n type='text'\n list={id}\n ref={input}\n onChange={(e) => {\n const value = options.find(x => x.label === e.target.value)?.value ?? null;\n isInputValid.current = !!value\n setQuery(e.target.value);\n onChange({ [column.name]: value })\n }}\n defaultValue={options.find(x => x.value === initialData?.[column.name])?.label}\n />\n <datalist id={id}>\n {column.optional ? <option value='NULL'>-</option> : null}\n {options.map((option) => {\n return (\n <option value={option.label} key={option.value}>\n {option.label}\n </option>\n )\n })}\n </datalist>\n </div>\n );\n}","import ColorInput from \"./inputs/ColorInput\"\nimport RichTextInput from \"./inputs/RichTextInput\";\nimport DatetimeInput from \"./inputs/DatetimeInput\";\nimport AddressInput from \"./inputs/AddressInput\";\nimport FileInput from \"./inputs/FileInput\";\nimport ForeignSelectInput from \"./inputs/ForeignSelectInput\";\nimport ForeignDatalistInput from \"./inputs/ForeignDatalistInput\";\n\nexport default ({ column, onChange, initialData }) => {\n const { dataType } = column;\n\n if ([\"int\", \"double\", \"float\", \"decimal\"].includes(dataType)) {\n return (\n <input\n type='number'\n onChange={(e) => onChange({ [column.name]: e.target.value })}\n defaultValue={initialData?.[column.name]}\n />\n );\n } else if (dataType === \"tinyint\") {\n return (\n <select\n onChange={(e) => onChange({ [column.name]: e.target.value })}\n defaultValue={initialData?.[column.name] ?? column.defaultOption}\n >\n {column.optional ? <option value='NULL'>-</option> : null}\n <option value='0'>Non</option>\n <option value='1'>Oui</option>\n </select>\n );\n } else if (dataType === \"select\" && Array.isArray(column.options)) {\n return (\n <select\n onChange={(e) => onChange({ [column.name]: e.target.value })}\n defaultValue={initialData?.[column.name] ?? column.defaultOption}\n >\n {column.optional ? <option value='NULL'>-</option> : null}\n {column.options.map(option => <option value={option} key={option}>{option}</option>)}\n </select>\n );\n } else if (dataType === \"select\") {\n return (\n <select\n onChange={(e) => onChange({ [column.name]: e.target.value })}\n defaultValue={initialData?.[column.name] ?? column.defaultOption}\n >\n {column.optional ? <option value='NULL'>-</option> : null}\n {Object.keys(column.options).map(key => <option value={key} key={key}>{column.options[key]}</option>)}\n </select>\n );\n } else if (dataType === \"datalist\") {\n return (\n <ForeignDatalistInput\n column={column}\n onChange={onChange}\n initialData={initialData}\n />\n );\n } else if (dataType === \"foreign\") {\n return (\n <ForeignSelectInput\n column={column}\n onChange={onChange}\n initialData={initialData}\n />\n );\n } else if (dataType === \"address\") {\n return (\n <AddressInput\n column={column}\n onChange={onChange}\n initialData={initialData}\n />\n )\n } else if (dataType === \"color\") {\n return (\n <ColorInput\n column={column}\n onChange={onChange}\n initialData={initialData}\n />\n );\n } else if (dataType === \"file\") {\n return (\n <FileInput\n column={column}\n onChange={onChange}\n initialData={initialData}\n />\n );\n } else if (dataType === \"datetime\") {\n return (\n <DatetimeInput\n column={column}\n onChange={onChange}\n initialData={initialData}\n withTime={true}\n />\n );\n } else if (dataType === \"date\") {\n return (\n <DatetimeInput\n column={column}\n onChange={onChange}\n initialData={initialData}\n withTime={false}\n />\n );\n } else if (dataType === \"textarea\") {\n return (\n <textarea\n onChange={(e) => onChange({ [column.name]: e.target.value })}\n defaultValue={initialData?.[column.name]}\n >\n </textarea>\n );\n } else if (dataType === \"richText\") {\n return (\n <RichTextInput\n column={column}\n onChange={onChange}\n initialData={initialData}\n />\n );\n } else {\n return (\n <input\n type='text'\n onChange={(e) => onChange({ [column.name]: e.target.value })}\n defaultValue={initialData?.[column.name]}\n />\n );\n }\n};","import { useState } from \"react\";\n\nexport default ({ text }) => {\n const [visible, setVisible] = useState(false);\n return (\n <div class=\"labelTooltipContainer\" onMouseLeave={() => setVisible(false)}>\n <div class=\"labelTooltipIcon\" onMouseEnter={() => setVisible(true)}>\n <i class='fa fa-question-circle' />\n </div>\n {visible ? (\n <div class='tooltip'>\n {text}\n </div>\n ) : null}\n </div>\n )\n}","function isNotFilled(x) {\n return x === undefined || x === null || x === ''\n}\n\nexport default (columns, data) => {\n const requiredUnfilledColumns = columns.filter(column => column.required && isNotFilled(data[column.name]))\n if (requiredUnfilledColumns.length > 0) {\n let message;\n if (requiredUnfilledColumns.length == 1) {\n message = `Le champ requis ${requiredUnfilledColumns.map(x => x.label).join(\", \")} n'a pas été rempli`\n } else {\n message = `Les champs requis ${requiredUnfilledColumns.map(x => x.label).join(\", \")} n'ont pas été remplis`\n }\n window.swal({\n title: \"Erreur\",\n text: message,\n dangerMode: true\n })\n return false;\n }\n return true;\n}","import { useContext, useRef, useState } from \"react\";\nimport {\n useParams,\n useHistory\n} from \"react-router-dom\";\nimport axios from \"axios\";\nimport Input from \"../components/Input\"\nimport LabelTooltip from \"../components/LabelTooltip\"\nimport { ConfigContext } from '../contexts/ConfigContext'\nimport checkRequiredColumns from \"../utils/checkRequiredColumns\";\n\nexport default () => {\n const config = useContext(ConfigContext)\n const { viewIndex, panelIndex, recordId } = useParams();\n const history = useHistory();\n const view = config.views[viewIndex];\n const panel = panelIndex ? view.recordViewPanels[panelIndex] : null;\n const filteredColumns = panel ? panel.createConfig.columns : view.columns.filter(\n column => column.dataType &&\n (column.canEditOnCreation === true || column.canEdit !== false)\n && !column.hidden\n )\n\n const initialData = {}\n for (const column of filteredColumns) {\n if (column.defaultOption) {\n initialData[column.name] = column.defaultOption\n } else if (column.dataType === \"tinyint\") {\n initialData[column.name] = column.optional ? \"NULL\" : \"0\"\n } else if (column.dataType === \"select\" && Array.isArray(column.options)) {\n initialData[column.name] = column.options[0]\n } else if (column.dataType === \"select\") {\n initialData[column.name] = Object.keys(column.options)[0]\n }\n if (column.defaultValue) {\n initialData[column.name] = column.defaultValue\n }\n }\n const data = useRef(initialData)\n const [isCreating, setIsCreating] = useState(false)\n\n const createRecord = async () => {\n if (!checkRequiredColumns(filteredColumns, data.current)) return;\n for (const key in view.createFilters) {\n data.current[key] = view.createFilters[key]\n }\n setIsCreating(true)\n try {\n const response = await axios.post(\"/createRecord\", {\n viewIndex,\n panelIndex,\n recordId,\n data: data.current\n })\n setIsCreating(false)\n if (recordId) { // Create from panel view\n history.push(`/record/${viewIndex}/${recordId}`)\n } else if (view?.createConfig?.redirectToCreatedItems) {\n history.push(`/record/${viewIndex}/${response.data.id}`)\n } else {\n history.push(`/records/${viewIndex}`)\n }\n } catch (error) {\n window.swal({\n title: \"Erreur\",\n text: axios.isAxiosError(error) ? error.response.data.message : \"Une erreur est survenue\",\n dangerMode: true\n })\n setIsCreating(false)\n }\n }\n\n return (\n <div class=\"view\">\n <div class=\"viewHeader\">\n <div class=\"viewTitle\">{panel ? panel.createConfig.label : `Créer ${view.aNewSingular}`}</div>\n </div>\n <div class=\"paddedView\">\n <div class=\"form\">\n {filteredColumns.map((column, index) => {\n return (\n <div class='formElement' key={index}>\n <div class='formLabel'>\n {column.label} {column.required ? \"*\" : \"\"}\n {column.labelTooltip ? <LabelTooltip text={column.labelTooltip} /> : null}\n </div>\n <div class='formInput'>\n <Input\n column={column}\n onChange={(newValues) => { data.current = { ...data.current, ...newValues } }}\n />\n </div>\n </div>\n )\n })}\n </div>\n <div class={`button greenButton ${isCreating ? \"loading\" : \"\"}`} onClick={createRecord}>{isCreating ? \"Sauvegarde en cours...\" : \"Créer\"}</div>\n <div class=\"button\" onClick={() => history.goBack()}>Annuler</div>\n </div>\n </div>\n )\n}","import { useContext, useRef, useState, useEffect } from \"react\";\nimport {\n useParams,\n useHistory\n} from \"react-router-dom\";\nimport axios from \"axios\";\nimport Input from \"../components/Input\"\nimport LabelTooltip from \"../components/LabelTooltip\"\nimport { ConfigContext } from '../contexts/ConfigContext'\nimport checkRequiredColumns from \"../utils/checkRequiredColumns\";\n\nexport default () => {\n const config = useContext(ConfigContext)\n const { viewIndex, recordId } = useParams();\n const history = useHistory();\n const view = config.views[viewIndex];\n const [record, setRecord] = useState(null);\n const filteredColumns = view.columns.filter(\n column => column.dataType &&\n column.canEdit !== false &&\n !column.hidden\n )\n\n const dataToUpdate = useRef({})\n const [isUpdating, setIsUpdating] = useState(false)\n\n useEffect(() => {\n axios.get(\"/record\", {\n params: {\n viewIndex,\n recordId\n }\n }).then((response) => {\n dataToUpdate.current = {};\n setRecord(response.data);\n });\n }, [viewIndex, recordId]);\n\n const updateRecord = async () => {\n if (!checkRequiredColumns(filteredColumns, {...record, ...dataToUpdate.current})) return;\n setIsUpdating(true)\n try {\n await axios.post(\"/updateRecord\", {\n viewIndex,\n primaryValue: recordId,\n data: dataToUpdate.current,\n previousData: record\n })\n setIsUpdating(false)\n history.push(`/record/${viewIndex}/${recordId}`)\n } catch (error) {\n if (error.response.responseText) {\n window.swal({\n title: \"Erreur\",\n text: error.response.responseText,\n dangerMode: true\n })\n }\n setIsUpdating(false)\n }\n }\n\n return (\n <div class=\"view\">\n <div class=\"viewHeader\">\n <div class=\"viewTitle\">{view.label}</div>\n </div>\n <div class=\"paddedView\">\n {record ? (\n <>\n <div class=\"form\">\n {filteredColumns.map((column, index) => {\n return (\n <div class='formElement' key={index}>\n <div class='formLabel'>\n {column.label} {column.required ? \"*\" : \"\"}\n {column.labelTooltip ? <LabelTooltip text={column.labelTooltip} /> : null}\n </div>\n <div class='formInput'>\n <Input\n column={column}\n initialData={record}\n onChange={(newValues) => { dataToUpdate.current = { ...dataToUpdate.current, ...newValues } }}\n />\n </div>\n </div>\n )\n })}\n </div>\n <div class={`button greenButton ${isUpdating ? \"loading\" : \"\"}`} onClick={updateRecord}>{isUpdating ? \"Sauvegarde en cours...\" : \"Sauvegarder\"}</div>\n <div class=\"button\" onClick={() => history.goBack()}>Annuler</div>\n </>\n ) : null}\n </div>\n </div>\n )\n}","\nimport { useState } from \"react\"\nimport axios from \"axios\";\n\nexport default ({ view, viewIndex, subviewIndex, currentFilters, orderBy, isDesc, query }) => {\n const [isDownloading, setIsDownloading] = useState(false)\n\n const downloadRecords = () => {\n setIsDownloading(true)\n axios.post(\"/recordsExport\", {\n viewIndex,\n subviewIndex,\n filters: currentFilters.map(function (x) {\n return x.query\n }),\n orderBy,\n isDesc,\n query\n }).then((response) => {\n setIsDownloading(false)\n window.download(response.data.content, view.label + \".csv\");\n })\n }\n\n return (\n <div class=\"downloadButton\" onClick={downloadRecords}>\n <i class={`fa ${!isDownloading ? \"fa-cloud-download\" : \"fa-spin fa-circle-notch\"}`}></i>\n </div>\n )\n}","import { useEffect, useRef } from \"react\"\n\nfunction useOutsideClickHandler(ref, handler) {\n useEffect(() => {\n function handleClickOutside(event) {\n if (\n ref.current && \n !ref.current.contains(event.target) && \n !document.getElementById(\"datepickers-container\")?.contains(event.target)\n ) {\n handler()\n }\n }\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref]);\n}\n\nexport default function OutsideClickHandler(props) {\n const wrapperRef = useRef(null);\n useOutsideClickHandler(wrapperRef, props.onOutsideClick);\n\n return <div ref={wrapperRef}>{props.children}</div>;\n}","import { useEffect, useState, useRef } from \"react\"\nimport OutsideClickHandler from \"./OutsideClickHandler\"\nimport ForeignSelectInput from \"./inputs/ForeignSelectInput\"\nimport DatetimeInput from \"./inputs/DatetimeInput\"\n\nexport default ({ view, refreshData, onAddFilter }) => {\n const [filtersOpened, setFiltersOpened] = useState(false)\n const [field, setField] = useState(null);\n const [operator, setOperator] = useState(\"contains\")\n const [value, setValue] = useState(null)\n\n const foreignSelectedLabel = useRef(\"-\");\n\n const column = view.columns.find(c => (c.searchableName || c.name) === field)\n\n useEffect(() => {\n if (column?.dataType === 'select') {\n setValue(Array.isArray(column.options) ? column.options[0] : Object.keys(column.options)[0])\n }\n }, [field])\n\n const addFilter = () => {\n if (field && value) {\n const fieldLabel = column?.label\n const searchedField = `(${column?.searchableName || column?.name})`\n if (column?.dataType === 'select') {\n const formattedValue = !Array.isArray(column?.options) ? column.options[value] : value\n onAddFilter({\n label: fieldLabel + \" est \" + formattedValue,\n query: searchedField + \" = '\" + value + \"'\"\n })\n } else if (column?.dataType === 'foreign') {\n onAddFilter({\n label: fieldLabel + \" est \" + foreignSelectedLabel.current,\n query: column.name + \" = '\" + value + \"'\"\n })\n } else if (column?.dataType === 'date' || column?.dataType === 'datetime') {\n let label;\n const queryItems = []\n if (value.from && !value.to) {\n label = fieldLabel + \" est après \" + value.from\n } else if (value.to && !value.from) {\n label = fieldLabel + \" est avant \" + value.to\n } else {\n label = fieldLabel + \" de \" + value.from + \" à \" + value.to\n }\n if (value.from) {\n queryItems.push(column.name + \" >= '\" + value.from + \"'\")\n }\n if (value.to) {\n queryItems.push(column.name + \" <= '\" + value.to + \"'\")\n }\n onAddFilter({\n label,\n query: queryItems.join(\" AND \")\n })\n } else if (operator === \"contains\") {\n onAddFilter({\n label: fieldLabel + \" contient \" + value,\n query: searchedField + \" LIKE '%\" + value + \"%'\"\n })\n } else if (operator === \"notContains\") {\n onAddFilter({\n label: fieldLabel + \" ne contient pas \" + value,\n query: searchedField + \" NOT LIKE '%\" + value + \"%'\"\n })\n } else if (operator === \"is\") {\n onAddFilter({\n label: fieldLabel + \" est \" + value,\n query: searchedField + \" = '\" + value + \"'\"\n })\n } else if (operator === \"isNot\") {\n onAddFilter({\n label: fieldLabel + \" n'est pas \" + value,\n query: searchedField + \" != '\" + value + \"'\"\n })\n } else if (operator === \"startsWith\") {\n onAddFilter({\n label: fieldLabel + \" commence par \" + value,\n query: searchedField + \" LIKE '\" + value + \"%'\"\n })\n } else if (operator === \"endsWith\") {\n onAddFilter({\n label: fieldLabel + \" finit par \" + value,\n query: searchedField + \" LIKE '%\" + value + \"'\"\n })\n } else if (operator === \"largerThan\") {\n onAddFilter({\n label: fieldLabel + \" supérieur à \" + value,\n query: searchedField + \" >= \" + value\n })\n } else if (operator === \"smallerThan\") {\n onAddFilter({\n label: fieldLabel + \" inférieur à \" + value,\n query: searchedField + \" <= \" + value\n })\n }\n setField(null)\n setValue(null)\n setFiltersOpened(false)\n }\n }\n\n return (\n <OutsideClickHandler onOutsideClick={() => setFiltersOpened(false)}>\n <div class=\"button openFilterPopup\" onClick={() => setFiltersOpened(!filtersOpened)}>\n <i class=\"fas fa-filter\"></i> Ajouter un filtre\n {filtersOpened ? (\n <div class=\"addFilterPopup\" onClick={(e) => e.stopPropagation()}>\n <div class=\"filterLabel\">Champ</div>\n <select onChange={(e) => setField(e.target.value)}>\n <option value=''>Sélectionnez un champ</option>\n {view.columns.filter(_column =>\n (_column.searchableName || _column.name) && _column.dataType !== \"datalist\"\n ).map((_column) => {\n const value = _column.searchableName || _column.name\n return (\n <option value={value} key={value}>\n {_column.label}\n </option>\n )\n })}\n </select>\n {column?.dataType === 'select' ? (\n <>\n <div class=\"filterLabel\">Valeur</div>\n <select onChange={(e) => setValue(e.target.value)}>\n {Array.isArray(column.options) ? column.options.map(value => (\n <option value={value}>{value}</option>\n )) : Object.keys(column.options).map(value => (\n <option value={value}>{column.options[value]}</option>\n ))}\n </select>\n </>\n ) : column?.dataType === 'foreign' ? (\n <>\n <div class=\"filterLabel\">Valeur</div>\n <ForeignSelectInput \n column={column} \n onChange={(data, info) => {\n setValue(data[column.name])\n foreignSelectedLabel.current = info.label\n }}\n />\n </>\n ) : column?.dataType === 'date' || column?.dataType === 'datetime' ? (\n <>\n <div class=\"filterLabel\">De</div>\n <DatetimeInput column={column} withTime={true} onChange={(data) => {\n setValue({\n from: data[column.name],\n to: value?.to\n })\n }} />\n <div class=\"filterLabel\">À</div>\n <DatetimeInput column={column} withTime={true} onChange={(data) => {\n setValue({\n from: value?.from,\n to: data[column.name]\n })\n }} />\n </>\n ) : (\n <>\n <div class=\"filterLabel\">Opérateur</div>\n <select onChange={(e) => setOperator(e.target.value)}>\n <option value=\"contains\">contient</option>\n <option value=\"notContains\">ne contient pas</option>\n <option value=\"startsWith\">commence par</option>\n <option value=\"endsWith\">finit par</option>\n <option value=\"is\">est</option>\n <option value=\"isNot\">n'est pas</option>\n <option value=\"largerThan\">est supérieur à</option>\n <option value=\"smallerThan\">est inférieur à</option>\n </select>\n <div class=\"filterLabel\">Valeur</div>\n <input onChange={(e) => setValue(e.target.value)} />\n </>\n )}\n <div class=\"button greenButton\" onClick={addFilter}>Ajouter</div>\n </div>\n ) : null}\n </div>\n </OutsideClickHandler >\n )\n}","import { useContext, useState } from \"react\"\nimport axios from \"axios\";\nimport OutsideClickHandler from \"./OutsideClickHandler\"\nimport { ConfigContext } from '../contexts/ConfigContext'\n\nexport default ({ viewIndex, selectedRecordIds, refreshData }) => {\n const config = useContext(ConfigContext)\n const view = config.views[viewIndex]\n const [bulkActionsOpened, setBulkActionsOpened] = useState(false)\n\n const bulkDelete = () => {\n window.swal({\n title: \"Êtes-vous sûr ?\",\n text: \"Une fois la suppression confirmée, il ne sera pas possible de revenir en arrière.\",\n buttons: [\"Annuler\", \"Oui\"],\n dangerMode: true\n }).then((willDelete) => {\n if (willDelete) {\n axios.post(\"deleteRecords\", {\n viewIndex,\n primaryValues: selectedRecordIds\n }).then(function () {\n refreshData()\n }).catch(function () {\n window.swal({\n title: \"Erreur\",\n text: \"Suppression impossible\",\n dangerMode: true\n })\n });\n }\n });\n }\n\n const bulkCustomAction = (actionIndex) => () => {\n setBulkActionsOpened(false)\n axios.post(\"customAction\", {\n viewIndex,\n actionIndex,\n selectedRecordIds\n }).then(function (response) {\n if (response.data.message) {\n alert(response.data.message)\n }\n refreshData()\n }).catch(function () {\n window.swal({\n title: \"Erreur\",\n text: \"L'action a échoué\",\n dangerMode: true\n })\n });\n }\n\n return !config.hideMultiselect && (view.canDelete !== false || view.customActions?.length > 0) ? (\n <OutsideClickHandler onOutsideClick={() => setBulkActionsOpened(false)}>\n <div class=\"actionButtonsContainer\">\n <div class=\"button openBulkActionsButton\" onClick={() => setBulkActionsOpened(!bulkActionsOpened)}>Actions</div>\n {bulkActionsOpened ? <div class=\"bulkActions\">\n {view.customActions?.map((action, index) => (\n <div class=\"action recordAction\" onClick={bulkCustomAction(index)}>{action.label}</div>\n ))}\n {view.canDelete !== false ? <div class=\"action recordAction red\" onClick={bulkDelete}>Supprimer</div> : null}\n </div> : null}\n </div>\n </OutsideClickHandler>\n ) : null\n}","import evalExpression from \"./evalExpression\"\nimport {\n Link\n} from \"react-router-dom\";\n\nexport default (column, record, config, onTable) => {\n const foreignViewIndex = column.dataType === 'foreign' ? config.views.findIndex(x => x.tableName === column.table) : -1\n if (column.dataType === 'foreign' && foreignViewIndex > -1) {\n if (column.formatValue) {\n return <Link to={`/record/${foreignViewIndex}/${record[column.name]}`} dangerouslySetInnerHTML={{ __html: record[`__formatValue-${column.__id__}__`] }} />\n } else if (column.formattedValue) {\n return <Link to={`/record/${foreignViewIndex}/${record[column.name]}`}>{evalExpression(column.formattedValue, record)}</Link>\n } else {\n return <Link to={`/record/${foreignViewIndex}/${record[column.name]}`}>{record[column.name]}</Link>\n }\n } else if (column.showAsPicture) {\n const imageUrl = column.baseUrl + record[column.pathField];\n return record[column.pathField] ? (\n <a href={imageUrl} target='_blank'>\n <img src={imageUrl} style={{ width: onTable ? 60 : 300, height: onTable ? 30 : 150, objectFit: \"contain\" }} />\n </a>\n ) : null\n } else if (column.formatValue) {\n return <div dangerouslySetInnerHTML={{ __html: record[`__formatValue-${column.__id__}__`] }} />\n } else if (column.formattedValue) {\n return <div>{evalExpression(column.formattedValue, record)}</div>\n } else if (column.action) {\n if (column.actionDisplayCondition) {\n let isDisplaying = evalExpression(column.actionDisplayCondition, record)\n if (!isDisplaying)\n return \"\";\n }\n var data = JSON.parse(JSON.stringify(column.data));\n for (var key in data) {\n data[key] = evalExpression(data[key], record)\n }\n return (\n <div class='actionButton' data-route='\" + column.route + \"' data-data='\" + JSON.stringify(data) + \"'>{column.action}</div>\n )\n } else if (column.dataType === \"tinyint\") {\n return <div>{record[column.name] === 1 ? \"Oui\" : \"Non\"}</div>\n } else if (column.dataType === \"color\") {\n return <div class='colorPreview' style={{ backgroundColor: record[column.name] }}></div>\n } else if (column.dataType === \"richText\") {\n return <div dangerouslySetInnerHTML={{ __html: record[column.htmlField] }} />\n } else if (column.dataType === \"select\" && column.options && column.options.constructor == Object) {\n return <div>{column.options[record[column.name]]}</div>\n } else {\n return <div>{record[column.name]}</div>\n }\n}","import { useState, useEffect, useContext } from \"react\"\nimport axios from \"axios\";\nimport {\n Link,\n useParams,\n useHistory\n} from \"react-router-dom\";\nimport DownloadButton from \"../components/DownloadButton\"\nimport AddFilterButton from \"../components/AddFilterButton\"\nimport BulkActionsButton from \"../components/BulkActionsButton\"\nimport getFormattedValue from \"../utils/getFormattedValue\"\nimport { ConfigContext } from '../contexts/ConfigContext'\n\nlet _viewIndex = null;\nlet _page = 1;\nlet _currentFilters = [];\nlet _orderBy = null;\nlet _isDesc = null;\nlet _query = \"\";\n\nexport default () => {\n const { viewIndex, subviewIndex } = useParams();\n const history = useHistory();\n const [page, setPage] = useState(_page)\n const [currentFilters, setCurrentFilters] = useState(_currentFilters)\n const [orderBy, setOrderBy] = useState(_orderBy);\n const [isDesc, setIsDesc] = useState(_isDesc);\n const [query, setQuery] = useState(_query);\n const [selectedRecordIds, setSelectedRecordIds] = useState([])\n const [data, setData] = useState(null)\n const config = useContext(ConfigContext);\n const view = config.views[viewIndex]\n\n const filteredColumns = view.columns?.filter(x => !x.hideInTable && !x.hidden)\n\n useEffect(() => {\n if (viewIndex !== _viewIndex) {\n setPage(1)\n setQuery(null)\n setOrderBy(null)\n setIsDesc(null)\n setQuery(\"\")\n if (selectedRecordIds.length > 0) {\n setSelectedRecordIds([])\n }\n if (currentFilters.length > 0) {\n setCurrentFilters([])\n }\n }\n }, [viewIndex])\n\n\n useEffect(() => {\n refreshData()\n _viewIndex = viewIndex;\n _page = page;\n _query = query;\n _currentFilters = currentFilters;\n _orderBy = orderBy;\n _isDesc = isDesc;\n }, [viewIndex, subviewIndex, page, query, currentFilters, orderBy, isDesc])\n\n function refreshData() {\n setData(null)\n axios.post(\"/records\", {\n viewIndex,\n subviewIndex,\n page,\n filters: currentFilters.map(function (x) {\n return x.query\n }),\n orderBy,\n isDesc,\n query\n }).then((response) => {\n if (response.data?.records?.length === 0 && page > 1) {\n setPage(1)\n }\n setData(response.data)\n })\n }\n\n return (\n <div class=\"view\">\n <div class=\"scrollable\">\n <div class=\"viewHeader\">\n <div class=\"viewTitle\">{view.label}</div>\n <div class=\"viewHeaderActions\">\n <div class=\"searchBarContainer\">\n <input type=\"text\" placeholder=\"Rechercher\" class=\"searchBar\" value={query} onChange={(e) => setQuery(e.target.value)} />\n <div class=\"searchBarIcon\">\n <i class=\"fa fa-search\"></i>\n </div>\n </div>\n <BulkActionsButton\n viewIndex={viewIndex}\n selectedRecordIds={selectedRecordIds}\n refreshData={refreshData}\n />\n <AddFilterButton\n view={view}\n refreshData={refreshData}\n onAddFilter={(filter) => setCurrentFilters([...currentFilters, filter])}\n />\n {view.canExport !== false ? (\n <DownloadButton\n view={view}\n viewIndex={viewIndex}\n subviewIndex={subviewIndex}\n currentFilters={currentFilters}\n orderBy={orderBy}\n isDesc={isDesc}\n query={query}\n />\n ) : null}\n {view.canCreate ? (\n <Link to={`/createRecord/${viewIndex}`}>\n <div class=\"plusButton\"><i class=\"fa fa-plus\"></i></div>\n </Link>\n ) : null}\n </div>\n </div>\n {currentFilters.length > 0 ? (\n <div class=\"filtersContainer\">\n {currentFilters.map((filter, index) => (\n <div class='filterItem' key={index}>\n <div class='filterItemLabel'>{filter.label}</div>\n <div class=\"filterRemove\" onClick={() => {\n setCurrentFilters(currentFilters.filter(x => x.query !== filter.query))\n }}><i class='fa fa-times'></i></div>\n </div>\n ))}\n </div>\n ) : null}\n <table class=\"table\">\n <thead>\n <tr>\n {config.hideMultiselect ? null : <th></th>}\n {filteredColumns.map((column, index) => {\n const sortName = column.dataType === \"foreign\" || column.dataType === \"datalist\" ? column.formattedValue : column.sortName || column.name\n return (\n <th\n class={sortName ? \"sortable\" : \"\"}\n key={index}\n onClick={() => {\n if (sortName) {\n setOrderBy(sortName)\n setIsDesc(orderBy === sortName ? !isDesc : false)\n }\n }}\n >\n {column.label}\n {sortName ? (\n <div class='columnSortIcon'>\n <i class={`fas fa-sort${isDesc === true && sortName === orderBy ? \"-down\" : (isDesc === false && sortName === orderBy ? \"-up\" : \"\")}`}></i>\n </div>\n ) : null}\n </th>\n )\n })}\n\n </tr>\n </thead>\n <tbody>\n {!data ? Array.from({ length: 10 }).map((_, index) => (\n <tr class='record' key={index}>{\n Array.from({\n length: filteredColumns.length + (config.hideMultiselect ? 0 : 1)\n }).map((_, cellIndex) => (\n <td key={cellIndex}> </td>\n ))\n }</tr>\n )) : null}\n {data?.records?.map((record) => {\n const recordId = record[view.primaryId]\n return (\n <tr\n class={`record ${view.notClickable ? \"nonClickableRow\" : \"\"}`}\n onClick={(event) => {\n if (event.target.tagName == \"A\") {\n event.stopPropagation();\n return;\n }\n if (!view.notClickable) {\n if (view.clickToEdit) {\n history.push(`/editRecord/${viewIndex}/${recordId}`)\n } else {\n history.push(`/record/${viewIndex}/${recordId}`)\n }\n }\n }}\n key={recordId}\n >\n {config.hideMultiselect ? null : <td class='checkboxParent' onClick={(e) => {\n setSelectedRecordIds(selectedRecordIds.includes(recordId) ? selectedRecordIds.filter(x => x !== recordId) : [...selectedRecordIds, recordId])\n e.stopPropagation()\n }}><div class={`checkbox ${selectedRecordIds.includes(recordId) ? \"checked\" : \"\"}`}></div></td>}\n {filteredColumns.map((column, index) => (\n <td key={index}>{getFormattedValue(column, record, config, true)}</td>\n ))}\n </tr>\n )\n })}\n </tbody>\n\n </table>\n </div>\n <div class=\"tableFooter\">\n <div class=\"tableCounter\">{data?.count || \"-\"} {view.label}</div>\n <div class=\"paginator\">\n <div class=\"paginatorLeft\" onClick={() => setPage(Math.max(1, page - 1))}><i class=\"fas fa-caret-left\"></i></div>\n <div class=\"paginatorNumber\">{page} / {data && data.count ? Math.ceil(data.count / (view.limit || 10)) : \"-\"}</div>\n <div class=\"paginatorRight\" onClick={() => setPage(Math.min(page + 1, Math.ceil(data.count / (view.limit || 10))))}><i class=\"fas fa-caret-right\"></i></div>\n </div>\n </div>\n </div>\n )\n}\n","\nimport { useContext, useState } from \"react\"\nimport {\n useHistory\n} from \"react-router-dom\";\nimport axios from \"axios\";\nimport OutsideClickHandler from \"./OutsideClickHandler\"\nimport { ConfigContext } from \"../contexts/ConfigContext\";\n\nexport default ({ viewIndex, record, refreshData }) => {\n const config = useContext(ConfigContext)\n const view = config.views[viewIndex]\n const [actionsOpened, setActionsOpened] = useState(false)\n const history = useHistory()\n\n const deleteRecord = async () => {\n const willDelete = await window.swal({\n title: \"Êtes-vous sûr ?\",\n text: \"Une fois la suppression confirmée, il ne sera pas possible de revenir en arrière.\",\n buttons: [\"Annuler\", \"Oui\"],\n dangerMode: true\n })\n if (willDelete) {\n if (view.deleteCallback) {\n axios.post(view.deleteCallback, {\n id: record[view.primaryId],\n data: record\n })\n }\n try {\n await axios.post(\"/deleteRecord\", {\n viewIndex,\n primaryValue: record[view.primaryId]\n })\n history.push(`/records/${viewIndex}`)\n } catch (e) {\n window.swal({\n title: \"Erreur\",\n text: \"Suppression impossible\",\n dangerMode: true\n })\n }\n }\n }\n\n const customAction = (actionIndex) => () => {\n setActionsOpened(false)\n axios.post(\"customAction\", {\n viewIndex,\n actionIndex,\n selectedRecordIds: [record[view.primaryId]]\n }).then(function (response) {\n if (response.data.message) {\n alert(response.data.message)\n }\n refreshData()\n }).catch(function () {\n window.swal({\n title: \"Erreur\",\n text: \"L'action a échoué\",\n dangerMode: true\n })\n });\n }\n\n return (\n (view.canDuplicate === true) || (view.canDelete !== false) || (view.customActions?.length > 0) ? (\n <OutsideClickHandler onOutsideClick={() => setActionsOpened(false)}>\n <div class=\"actionButtonsContainer\">\n <div class=\"button openActionsButton\" onClick={() => setActionsOpened(!actionsOpened)}>Actions</div>\n {actionsOpened ? (\n <div class=\"actions\">\n {view.customActions?.map((action, index) => (\n <div class=\"action recordAction\" onClick={customAction(index)}>{action.label}</div>\n ))}\n {view.canDuplicate === true ? <div class=\"action recordAction duplicateRecord\">Dupliquer</div> : null}\n {view.canDelete !== false ? <div class=\"action recordAction red\" onClick={deleteRecord}>Supprimer</div> : null}\n </div>\n ) : null}\n </div>\n </OutsideClickHandler>\n ) : null\n\n )\n}","\nimport {\n useHistory\n} from \"react-router-dom\";\n\nexport default () => {\n const history = useHistory();\n\n return (\n <div class=\"button backButton\" onClick={() => history.goBack()}>Retour</div>\n );\n}","import axios from \"axios\";\nimport evalExpression from \"../utils/evalExpression\";\n\nexport default ({ record, panel }) => {\n const downloadTable = () => {\n axios.get(\"/customQuery\", {\n params: {\n query: panel.query || evalExpression(panel.formattedQuery, record),\n primaryValue: 2630\n }\n }).then((response) => {\n const results = response.data;\n const lines = [];\n lines.push(Object.keys(results[0]).filter(key => key !== panel.primaryId).join(\",\"))\n for (let result of results) {\n lines.push(\n Object.keys(result).filter(key => key !== panel.primaryId).map((key) =>\n (panel.formattedValues && (key in panel.formattedValues)) ? evalExpression(panel.formattedValues[key], result) : result[key]\n ).join(\",\")\n )\n }\n\n window.download(lines.join(\"\\r\\n\"), panel.label + \".csv\");\n })\n }\n\n return (<div class='downloadPanelButton' onClick={downloadTable}><i class='fa fa-cloud-download'></i></div>)\n}","import { useState, useEffect, useContext } from \"react\"\nimport axios from \"axios\";\nimport evalExpression from \"../../utils/evalExpression\";\nimport {\n useHistory,\n useParams\n} from \"react-router-dom\";\nimport { ConfigContext } from \"../../contexts/ConfigContext\";\n\nexport default ({ panel, record, view, index }) => {\n const [results, setResults] = useState(null);\n const history = useHistory();\n const { viewIndex } = useParams();\n const config = useContext(ConfigContext)\n\n useEffect(() => {\n refreshData()\n }, [record])\n\n const refreshData = () => {\n axios.get(\"/customQuery\", {\n params: {\n viewIndex,\n panelIndex: index,\n query: panel.query || evalExpression(panel.formattedQuery, record),\n primaryValue: record[view.primaryId]\n }\n }).then((response) => {\n setResults(response.data)\n })\n }\n\n const deleteRow = async (row) => {\n const willDelete = await window.swal({\n title: \"Êtes-vous sûr ?\",\n text: \"Une fois la suppression confirmée, il ne sera pas possible de revenir en arrière.\",\n buttons: [\"Annuler\", \"Oui\"],\n dangerMode: true\n })\n if (willDelete) {\n try {\n await axios.post(\"/deleteRecordFromPanel\", {\n viewIndex,\n panelId: panel.__id__,\n primaryValue: row[panel.primaryId]\n })\n refreshData();\n } catch (e) {\n window.swal({\n title: \"Erreur\",\n text: \"Suppression impossible\",\n dangerMode: true\n })\n }\n }\n }\n\n return (\n <div>\n {results?.length > 0 ? (\n <table class={`table panelTable ${panel.folded ? \"folded\" : \"\"}`}>\n <thead>\n <tr>\n {Object.keys(results[0]).filter(key => key !== panel.primaryId).map((key) =>\n <th key={key}>{key}</th>\n )}\n {panel.canDelete ? <th></th> : null}\n </tr>\n </thead>\n <tbody>\n {results.map((result) => (\n <tr\n class={`record ${panel.canShow ? \"\" : \"nonClickableRow\"}`}\n onClick={() => {\n const viewIndex = config.views.findIndex(x => x.type === \"table\" && x.tableName === panel.tableName)\n if (panel.canShow) {\n history.push(`/record/${viewIndex}/${result[panel.primaryId]}`)\n }\n }}\n >\n {Object.keys(result).filter(key => key !== panel.primaryId).map((key) =>\n <td key={key}>\n <div\n dangerouslySetInnerHTML={{\n __html:\n (panel.formattedValues && (key in panel.formattedValues)) ?\n evalExpression(panel.formattedValues[key], result) :\n result[key]\n }}\n />\n </td>\n )}\n {panel.canDelete ? (\n <td class='deleteIconCell'>\n <div\n class='deleteIcon'\n onClick={(e) => {deleteRow(result); e.stopPropagation()}}\n >\n <i class='fa fa-minus'></i>\n </div>\n </td>\n ) : null}\n </tr>\n ))}\n </tbody>\n </table>\n ) : results?.length === 0 ? (\n <div class={`noData panelTable ${panel.folded ? \"folded\" : \"\"}`}>Aucune donnée</div>\n ) : null}\n </div>\n )\n}\n","import { useState, useEffect } from \"react\"\nimport {\n useHistory,\n useParams\n} from \"react-router-dom\";\nimport axios from \"axios\";\n\nexport default ({ panel, record, view }) => {\n const [results, setResults] = useState(null);\n const history = useHistory();\n const { viewIndex } = useParams();\n\n useEffect(() => {\n refreshData()\n }, [panel.query, record])\n\n const refreshData = () => {\n axios.get(\"/customQuery\", {\n params: {\n query: panel.query,\n primaryValue: record[view.primaryId]\n }\n }).then((response) => {\n setResults(response.data)\n })\n }\n const deleteRow = async (row) => {\n const willDelete = await window.swal({\n title: \"Êtes-vous sûr ?\",\n text: \"Une fois la suppression confirmée, il ne sera pas possible de revenir en arrière.\",\n buttons: [\"Annuler\", \"Oui\"],\n dangerMode: true\n })\n if (willDelete) {\n try {\n await axios.post(\"/deleteRecordFromPanel\", {\n viewIndex,\n panelId: panel.__id__,\n primaryValue: row[panel.primaryId]\n })\n refreshData();\n } catch (e) {\n window.swal({\n title: \"Erreur\",\n text: \"Suppression impossible\",\n dangerMode: true\n })\n }\n }\n }\n\n const pathField = panel.pathField || \"Path\"\n\n return (\n <div>\n {results?.length > 0 ? (\n <div class=\"gallery\">\n {results.map((result) => (\n <div class='galleryPicture' key={result[pathField]}>\n {panel.canDelete ? <div class='deleteIcon' onClick={(e) => {deleteRow(result); e.stopPropagation()}}><i class='fa fa-minus'></i></div> : null}\n <a href={panel.baseUrl + result[pathField]} target='_blank'>\n <img\n src={panel.baseUrl + result[pathField]}\n style={{ width: \"100%\", height: 150, objectFit: panel.objectFit || \"cover\" }}\n onerror='this.style.height = 0'\n />\n </a>\n </div>\n ))}\n </div>\n ) : results?.length === 0 ? (\n <div class={`noData panelTable ${panel.folded ? \"folded\" : \"\"}`}>Aucune donnée</div>\n ) : null}\n </div>\n )\n}\n","import { useEffect, useRef } from \"react\"\nimport axios from \"axios\";\n\nexport default ({ panel, record, view }) => {\n const mapRef = useRef();\n\n useEffect(() => {\n if (window.google && record) {\n if (panel.query) {\n axios.get(\"/customQuery\", {\n query: panel.query,\n primaryValue: record[view.primaryId]\n }).then((response) => {\n const result = response?.data?.[0]\n if (result) {\n initMap(result.Lat, result.Lng, panel.zoom || 12)\n }\n })\n } else {\n initMap(record[panel.latitudeField], record[panel.longitudeField], panel.zoom || 12)\n }\n }\n }, [record, window.google])\n\n const initMap = (lat, lng, zoom) => {\n const map = new window.google.maps.Map(mapRef.current, {\n zoom,\n center: {\n lat,\n lng\n }\n });\n new window.google.maps.Marker({\n position: { lat, lng },\n map\n });\n }\n\n return (\n <div class='map' ref={mapRef}></div>\n )\n}","import { useState, useEffect, useContext } from \"react\"\nimport axios from \"axios\";\nimport {\n useParams,\n Link,\n} from \"react-router-dom\";\nimport getFormattedValue from \"../utils/getFormattedValue\"\nimport ActionsButton from \"../components/ActionsButton\"\nimport BackButton from \"../components/BackButton\"\nimport DownloadTablePanelButton from \"../components/DownloadTablePanelButton\"\nimport TablePanel from \"../components/panels/TablePanel\"\nimport GalleryPanel from \"../components/panels/GalleryPanel\"\nimport MapPanel from \"../components/panels/MapPanel\"\nimport { ConfigContext } from '../contexts/ConfigContext'\n\nexport default () => {\n const config = useContext(ConfigContext)\n const { viewIndex, recordId } = useParams();\n const [record, setRecord] = useState(null);\n\n const view = config.views[viewIndex]\n const filteredColumns = view.columns?.filter(x => !x.hidden)\n\n useEffect(() => {\n refreshData()\n }, [viewIndex, recordId]);\n\n const refreshData = () => {\n axios.get(\"/record\", {\n params: {\n viewIndex,\n recordId\n }\n }).then((response) => {\n setRecord(response.data);\n });\n }\n\n return (\n <div class=\"view backgroundBlue\">\n <div class=\"viewHeader\">\n <div class=\"viewTitle\">{view.label}</div>\n <div class=\"viewHeaderActions\">\n <BackButton />\n <ActionsButton viewIndex={viewIndex} record={record} refreshData={refreshData} />\n {view.canEdit !== false ? (\n <Link to={`/editRecord/${viewIndex}/${recordId}`}>\n <div class=\"button greenButton recordAction\">Modifier</div>\n </Link>\n ) : null}\n </div>\n </div>\n <div class=\"paddedView\">\n <div class=\"showContainer\">\n <div class='panel detailsPanel'>\n <div class='panelTitle'>Détails</div>\n {record ?\n filteredColumns.map((column, index) => (\n <div class='showRecordField' key={index}>\n <div class='formLabel'>{column.label}</div>\n <div class='formValue'>{getFormattedValue(column, record, config, false) || \"-\"}</div>\n </div>\n ))\n : null}\n </div>\n {view.recordViewPanels && record ? (\n <div class='recordViewPanels'>\n {view.recordViewPanels.map((panel, index) => (\n <div class='panel' key={index}>\n <div class='panelHeader'>\n <div class='viewTitle'>{panel.label}</div>\n <div class='viewHeaderActions'>\n {panel.folded ? <div class='button smallButton unfoldPanel'>Afficher</div> : null}\n {panel.canCreate ? <Link to={`/createRecord/${viewIndex}/${index}/${recordId}`}><div class='plusButton'><i class='fa fa-plus'></i></div></Link> : null}\n {panel.canDownload && panel.type === \"table\" ? <DownloadTablePanelButton record={record} panel={panel} /> : null}\n </div>\n </div>\n {panel.type === \"table\" ? <TablePanel record={record} panel={panel} view={view} index={index} /> : null}\n {panel.type === \"gallery\" ? <GalleryPanel record={record} panel={panel} view={view} index={index} /> : null}\n {panel.type === \"map\" ? <MapPanel record={record} panel={panel} view={view} index={index} /> : null}\n </div>\n ))}\n </div>\n ) : null}\n </div>\n </div>\n </div>\n )\n}\n","export default __webpack_public_path__ + \"static/media/logo.e407b9ca.png\";","import axios from \"axios\";\nimport { useState } from \"react\";\nimport logo from \"../images/logo.png\"\n\nexport default ({ setIsAuthenticated }) => {\n const [username, setUsername] = useState(\"\")\n const [password, setPassword] = useState(\"\")\n\n const login = async () => {\n const response = await axios.post(\"/login\", {\n username,\n password\n });\n if (response.data.success) {\n setIsAuthenticated(true)\n }\n }\n\n return (\n <div class=\"loginPanelBackground\">\n <div class=\"loginPanel\">\n <div class=\"loginLogoContainer\">\n <img class=\"loginLogo\" src={logo} />\n </div>\n <label>Nom d'utilisateur</label>\n <input type=\"text\" name=\"username\" onChange={(e) => setUsername(e.target.value)} />\n <label>Mot de passe</label>\n <input type=\"password\" name=\"password\" onChange={(e) => setPassword(e.target.value)} />\n <button class=\"button greenButton fullWidth\" onClick={login}>Se connecter</button>\n </div>\n </div>\n )\n}","\n\nimport { useContext } from \"react\";\nimport {\n useParams\n} from \"react-router-dom\";\nimport { ConfigContext } from '../contexts/ConfigContext'\n\nexport default () => {\n const config = useContext(ConfigContext)\n const { viewIndex } = useParams();\n const view = config.views[viewIndex];\n\n return (\n <div class=\"view\">\n <iframe src={view.src}></iframe>\n </div>\n )\n}","import React, { useMemo, Suspense } from 'react';\nimport axios from \"axios\";\nimport styled from 'styled-components'\n\nconst packages = {\n \"react\": () => ({ exports: React }),\n \"axios\": () => ({ exports: axios }),\n \"styled-components\": () => ({ exports: styled }),\n}\n\nfunction getParsedModule(code, moduleName, packages) {\n const _this = Object.create(packages);\n function require(name) {\n if (!(name in _this) && moduleName === name) {\n let module = { exports: {} };\n _this[name] = () => module;\n let wrapper = Function(\"require, exports, module\", code);\n wrapper(require, module.exports, module);\n } else if (!(name in _this)) {\n throw `Module '${name}' not found`\n }\n return (_this[name]()).exports;\n }\n\n return require(moduleName);\n}\n\n\nasync function fetchComponent(componentPath) {\n try {\n const response = await axios.get(`/customComponent`, {\n params: {\n componentPath\n }\n })\n const text = response.data\n return { default: getParsedModule(text, \"__moduleName__\", packages) };\n } catch (error) {\n console.error(error)\n return { default() { return <div>Erreur de rendu</div> } }\n }\n\n}\n\nconst CustomComponent = ({ componentPath, children, ...props }) => {\n const Component = useMemo(() => {\n return React.lazy(async () => fetchComponent(componentPath))\n }, [componentPath]);\n\n return (\n <Suspense fallback={null}>\n <Component {...props}>{children}</Component>\n </Suspense>\n )\n};\n\nexport default React.memo(CustomComponent);\n","import { useContext } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport CustomComponent from \"../components/CustomComponent\";\nimport { ConfigContext } from \"../contexts/ConfigContext\";\n\nexport default () => {\n const config = useContext(ConfigContext)\n const { viewIndex } = useParams();\n\n const componentPath = config.views[viewIndex].componentPath\n\n return (\n <CustomComponent componentPath={componentPath} />\n )\n}","import {\n BrowserRouter as Router,\n Switch,\n Route\n} from \"react-router-dom\";\nimport { useEffect, useState } from \"react\";\nimport './App.css';\nimport Sidebar from './components/Sidebar'\nimport RedirectToFirstView from './components/RedirectToFirstView'\nimport CreateRecord from './pages/CreateRecord'\nimport EditRecord from './pages/EditRecord'\nimport Records from './pages/Records'\nimport Record from './pages/Record'\nimport Login from './pages/Login'\nimport Iframe from './pages/Iframe'\nimport CustomView from './pages/CustomView'\nimport { ConfigProvider } from './contexts/ConfigContext'\nimport axios from \"axios\";\n\naxios.defaults.withCredentials = true;\naxios.defaults.baseURL = process.env.NODE_ENV === \"development\" ? 'http://localhost/admin/api' : '/_HOMEPAGE_/api';\n\nfunction App() {\n const [isAuthenticated, setIsAuthenticated] = useState(null);\n\n useEffect(() => {\n axios.get(\"/isAuthenticated\").then((response) => {\n setIsAuthenticated(response.data.isAuthenticated)\n })\n }, []);\n\n return (\n <div id=\"body\">\n {isAuthenticated === true ? (\n <ConfigProvider>\n <Router basename={process.env.NODE_ENV === \"development\" ? '/admin' : \"/_HOMEPAGE_\"}>\n <Sidebar />\n <Switch>\n <Route path=\"/records/:viewIndex/:subviewIndex?\">\n <Records />\n </Route>\n <Route path=\"/record/:viewIndex/:recordId\">\n <Record />\n </Route>\n <Route path=\"/editRecord/:viewIndex/:recordId\">\n <EditRecord />\n </Route>\n <Route path=\"/createRecord/:viewIndex/:panelIndex?/:recordId?\">\n <CreateRecord />\n </Route>\n <Route path=\"/iframe/:viewIndex\">\n <Iframe />\n </Route>\n <Route path=\"/customView/:viewIndex\">\n <CustomView />\n </Route>\n <Route path=\"/\">\n <RedirectToFirstView />\n </Route>\n </Switch>\n </Router>\n </ConfigProvider>\n ) : isAuthenticated === false ? (\n <Login setIsAuthenticated={setIsAuthenticated} />\n ) : (\n <div class=\"appLoading\">\n <i class='fa fa-circle-notch fa-spin'></i>\n </div>\n )}\n </div>\n );\n}\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\n\nReactDOM.render(\n <React.StrictMode>\n <App />\n </React.StrictMode>,\n document.getElementById('root')\n);\n"],"sourceRoot":""}