@cloudron/pankow 3.1.8

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 (62) hide show
  1. package/.gitlab-ci.yml +30 -0
  2. package/.jshintrc +8 -0
  3. package/LICENSE +21 -0
  4. package/README.md +20 -0
  5. package/components/BottomBar.vue +22 -0
  6. package/components/Breadcrumb.vue +64 -0
  7. package/components/Button.vue +243 -0
  8. package/components/ButtonGroup.vue +37 -0
  9. package/components/Checkbox.vue +112 -0
  10. package/components/Dialog.vue +178 -0
  11. package/components/DirectoryView.vue +772 -0
  12. package/components/DirectoryViewListItem.vue +412 -0
  13. package/components/EmailInput.vue +22 -0
  14. package/components/FileUploader.vue +204 -0
  15. package/components/FormGroup.vue +26 -0
  16. package/components/Icon.vue +12 -0
  17. package/components/InputDialog.vue +170 -0
  18. package/components/InputGroup.vue +32 -0
  19. package/components/MainLayout.vue +63 -0
  20. package/components/Menu.vue +284 -0
  21. package/components/MenuItem.vue +106 -0
  22. package/components/MenuItemLink.vue +52 -0
  23. package/components/MultiSelect.vue +202 -0
  24. package/components/Notification.vue +163 -0
  25. package/components/NumberInput.vue +31 -0
  26. package/components/OfflineBanner.vue +47 -0
  27. package/components/PasswordInput.vue +86 -0
  28. package/components/Popover.vue +185 -0
  29. package/components/ProgressBar.vue +75 -0
  30. package/components/Radiobutton.vue +128 -0
  31. package/components/SideBar.vue +104 -0
  32. package/components/SingleSelect.vue +190 -0
  33. package/components/Spinner.vue +67 -0
  34. package/components/Switch.vue +94 -0
  35. package/components/TabView.vue +161 -0
  36. package/components/TableView.vue +187 -0
  37. package/components/TagInput.vue +104 -0
  38. package/components/TextInput.vue +58 -0
  39. package/components/TopBar.vue +88 -0
  40. package/fallbackImage.js +29 -0
  41. package/fetcher.js +81 -0
  42. package/gallery/CustomMenuItem.vue +40 -0
  43. package/gallery/DirectoryViewDemo.vue +73 -0
  44. package/gallery/Index.vue +790 -0
  45. package/gallery/folder.svg +151 -0
  46. package/gallery/index.html +25 -0
  47. package/gallery/index.js +10 -0
  48. package/gallery/logo.png +0 -0
  49. package/gallery/vite.config.mjs +9 -0
  50. package/gestures.js +60 -0
  51. package/index.js +86 -0
  52. package/logo.png +0 -0
  53. package/logo.svg +78 -0
  54. package/package.json +26 -0
  55. package/style.css +351 -0
  56. package/tooltip.js +83 -0
  57. package/utils.js +383 -0
  58. package/viewers/GenericViewer.vue +84 -0
  59. package/viewers/ImageViewer.vue +239 -0
  60. package/viewers/PdfViewer.vue +82 -0
  61. package/viewers/TextViewer.vue +221 -0
  62. package/viewers.js +11 -0
