dbm 1.0.5 → 1.1.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 (55) hide show
  1. package/flow/updatefunctions/dom/ElementPosition.js +1 -1
  2. package/flow/updatefunctions/dom/HorizontalFlip.js +5 -6
  3. package/flow/updatefunctions/dom/StyleObject.js +1 -1
  4. package/flow/updatefunctions/logic/Switch.js +6 -0
  5. package/graphapi/webclient/WebSocketConnection.js +13 -8
  6. package/graphapi/webclient/decode/index.js +16 -0
  7. package/loading/node/TextLoader.js +6 -5
  8. package/package.json +1 -1
  9. package/react/BaseObject.js +18 -7
  10. package/react/ChildFunctions.js +27 -0
  11. package/react/admin/EditPage.js +12 -1
  12. package/react/admin/{Editor.js → editor/Editor.js} +27 -11
  13. package/react/admin/{EditorBlock.js → editor/EditorBlock.js} +15 -4
  14. package/react/admin/editor/EditorBlockFields.js +23 -0
  15. package/react/admin/editor/EditorBlockName.js +28 -0
  16. package/react/admin/editor/fields/CheckboxField.js +54 -0
  17. package/react/admin/editor/fields/ImageField.js +137 -0
  18. package/react/admin/editor/fields/RichTextField.js +75 -0
  19. package/react/admin/editor/fields/TextField.js +53 -0
  20. package/react/admin/editor/fields/index.js +4 -0
  21. package/react/admin/editor/index.js +6 -0
  22. package/react/admin/index.js +3 -4
  23. package/react/animation/AnimatedElement.js +22 -0
  24. package/react/animation/AnimationController.js +53 -0
  25. package/react/animation/index.js +22 -0
  26. package/react/area/HasData.js +5 -0
  27. package/react/area/InsertElement.js +1 -1
  28. package/react/area/List.js +46 -0
  29. package/react/area/OpenCloseExpandableArea.js +5 -3
  30. package/react/area/ResponsiveLayout.js +48 -0
  31. package/react/area/index.js +12 -1
  32. package/react/blocks/Image.js +17 -0
  33. package/react/blocks/index.js +69 -55
  34. package/react/cookies/CookieSettings.js +1 -1
  35. package/react/form/Checkbox.js +2 -1
  36. package/react/form/FormField.js +1 -0
  37. package/react/form/LabelledArea.js +22 -0
  38. package/react/form/index.js +2 -1
  39. package/react/image/CoverScaledImage.js +32 -0
  40. package/react/image/Image.js +37 -0
  41. package/react/image/WidthScaledImage.js +30 -0
  42. package/react/image/index.js +3 -0
  43. package/react/index.js +6 -1
  44. package/react/login/LoginForm.js +1 -1
  45. package/react/source/index.js +15 -1
  46. package/react/text/Link.js +18 -0
  47. package/react/text/index.js +1 -0
  48. package/site/SiteDataLoader.js +1 -1
  49. package/tracking/Controller.js +1 -1
  50. package/updater/IntervalTimer.js +40 -0
  51. package/updater/index.js +14 -1
  52. package/utils/ArrayFunctions.js +58 -4
  53. package/utils/UrlFunctions.js +77 -0
  54. package/utils/index.js +2 -1
  55. package/react/admin/EditorBlockName.js +0 -19
@@ -1,10 +1,31 @@
1
1
  import Dbm from "../../index.js";
2
2
  import {createElement} from "react";
3
3
 
