glib-web 0.5.77 → 0.5.78

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 (130) hide show
  1. package/README.md +0 -0
  2. package/action.js +167 -167
  3. package/actions/analytics/logEvent.js +0 -0
  4. package/actions/cables/push.js +0 -0
  5. package/actions/dialogs/notification.js +0 -0
  6. package/actions/http/patch.js +0 -0
  7. package/actions/panels/scrollTo.js +18 -18
  8. package/actions/panels/scrollToBottom.js +0 -0
  9. package/actions/timeouts/set.js +20 -20
  10. package/actions/windows/close.js +0 -0
  11. package/actions/windows/closeAll.js +0 -0
  12. package/actions/windows/closeWithReload.js +0 -0
  13. package/actions/windows/refreshState.js +5 -5
  14. package/actions/windows/reload.js +0 -0
  15. package/actions/ws/push.js +0 -0
  16. package/app.vue +180 -180
  17. package/components/_button.vue +101 -101
  18. package/components/_dropdownMenu.vue +76 -76
  19. package/components/_icon.vue +50 -50
  20. package/components/avatar.vue +16 -16
  21. package/components/banners/alert.vue +0 -0
  22. package/components/banners/select.vue +82 -82
  23. package/components/component.vue +222 -222
  24. package/components/fields/_patternText.vue +61 -61
  25. package/components/fields/_select.vue +86 -86
  26. package/components/fields/autocomplete.vue +73 -73
  27. package/components/fields/check.vue +104 -104
  28. package/components/fields/creditCard.vue +0 -0
  29. package/components/fields/dynamicGroup.vue +0 -0
  30. package/components/fields/hidden.vue +0 -0
  31. package/components/fields/location.vue +0 -0
  32. package/components/fields/newRichText.vue +0 -0
  33. package/components/fields/phone/countries.js +315 -315
  34. package/components/fields/phone/field.vue +348 -348
  35. package/components/fields/phone/sprite.css +1071 -1071
  36. package/components/fields/radio.vue +64 -64
  37. package/components/fields/radioGroup.vue +0 -0
  38. package/components/fields/rating.vue +0 -0
  39. package/components/fields/richText.vue +0 -0
  40. package/components/fields/select.vue +17 -17
  41. package/components/fields/stripe/stripeFields.vue +93 -93
  42. package/components/fields/stripe/stripeIndividualFields.vue +207 -207
  43. package/components/fields/stripeExternalAccount.vue +135 -135
  44. package/components/fields/text.vue +0 -0
  45. package/components/fields/textarea.vue +0 -0
  46. package/components/fields/timeZone.vue +22 -22
  47. package/components/fields/timer.vue +83 -83
  48. package/components/h1.vue +28 -28
  49. package/components/h2.vue +20 -20
  50. package/components/h3.vue +22 -22
  51. package/components/h4.vue +20 -20
  52. package/components/h5.vue +20 -20
  53. package/components/h6.vue +20 -20
  54. package/components/icon.vue +25 -25
  55. package/components/label.vue +62 -62
  56. package/components/map.vue +0 -0
  57. package/components/mixins/events.js +178 -178
  58. package/components/mixins/generic.js +0 -0
  59. package/components/mixins/list/autoload.js +0 -0
  60. package/components/mixins/styles.js +221 -221
  61. package/components/mixins/table/autoload.js +0 -0
  62. package/components/mixins/text.js +20 -20
  63. package/components/mixins/ws/actionCable.js +48 -48
  64. package/components/mixins/ws/phoenixSocket.js +0 -0
  65. package/components/panels/carousel.vue +55 -55
  66. package/components/panels/flow.vue +81 -81
  67. package/components/panels/form.vue +126 -126
  68. package/components/panels/list.vue +0 -0
  69. package/components/panels/scroll.vue +0 -0
  70. package/components/panels/table.vue +0 -0
  71. package/components/panels/ul.vue +34 -34
  72. package/components/panels/vertical.vue +0 -0
  73. package/components/panels/web.vue +11 -11
  74. package/components/spacer.vue +0 -0
  75. package/components/switch.vue +42 -42
  76. package/extensions/string.js +21 -21
  77. package/index.js +195 -195
  78. package/nav/content.vue +0 -0
  79. package/nav/dialog.vue +127 -127
  80. package/nav/snackbar.vue +0 -0
  81. package/package.json +42 -42
  82. package/static/plugins/alignment/alignment.js +0 -0
  83. package/static/plugins/alignment/alignment.min.js +0 -0
  84. package/static/plugins/beyondgrammar/beyondgrammar.js +0 -0
  85. package/static/plugins/beyondgrammar/beyondgrammar.min.js +0 -0
  86. package/static/plugins/blockcode/blockcode.js +0 -0
  87. package/static/plugins/blockcode/blockcode.min.js +0 -0
  88. package/static/plugins/clips/clips.js +0 -0
  89. package/static/plugins/clips/clips.min.js +0 -0
  90. package/static/plugins/counter/counter.js +0 -0
  91. package/static/plugins/counter/counter.min.js +0 -0
  92. package/static/plugins/definedlinks/definedlinks.js +0 -0
  93. package/static/plugins/definedlinks/definedlinks.min.js +0 -0
  94. package/static/plugins/handle/handle.js +0 -0
  95. package/static/plugins/handle/handle.min.js +0 -0
  96. package/static/plugins/icons/icons.js +0 -0
  97. package/static/plugins/icons/icons.min.js +0 -0
  98. package/static/plugins/imageposition/imageposition.js +0 -0
  99. package/static/plugins/imageposition/imageposition.min.js +0 -0
  100. package/static/plugins/inlineformat/inlineformat.js +0 -0
  101. package/static/plugins/inlineformat/inlineformat.min.js +0 -0
  102. package/static/plugins/removeformat/removeformat.js +0 -0
  103. package/static/plugins/removeformat/removeformat.min.js +0 -0
  104. package/static/plugins/selector/selector.js +0 -0
  105. package/static/plugins/selector/selector.min.js +0 -0
  106. package/static/plugins/specialchars/specialchars.js +0 -0
  107. package/static/plugins/specialchars/specialchars.min.js +0 -0
  108. package/static/plugins/textdirection/textdirection.js +0 -0
  109. package/static/plugins/textdirection/textdirection.min.js +0 -0
  110. package/static/plugins/textexpander/textexpander.js +0 -0
  111. package/static/plugins/textexpander/textexpander.min.js +0 -0
  112. package/static/plugins/underline/underline.js +0 -0
  113. package/static/plugins/underline/underline.min.js +0 -0
  114. package/static/redactorx.css +0 -0
  115. package/static/redactorx.js +0 -0
  116. package/static/redactorx.min.css +0 -0
  117. package/static/redactorx.min.js +0 -0
  118. package/static/redactorx.usm.min.js +0 -0
  119. package/templates/_menu.vue +38 -38
  120. package/templates/comment.vue +202 -202
  121. package/templates/featured.vue +32 -32
  122. package/templates/thumbnail.vue +138 -138
  123. package/templates/unsupported.vue +12 -12
  124. package/utils/app.js +0 -0
  125. package/utils/hash.js +0 -0
  126. package/utils/helper.js +0 -0
  127. package/utils/history.js +70 -70
  128. package/utils/http.js +209 -209
  129. package/utils/launch.js +135 -135
  130. package/utils/private/ws.js +0 -0