@@ -0,0 +1,151 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ viewBox="174.076 909 512 512"
4
+ version="1.1"
5
+ fill="none"
6
+ id="svg8"
7
+ sodipodi:docname="folder.svg"
8
+ width="512"
9
+ height="512"
10
+ inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
11
+ xml:space="preserve"
12
+ inkscape:export-filename="logo.png"
13
+ inkscape:export-xdpi="96"
14
+ inkscape:export-ydpi="96"
15
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
16
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
17
+ xmlns="http://www.w3.org/2000/svg"
18
+ xmlns:svg="http://www.w3.org/2000/svg"
19
+ xmlns:penpot="https://penpot.app/xmlns"><defs
20
+ id="defs9"><linearGradient
21
+ id="linearGradient5606"
22
+ inkscape:swatch="solid"><stop
23
+ style="stop-color:#000000;stop-opacity:1;"
24
+ offset="0"
25
+ id="stop5608" /></linearGradient></defs><sodipodi:namedview
26
+ id="namedview8"
27
+ pagecolor="#ffffff"
28
+ bordercolor="#666666"
29
+ borderopacity="1.0"
30
+ inkscape:showpageshadow="2"
31
+ inkscape:pageopacity="0.0"
32
+ inkscape:pagecheckerboard="true"
33
+ inkscape:deskcolor="#d1d1d1"
34
+ inkscape:export-bgcolor="#87878700"
35
+ inkscape:zoom="0.84864112"
36
+ inkscape:cx="283.98341"
37
+ inkscape:cy="262.77303"
38
+ inkscape:window-width="1920"
39
+ inkscape:window-height="1014"
40
+ inkscape:window-x="0"
41
+ inkscape:window-y="0"
42
+ inkscape:window-maximized="1"
43
+ inkscape:current-layer="g9" /><penpot:page
44
+ id="12c52011-66fe-81c0-8003-52d94eb6a788" /><g
45
+ id="g9"
46
+ transform="matrix(1.9743069,0,0,1.9743069,-125.84144,-864.32392)"><g
47
+ id="shape-63d8ddae-017c-80b2-8003-538c8d85f944"
48
+ style="fill:#0071e3;fill-opacity:1"
49
+ transform="translate(1.6491862e-7,-24.990782)"><penpot:shape
50
+ penpot:name="Exclude"
51
+ penpot:type="bool"
52
+ penpot:center-x="281.57605276372016"
53
+ penpot:center-y="1063.2326368678678"
54
+ penpot:bool-type="exclude"><penpot:fills><penpot:fill
55
+ penpot:fill-color="#ffffff"
56
+ penpot:fill-opacity="1" /></penpot:fills></penpot:shape><defs
57
+ id="defs3" /><g
58
+ class="fills"
59
+ id="fills-63d8ddae-017c-80b2-8003-538c8d85f944"
60
+ style="fill:#0071e3;fill-opacity:1"><path
61
+ rx="0"
62
+ ry="0"
63
+ style="fill:#0071e3;fill-opacity:1"
64
+ d="m 174.076,958.98156 v 48.62444 h 215 V 993.173 H 268.113 l -24.16555,-34.19144 z m 0,53.34544 v 123.434 c 0,10.342 0.533,10.972 11.696,10.972 h 191.82 c 11.163,0 11.425,-0.63 11.425,-10.972 v -123.434"
65
+ id="path3"
66
+ sodipodi:nodetypes="ccccccccssssc" /></g><penpot:bool><g
67
+ id="shape-3379d6d5-d382-80fe-8003-52dc53a94fc4"><penpot:shape
68
+ penpot:name="path4162"
69
+ penpot:type="path"
70
+ penpot:transform="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)"
71
+ penpot:transform-inverse="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)"
72
+ penpot:proportion="1"
73
+ penpot:proportion-lock="false"
74
+ penpot:rotation="0"
75
+ penpot:center-x="281.57605276372004"
76
+ penpot:center-y="1081.5"><penpot:svg-import
77
+ penpot:svg-viewbox-x="20.999954664172378"
78
+ penpot:svg-viewbox-y="37.8143709651832"
79
+ penpot:svg-viewbox-width="470.00002439592663"
80
+ penpot:svg-attrs="inkscape:export-ydpi,sodipodi:cx,sodipodi:r2,sodipodi:cy,inkscape:export-xdpi,inkscape:randomized,inkscape:flatsided,sodipodi:r1,style,sodipodi:arg2,id,sodipodi:arg1,sodipodi:sides,sodipodi:type,inkscape:rounded"
81
+ penpot:svg-viewbox-height="436.3700955661577"
82
+ penpot:svg-transform="matrix(10.563485, -6.202890, 6.098831, 10.743720, 733.517923, 1406.566265)"
83
+ penpot:svg-style="stroke-dasharray:none; stroke-dashoffset:0; stroke-miterlimit:4" /><penpot:fills><penpot:fill
84
+ penpot:fill-color="#2c91f3"
85
+ penpot:fill-opacity="1" /></penpot:fills></penpot:shape><defs /><g
86
+ class="fills"
87
+ id="fills-3379d6d5-d382-80fe-8003-52dc53a94fc4"><path
88
+ rx="0"
89
+ ry="0"
90
+ style="stroke-dasharray:none;stroke-dashoffset:0;stroke-miterlimit:4;opacity:1;fill:#2c91f3;fill-opacity:1"
91
+ d="M309.391,1032.681C315.390,1036.213,337.085,1074.530,337.076,1081.577C337.067,1088.623,315.269,1126.881,309.261,1130.396C303.253,1133.911,259.760,1133.851,253.761,1130.319C247.762,1126.787,226.067,1088.470,226.076,1081.424C226.085,1074.377,247.883,1036.120,253.891,1032.605C259.899,1029.089,303.393,1029.150,309.391,1032.681ZL309.391,1032.681Z" /></g></g><g
92
+ id="shape-3379d6d5-d382-80fe-8003-52dce9b1dcef"
93
+ rx="0"
94
+ ry="0"><penpot:shape
95
+ penpot:name="Group"
96
+ penpot:type="group"
97
+ penpot:transform="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)"
98
+ penpot:transform-inverse="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)"
99
+ penpot:rotation="0"
100
+ penpot:center-x="281.57605276372004"
101
+ penpot:center-y="1063.2326368678669" /><defs /><g
102
+ id="shape-3379d6d5-d382-80fe-8003-52dc653dcc13"><penpot:shape
103
+ penpot:name="path3028"
104
+ penpot:type="path"
105
+ penpot:transform="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)"
106
+ penpot:transform-inverse="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)"
107
+ penpot:proportion="1"
108
+ penpot:proportion-lock="false"
109
+ penpot:rotation="0"
110
+ penpot:center-x="281.57605276372016"
111
+ penpot:center-y="993.6692471822817"><penpot:svg-import
112
+ penpot:svg-viewbox-x="135.40180287754544"
113
+ penpot:svg-viewbox-y="148.96844666542407"
114
+ penpot:svg-viewbox-width="241.19641334094166"
115
+ penpot:svg-attrs="style,id,inkscape:connector-curvature,sodipodi:nodetypes"
116
+ penpot:svg-viewbox-height="34.4566283105855"
117
+ penpot:svg-transform="matrix(0.937500, 0.000000, 0.000000, 0.937500, 607.001240, -33.324082)"
118
+ penpot:svg-style="display:inline" /><penpot:fills><penpot:fill
119
+ penpot:fill-color="#ffffff"
120
+ penpot:fill-opacity="1" /></penpot:fills></penpot:shape><defs /><g
121
+ class="fills"
122
+ id="fills-3379d6d5-d382-80fe-8003-52dc653dcc13"><path
123
+ rx="0"
124
+ ry="0"
125
+ style="display:inline;fill:#ffffff;fill-opacity:1"
126
+ d="M174.076,979.733L174.076,1007.606L389.076,1007.606L389.076,993.173L268.113,993.173L254.679,979.733L174.076,979.733Z" /></g></g><g
127
+ id="shape-3379d6d5-d382-80fe-8003-52dc653dcc14"><penpot:shape
128
+ penpot:name="path3040"
129
+ penpot:type="path"
130
+ penpot:transform="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)"
131
+ penpot:transform-inverse="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)"
132
+ penpot:proportion="1"
133
+ penpot:proportion-lock="false"
134
+ penpot:rotation="0"
135
+ penpot:center-x="281.54670594203316"
136
+ penpot:center-y="1079.529826016343"><penpot:svg-import
137
+ penpot:svg-viewbox-x="118.17348830854957"
138
+ penpot:svg-viewbox-y="190.7484118512728"
139
+ penpot:svg-viewbox-width="275.6530424789334"
140
+ penpot:svg-attrs="style,id,inkscape:connector-curvature,sodipodi:nodetypes"
141
+ penpot:svg-viewbox-height="172.28315092792678"
142
+ penpot:svg-transform="matrix(0.937500, 0.000000, 0.000000, 0.937500, 607.001240, -33.324082)"
143
+ penpot:svg-style="display:inline" /><penpot:fills><penpot:fill
144
+ penpot:fill-color="#ffffff"
145
+ penpot:fill-opacity="1" /></penpot:fills></penpot:shape><defs /><g
146
+ class="fills"
147
+ id="fills-3379d6d5-d382-80fe-8003-52dc653dcc14"><path
148
+ rx="0"
149
+ ry="0"
150
+ style="display:inline;fill:#ffffff;fill-opacity:1"
151
+ d="M174.076,1012.327L174.076,1135.761C174.076,1146.103,174.609,1146.733,185.772,1146.733L377.592,1146.733C388.755,1146.733,389.017,1146.103,389.017,1135.761L389.017,1012.327" /></g></g></g></penpot:bool></g></g></svg>
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+ <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" />
7
+ <title>Pankow</title>
8
+ <link rel="shortcut icon" type="image/png" href="logo.png">
9
+ <style>
10
+ @media (prefers-color-scheme: dark) {
11
+ body {
12
+ background-color: black;
13
+ }
14
+ }
15
+ </style>
16
+
17
+ </head>
18
+ <body>
19
+ <noscript>
20
+ <strong>We're sorry but pankow doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
21
+ </noscript>
22
+ <div id="app"></div>
23
+ <script type="module" src="index.js"></script>
24
+ </body>
25
+ </html>
@@ -0,0 +1,10 @@
1
+ import { createApp } from 'vue';
2
+
3
+ import Index from './Index.vue';
4
+ import tooltip from '../tooltip.js';
5
+
6
+ const app = createApp(Index);
7
+
8
+ app.directive('tooltip', tooltip);
9
+
10
+ app.mount('#app');
Binary file
@@ -0,0 +1,9 @@
1
+ import { defineConfig } from 'vite';
2
+ import vue from '@vitejs/plugin-vue';
3
+
4
+ // https://vitejs.dev/config/
5
+ export default defineConfig({
6
+ plugins: [
7
+ vue()
8
+ ]
9
+ });
package/gestures.js ADDED
@@ -0,0 +1,60 @@
1
+ /*
2
+
3
+ Swipe handler
4
+
5
+ ```
6
+ import { onSwipe } from 'pankow/guesture';
7
+
8
+ onSwipe(element, (direction) => {});
9
+
10
+ ```
11
+
12
+ */
13
+ function onSwipe(elem, callback, threshold = 50) {
14
+ callback = typeof callback === 'function' ? callback : () => {};
15
+
16
+ let startX = 0;
17
+ let startY = 0;
18
+ let endX = 0;
19
+ let endY = 0;
20
+
21
+ function touchStart(event) {
22
+ if (event.touches.length !== 1) return;
23
+ startX = event.touches[0].clientX;
24
+ startY = event.touches[0].clientY;
25
+ };
26
+
27
+ function touchMove(event) {
28
+ if (event.touches.length !== 1) return;
29
+ endX = event.touches[0].clientX;
30
+ endY = event.touches[0].clientY;
31
+ }
32
+
33
+ function touchEnd(event) {
34
+ const diffX = startX - endX;
35
+ const diffY = startY - endY;
36
+ const absX = Math.abs(diffX);
37
+ const absY = Math.abs(diffY);
38
+
39
+ if (absX < threshold && absY < threshold) return;
40
+
41
+ // horizontal
42
+ if (absX > absY) return callback(diffX > 0 ? 'left' : 'right');
43
+
44
+ // vertical
45
+ callback(diffY > 0 ? 'up' : 'down');
46
+ };
47
+
48
+ elem.addEventListener('touchstart', touchStart);
49
+ elem.addEventListener('touchmove', touchMove);
50
+ elem.addEventListener('touchend', touchEnd);
51
+ elem.addEventListener('touchcancel', touchEnd);
52
+ }
53
+
54
+ export default {
55
+ onSwipe
56
+ };
57
+
58
+ export {
59
+ onSwipe
60
+ };
package/index.js ADDED
@@ -0,0 +1,86 @@
1
+ import '@fontsource/inter';
2
+ import '@fortawesome/fontawesome-free/css/all.min.css';
3
+ import './style.css';
4
+
5
+ // Order of import matters due to css rule matching!
6
+ import BottomBar from './components/BottomBar.vue';
7
+ import Breadcrumb from './components/Breadcrumb.vue';
8
+ import Button from './components/Button.vue';
9
+ import ButtonGroup from './components/ButtonGroup.vue';
10
+ import Checkbox from './components/Checkbox.vue';
11
+ import Dialog from './components/Dialog.vue';
12
+ import DirectoryView from './components/DirectoryView.vue';
13
+ import EmailInput from './components/EmailInput.vue';
14
+ import FileUploader from './components/FileUploader.vue';
15
+ import FormGroup from './components/FormGroup.vue';
16
+ import Icon from './components/Icon.vue';
17
+ import InputDialog from './components/InputDialog.vue';
18
+ import MainLayout from './components/MainLayout.vue';
19
+ import Menu from './components/Menu.vue';
20
+ import MenuItem from './components/MenuItem.vue';
21
+ import SingleSelect from './components/SingleSelect.vue';
22
+ import MultiSelect from './components/MultiSelect.vue';
23
+ import Notification from './components/Notification.vue';
24
+ import NumberInput from './components/NumberInput.vue';
25
+ import OfflineBanner from './components/OfflineBanner.vue';
26
+ import PasswordInput from './components/PasswordInput.vue';
27
+ import Popover from './components/Popover.vue';
28
+ import ProgressBar from './components/ProgressBar.vue';
29
+ import Radiobutton from './components/Radiobutton.vue';
30
+ import SideBar from './components/SideBar.vue';
31
+ import Spinner from './components/Spinner.vue';
32
+ import Switch from './components/Switch.vue';
33
+ import TableView from './components/TableView.vue';
34
+ import TabView from './components/TabView.vue';
35
+ import TagInput from './components/TagInput.vue';
36
+ import TextInput from './components/TextInput.vue';
37
+ import TopBar from './components/TopBar.vue';
38
+ import InputGroup from './components/InputGroup.vue'; // must be at the end for border-radius handling
39
+
40
+ import fetcher from './fetcher.js';
41
+ import gestures from './gestures.js';
42
+ import utils from './utils.js';
43
+ import tooltip from './tooltip.js';
44
+ import fallbackImage from './fallbackImage.js';
45
+
46
+ export {
47
+ BottomBar,
48
+ Breadcrumb,
49
+ Button,
50
+ ButtonGroup,
51
+ Checkbox,
52
+ Dialog,
53
+ DirectoryView,
54
+ EmailInput,
55
+ FileUploader,
56
+ FormGroup,
57
+ InputGroup,
58
+ Icon,
59
+ InputDialog,
60
+ MainLayout,
61
+ Menu,
62
+ MenuItem,
63
+ SingleSelect,
64
+ MultiSelect,
65
+ Notification,
66
+ NumberInput,
67
+ OfflineBanner,
68
+ PasswordInput,
69
+ Popover,
70
+ ProgressBar,
71
+ Radiobutton,
72
+ SideBar,
73
+ Spinner,
74
+ Switch,
75
+ TableView,
76
+ TabView,
77
+ TagInput,
78
+ TextInput,
79
+ TopBar,
80
+
81
+ fetcher,
82
+ gestures,
83
+ tooltip,
84
+ fallbackImage,
85
+ utils,
86
+ };
package/logo.png ADDED
Binary file
package/logo.svg ADDED
@@ -0,0 +1,78 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="512"
6
+ height="512"
7
+ viewBox="0 0 128 128"
8
+ version="1.1"
9
+ id="svg1"
10
+ xml:space="preserve"
11
+ inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
12
+ sodipodi:docname="logo.svg"
13
+ inkscape:export-filename="logo.png"
14
+ inkscape:export-xdpi="96"
15
+ inkscape:export-ydpi="96"
16
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
17
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
18
+ xmlns="http://www.w3.org/2000/svg"
19
+ xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
20
+ id="namedview1"
21
+ pagecolor="#ffffff"
22
+ bordercolor="#666666"
23
+ borderopacity="1.0"
24
+ inkscape:showpageshadow="2"
25
+ inkscape:pageopacity="0.0"
26
+ inkscape:pagecheckerboard="0"
27
+ inkscape:deskcolor="#d1d1d1"
28
+ inkscape:document-units="px"
29
+ inkscape:zoom="0.72159091"
30
+ inkscape:cx="166.99213"
31
+ inkscape:cy="286.86614"
32
+ inkscape:window-width="1920"
33
+ inkscape:window-height="1014"
34
+ inkscape:window-x="0"
35
+ inkscape:window-y="0"
36
+ inkscape:window-maximized="1"
37
+ inkscape:current-layer="layer1"
38
+ showgrid="false" /><defs
39
+ id="defs1"><inkscape:path-effect
40
+ effect="fillet_chamfer"
41
+ id="path-effect2"
42
+ is_visible="true"
43
+ lpeversion="1"
44
+ nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
45
+ radius="0"
46
+ unit="px"
47
+ method="auto"
48
+ mode="F"
49
+ chamfer_steps="1"
50
+ flexible="false"
51
+ use_knot_distance="true"
52
+ apply_no_radius="true"
53
+ apply_with_radius="true"
54
+ only_selected="false"
55
+ hide_knots="false" /><inkscape:path-effect
56
+ effect="fillet_chamfer"
57
+ id="path-effect1"
58
+ is_visible="true"
59
+ lpeversion="1"
60
+ nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.44357024,0,1 @ F,0,0,1,0,0.63159802,0,1 @ F,0,0,1,0,0.64142375,0,1 @ F,0,0,1,0,0.63159802,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.56999564,0,1 @ F,0,0,1,0,0.72306358,0,1 @ F,0,0,1,0,0.56999564,0,1 @ F,0,0,1,0,1.3746314,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
61
+ radius="0"
62
+ unit="px"
63
+ method="auto"
64
+ mode="F"
65
+ chamfer_steps="1"
66
+ flexible="false"
67
+ use_knot_distance="true"
68
+ apply_no_radius="true"
69
+ apply_with_radius="true"
70
+ only_selected="false"
71
+ hide_knots="false" /></defs><g
72
+ inkscape:label="Layer 1"
73
+ inkscape:groupmode="layer"
74
+ id="layer1"><path
75
+ style="fill:#0071e3;stroke-width:1.88633;fill-opacity:1"
76
+ d="m 98.699074,29.935301 c -0.163123,0.23219 -47.75949,64.957442 -47.75949,64.957442 V 65.609386 L 80.652312,23.736848 c 0,0 0.671306,-1.036796 0.815875,-1.569383 0.144569,-0.532587 -0.08164,-1.891281 -0.645525,-2.571973 C 80.394236,19.078318 79.906399,18.982723 78.99392,18.75 c -0.912479,-0.232723 -31.804336,0 -31.804336,0 l -0.75,1 V 122 l 2,3.5 -1,1 h -22 l -1,-1 2,-3.5 V 8.5 l -2,-6 1,-1 h 56.418279 c 9.996284,0 15.038793,0.4010722 18.690077,5.8074305 4.23554,6.2714565 4.34067,13.8176305 -1.848866,22.6278705 z"
77
+ id="path1"
78
+ sodipodi:nodetypes="sccczazccccccccccczas" /></g></svg>
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@cloudron/pankow",
3
+ "private": false,
4
+ "version": "3.1.8",
5
+ "description": "",
6
+ "main": "index.js",
7
+ "scripts": {
8
+ "gallery": "cd gallery && vite",
9
+ "build": "cd gallery && vite build"
10
+ },
11
+ "type": "module",
12
+ "author": "",
13
+ "license": "ISC",
14
+ "dependencies": {
15
+ "@fontsource/inter": "^5.2.6",
16
+ "@fortawesome/fontawesome-free": "^6.7.2",
17
+ "filesize": "^10.1.6",
18
+ "moment": "^2.30.1",
19
+ "monaco-editor": "^0.52.2"
20
+ },
21
+ "devDependencies": {
22
+ "@vitejs/plugin-vue": "^6.0.0",
23
+ "vite": "^7.0.3",
24
+ "vue": "^3.5.17"
25
+ }
26
+ }