dbm 1.4.18 → 1.4.19

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.
@@ -43,4 +43,9 @@
43
43
  border: none;
44
44
  display: block;
45
45
  font-size: var(--standard-body-font, sans-serif);
46
+ }
47
+
48
+ .number-text-field {
49
+ text-align: right;
50
+ width: 80px;
46
51
  }
package/css/icons.css CHANGED
@@ -13,30 +13,12 @@
13
13
  height: var(--field-icon-size, 16px);
14
14
  }
15
15
 
16
- /*
17
- .standard-icon-color {
18
- filter: url("#standard-icon-color");
19
- }
20
-
21
- .action-icon-color {
22
- filter: url("#action-icon-color");
23
- }
24
-
25
- .text-icon-color {
26
- filter: url("#text-icon-color");
27
- }
28
-
29
- .white-icon-color {
30
- filter: url("#white-icon-color");
31
- }
32
-
33
- .hover-item:hover .remove-action-icon-color,
34
- .hover-icon.remove-action-icon-color:hover {
35
- filter: url("#remove-action-icon-hover-color");
36
- }
37
- */
38
-
39
16
  .drag-handle-icon {
40
17
  width: 8px;
41
18
  height: 12px;
19
+ }
20
+
21
+ .big-status-icon {
22
+ width: var(--big-status-icon-size, 64px);
23
+ height: var(--big-status-icon-size, 64px);
42
24
  }
@@ -0,0 +1,83 @@
1
+ import Dbm from "../../../index.js";
2
+
3
+ export default class SpeechRecognition extends Dbm.core.BaseObject {
4
+ _construct() {
5
+ super._construct();
6
+
7
+ this.item.requireProperty("record", false).addUpdate(this._getScopedCallFunctionCommand(this._recordChanged));
8
+ this.item.requireProperty("startValue", "");
9
+ this.item.requireProperty("value", "");
10
+ this.item.requireProperty("language", "en-GB");
11
+ this.item.requireProperty("state", "waiting");
12
+
13
+ let SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
14
+
15
+ let dictationRecorder = null;
16
+ if(SpeechRecognition) {
17
+ dictationRecorder = new SpeechRecognition();
18
+
19
+ dictationRecorder.continuous = true;
20
+ dictationRecorder.interimResults = true;
21
+
22
+ dictationRecorder.addEventListener("result", this._callback_result.bind(this));
23
+ dictationRecorder.addEventListener("error", this._callback_error.bind(this));
24
+ dictationRecorder.addEventListener("start", this._callback_started.bind(this));
25
+ dictationRecorder.addEventListener("end", this._callback_ended.bind(this));
26
+ }
27
+
28
+ this.item.requireProperty("dictationRecorder", dictationRecorder);
29
+ this.item.requireProperty("isAvailable", dictationRecorder ? true : false);
30
+ }
31
+
32
+ _recordChanged() {
33
+ if(this.item.record) {
34
+ this.item.dictationRecorder.lang = this.item.language;
35
+ this.item.startValue = this.item.value;
36
+ this.item.state = "checkingPermissions";
37
+ this.item.dictationRecorder.start();
38
+ }
39
+ else {
40
+ this.item.dictationRecorder.stop();
41
+ }
42
+ }
43
+
44
+ _callback_result(aEvent) {
45
+ console.log("_callback_result");
46
+ console.log(aEvent);
47
+
48
+
49
+ let transcripts = [this.item.startValue];
50
+
51
+ let currentArray = aEvent.results;
52
+ let currentArrayLength = currentArray.length;
53
+
54
+ for (let i = 0; i < currentArrayLength; i++) {
55
+ transcripts.push(currentArray[i][0].transcript);
56
+ }
57
+
58
+ console.log(transcripts.join(" "));
59
+
60
+ this.item.properties.value.getMostUpstreamProperty().value = transcripts.join(" ");
61
+
62
+ }
63
+
64
+ _callback_error(aEvent) {
65
+ console.log("_callback_error");
66
+ console.log(aEvent);
67
+ }
68
+
69
+ _callback_started(aEvent) {
70
+ console.log("_callback_started");
71
+ console.log(aEvent);
72
+
73
+ this.item.state = "recording";
74
+ }
75
+
76
+ _callback_ended(aEvent) {
77
+ console.log("_callback_ended");
78
+ console.log(aEvent);
79
+
80
+ this.item.properties.record.getMostUpstreamProperty().value = false;
81
+ this.item.state = "waiting";
82
+ }
83
+ }
@@ -1 +1,2 @@
1
- export {default as MoveElement} from "./MoveElement.js";
1
+ export {default as MoveElement} from "./MoveElement.js";
2
+ export {default as SpeechRecognition} from "./SpeechRecognition.js";
@@ -67,13 +67,14 @@ export const performAction = function(aType, aData, aCallback = null) {
67
67
  return request.properties.data;
68
68
  }