package/README.md CHANGED
File without changes
package/action.js CHANGED
@@ -1,167 +1,167 @@
1
- import TypeUtils from "./utils/type";
2
-
3
- import ActionsRunMultiple from "./actions/runMultiple";
4
-
5
- import ActionsFormsSubmitV1 from "./actions/forms/submit";
6
-
7
- import ActionsHttpPostV1 from "./actions/http/post";
8
- import ActionsHttpPatchV1 from "./actions/http/patch";
9
- import ActionsHttpDeleteV1 from "./actions/http/delete";
10
-
11
- import ActionsDialogsAlert from "./actions/dialogs/alert";
12
- // import ActionsDialogsConfirm from "./actions/dialogs/confirm"
13
- import ActionsDialogsShow from "./actions/dialogs/show";
14
- import ActionsDialogsOpen from "./actions/dialogs/open";
15
- import ActionsDialogsClose from "./actions/dialogs/close";
16
- import ActionsDialogsOptions from "./actions/dialogs/options";
17
- import ActionsDialogsNotification from "./actions/dialogs/notification";
18
- import ActionsDialogsOauth from "./actions/dialogs/oauth";
19
-
20
- import ActionsSnackbarsAlert from "./actions/snackbars/alert";
21
- // import ActionsSnackbarsConfirm from "./actions/snackbars/confirm"
22
- import ActionsSnackbarsSelect from "./actions/snackbars/select";
23
-
24
- import ActionsSheetsSelect from "./actions/sheets/select";
25
-
26
- import ActionsWindowsClose from "./actions/windows/close";
27
- import ActionsWindowsCloseAll from "./actions/windows/closeAll";
28
- import ActionsWindowsOpen from "./actions/windows/open";
29
- import ActionsWindowsOpenWeb from "./actions/windows/openWeb";
30
- import ActionsWindowsReload from "./actions/windows/reload";
31
- import ActionsWindowsCloseWithReload from "./actions/windows/closeWithReload";
32
- import ActionsWindowsRefreshState from "./actions/windows/refreshState";
33
-
34
- import ActionsPanelsScrollToBottom from "./actions/panels/scrollToBottom";
35
- import ActionsPanelsScrollTo from "./actions/panels/scrollTo";
36
-
37
- import ActionsWsPush from "./actions/ws/push";
38
- import ActionsCablesPush from "./actions/cables/push";
39
-
40
- import ActionsTimeoutsSet from "./actions/timeouts/set";
41
-
42
- import ActionsAuthSaveCsrfToken from "./actions/auth/saveCsrfToken";
43
- import ActionsAuthRestart from "./actions/auth/restart";
44
- import ActionsCreditCard from "./actions/auth/creditCard";
45
-
46
- import ActionsAnalyticsLogEvent from "./actions/analytics/logEvent";
47
-
48
- const actions = {
49
- runMultiple: ActionsRunMultiple,
50
-
51
- "forms/submit": ActionsFormsSubmitV1,
52
-
53
- "http/post": ActionsHttpPostV1,
54
- "http/patch": ActionsHttpPatchV1,
55
- "http/delete": ActionsHttpDeleteV1,
56
-
57
- "dialogs/alert": ActionsDialogsAlert,
58
- // "dialogs/confirm": ActionsDialogsConfirm,
59
- "dialogs/show": ActionsDialogsShow,
60
- "dialogs/open": ActionsDialogsOpen,
61
- "dialogs/close": ActionsDialogsClose,
62
- "dialogs/options": ActionsDialogsOptions,
63
- "dialogs/notification": ActionsDialogsNotification,
64
- "dialogs/oauth": ActionsDialogsOauth,
65
-
66
- "snackbars/alert": ActionsSnackbarsAlert,
67
- // "snackbars/confirm": ActionsSnackbarsConfirm,
68
- "snackbars/select": ActionsSnackbarsSelect,
69
-
70
- "sheets/select": ActionsSheetsSelect,
71
-
72
- "windows/close": ActionsWindowsClose,
73
- "windows/closeAll": ActionsWindowsCloseAll,
74
- "windows/open": ActionsWindowsOpen,
75
- "windows/openWeb": ActionsWindowsOpenWeb,
76
- "windows/reload": ActionsWindowsReload,
77
- "windows/closeWithReload": ActionsWindowsCloseWithReload,
78
- "windows/refreshState": ActionsWindowsRefreshState,
79
-
80
- "panels/scrollToBottom": ActionsPanelsScrollToBottom,
81
- "panels/scrollTo": ActionsPanelsScrollTo,
82
-
83
- "timeouts/set": ActionsTimeoutsSet,
84
-
85
- "ws/push": ActionsWsPush,
86
- "cables/push": ActionsCablesPush,
87
-
88
- "auth/saveCsrfToken": ActionsAuthSaveCsrfToken,
89
- "auth/restart": ActionsAuthRestart,
90
- "auth/creditCard": ActionsCreditCard,
91
-
92
- "analytics/logEvent": ActionsAnalyticsLogEvent
93
- };
94
-
95
- export default class Action {
96
- static execute(spec, target, component, params = {}) {
97
- if (!TypeUtils.isObject(spec)) {
98
- return;
99
- }
100
-
101
- const name = spec.action;
102
- if (TypeUtils.isString(name)) {
103
- if (name.startsWith("component/")) {
104
- this.executeLocal(name, spec, component);
105
- } else {
106
- this.executeGlobal(name, spec, component, params);
107
- }
108
-
109
- // const actionName = name.replace(/-v1$/, "");
110
-
111
- // try {
112
- // const action = new actions[actionName]();
113
- // const logDisabled = action.logDisabled && action.logDisabled();
114
- // if (!logDisabled) {
115
- // console.log(`Executing "${actionName}"`);
116
- // }
117
- // action.execute(spec, null, component, params);
118
- // } catch (e) {
119
- // console.log(`Failed executing command: "${e.message}"`);
120
- // }
121
- } else {
122
- console.log(`Invalid action: "${name}"`);
123
- }
124
- }
125
-
126
- static executeLocal(name, spec, component) {
127
- const methodName = name.replace(/^component\//, "");
128
- const componentName = Utils.app.vueName(component);
129
- console.log(
130
- `Executing component action on ${componentName}: ${methodName}`
131
- );
132
- component[`action_${methodName}`](spec);
133
- }
134
-
135
- static executeGlobal(name, spec, component, params) {
136
- const actionName = name.replace(/-v1$/, "");
137
-
138
- try {
139
- const action = new actions[actionName]();
140
- const logDisabled = action.logDisabled && action.logDisabled();
141
- if (!logDisabled) {
142
- console.log(`Executing "${actionName}"`);
143
- }
144
- action.execute(spec, null, component, params);
145
- } catch (e) {
146
- console.log(
147
- "Failed executing command",
148
- actionName,
149
- `Error: '${e.message}'`
150
- );
151
- }
152
- }
153
-
154
- static handleResponse(response, component) {
155
- if (response.header || response.body || response.footer) {
156
- Utils.http.forceComponentUpdate(() => {
157
- window.vueApp.page = response;
158
- });
159
- }
160
-
161
- window.vueApp.temp.analytics = response.analytics;
162
- GLib.action.execute(response.onResponse, null, component);
163
- window.vueApp.temp.analytics = null;
164
- }
165
- }
166
-
167
- window.Action = Action;
1
+ import TypeUtils from "./utils/type";
2
+
3
+ import ActionsRunMultiple from "./actions/runMultiple";
4
+
5
+ import ActionsFormsSubmitV1 from "./actions/forms/submit";
6
+
7
+ import ActionsHttpPostV1 from "./actions/http/post";
8
+ import ActionsHttpPatchV1 from "./actions/http/patch";
9
+ import ActionsHttpDeleteV1 from "./actions/http/delete";
10
+
11
+ import ActionsDialogsAlert from "./actions/dialogs/alert";
12
+ // import ActionsDialogsConfirm from "./actions/dialogs/confirm"
13
+ import ActionsDialogsShow from "./actions/dialogs/show";
14
+ import ActionsDialogsOpen from "./actions/dialogs/open";
15
+ import ActionsDialogsClose from "./actions/dialogs/close";
16
+ import ActionsDialogsOptions from "./actions/dialogs/options";
17
+ import ActionsDialogsNotification from "./actions/dialogs/notification";
18
+ import ActionsDialogsOauth from "./actions/dialogs/oauth";
19
+
20
+ import ActionsSnackbarsAlert from "./actions/snackbars/alert";
21
+ // import ActionsSnackbarsConfirm from "./actions/snackbars/confirm"
22
+ import ActionsSnackbarsSelect from "./actions/snackbars/select";
23
+
24
+ import ActionsSheetsSelect from "./actions/sheets/select";
25
+
26
+ import ActionsWindowsClose from "./actions/windows/close";
27
+ import ActionsWindowsCloseAll from "./actions/windows/closeAll";
28
+ import ActionsWindowsOpen from "./actions/windows/open";
29
+ import ActionsWindowsOpenWeb from "./actions/windows/openWeb";
30
+ import ActionsWindowsReload from "./actions/windows/reload";
31
+ import ActionsWindowsCloseWithReload from "./actions/windows/closeWithReload";
32
+ import ActionsWindowsRefreshState from "./actions/windows/refreshState";
33
+
34
+ import ActionsPanelsScrollToBottom from "./actions/panels/scrollToBottom";
35
+ import ActionsPanelsScrollTo from "./actions/panels/scrollTo";
36
+
37
+ import ActionsWsPush from "./actions/ws/push";
38
+ import ActionsCablesPush from "./actions/cables/push";
39
+
40
+ import ActionsTimeoutsSet from "./actions/timeouts/set";
41
+
42
+ import ActionsAuthSaveCsrfToken from "./actions/auth/saveCsrfToken";
43
+ import ActionsAuthRestart from "./actions/auth/restart";
44
+ import ActionsCreditCard from "./actions/auth/creditCard";
45
+
46
+ import ActionsAnalyticsLogEvent from "./actions/analytics/logEvent";
47
+
48
+ const actions = {
49
+ runMultiple: ActionsRunMultiple,
50
+
51
+ "forms/submit": ActionsFormsSubmitV1,
52
+
53
+ "http/post": ActionsHttpPostV1,
54
+ "http/patch": ActionsHttpPatchV1,
55
+ "http/delete": ActionsHttpDeleteV1,
56
+
57
+ "dialogs/alert": ActionsDialogsAlert,
58
+ // "dialogs/confirm": ActionsDialogsConfirm,
59
+ "dialogs/show": ActionsDialogsShow,
60
+ "dialogs/open": ActionsDialogsOpen,
61
+ "dialogs/close": ActionsDialogsClose,
62
+ "dialogs/options": ActionsDialogsOptions,
63
+ "dialogs/notification": ActionsDialogsNotification,
64
+ "dialogs/oauth": ActionsDialogsOauth,
65
+
66
+ "snackbars/alert": ActionsSnackbarsAlert,
67
+ // "snackbars/confirm": ActionsSnackbarsConfirm,
68
+ "snackbars/select": ActionsSnackbarsSelect,
69
+
70
+ "sheets/select": ActionsSheetsSelect,
71
+
72
+ "windows/close": ActionsWindowsClose,
73
+ "windows/closeAll": ActionsWindowsCloseAll,
74
+ "windows/open": ActionsWindowsOpen,
75
+ "windows/openWeb": ActionsWindowsOpenWeb,
76
+ "windows/reload": ActionsWindowsReload,
77
+ "windows/closeWithReload": ActionsWindowsCloseWithReload,
78
+ "windows/refreshState": ActionsWindowsRefreshState,
79
+
80
+ "panels/scrollToBottom": ActionsPanelsScrollToBottom,
81
+ "panels/scrollTo": ActionsPanelsScrollTo,
82
+
83
+ "timeouts/set": ActionsTimeoutsSet,
84
+
85
+ "ws/push": ActionsWsPush,
86
+ "cables/push": ActionsCablesPush,
87
+
88
+ "auth/saveCsrfToken": ActionsAuthSaveCsrfToken,
89
+ "auth/restart": ActionsAuthRestart,
90
+ "auth/creditCard": ActionsCreditCard,
91
+
92
+ "analytics/logEvent": ActionsAnalyticsLogEvent
93
+ };
94
+
95
+ export default class Action {
96
+ static execute(spec, target, component, params = {}) {
97
+ if (!TypeUtils.isObject(spec)) {
98
+ return;
99
+ }
100
+
101
+ const name = spec.action;
102
+ if (TypeUtils.isString(name)) {
103
+ if (name.startsWith("component/")) {
104
+ this.executeLocal(name, spec, component);
105
+ } else {
106
+ this.executeGlobal(name, spec, component, params);
107
+ }
108
+
109
+ // const actionName = name.replace(/-v1$/, "");
110
+
111
+ // try {
112
+ // const action = new actions[actionName]();
113
+ // const logDisabled = action.logDisabled && action.logDisabled();
114
+ // if (!logDisabled) {
115
+ // console.log(`Executing "${actionName}"`);
116
+ // }
117
+ // action.execute(spec, null, component, params);
118
+ // } catch (e) {
119
+ // console.log(`Failed executing command: "${e.message}"`);
120
+ // }
121
+ } else {
122
+ console.log(`Invalid action: "${name}"`);
123
+ }
124
+ }
125
+
126
+ static executeLocal(name, spec, component) {
127
+ const methodName = name.replace(/^component\//, "");
128
+ const componentName = Utils.app.vueName(component);
129
+ console.log(
130
+ `Executing component action on ${componentName}: ${methodName}`
131
+ );
132
+ component[`action_${methodName}`](spec);
133
+ }
134
+
135
+ static executeGlobal(name, spec, component, params) {
136
+ const actionName = name.replace(/-v1$/, "");
137
+
138
+ try {
139
+ const action = new actions[actionName]();
140
+ const logDisabled = action.logDisabled && action.logDisabled();
141
+ if (!logDisabled) {
142
+ console.log(`Executing "${actionName}"`);
143
+ }
144
+ action.execute(spec, null, component, params);
145
+ } catch (e) {
146
+ console.log(
147
+ "Failed executing command",
148
+ actionName,
149
+ `Error: '${e.message}'`
150
+ );
151
+ }
152
+ }
153
+
154
+ static handleResponse(response, component) {
155
+ if (response.header || response.body || response.footer) {
156
+ Utils.http.forceComponentUpdate(() => {
157
+ window.vueApp.page = response;
158
+ });
159
+ }
160
+
161
+ window.vueApp.temp.analytics = response.analytics;
162
+ GLib.action.execute(response.onResponse, null, component);
163
+ window.vueApp.temp.analytics = null;
164
+ }
165
+ }
166
+
167
+ window.Action = Action;
File without changes
File without changes
File without changes
File without changes
@@ -1,18 +1,18 @@
1
- // Scroll the main body of the current window
2
- export default class {
3
- execute(properties) {
4
- const pageBody = Utils.history._pageBody;
5
- const selector = `#${properties.viewId}`;
6
- console.log("Scrolling to", selector);
7
- const element = pageBody.querySelector(selector);
8
- element.scrollIntoView({
9
- behavior: properties["animate"] ? "smooth" : "auto"
10
- });
11
-
12
- element.classList.add("glib-scrollto");
13
- element.classList.add("glib-scrollto--highlighted");
14
- setTimeout(() => {
15
- element.classList.remove("glib-scrollto--highlighted");
16
- }, 500);
17
- }
18
- }
1
+ // Scroll the main body of the current window
2
+ export default class {
3
+ execute(properties) {
4
+ const pageBody = Utils.history._pageBody;
5
+ const selector = `#${properties.viewId}`;
6
+ console.log("Scrolling to", selector);
7
+ const element = pageBody.querySelector(selector);
8
+ element.scrollIntoView({
9
+ behavior: properties["animate"] ? "smooth" : "auto"
10
+ });
11
+
12
+ element.classList.add("glib-scrollto");
13
+ element.classList.add("glib-scrollto--highlighted");
14
+ setTimeout(() => {
15
+ element.classList.remove("glib-scrollto--highlighted");
16
+ }, 500);
17
+ }
18
+ }
File without changes
@@ -1,20 +1,20 @@
1
- export default class {
2
- execute(properties, target, component) {
3
- component.$data._isBusy = true;
4
-
5
- if (properties.repeat) {
6
- setInterval(() => {
7
- this.onTimeout(properties, component);
8
- }, properties.interval);
9
- } else {
10
- setTimeout(() => {
11
- this.onTimeout(properties, component);
12
- }, properties.interval);
13
- }
14
- }
15
-
16
- onTimeout(properties, component) {
17
- component.$data._isBusy = false;
18
- GLib.action.execute(properties.onTimeout, null, component);
19
- }
20
- }
1
+ export default class {
2
+ execute(properties, target, component) {
3
+ component.$data._isBusy = true;
4
+
5
+ if (properties.repeat) {
6
+ setInterval(() => {
7
+ this.onTimeout(properties, component);
8
+ }, properties.interval);
9
+ } else {
10
+ setTimeout(() => {
11
+ this.onTimeout(properties, component);
12
+ }, properties.interval);
13
+ }
14
+ }
15
+
16
+ onTimeout(properties, component) {
17
+ component.$data._isBusy = false;
18
+ GLib.action.execute(properties.onTimeout, null, component);
19
+ }
20
+ }
File without changes
File without changes
File without changes
@@ -1,5 +1,5 @@
1
- export default class {
2
- execute(properties) {
3
- window.vueApp.stateUpdatedAt = Date.now();
4
- }
5
- }
1
+ export default class {
2
+ execute(properties) {
3
+ window.vueApp.stateUpdatedAt = Date.now();
4
+ }
5
+ }
File without changes
File without changes