dbm 1.0.0

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 (90) hide show
  1. package/commands/CallFunction.js +21 -0
  2. package/commands/CommandBaseObject.js +11 -0
  3. package/commands/ResolvePromise.js +20 -0
  4. package/commands/index.js +36 -0
  5. package/core/BaseObject.js +23 -0
  6. package/core/GlobalObject.js +18 -0
  7. package/core/LifeCycleObject.js +25 -0
  8. package/core/index.js +3 -0
  9. package/dbm.js +71 -0
  10. package/flow/DirtyCommands.js +45 -0
  11. package/flow/FlowBaseObject.js +78 -0
  12. package/flow/FlowProperty.js +146 -0
  13. package/flow/FlowUpdateFunction.js +39 -0
  14. package/flow/UpdateFunctionInputs.js +58 -0
  15. package/flow/UpdateFunctionOutputs.js +51 -0
  16. package/flow/index.js +40 -0
  17. package/flow/updatefunctions/basic/CombineString.js +45 -0
  18. package/flow/updatefunctions/basic/RunCommand.js +34 -0
  19. package/flow/updatefunctions/basic/index.js +2 -0
  20. package/flow/updatefunctions/debug/Log.js +30 -0
  21. package/flow/updatefunctions/debug/index.js +1 -0
  22. package/flow/updatefunctions/dom/ElementSize.js +47 -0
  23. package/flow/updatefunctions/dom/StyleObject.js +43 -0
  24. package/flow/updatefunctions/dom/index.js +2 -0
  25. package/flow/updatefunctions/index.js +5 -0
  26. package/flow/updatefunctions/logic/Addition.js +19 -0
  27. package/flow/updatefunctions/logic/Multiplication.js +19 -0
  28. package/flow/updatefunctions/logic/RangeSwitch.js +46 -0
  29. package/flow/updatefunctions/logic/Subtraction.js +19 -0
  30. package/flow/updatefunctions/logic/index.js +38 -0
  31. package/flow/updatefunctions/react/UpdateState.js +22 -0
  32. package/flow/updatefunctions/react/index.js +1 -0
  33. package/graphapi/index.js +1 -0
  34. package/graphapi/webclient/WebSocketConnection.js +236 -0
  35. package/graphapi/webclient/WebSocketRequest.js +30 -0
  36. package/graphapi/webclient/decode/DecodeBaseObject.js +48 -0
  37. package/graphapi/webclient/decode/index.js +59 -0
  38. package/graphapi/webclient/index.js +4 -0
  39. package/index.js +1 -0
  40. package/loading/JsonLoader.js +128 -0
  41. package/loading/LoadingStatus.js +4 -0
  42. package/loading/ScriptLoader.js +40 -0
  43. package/loading/index.js +24 -0
  44. package/package.json +17 -0
  45. package/react/BaseObject.js +179 -0
  46. package/react/RefToProperty.js +20 -0
  47. package/react/admin/Editor.js +153 -0
  48. package/react/admin/EditorBlock.js +53 -0
  49. package/react/admin/EditorBlockName.js +19 -0
  50. package/react/admin/index.js +3 -0
  51. package/react/area/HasData.js +22 -0
  52. package/react/area/InsertElement.js +22 -0
  53. package/react/area/index.js +2 -0
  54. package/react/blocks/index.js +61 -0
  55. package/react/context/AddContextVariables.js +22 -0
  56. package/react/context/Context.js +4 -0
  57. package/react/context/index.js +2 -0
  58. package/react/cookies/CookieBar.js +162 -0
  59. package/react/cookies/CookieSettings.js +118 -0
  60. package/react/cookies/index.js +2 -0
  61. package/react/form/Checkbox.js +28 -0
  62. package/react/form/FormField.js +28 -0
  63. package/react/form/index.js +2 -0
  64. package/react/index.js +13 -0
  65. package/react/login/LoginForm.js +113 -0
  66. package/react/login/index.js +1 -0
  67. package/react/modules/ModuleCreator.js +30 -0
  68. package/react/modules/index.js +1 -0
  69. package/react/source/ContextVariableSource.js +19 -0
  70. package/react/source/index.js +1 -0
  71. package/react/text/HtmlText.js +14 -0
  72. package/react/text/Text.js +13 -0
  73. package/react/text/index.js +19 -0
  74. package/repository/Item.js +70 -0
  75. package/repository/Repository.js +60 -0
  76. package/repository/index.js +2 -0
  77. package/site/SiteDataLoader.js +62 -0
  78. package/site/SiteNavigation.js +242 -0
  79. package/site/index.js +2 -0
  80. package/startup/Controller.js +43 -0
  81. package/startup/Runner.js +40 -0
  82. package/startup/index.js +28 -0
  83. package/tracking/Controller.js +157 -0
  84. package/tracking/DataLayerTracker.js +80 -0
  85. package/tracking/index.js +16 -0
  86. package/updater/PropertyUpdater.js +127 -0
  87. package/updater/RequestAnimationFrameTimer.js +43 -0
  88. package/updater/index.js +16 -0
  89. package/utils/ArrayFunctions.js +20 -0
  90. package/utils/index.js +1 -0