4
- let createToolConfiguration = function(aId, aName, aInitialData = {}, aIcon = null) {
4
+ export {default as Image} from "./Image.js";
5
+
6
+ export let createToolConfiguration = function(aId, aName, aInitialData = {}, aSanitizeSettings = {}, aIcon = null) {
7
+
8
+ class DynamicEditorBlock extends Dbm.react.admin.editor.EditorBlock {
9
+
10
+ _construct() {
11
+ super._construct();
12
+ }
13
+
14
+ static get toolbox() {
15
+
16
+ return {
17
+ title: aName,
18
+ icon: aIcon
19
+ };
20
+ }
21
+
22
+ static get sanitize() {
23
+ return aSanitizeSettings;
24
+ }
25
+ }
5
26
 
6
27
  let returnObject = {
7
- "class": Dbm.react.admin.EditorBlock,
28
+ "class": DynamicEditorBlock,
8
29
  "config": {
9
30
  "module": aId,
10
31
  "name": aName,
@@ -14,76 +35,69 @@ let createToolConfiguration = function(aId, aName, aInitialData = {}, aIcon = nu
14
35
  "toolbox": {
15
36
  title: aName,
16
37
  icon: aIcon
17
- }
38
+ }
18
39
  }
19
40
 
20
41
  return returnObject;
21
42
  }
22
43
 
23
- export let registerAllBlocks = function() {
24
-
25
- let displayNameModule = new Dbm.react.modules.ModuleCreator();
44
+ export let registerEditorBlock = function(aModuleName, aName, aEditorModule = null, aInitialData = {}, aSanitizeSettings = {}) {
26
45
 
27
- let displayNameEditor = createElement(Dbm.react.admin.EditorBlockName, {});
28
- displayNameModule.setMainElement(displayNameEditor);
46
+ if(!aEditorModule) {
47
+ aEditorModule = getDefaultEditorModule();
48
+ }
29
49
 
30
50
  let editorConfigItem = Dbm.getInstance().repository.getItem("editorjs");
31
51
  let tools = editorConfigItem.tools ? {...editorConfigItem.tools} : {};
32
52
 
33
- {
34
- let moduleName = "cookie/settings";
35
-
36
- let editorItem = new Dbm.repository.Item();
37
- editorItem.setValue("controller", displayNameModule);
38
- editorItem.register("moduleCreators/blocks/editor/" + moduleName);
53
+ let editorItem = new Dbm.repository.Item();
54
+ editorItem.setValue("controller", aEditorModule);
55
+ editorItem.register("moduleCreators/blocks/editor/" + aModuleName);
39
56
 
40
- let elementItem = new Dbm.repository.Item();
41
- elementItem.setValue("element", createElement(Dbm.react.cookies.CookieSettings));
42
- elementItem.register("blocks/" + moduleName);
57
+ tools[aModuleName] = createToolConfiguration(aModuleName, aName, aInitialData, aSanitizeSettings);
43
58
 
44
- tools[moduleName] = createToolConfiguration(moduleName, "Cookie settings");
45
- }
59
+ editorConfigItem.setValue("tools", tools);
60
+ }
46
61
 
47
- {
48
- let moduleName = "login/loginForm";
49
-
50
- let editorItem = new Dbm.repository.Item();
51
- editorItem.setValue("controller", displayNameModule);
52
- editorItem.register("moduleCreators/blocks/editor/" + moduleName);
62
+ export let registerFrontBlock = function(aModuleName, aElement) {
63
+
64
+ let elementItem = new Dbm.repository.Item();
65
+ elementItem.setValue("element", aElement);
66
+ elementItem.register("blocks/" + aModuleName);
67
+ }
53
68
 
54
- let elementItem = new Dbm.repository.Item();
55
- elementItem.setValue("element", createElement(Dbm.react.login.LoginForm));
56
- elementItem.register("blocks/" + moduleName);
69
+ export let registerBlock = function(aModuleName, aName, aElement, aEditorElement = null, aInitialData = {}, aSanitizeSettings = {}) {
57
70
 
58
- tools[moduleName] = createToolConfiguration(moduleName, "Login form");
71
+ let editorModule;
72
+ if(!aEditorElement) {
73
+ editorModule = getDefaultEditorModule();
74
+ }
75
+ else {
76
+ editorModule = new Dbm.react.modules.ModuleCreator();
77
+ editorModule.setMainElement(aEditorElement);
59
78
  }
60
79
 
61
- {
62
- let moduleName = "test/test";
63
-
64
- let displayNameModule = new Dbm.react.modules.ModuleCreator();
65
-
66
- let displayNameEditor = createElement("div", {},
67
- createElement("div", {contentEditable: true}, "test"),
68
- createElement("input", {})
69
- );
70
- displayNameModule.setMainElement(displayNameEditor);
71
-
72
- let editorItem = new Dbm.repository.Item();
73
- editorItem.setValue("controller", displayNameModule);
74
- editorItem.register("moduleCreators/blocks/editor/" + moduleName);
75
-
76
- let elementItem = new Dbm.repository.Item();
77
- elementItem.setValue("element",
78
- createElement("div", {},
79
- createElement("div", {contentEditable: true}, "test"),
80
- createElement("input", {})
81
- )
82
- );
83
- elementItem.register("blocks/" + moduleName);
84
-
85
- tools[moduleName] = createToolConfiguration(moduleName, "Test");
80
+ registerEditorBlock(aModuleName, aName, editorModule, aInitialData, aSanitizeSettings);
81
+ registerFrontBlock(aModuleName, aElement);
82
+ }
83
+
84
+ export let getDefaultEditorModule = function() {
85
+ let moduleItem = Dbm.getInstance().repository.getItem("editorjs");
86
+
87
+ let displayNameModule = moduleItem.defaultEditor;
88
+ if(!displayNameModule) {
89
+ displayNameModule = new Dbm.react.modules.ModuleCreator();
90
+
91
+ let displayNameEditor = createElement(Dbm.react.admin.editor.EditorBlockName, {});
92
+ displayNameModule.setMainElement(displayNameEditor);
93
+
94
+ moduleItem.setValue("defaultEditor", displayNameModule);
86
95
  }
87
96
 
88
- editorConfigItem.setValue("tools", tools);
97
+ return displayNameModule;
98
+ }
99
+
100
+ export let registerAllBlocks = function() {
101
+ registerBlock("cookie/settings", "Cookie settings", createElement(Dbm.react.cookies.CookieSettings));
102
+ registerBlock("login/loginForm", "Login form", createElement(Dbm.react.login.LoginForm));
89
103
  }
@@ -95,7 +95,7 @@ export default class CookieSettings extends Dbm.react.BaseObject {
95
95
  return aSetting.element;
96
96
  })
97
97
 
98
- return this._createMainElement("div", {},
98
+ return this._createMainElement("div", {"className": "content-narrow"},
99
99
  React.createElement("div", {className: "body-text"},
100
100
  React.createElement("div", {"className": "flex-row small-item-spacing"},
101
101
  React.createElement("div", {"className": "flex-row-item"},
@@ -1,3 +1,4 @@
1
+ import React from "react";
1
2
  import Dbm from "../../index.js";
2
3
 
3
4
  export default class Checkbox extends Dbm.react.BaseObject {
@@ -11,7 +12,7 @@ export default class Checkbox extends Dbm.react.BaseObject {
11
12
 
12
13
  _callback_change(aEvent) {
13
14
  //console.log("_callback_change");
14
- //console.log(aEvent);
15
+ //console.log(aEvent, this);
15
16
 
16
17
  let checked = aEvent.target.checked;
17
18
 
@@ -1,3 +1,4 @@
1
+ import React from "react";
1
2
  import Dbm from "../../index.js";
2
3
 
3
4
  export default class FormField extends Dbm.react.BaseObject {
@@ -0,0 +1,22 @@
1
+ import React from "react";
2
+ import Dbm from "../../index.js";
3
+
4
+ export default class LabelledArea extends Dbm.react.BaseObject {
5
+ _construct() {
6
+ super._construct();
7
+
8
+ this.getDynamicProp("label", "");
9
+ }
10
+
11
+ _renderMainElement() {
12
+
13
+ return this._createMainElement("div", {},
14
+ React.createElement("label", {"className": "standard-field-label", "htmlFor": this.getProp("for")},
15
+ Dbm.react.text.text(this.getDynamicProp("label"))
16
+ ),
17
+ React.createElement("div", {"className": "spacing micro"}),
18
+ this.getPropValue("children")
19
+ );
20
+ }
21
+ }
22
+
@@ -1,2 +1,3 @@
1
1
  export {default as Checkbox} from "./Checkbox.js";
2
- export {default as FormField} from "./FormField.js";
2
+ export {default as FormField} from "./FormField.js";
3
+ export {default as LabelledArea} from "./LabelledArea.js";
@@ -0,0 +1,32 @@
1
+ import Dbm from "../../index.js";
2
+ import React from "react";
3
+
4
+ export default class CoverScaledImage extends Dbm.react.BaseObject {
5
+ _construct() {
6
+ super._construct();
7
+ }
8
+
9
+ _removedUsedProps(aProps) {
10
+ delete aProps["image"];
11
+ delete aProps["targetWidth"];
12
+ delete aProps["targetHeight"];
13
+ }
14
+
15
+ _renderMainElement() {
16
+
17
+ let image = this.getPropValue("image");
18
+ let width = this.getPropValue("targetWidth");
19
+ let height = this.getPropValue("targetHeight");
20
+ let url = Dbm.utils.UrlFunctions.createCoverScaledImageUrl(image, width, height);
21
+
22
+ let newProps = this._copyProps({src: url});
23
+
24
+ let elementType = this.getPropValue("elementType");
25
+ if(elementType) {
26
+ newProps["elementType"] = elementType;
27
+ }
28
+
29
+ return React.createElement(Dbm.react.image.Image, newProps, this.getPropValue("children"));
30
+
31
+ }
32
+ }
@@ -0,0 +1,37 @@
1
+ import Dbm from "../../index.js";
2
+
3
+ export default class Image extends Dbm.react.BaseObject {
4
+ _construct() {
5
+ super._construct();
6
+ }
7
+
8
+ _removedUsedProps(aProps) {
9
+ let elementType = this.getPropValue("elementType");
10
+
11
+ let isDiv = (elementType !== "img");
12
+ if(isDiv) {
13
+ delete aProps["src"];
14
+ }
15
+ }
16
+
17
+ _renderMainElement() {
18
+
19
+ let src = this.getPropValue("src");
20
+ let elementType = this.getPropValue("elementType");
21
+
22
+ let isDiv = (elementType !== "img");
23
+ if(isDiv) {
24
+ let imageStyle = {
25
+ "backgroundImage": "url(" + src + ")"
26
+ };
27
+ let className = "image";
28
+
29
+ return this._createMainElement("div", {style: imageStyle, className: className}, this.getPropValue("children"));
30
+ }
31
+ else {
32
+ let className = "image";
33
+ return this._createMainElement("img", {src: src, className: className});
34
+ }
35
+
36
+ }
37
+ }
@@ -0,0 +1,30 @@
1
+ import Dbm from "../../index.js";
2
+ import React from "react";
3
+
4
+ export default class WidthScaledImage extends Dbm.react.BaseObject {
5
+ _construct() {
6
+ super._construct();
7
+ }
8
+
9
+ _removedUsedProps(aProps) {
10
+ delete aProps["image"];
11
+ delete aProps["targetWidth"];
12
+ }
13
+
14
+ _renderMainElement() {
15
+
16
+ let image = this.getPropValue("image");
17
+ let width = this.getPropValue("targetWidth");
18
+ let url = Dbm.utils.UrlFunctions.createScaledImageUrl(image, width);
19
+
20
+ let newProps = this._copyProps({src: url});
21
+
22
+ let elementType = this.getPropValue("elementType");
23
+ if(elementType) {
24
+ newProps["elementType"] = elementType;
25
+ }
26
+
27
+ return React.createElement(Dbm.react.image.Image, newProps, this.getPropValue("children"));
28
+
29
+ }
30
+ }
@@ -0,0 +1,3 @@
1
+ export {default as Image} from "./Image.js";
2
+ export {default as WidthScaledImage} from "./WidthScaledImage.js";
3
+ export {default as CoverScaledImage} from "./CoverScaledImage.js";
package/react/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  export {default as BaseObject} from "./BaseObject.js";
2
2
  export {default as RefToProperty} from "./RefToProperty.js";
3
3
 
4
+ export * as ChildFunctions from "./ChildFunctions.js";
5
+
4
6
  export * as modules from "./modules/index.js";
5
7
  export * as admin from "./admin/index.js";
6
8
  export * as blocks from "./blocks/index.js";
@@ -10,4 +12,7 @@ export * as area from "./area/index.js";
10
12
  export * as context from "./context/index.js";
11
13
  export * as source from "./source/index.js";
12
14
  export * as text from "./text/index.js";
13
- export * as login from "./login/index.js";
15
+ export * as login from "./login/index.js";
16
+ export * as image from "./image/index.js";
17
+ export * as animation from "./animation/index.js";
18
+
@@ -87,7 +87,7 @@ export default class LoginForm extends Dbm.react.BaseObject {
87
87
 
88
88
  _renderMainElement() {
89
89
 
90
- return this._createMainElement("div", {},
90
+ return this._createMainElement("div", {className: "content-narrow"},
91
91
  React.createElement("div", {className: "body-text"},
92
92
  React.createElement("div", {"className": ""},
93
93
  React.createElement("label", {className: "standard-field-label"},
@@ -1 +1,15 @@
1
- export {default as ContextVariableSource} from "./ContextVariableSource.js";
1
+ import Dbm from "../../index.js";
2
+
3
+ export {default as ContextVariableSource} from "./ContextVariableSource.js";
4
+
5
+ export let contextVariable = function(aPath) {
6
+ let newSource = new Dbm.react.source.ContextVariableSource();
7
+ newSource.item.path = aPath;
8
+
9
+ return newSource;
10
+ }
11
+
12
+ export let blockData = function(aPath) {
13
+ //METODO: check if blockdata is a source
14
+ return contextVariable("blockData." + aPath);
15
+ }
@@ -0,0 +1,18 @@
1
+ import Dbm from "../../index.js";
2
+
3
+ export default class Link extends Dbm.react.BaseObject {
4
+ _construct() {
5
+ super._construct();
6
+ }
7
+
8
+ _renderMainElement() {
9
+
10
+ let url = this.getPropValue("href");
11
+ let prefix = this.getPropValue("prefix");
12
+ if(prefix) {
13
+ url = prefix + url;
14
+ }
15
+
16
+ return this._createMainElement("a", {href: url}, this.getPropValue("children"));
17
+ }
18
+ }
@@ -3,6 +3,7 @@ import {createElement} from "react";
3
3
 
4
4
  export {default as Text} from "./Text.js";
5
5
  export {default as HtmlText} from "./HtmlText.js";
6
+ export {default as Link} from "./Link.js";
6
7
 
7
8
  export let text = function(aText) {
8
9
  if(typeof(aText) === "string") {
@@ -16,7 +16,7 @@ export default class SiteDataLoader extends Dbm.core.BaseObject {
16
16
  }
17
17
 
18
18
  _loadUrl() {
19
- console.log("_loadUrl");
19
+ //console.log("_loadUrl");
20
20
 
21
21
  let url = this.item.url;
22
22
  if(url != null) {
@@ -44,7 +44,7 @@ export default class Controller extends Dbm.core.BaseObject {
44
44
  }
45
45
 
46
46
  start() {
47
- console.log("start");
47
+ //console.log("start");
48
48
  this.item.active = true;
49
49
 
50
50
  return this;
@@ -0,0 +1,40 @@
1
+ import Dbm from "../index.js";
2
+
3
+ export default class IntervalTimer extends Dbm.core.BaseObject {
4
+ _construct() {
5
+ super._construct();
6
+
7
+ this.item.setValue("running", false);
8
+ this._requestId = -1;
9
+ this.item.setValue("update", function() {});
10
+
11
+ this._updateBound = this._update.bind(this);
12
+ }
13
+
14
+ _update(aTime) {
15
+
16
+ this.item.update(aTime);
17
+
18
+ }
19
+
20
+ start() {
21
+ if(!this.item.running) {
22
+ this.item.running = true;
23
+ this._requestId = setInterval(this._updateBound, 10);
24
+ }
25
+
26
+ return this;
27
+ }
28
+
29
+ stop() {
30
+ if(this.item.running) {
31
+ this.item.running = false;
32
+ if(this._requestId) {
33
+ clearInterval(this._requestId);
34
+ this._requestId = -1;
35
+ }
36
+ }
37
+
38
+ return this;
39
+ }
40
+ }
package/updater/index.js CHANGED
@@ -2,6 +2,7 @@ import Dbm from "../index.js";
2
2
 
3
3
  export {default as PropertyUpdater} from "./PropertyUpdater.js";
4
4
  export {default as RequestAnimationFrameTimer} from "./RequestAnimationFrameTimer.js";
5
+ export {default as IntervalTimer} from "./IntervalTimer.js";
5
6
 
6
7
  let webSetup = function() {
7
8
  let updater = new Dbm.updater.PropertyUpdater();
@@ -13,4 +14,16 @@ let webSetup = function() {
13
14
  updater.start();
14
15
  }
15
16
 
16
- export {webSetup};
17
+ export {webSetup};
18
+
19
+ let nodeSetup = function() {
20
+ let updater = new Dbm.updater.PropertyUpdater();
21
+ updater.item.register("propertyUpdater");
22
+
23
+ let timer = new Dbm.updater.IntervalTimer();
24
+ updater.setTimer(timer.item);
25
+
26
+ updater.start();
27
+ }
28
+
29
+ export {nodeSetup};
@@ -1,9 +1,63 @@
1
- export let range = function(aStartValue, aEndValue, aStep = 1) {
2
- let returnArray = [];
1
+ export const range = function(aStartValue, aEndValue, aStepValue = 1, aIncludeEndValue = true) {
2
+
3
+ let returnArray = new Array();
4
+
5
+ let loopCompare;
6
+
7
+ if(aStepValue > 0) {
8
+ if(aIncludeEndValue) {
9
+ loopCompare = function(aIndex, aLimit) {
10
+ return aIndex <= aLimit;
11
+ };
12
+ }
13
+ else {
14
+ loopCompare = function(aIndex, aLimit) {
15
+ return aIndex < aLimit;
16
+ };
17
+ }
18
+ }
19
+ else {
20
+ if(aIncludeEndValue) {
21
+ loopCompare = function(aIndex, aLimit) {
22
+ return aIndex >= aLimit;
23
+ };
24
+ }
25
+ else {
26
+ loopCompare = function(aIndex, aLimit) {
27
+ return aIndex > aLimit;
28
+ };
29
+ }
30
+ }
31
+
32
+ for(let i = aStartValue; loopCompare(i, aEndValue); i += aStepValue) {
33
+ returnArray.push(i);
34
+ }
35
+
36
+ return returnArray;
37
+ }
3
38
 
39
+ export const removeDuplicates = function(aArray) {
40
+ let returnArray = [];
41
+
42
+ let currentArray = aArray;
43
+ let currentArrayLength = currentArray.length;
44
+ for(let i = 0; i < currentArrayLength; i++) {
45
+ let currentValue = currentArray[i];
46
+ if(returnArray.indexOf(currentValue) === -1) {
47
+ returnArray.push(currentValue);
48
+ }
49
+ }
50
+
4
51
  return returnArray;
5
52
  }
6
53
 
7
- export let removeDuplicates = function(aArray) {
8
- return aArray;
54
+ export const singleOrArray = function(aData) {
55
+ if(aData === null || aData === undefined) {
56
+ return [];
57
+ }
58
+ else if(aData instanceof Array) {
59
+ return aData;
60
+ }
61
+
62
+ return [aData];
9
63
  }
@@ -0,0 +1,77 @@
1
+ export let createScaledImageUrl = function(aImageData, aWantedWidth) {
2
+ if(!aImageData || !aImageData["url"]) {
3
+ return null;
4
+ }
5
+
6
+ let url = aImageData["url"];
7
+ if(url.substring(url.length-4).toLowerCase() === ".svg") {
8
+ return url;
9
+ }
10
+
11
+ if(aImageData["resizeUrl"]) {
12
+ let scaleToWidth = Math.min(
13
+ Math.round(window.devicePixelRatio*aWantedWidth),
14
+ Math.max(
15
+ 100,
16
+ 100*Math.round(window.devicePixelRatio*window.innerWidth/100)
17
+ )
18
+ );
19
+ url = aImageData["resizeUrl"].split("{scale}").join("width=" + scaleToWidth);
20
+ }
21
+
22
+ return url;
23
+ }
24
+
25
+ export let createCoverScaledImageUrl = function(aImageData, aWantedWidth, aWantedHeight) {
26
+ if(!aImageData || !aImageData["url"]) {
27
+ return null;
28
+ }
29
+
30
+ let url = aImageData["url"];
31
+ if(url.substring(url.length-4).toLowerCase() === ".svg") {
32
+ return url;
33
+ }
34
+
35
+ if(aImageData["resizeUrl"]) {
36
+ let scaleToWidth = Math.min(
37
+ Math.round(window.devicePixelRatio*aWantedWidth),
38
+ Math.max(
39
+ 100,
40
+ 100*Math.round(window.devicePixelRatio*window.innerWidth/100)
41
+ )
42
+ );
43
+
44
+ let scaleToHeight = Math.round(aWantedHeight*scaleToWidth/aWantedWidth);
45
+
46
+ url = aImageData["resizeUrl"].split("{scale}").join("width=" + scaleToWidth + ",height=" + scaleToHeight + ",fit=cover");
47
+ }
48
+
49
+ return url;
50
+ }
51
+
52
+ export let createContainScaledImageUrl = function(aImageData, aWantedWidth, aWantedHeight) {
53
+ if(!aImageData || !aImageData["url"]) {
54
+ return null;
55
+ }
56
+
57
+ let url = aImageData["url"];
58
+ if(url.substring(url.length-4).toLowerCase() === ".svg") {
59
+ return url;
60
+ }
61
+
62
+ if(aImageData["resizeUrl"]) {
63
+ let scaleToWidth = Math.min(
64
+ Math.round(window.devicePixelRatio*aWantedWidth),
65
+ Math.max(
66
+ 100,
67
+ 100*Math.round(window.devicePixelRatio*window.innerWidth/100)
68
+ )
69
+ );
70
+
71
+ let scaleToHeight = Math.round(aWantedHeight*scaleToWidth/aWantedWidth);
72
+
73
+ url = aImageData["resizeUrl"].split("{scale}").join("width=" + scaleToWidth + ",height=" + scaleToHeight + ",fit=contain");
74
+ }
75
+
76
+ return url;
77
+ }
package/utils/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export * as ArrayFunctions from "./ArrayFunctions.js";
2
2
  export * as NumberFunctions from "./NumberFunctions.js";
3
- export * as StringFunctions from "./StringFunctions.js";
3
+ export * as StringFunctions from "./StringFunctions.js";
4
+ export * as UrlFunctions from "./UrlFunctions.js";
@@ -1,19 +0,0 @@
1
- import React from "react";
2
- import Dbm from "../../index.js";
3
-
4
- export default class EditorBlockName extends Dbm.react.BaseObject {
5
- _construct() {
6
- super._construct();
7
- }
8
-
9
- _renderMainElement() {
10
-
11
- let textSource = new Dbm.react.source.ContextVariableSource();
12
- textSource.item.path = "moduleData.editorData.name";
13
-
14
- return React.createElement("div", {"className": "editor-block-box editor-block-box-padding text-align-center"},
15
- Dbm.react.text.text(textSource),
16
- );
17
- }
18
- }
19
-