69
69
 
70
- export const loadRange = function(aSelects, aEncodings, aCommand) {
70
+ export const loadRange = function(aSelects, aEncodings, aCallback = null) {
71
71
  let graphApi = Dbm.getRepositoryItem("cachedGraphApi").controller;
72
72
 
73
73
  let request = graphApi.requestRange(aSelects, aEncodings);
74
74
 
75
- if(aCommand) {
76
- Dbm.flow.runWhenMatched(request.properties.status, Dbm.loading.LoadingStatus.LOADED, aCommand);
75
+ if(aCallback) {
76
+ let callbackCommand = Dbm.commands.callFunction(aCallback, [Dbm.core.source.staticObject(request, "items")]);
77
+ Dbm.flow.runWhenMatched(request.properties.status, Dbm.loading.LoadingStatus.LOADED, callbackCommand);
77
78
  }
78
79
 
79
80
  return request.properties.items;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dbm",
3
- "version": "1.4.18",
3
+ "version": "1.4.19",
4
4
  "main": "index.js",
5
5
  "type": "module",
6
6
  "exports": {
@@ -73,9 +73,9 @@ export default class ArrayField extends Dbm.react.BaseObject {
73
73
  React.createElement("div", {"className": "flex-row-item flex-no-resize"},
74
74
  React.createElement("div", {className: "spacing small"}),
75
75
  React.createElement(Dbm.react.interaction.ConfirmButton, {"command": this._getScopedCallFunctionCommand(this._removeItem, [Dbm.react.source.contextVariable("arrayEditor"), Dbm.react.source.contextVariable("item")])},
76
- React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/delete.svg", "className": "background-contain text-row-icon action-icon-color cursor-pointer"}),
76
+ React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/delete.svg", "className": "background-contain text-row-icon icon-color:action cursor-pointer"}),
77
77
  React.createElement("div", {"data-slot": "confirm", className: "absolute-container cursor-pointer", title: "Click to remove"},
78
- React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/delete.svg", "className": "background-contain text-row-icon hover-icon remove-action-icon-color cursor-pointer"}),
78
+ React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/delete.svg", "className": "background-contain text-row-icon hover-icon icon-color:remove-action cursor-pointer"}),
79
79
  React.createElement("div", {className:"centered-tip-text no-pointer-events"},
80
80
  "Remove?"
81
81
  )
@@ -31,7 +31,7 @@ export default class DraggableHierarchyDisplay extends Dbm.react.BaseObject {
31
31
  React.createElement("div", {className: "flex-row micro-item-spacing"},
32
32
  React.createElement("div", {className: "flex-row-item flex-no-resize cursor-grab", draggable: true},
33
33
  React.createElement("div", {className: "spacing small"}),
34
- React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/drag-handle.svg", "className": "background-contain drag-handle-icon action-icon-color"})
34
+ React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/drag-handle.svg", "className": "background-contain drag-handle-icon icon-color:action"})
35
35
  ),
36
36
  React.createElement("div", {className: "flex-row-item flex-resize"},
37
37
  children
@@ -39,9 +39,9 @@ export default class DraggableHierarchyDisplay extends Dbm.react.BaseObject {
39
39
  React.createElement("div", {className: "flex-row-item flex-no-resize"},
40
40
  React.createElement("div", {className: "spacing small"}),
41
41
  React.createElement(Dbm.react.interaction.ConfirmButton, {"command": this._getScopedCallFunctionCommand(this._remove)},
42
- React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/delete.svg", "className": "background-contain text-row-icon action-icon-color cursor-pointer"}),
42
+ React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/delete.svg", "className": "background-contain text-row-icon icon-color:action cursor-pointer"}),
43
43
  React.createElement("div", {"data-slot": "confirm", className: "absolute-container cursor-pointer", title: "Click to remove"},
44
- React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/delete.svg", "className": "background-contain text-row-icon hover-icon remove-action-icon-color cursor-pointer"}),
44
+ React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/delete.svg", "className": "background-contain text-row-icon hover-icon icon-color:remove-action cursor-pointer"}),
45
45
  React.createElement("div", {className:"centered-tip-text no-pointer-events"},
46
46
  "Remove?"
47
47
  )
@@ -112,7 +112,7 @@ export default class MultipleRelations extends Dbm.react.BaseObject {
112
112
  ),
113
113
  React.createElement("div", {"className": "flex-row"},
114
114
  React.createElement(Dbm.react.interaction.CommandButton, {"commands": [Dbm.commands.callFunction(this._remove.bind(this), [Dbm.react.source.item()])]},
115
- React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/remove.svg", "className": "background-contain cursor-pointer action-icon-color field-icon"})
115
+ React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/remove.svg", "className": "background-contain cursor-pointer icon-color:action field-icon"})
116
116
  )
117
117
  )
118
118
  )
@@ -68,7 +68,7 @@ export default class CookieOverlayMessage extends Dbm.react.BaseObject {
68
68
  Dbm.react.text.translatedText("Take full control over how we use cookies:", "text/settingsLinkDescription")
69
69
  ),
70
70
  React.createElement("div", {"className": "spacing small"}),
71
- React.createElement("a", {"href": settingsUrl, className:"custom-styled-link"},
71
+ React.createElement(Dbm.react.text.Link, {"href": settingsUrl, className:"custom-styled-link"},
72
72
  React.createElement("div", {"className": "secondary-button standard-button-padding text-align-center"},
73
73
  Dbm.react.text.translatedText("Settings", "settings")
74
74
  )
@@ -108,7 +108,7 @@ export default class CookieOverlayMessage extends Dbm.react.BaseObject {
108
108
  Dbm.react.text.translatedText("Take full control over how we use cookies:", "text/settingsLinkDescription")
109
109
  ),
110
110
  React.createElement("div", {"className": "flex-row-item"},
111
- React.createElement("a", {"href": settingsUrl, className:"custom-styled-link"},
111
+ React.createElement(Dbm.react.text.Link, {"href": settingsUrl, className:"custom-styled-link"},
112
112
  React.createElement("div", {"className": "cookie-settings-link"},
113
113
  Dbm.react.text.translatedText("Settings", "settings")
114
114
  )
@@ -1,34 +1,16 @@
1
1
  import Dbm from "../../index.js";
2
2
 
3
- export default class GlobalFilters extends Dbm.core.BaseObject {
3
+ export default class AddGlobalFilterClasses extends Dbm.utils.css.AddStyles {
4
+
4
5
  _construct() {
6
+ //METODO: this does not need to be it's own class
5
7
  super._construct();
6
8
 
7
- this._styleTag = null;
9
+ this.createHeadElement();
8
10
 
9
11
  let colorFilters = Dbm.getRepositoryItem("globalSvg");
10
12
  let filtersProperty = colorFilters.requireProperty("filters", []);
11
13
 
12
- filtersProperty.addUpdate(this._getScopedCallFunctionCommand(this._updateStyles));
13
- this._updateStyles();
14
- }
15
-
16
- _updateStyles() {
17
- console.log("_updateStyles");
18
-
19
- let colorFilters = Dbm.getRepositoryItem("globalSvg");
20
-
21
- if(colorFilters.filters.length) {
22
-
23
- if(!this._styleTag) {
24
- this._styleTag = document.createElement("style");
25
- document.head.appendChild(this._styleTag);
26
- }
27
-
28
- let declarations = Dbm.utils.ArrayFunctions.mapField(colorFilters.filters, "classDeclaration");
29
- this._styleTag.innerHTML = declarations.join("\n");
30
-
31
-
32
- }
14
+ this.item.properties.styles.connectInput(filtersProperty);
33
15
  }
34
16
  }
@@ -12,8 +12,14 @@ export const addGlobalRgbColorFilter = function(aName, aR, aG, aB) {
12
12
  colorFilters.requireProperty("filters", []);
13
13
 
14
14
  let item = Dbm.getRepositoryItem("globalSvg/filters/" + aName);
15
- item.setValue("element", React.createElement(Dbm.react.svg.MatrixFilter, {"id": aName, "matrix": Dbm.utils.svg.ColorMatrixFunctions.floodColor(aR, aG, aB)}));
16
- item.setValue("classDeclaration", "." + aName + "{filter:url(\"#" + aName + "\")}");
15
+ let filterId = aName + "-color-filter";
16
+ item.setValue("element", React.createElement(Dbm.react.svg.MatrixFilter, {"id": filterId, "matrix": Dbm.utils.svg.ColorMatrixFunctions.floodColor(aR, aG, aB)}));
17
+ let selectors = [
18
+ "." + CSS.escape("icon-color:" + aName),
19
+ "." + CSS.escape("group(icon-color:" + aName + ")") + " " + "." + CSS.escape("use(icon-color)"),
20
+ ];
21
+
22
+ item.setValue("cssDeclaration", selectors.join(", ") + "{filter:url(\"#" + filterId + "\")}");
17
23
 
18
24
  let filters = [].concat(colorFilters.filters);
19
25
  filters.push(item);
@@ -51,7 +57,7 @@ export const createGlobalHexBlendFilter = function(aName, aColor, aBlendMode = "
51
57
 
52
58
  let item = Dbm.getRepositoryItem("globalSvg/filters/" + aName);
53
59
  item.setValue("element", React.createElement(Dbm.react.svg.BlendColorFilter, {"id": aName, "color": aColor, "blendMode": aBlendMode, "saturation": aSaturation, "min": aMin, "max": aMax}));
54
- item.setValue("classDeclaration", "." + aName + "{filter:url(\"#" + aName + "\")}");
60
+ item.setValue("cssDeclaration", "." + aName + "{filter:url(\"#" + aName + "\")}");
55
61
 
56
62
  let filters = [].concat(colorFilters.filters);
57
63
  filters.push(item);
@@ -0,0 +1,60 @@
1
+ import Dbm from "../../index.js";
2
+
3
+ export default class AddStyles extends Dbm.core.BaseObject {
4
+ _construct() {
5
+ super._construct();
6
+
7
+ this._updateCommand = this._getScopedCallFunctionCommand(this.updateStyles);
8
+
9
+ this.item.requireProperty("element", null).addUpdate(this._updateCommand);
10
+ this.item.requireProperty("styles", []).addUpdate(this._updateCommand);
11
+ }
12
+
13
+ setElement(aElement) {
14
+ this.item.element = aElement;
15
+
16
+ return this;
17
+ }
18
+
19
+ createHeadElement() {
20
+ let element = document.createElement("style");
21
+ document.head.appendChild(element);
22
+ this.setElement(element);
23
+
24
+ return this;
25
+ }
26
+
27
+ updateStyles() {
28
+
29
+ let declarations = Dbm.utils.ArrayFunctions.mapField(this.item.styles, "cssDeclaration");
30
+
31
+ if(this.item.element) {
32
+ this.item.element.innerHTML = declarations.join("\n");
33
+ }
34
+ }
35
+
36
+ createStyle(aName, aDeclaration) {
37
+ let styleItem = new Dbm.repository.Item();
38
+ styleItem.requireProperty("name", aName);
39
+ styleItem.requireProperty("cssDeclaration", "." + CSS.escape(aName) + "{" + aDeclaration + "}").addUpdate(this._updateCommand);
40
+
41
+ this.item.addToArray("styles", styleItem);
42
+
43
+ return styleItem;
44
+ }
45
+
46
+ createGroupedStyle(aGroupName, aName, aDeclaration) {
47
+ let styleItem = new Dbm.repository.Item();
48
+ styleItem.requireProperty("groupName", aGroupName);
49
+ styleItem.requireProperty("name", aName);
50
+ let selectors = [
51
+ "." + CSS.escape(aGroupName + ":" + aName),
52
+ "." + CSS.escape("group(" + aGroupName + ":" + aName + ")") + " " + "." + CSS.escape("use(" + aGroupName + ")")
53
+ ];
54
+ styleItem.requireProperty("cssDeclaration", selectors.join(", ") + "{" + aDeclaration + "}").addUpdate(this._updateCommand);
55
+
56
+ this.item.addToArray("styles", styleItem);
57
+
58
+ return styleItem;
59
+ }
60
+ }
@@ -0,0 +1,41 @@
1
+ import Dbm from "../../index.js";
2
+
3
+ export {default as AddStyles} from "./AddStyles.js";
4
+
5
+ export const getGlobalCss = function() {
6
+
7
+ let globalStyling = Dbm.repository.getControllerIfExists("globalCss");
8
+
9
+ if(!globalStyling) {
10
+ globalStyling = new Dbm.utils.css.AddStyles();
11
+ globalStyling.item.register("globalCss");
12
+ }
13
+
14
+ return globalStyling;
15
+ }
16
+
17
+ export const setupGlobalColoring = function() {
18
+ let globalStyling = getGlobalCss();
19
+ globalStyling.createHeadElement();
20
+ globalStyling.item.element.id = "dbm-global-styles";
21
+
22
+ let colorFilters = Dbm.getRepositoryItem("globalSvg");
23
+ let filtersProperty = colorFilters.requireProperty("filters", []);
24
+
25
+ let globalFilterStyling = new Dbm.utils.css.AddStyles();
26
+ globalFilterStyling.item.properties.styles.connectInput(filtersProperty);
27
+ globalFilterStyling.createHeadElement();
28
+ globalFilterStyling.item.element.id = "dbm-global-filter-styles";
29
+ }
30
+
31
+ export const addGlobalHexColor = function(aName, aColor) {
32
+ let globalStyling = getGlobalCss();
33
+
34
+ //METODO: add css variable
35
+
36
+ globalStyling.createGroupedStyle("text-color", aName, "color: " + aColor);
37
+ globalStyling.createGroupedStyle("background-color", aName, "background-color: " + aColor);
38
+ globalStyling.createGroupedStyle("border-color", aName, "border-color: " + aColor);
39
+
40
+ Dbm.react.svg.addGlobalHexColorFilter(aName, aColor);
41
+ }
package/utils/index.js CHANGED
@@ -15,4 +15,5 @@ export {default as KeywordReplace} from "./KeywordReplace.js";
15
15
  export {default as NamedArray} from "./NamedArray.js";
16
16
 
17
17
  export * as thirdparty from "./thirdparty/index.js";
18
- export * as svg from "./svg/index.js";
18
+ export * as svg from "./svg/index.js";
19
+ export * as css from "./css/index.js";