@@ -0,0 +1,48 @@
1
+ import Dbm from "../../../index.js";
2
+
3
+ export default class DecodeBaseObject extends Dbm.core.BaseObject {
4
+ _construct() {
5
+ super._construct();
6
+ }
7
+
8
+ updateItemWithEncoding(aItem, aData) {
9
+ this.updateItem(aItem, aData);
10
+ aItem.setValue("has/encoding/" + this.item.encodingType, true);
11
+ }
12
+
13
+ updateItem(aItem, aData) {
14
+ if(this.item.copyFields) {
15
+ let currentArray = this.item.copyFields;
16
+ let currentArrayLength = currentArray.length;
17
+ for(let i = 0; i < currentArrayLength; i++) {
18
+ let currentField = currentArray[i];
19
+ aItem.setValue(currentField, aData[currentField]);
20
+ }
21
+ }
22
+
23
+ if(this.item.copyLink) {
24
+ let currentArray = this.item.copyLink;
25
+ let currentArrayLength = currentArray.length;
26
+ for(let i = 0; i < currentArrayLength; i++) {
27
+ let currentField = currentArray[i];
28
+ let currentId = aData[currentField];
29
+ if(currentId) {
30
+ aItem.setValue(currentField, Dbm.getInstance().repository.getItem(currentId));
31
+ }
32
+ else {
33
+ aItem.setValue(currentField, null);
34
+ }
35
+ }
36
+ }
37
+
38
+ if(this.item.copyLinks) {
39
+ let currentArray = this.item.copyLinks;
40
+ let currentArrayLength = currentArray.length;
41
+ for(let i = 0; i < currentArrayLength; i++) {
42
+ let currentField = currentArray[i];
43
+ let currentIds = aData[currentField];
44
+ aItem.setValue(currentField, Dbm.getInstance().repository.getItems(currentIds));
45
+ }
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,59 @@
1
+ import Dbm from "../../../index.js";
2
+
3
+ export {default as DecodeBaseObject} from "./DecodeBaseObject.js";
4
+
5
+ let fullSetup = function() {
6
+ let decodePrefix = "graphApi/decode/";
7
+
8
+ if(process.env.NODE_ENV === "development") {
9
+ {
10
+ let name = "example";
11
+ let currentDecoder = new Dbm.graphapi.webclient.decode.DecodeBaseObject();
12
+ currentDecoder.item.setValue("copyFields", ["identifier"]);
13
+ currentDecoder.item.setValue("encodingType", name);
14
+ currentDecoder.item.register(decodePrefix + name);
15
+ }
16
+ }
17
+
18
+ {
19
+ let name = "identifier";
20
+ let currentDecoder = new Dbm.graphapi.webclient.decode.DecodeBaseObject();
21
+ currentDecoder.item.setValue("copyFields", ["identifier"]);
22
+ currentDecoder.item.setValue("encodingType", name);
23
+ currentDecoder.item.register(decodePrefix + name);
24
+ }
25
+
26
+ {
27
+ let name = "name";
28
+ let currentDecoder = new Dbm.graphapi.webclient.decode.DecodeBaseObject();
29
+ currentDecoder.item.setValue("copyFields", ["name"]);
30
+ currentDecoder.item.setValue("encodingType", name);
31
+ currentDecoder.item.register(decodePrefix + name);
32
+ }
33
+
34
+ {
35
+ let name = "content";
36
+ let currentDecoder = new Dbm.graphapi.webclient.decode.DecodeBaseObject();
37
+ currentDecoder.item.setValue("copyFields", ["content"]);
38
+ currentDecoder.item.setValue("encodingType", name);
39
+ currentDecoder.item.register(decodePrefix + name);
40
+ }
41
+
42
+ {
43
+ let name = "title";
44
+ let currentDecoder = new Dbm.graphapi.webclient.decode.DecodeBaseObject();
45
+ currentDecoder.item.setValue("copyFields", ["title"]);
46
+ currentDecoder.item.setValue("encodingType", name);
47
+ currentDecoder.item.register(decodePrefix + name);
48
+ }
49
+
50
+ {
51
+ let name = "urlRequest";
52
+ let currentDecoder = new Dbm.graphapi.webclient.decode.DecodeBaseObject();
53
+ currentDecoder.item.setValue("copyFields", ["meta/description"]);
54
+ currentDecoder.item.setValue("encodingType", name);
55
+ currentDecoder.item.register(decodePrefix + name);
56
+ }
57
+ }
58
+
59
+ export {fullSetup};
@@ -0,0 +1,4 @@
1
+ export {default as WebSocketConnection} from "./WebSocketConnection.js";
2
+ export {default as WebSocketRequest} from "./WebSocketRequest.js";
3
+
4
+ export * as decode from "./decode/index.js";
package/index.js ADDED
@@ -0,0 +1 @@
1
+ export * as default from "./dbm.js";
@@ -0,0 +1,128 @@
1
+ import Dbm from "../index.js";
2
+
3
+ export default class JsonLoader extends Dbm.core.BaseObject {
4
+
5
+ _construct() {
6
+
7
+ super._construct();
8
+
9
+ this.item.setValue("url", null);
10
+ this.item.setValue("method", "GET");
11
+ this.item.setValue("mode", null);
12
+ this.item.setValue("credentials", "same-origin");
13
+ this.item.setValue("headers", {});
14
+
15
+ this.item.setValue("status", Dbm.loading.LoadingStatus.NOT_STARTED);
16
+ this.item.setValue("data", null);
17
+ this.item.setValue("body", null);
18
+ }
19
+
20
+ get completed() {
21
+ let status = this.item.status;
22
+ return (status === Dbm.loading.LoadingStatus.LOADED || status === Dbm.loading.LoadingStatus.ERROR);
23
+ }
24
+
25
+ setMethod(aMethod) {
26
+ this.item.method = aMethod;
27
+
28
+ return this;
29
+ }
30
+
31
+ setUrl(aUrl) {
32
+ this.item.url = aUrl;
33
+
34
+ return this;
35
+ }
36
+
37
+ setupPost(aUrl, aBody) {
38
+ this.item.url = aUrl;
39
+ this.item.method = "POST";
40
+ this.setBody(aBody);
41
+
42
+ return this;
43
+ }
44
+
45
+ setupJsonPost(aUrl, aBody) {
46
+ this.item.url = aUrl;
47
+
48
+ return this.setJsonPostBody(aBody);
49
+ }
50
+
51
+ setJsonPostBody(aBody) {
52
+ this.item.method = "POST";
53
+ this.item.body = JSON.stringify(aBody);
54
+
55
+ this.addHeader("Content-Type", "application/json");
56
+
57
+ return this;
58
+ }
59
+
60
+ addHeader(aName, aValue) {
61
+ this.item.headers[aName] = aValue;
62
+
63
+ return this;
64
+ }
65
+
66
+ setBody(aBody) {
67
+ this.item.body = (aBody instanceof String || aBody instanceof FormData) ? aBody : JSON.stringify(aBody);
68
+
69
+ return this;
70
+ }
71
+
72
+ setData(aData) {
73
+ //console.log("wprr/utils/loading/JsonLoader::setData");
74
+ //console.log(aData);
75
+
76
+ this._loadedAt = (new Date()).valueOf();
77
+ this.item.data = aData;
78
+ }
79
+
80
+ setStatus(aStatus) {
81
+ //console.log("wprr/utils/loading/JsonLoader::setStatus");
82
+ //console.log(aStatus);
83
+
84
+ this.item.status = aStatus;
85
+
86
+ return this;
87
+ }
88
+
89
+ load() {
90
+
91
+ if(this.item.status !== Dbm.loading.LoadingStatus.NOT_STARTED) {
92
+ return this;
93
+ }
94
+
95
+ this.item.status = Dbm.loading.LoadingStatus.LOADING;
96
+ let sendParameters = {"credentials": this.item.credentials, "method": this.item.method, headers: this.item.headers};
97
+ if(this.item.mode) {
98
+ sendParameters["mode"] = this.item.mode;
99
+ }
100
+ if(this.item.method !== "GET" && this.item.method !== "HEAD" && this.item.body) {
101
+ sendParameters["body"] = this.item.body;
102
+ }
103
+
104
+ fetch(this.item.url, sendParameters)
105
+ .then( (response) => {
106
+ if(response.ok) {
107
+ return response.json();
108
+ }
109
+ else {
110
+ return response.text().then(function(aText) {
111
+ throw(new Error("Server response: " + response.status + " " + response.statusText + " (" + response.type + "): " + aText));
112
+ })
113
+ }
114
+ })
115
+ .then( (data) => {
116
+ this.setData(data);
117
+ this.setStatus(Dbm.loading.LoadingStatus.LOADED);
118
+ })
119
+ .catch( (error) => {
120
+ console.error("Error submitting");
121
+ console.log(error);
122
+
123
+ this.setStatus(Dbm.loading.LoadingStatus.ERROR);
124
+ });
125
+
126
+ return this;
127
+ }
128
+ }
@@ -0,0 +1,4 @@
1
+ export const NOT_STARTED = 0;
2
+ export const LOADED = 1;
3
+ export const LOADING = 2;
4
+ export const ERROR = -1;
@@ -0,0 +1,40 @@
1
+ import Dbm from "../index.js";
2
+
3
+ export default class ScriptLoader extends Dbm.core.BaseObject {
4
+ constructor() {
5
+ super();
6
+
7
+ this._url = null;
8
+ this._script = null;
9
+
10
+ this.item.setValue("status", Dbm.loading.LoadingStatus.NOT_STARTED);
11
+
12
+ this._callback_scriptLoadedBound = this._callback_scriptLoaded.bind(this);
13
+ }
14
+
15
+ setUrl(aUrl) {
16
+ this._url = aUrl;
17
+ return this;
18
+ }
19
+
20
+ load() {
21
+
22
+ if(!this._script) {
23
+ this.item.setValue("status", Dbm.loading.LoadingStatus.LOADING);
24
+
25
+ let scriptElement = document.createElement("script");
26
+ this._script = scriptElement;
27
+ scriptElement.addEventListener("load", this._callback_scriptLoadedBound, false);
28
+
29
+ scriptElement.async = true;
30
+ scriptElement.src = this._url;
31
+ document.head.appendChild(scriptElement);
32
+ }
33
+
34
+ return this;
35
+ }
36
+
37
+ _callback_scriptLoaded(aEvent) {
38
+ this.item.setValue("status", Dbm.loading.LoadingStatus.LOADED);
39
+ }
40
+ }
@@ -0,0 +1,24 @@
1
+ import Dbm from "../index.js";
2
+ export {default as ScriptLoader} from "./ScriptLoader.js";
3
+ export {default as JsonLoader} from "./JsonLoader.js";
4
+ export * as LoadingStatus from "./LoadingStatus.js";
5
+
6
+ export let loadScript = function(aUrl) {
7
+
8
+ let loaderName = "loader-" + aUrl;
9
+ let loaderItem = Dbm.getInstance().repository.getItemIfExists(loaderName);
10
+
11
+ let loader;
12
+ if(!loaderItem) {
13
+ loader = new Dbm.loading.ScriptLoader();
14
+ loader.item.register(loaderName);
15
+ loader.setUrl(aUrl);
16
+ }
17
+ else {
18
+ loader = loaderItem.controller;
19
+ }
20
+
21
+ loader.load();
22
+
23
+ return loader;
24
+ }
package/package.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "dbm",
3
+ "version": "1.0.0",
4
+ "main": "index.js",
5
+ "type": "module",
6
+ "scripts": {},
7
+ "keywords": [],
8
+ "author": "",
9
+ "license": "",
10
+ "description": "",
11
+ "dependencies": {
12
+ "@tweenjs/tween.js": "^25.0.0",
13
+ "js-cookie": "^3.0.5",
14
+ "react": "^18.3.1",
15
+ "react-dom": "^18.3.1"
16
+ }
17
+ }
@@ -0,0 +1,179 @@
1
+ import Dbm from "../index.js";
2
+ import {Component, createElement} from "react";
3
+ import Context from "./context/Context.js";
4
+
5
+ export default class BaseObject extends Component {
6
+ constructor(aProps, aContext) {
7
+ super(aProps, aContext);
8
+ this.state = {"dynamicUpdate": 0};
9
+ this._dynamicProps = {}
10
+ this._construct();
11
+
12
+ this._prepareProps();
13
+ }
14
+
15
+ _construct() {
16
+
17
+ }
18
+
19
+ _prepareProps() {
20
+ //console.log("_prepareProps");
21
+ let props = this.props;
22
+ for(let objectName in props) {
23
+ let currentProp = props[objectName];
24
+
25
+ if(currentProp && currentProp.isSource) {
26
+ currentProp = currentProp.getSource(this);
27
+ let currentDynamicProperty = this.getDynamicProp(objectName);
28
+ currentDynamicProperty.setValue(currentProp);
29
+ }
30
+
31
+ if(currentProp && currentProp.isFlowProperty) {
32
+ let currentDynamicProperty = this.getDynamicProp(objectName);
33
+ currentDynamicProperty.connectInput(currentProp);
34
+ }
35
+ }
36
+
37
+ //METODO: remove unused connections
38
+ }
39
+
40
+ _getStateUpdate() {
41
+ let updateState = this.item.updateState;
42
+ if(!updateState) {
43
+ updateState = new Dbm.flow.updatefunctions.react.UpdateState();
44
+ this.item.setValue("updateState", updateState);
45
+ updateState.input.owner = this;
46
+ updateState.output.properties.dynamicUpdate.startUpdating();
47
+ }
48
+ return updateState;
49
+ }
50
+
51
+ getDynamicProp(aName, aInitialValue = null) {
52
+ if(!this._dynamicProps[aName]) {
53
+ let newProperty = new Dbm.flow.FlowProperty();
54
+ newProperty.value = aInitialValue;
55
+ this._dynamicProps[aName] = newProperty;
56
+ let updateState = this._getStateUpdate();
57
+ let stateProperty = updateState.input.register(aName, aInitialValue);
58
+ stateProperty.connectInput(newProperty);
59
+ }
60
+ return this._dynamicProps[aName];
61
+ }
62
+
63
+ get item() {
64
+ if(!this._item) {
65
+ this._item = new Dbm.repository.Item();
66
+ this._item.setValue("controller", this);
67
+ }
68
+ return this._item;
69
+ }
70
+
71
+ getProp(aName) {
72
+ if(this._dynamicProps[aName]) {
73
+ return this._dynamicProps[aName];
74
+ }
75
+
76
+ return this.props[aName];
77
+ }
78
+
79
+ getPropValue(aName) {
80
+ let currentProp = this.getProp(aName);
81
+
82
+ if(currentProp && currentProp.isFlowProperty) {
83
+ return currentProp.value;
84
+ }
85
+
86
+ return currentProp;
87
+ }
88
+
89
+ createRef(aName) {
90
+ let refToProperty = this.item["ref/" + aName];
91
+
92
+ if(!refToProperty) {
93
+ this.item.setValue(aName, null);
94
+ let property = this.item.properties[aName];
95
+ refToProperty = new Dbm.react.RefToProperty();
96
+ refToProperty.property = property;
97
+ this.item.setValue("ref/" + aName, refToProperty);
98
+ }
99
+
100
+ return refToProperty;
101
+ }
102
+
103
+ render() {
104
+ return this._renderMainElement();
105
+ }
106
+
107
+ _renderMainElement() {
108
+ return this._createMainElement("div", {}, this.props.children);
109
+ }
110
+
111
+ _mainElement(aReactElement) {
112
+ let returnObject = this._performCreateMainElement(aReactElement.type, aReactElement.props, aReactElement.props.children);
113
+ return returnObject;
114
+ }
115
+
116
+ _createMainElement(aType, aProps, ...children) {
117
+ return this._performCreateMainElement(aType, aProps, children);
118
+ }
119
+
120
+ _performCreateMainElement(aType, aProps, children) {
121
+
122
+ let newProps = {...aProps};
123
+
124
+ let elementType = this.getProp("elementType");
125
+ if(elementType) {
126
+ aType = elementType;
127
+ }
128
+
129
+ for(let objectName in this.props) {
130
+ let currentValue = this.getPropValue(objectName);
131
+ switch(objectName) {
132
+ case "className":
133
+ {
134
+ if(newProps[objectName]) {
135
+ newProps[objectName] += " " + currentValue;
136
+ }
137
+ else {
138
+ newProps[objectName] = currentValue;
139
+ }
140
+ }
141
+ break;
142
+ case "style":
143
+ {
144
+
145
+ let newStyleObject = {...newProps[objectName]};
146
+ for(let styleProperty in currentValue) {
147
+ if(!newStyleObject[styleProperty]) {
148
+ newStyleObject[styleProperty] = currentValue[styleProperty];
149
+ }
150
+ }
151
+
152
+ newProps[objectName] = newStyleObject;
153
+ }
154
+ break;
155
+ case "ref":
156
+ case "children":
157
+ case "elementType":
158
+ case "key":
159
+ //MENOTE: do nothing
160
+ break;
161
+ default:
162
+ if(!newProps[objectName]) {
163
+ newProps[objectName] = currentValue;
164
+ }
165
+ break;
166
+ }
167
+ }
168
+
169
+ if(!children.length) {
170
+ return createElement(aType, newProps);
171
+ }
172
+
173
+ let callArray = [aType, newProps].concat(children);
174
+
175
+ return createElement.apply(null, callArray);
176
+ }
177
+ }
178
+
179
+ BaseObject.contextType = Context;
@@ -0,0 +1,20 @@
1
+ export default class RefToProperty {
2
+ constructor() {
3
+ this.property = null;
4
+ }
5
+
6
+ get current() {
7
+ return this.property.value;
8
+ }
9
+
10
+ set current(aValue) {
11
+ this.property.value = aValue;
12
+ }
13
+
14
+ hasOwnProperty(aKey) {
15
+ if(aKey === "current") {
16
+ return true;
17
+ }
18
+ return super.hasOwnProperty(aKey);
19
+ }
20
+ }
@@ -0,0 +1,153 @@
1
+ import React from "react";
2
+ import Dbm from "../../index.js";
3
+
4
+ import EditorBlock from "./EditorBlock.js";
5
+
6
+ export default class Editor extends Dbm.react.BaseObject {
7
+ _construct() {
8
+ super._construct();
9
+
10
+ Dbm.loading.loadScript("https://cdn.jsdelivr.net/npm/@editorjs/image@latest");
11
+ Dbm.loading.loadScript("https://cdn.jsdelivr.net/npm/@editorjs/header@latest");
12
+ Dbm.loading.loadScript("https://cdn.jsdelivr.net/npm/@editorjs/image@latest");
13
+ //METODO: select which tools should be used
14
+
15
+ let scriptLoader = Dbm.loading.loadScript("https://cdn.jsdelivr.net/npm/@editorjs/editorjs@latest");
16
+
17
+ this.item.setValue("element", document.createElement("div"));
18
+
19
+ let updateFunction = new Dbm.flow.updatefunctions.basic.RunCommand();
20
+
21
+ updateFunction.input.command = Dbm.commands.callFunction(this._scriptStatus.bind(this), [scriptLoader]);
22
+
23
+ updateFunction.output.properties.value.startUpdating();
24
+ updateFunction.input.properties.value.connectInput(scriptLoader.item.properties.status);
25
+ }
26
+
27
+ uploadImage(aFile) {
28
+ return new Promise((resolve, reject) => {
29
+ let graphApi = Dbm.getInstance().repository.getItem("graphApi").controller;
30
+
31
+ let preSign = graphApi.requestData("fileUpload", {"fileName": aFile.name, "mimeType": aFile.type});
32
+
33
+ Dbm.flow.addDirectUpdateCommand(preSign.getProperty("status"), Dbm.commands.callFunction(this._statusChanged.bind(this), [preSign, aFile, resolve]));
34
+ });
35
+ }
36
+
37
+ _statusChanged(aPreSign, aFile, resolve) {
38
+ console.log("_statusChanged");
39
+ console.log(aPreSign, aFile);
40
+
41
+ if(aPreSign.status === 1) {
42
+ let url = aPreSign.data.url;
43
+ console.log(url);
44
+
45
+ const myHeaders = new Headers({
46
+ 'Content-Type': aFile.type,
47
+ 'x-amz-acl': 'public-read'
48
+ });
49
+ fetch(url, {
50
+ method: 'PUT',
51
+ headers: myHeaders,
52
+ body: aFile
53
+ }).then(() => {
54
+ resolve({success: true, file: {url: aPreSign.data.publicUrl}});
55
+ })
56
+
57
+
58
+ }
59
+ }
60
+
61
+ _scriptStatus(aLoader) {
62
+ //console.log("_scriptStatus");
63
+ //console.log(aLoader);
64
+
65
+ if(aLoader.item.status === 1) {
66
+
67
+ let element = this.item.element;
68
+ element.classList.add("full-size");
69
+
70
+ let content = Dbm.getInstance().repository.getItem("siteDataLoader").currentPage.page.content;
71
+
72
+ let tools = {
73
+ image: window.ImageTool,
74
+ heading: window.Header,
75
+ image: {
76
+ "class": window.ImageTool,
77
+ config: {
78
+ uploader: {
79
+ uploadByFile: (aFile) => {
80
+ return this.uploadImage(aFile);
81
+ },
82
+ uploadByUrl: function(aUrl) {
83
+ console.log(aUrl);
84
+ }
85
+ }
86
+ }
87
+ }
88
+ };
89
+
90
+
91
+ let editorConfigItem = Dbm.getInstance().repository.getItem("editorjs");
92
+ let toolsFromConfig = editorConfigItem.tools;
93
+
94
+ tools = {...tools, ...toolsFromConfig}
95
+
96
+ const editor = new window.EditorJS({
97
+ minHeight: 0,
98
+ holder: element,
99
+ tools: tools,
100
+ data: content
101
+ });
102
+
103
+ this.item.setValue("editor", editor);
104
+ }
105
+ }
106
+
107
+ _save() {
108
+ this.item.editor.save().then((aOutputData) => {
109
+ console.log('Article data: ', aOutputData);
110
+
111
+ let id = Dbm.getInstance().repository.getItem("siteDataLoader").currentPage.page.id;
112
+ let graphApi = Dbm.getInstance().repository.getItem("graphApi").controller;
113
+
114
+ console.log(graphApi, Dbm.getInstance().repository.getItem("siteDataLoader"));
115
+
116
+ graphApi.editItem(id, [{"type": "setField", "data": {"value": aOutputData, "field": "content"}}], ["content"]);
117
+
118
+ }).catch((error) => {
119
+ console.log('Saving failed: ', error)
120
+ });
121
+ }
122
+
123
+ componentDidMount() {
124
+ //console.log("componentDidMount");
125
+ let parentElement = this.item.holder;
126
+ parentElement.appendChild(this.item.element);
127
+ }
128
+
129
+ componentDidUpdate() {
130
+ //console.log("componentDidUpdate");
131
+ let parentElement = this.item.holder;
132
+ parentElement.appendChild(this.item.element);
133
+ }
134
+
135
+ _renderMainElement() {
136
+
137
+ return React.createElement("div", {style: {"position": "relative", "zIndex": 0}},
138
+ React.createElement("div", {"ref": this.createRef("holder")}),
139
+ React.createElement("div", {"className": "standard-button standard-button-padding", "onClick": () => {this._save()}},
140
+ "Save"
141
+ )
142
+ );
143
+ /*
144
+ return <div>
145
+ <div ref={this.createRef("holder")} />
146
+ <div className="standard-button standard-button-padding" onClick={() => {this._save()}}>
147
+ Save
148
+ </div>
149
+ </div>;
150
+ */
151
+ }
152
+ }
153
+