@pie-lib/editable-html 9.5.18 → 9.5.20-next.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [9.5.19](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@9.5.18...@pie-lib/editable-html@9.5.19) (2023-04-03)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **editable-html:** focus on empty choice-PD-1805 ([3497742](https://github.com/pie-framework/pie-lib/commit/34977426bfd4db1a5c6869bc275ffbbe30ad3131))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [9.5.18](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@9.5.17...@pie-lib/editable-html@9.5.18) (2023-03-27)
7
18
 
8
19
  **Note:** Version bump only for package @pie-lib/editable-html
package/lib/index.js CHANGED
@@ -163,6 +163,8 @@ var EditableHtml = /*#__PURE__*/function (_React$Component) {
163
163
  if (position === 'beginning' && lastText) {
164
164
  c.moveFocusTo(lastText.key, 0).moveAnchorTo(lastText.key, 0);
165
165
  }
166
+
167
+ editorDOM.focus();
166
168
  });
167
169
  }
168
170
  });
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.jsx"],"names":["log","reduceMultipleBrs","markup","replace","e","console","EditableHtml","props","value","done","html","htmlParsed","onChange","onDone","position","node","select","editorRef","change","c","lastText","document","getNextText","key","getLastText","editorDOM","querySelector","activeElement","blur","focus","moveFocusTo","text","length","moveAnchorTo","range","Range","fromJSON","anchorKey","anchorOffset","focusKey","focusOffset","isFocused","isBackward","onEditingDone","v","state","allowValidation","current","equals","setState","toolbarOpts","error","ref","rootRef","React","Component","PropTypes","func","isRequired","string","bool"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Editor, { DEFAULT_PLUGINS, ALL_PLUGINS } from './editor';\nimport { htmlToValue, valueToHtml } from './serialization';\nimport { parseDegrees } from './parse-html';\nimport debug from 'debug';\nimport { Range } from 'slate';\n\nconst log = debug('@pie-lib:editable-html');\n/**\n * Export lower level Editor and serialization functions.\n */\nexport { htmlToValue, valueToHtml, Editor, DEFAULT_PLUGINS, ALL_PLUGINS };\n\n/**\n * Wrapper around the editor that exposes a `markup` and `onChange(markup:string)` api.\n * Because of the mismatch between the markup and the `Value` we need to convert the incoming markup to a value and\n * compare it. TODO: This is an interim fix, we'll need to strip back `Editor` and look how best to maintain the\n * `markup` api whilst avoiding the serialization mismatch. We should be making better use of schemas w/ normalize.\n */\n\nconst reduceMultipleBrs = (markup) => {\n try {\n return markup.replace(/(<br\\s*\\/?>){3,}/gi, '<br>');\n } catch (e) {\n console.log(\"Couldn't remove <br/> tags: \", e);\n }\n\n return markup;\n};\n\nexport default class EditableHtml extends React.Component {\n static propTypes = {\n onChange: PropTypes.func.isRequired,\n onDone: PropTypes.func,\n markup: PropTypes.string.isRequired,\n allowValidation: PropTypes.bool,\n };\n\n static defaultProps = {\n onDone: () => {},\n allowValidation: false,\n };\n\n constructor(props) {\n super(props);\n const v = htmlToValue(props.markup);\n this.state = {\n value: v,\n };\n }\n\n // eslint-disable-next-line react/no-deprecated\n componentWillReceiveProps(props) {\n if (!props.allowValidation && props.markup === this.props.markup) {\n return;\n }\n\n const v = htmlToValue(reduceMultipleBrs(props.markup));\n const current = htmlToValue(reduceMultipleBrs(this.props.markup));\n\n if (v.equals && !v.equals(current)) {\n this.setState({ value: v });\n }\n }\n\n onChange = (value, done) => {\n const html = valueToHtml(value);\n const htmlParsed = parseDegrees(html);\n\n log('value as html: ', html);\n\n if (html !== this.props.markup) {\n this.props.onChange(htmlParsed);\n }\n\n if (done) {\n this.props.onDone(htmlParsed);\n }\n };\n\n focus = (position, node, select = false) => {\n if (this.editorRef) {\n this.editorRef.change((c) => {\n const lastText = node ? c.value.document.getNextText(node.key) : c.value.document.getLastText();\n const editorDOM = document.querySelector(`[data-key=\"${this.editorRef.value.document.key}\"]`);\n\n if (editorDOM !== document.activeElement) {\n document.activeElement.blur();\n }\n\n c.focus();\n\n if (position === 'end' && lastText) {\n c.moveFocusTo(lastText.key, lastText.text?.length).moveAnchorTo(lastText.key, lastText.text?.length);\n if (select) {\n const range = Range.fromJSON({\n anchorKey: lastText.key,\n anchorOffset: 0,\n focusKey: lastText.key,\n focusOffset: lastText.text?.length,\n isFocused: true,\n isBackward: false,\n });\n c.select(range);\n }\n }\n\n if (position === 'beginning' && lastText) {\n c.moveFocusTo(lastText.key, 0).moveAnchorTo(lastText.key, 0);\n }\n });\n }\n };\n\n finishEditing = () => {\n if (this.editorRef) {\n this.editorRef.props.onEditingDone();\n }\n };\n\n render() {\n const { value } = this.state;\n const { toolbarOpts, error } = this.props;\n\n if (toolbarOpts) {\n toolbarOpts.error = error;\n }\n\n const props = {\n ...this.props,\n markup: null,\n value,\n onChange: this.onChange,\n focus: this.focus,\n };\n\n return (\n <Editor\n onRef={(ref) => {\n if (ref) {\n this.rootRef = ref;\n }\n }}\n editorRef={(ref) => ref && (this.editorRef = ref)}\n {...props}\n />\n );\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.jsx"],"names":["log","reduceMultipleBrs","markup","replace","e","console","EditableHtml","props","value","done","html","htmlParsed","onChange","onDone","position","node","select","editorRef","change","c","lastText","document","getNextText","key","getLastText","editorDOM","querySelector","activeElement","blur","focus","moveFocusTo","text","length","moveAnchorTo","range","Range","fromJSON","anchorKey","anchorOffset","focusKey","focusOffset","isFocused","isBackward","onEditingDone","v","state","allowValidation","current","equals","setState","toolbarOpts","error","ref","rootRef","React","Component","PropTypes","func","isRequired","string","bool"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Editor, { DEFAULT_PLUGINS, ALL_PLUGINS } from './editor';\nimport { htmlToValue, valueToHtml } from './serialization';\nimport { parseDegrees } from './parse-html';\nimport debug from 'debug';\nimport { Range } from 'slate';\n\nconst log = debug('@pie-lib:editable-html');\n/**\n * Export lower level Editor and serialization functions.\n */\nexport { htmlToValue, valueToHtml, Editor, DEFAULT_PLUGINS, ALL_PLUGINS };\n\n/**\n * Wrapper around the editor that exposes a `markup` and `onChange(markup:string)` api.\n * Because of the mismatch between the markup and the `Value` we need to convert the incoming markup to a value and\n * compare it. TODO: This is an interim fix, we'll need to strip back `Editor` and look how best to maintain the\n * `markup` api whilst avoiding the serialization mismatch. We should be making better use of schemas w/ normalize.\n */\n\nconst reduceMultipleBrs = (markup) => {\n try {\n return markup.replace(/(<br\\s*\\/?>){3,}/gi, '<br>');\n } catch (e) {\n console.log(\"Couldn't remove <br/> tags: \", e);\n }\n\n return markup;\n};\n\nexport default class EditableHtml extends React.Component {\n static propTypes = {\n onChange: PropTypes.func.isRequired,\n onDone: PropTypes.func,\n markup: PropTypes.string.isRequired,\n allowValidation: PropTypes.bool,\n };\n\n static defaultProps = {\n onDone: () => {},\n allowValidation: false,\n };\n\n constructor(props) {\n super(props);\n const v = htmlToValue(props.markup);\n this.state = {\n value: v,\n };\n }\n\n // eslint-disable-next-line react/no-deprecated\n componentWillReceiveProps(props) {\n if (!props.allowValidation && props.markup === this.props.markup) {\n return;\n }\n\n const v = htmlToValue(reduceMultipleBrs(props.markup));\n const current = htmlToValue(reduceMultipleBrs(this.props.markup));\n\n if (v.equals && !v.equals(current)) {\n this.setState({ value: v });\n }\n }\n\n onChange = (value, done) => {\n const html = valueToHtml(value);\n const htmlParsed = parseDegrees(html);\n\n log('value as html: ', html);\n\n if (html !== this.props.markup) {\n this.props.onChange(htmlParsed);\n }\n\n if (done) {\n this.props.onDone(htmlParsed);\n }\n };\n\n focus = (position, node, select = false) => {\n if (this.editorRef) {\n this.editorRef.change((c) => {\n const lastText = node ? c.value.document.getNextText(node.key) : c.value.document.getLastText();\n const editorDOM = document.querySelector(`[data-key=\"${this.editorRef.value.document.key}\"]`);\n\n if (editorDOM !== document.activeElement) {\n document.activeElement.blur();\n }\n\n c.focus();\n\n if (position === 'end' && lastText) {\n c.moveFocusTo(lastText.key, lastText.text?.length).moveAnchorTo(lastText.key, lastText.text?.length);\n if (select) {\n const range = Range.fromJSON({\n anchorKey: lastText.key,\n anchorOffset: 0,\n focusKey: lastText.key,\n focusOffset: lastText.text?.length,\n isFocused: true,\n isBackward: false,\n });\n c.select(range);\n }\n }\n\n if (position === 'beginning' && lastText) {\n c.moveFocusTo(lastText.key, 0).moveAnchorTo(lastText.key, 0);\n }\n editorDOM.focus();\n });\n }\n };\n\n finishEditing = () => {\n if (this.editorRef) {\n this.editorRef.props.onEditingDone();\n }\n };\n\n render() {\n const { value } = this.state;\n const { toolbarOpts, error } = this.props;\n\n if (toolbarOpts) {\n toolbarOpts.error = error;\n }\n\n const props = {\n ...this.props,\n markup: null,\n value,\n onChange: this.onChange,\n focus: this.focus,\n };\n\n return (\n <Editor\n onRef={(ref) => {\n if (ref) {\n this.rootRef = ref;\n }\n }}\n editorRef={(ref) => ref && (this.editorRef = ref)}\n {...props}\n />\n );\n }\n}\n"],"file":"index.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/editable-html",
3
- "version": "9.5.18",
3
+ "version": "9.5.20-next.0+a87c5360",
4
4
  "description": "",
5
5
  "license": "ISC",
6
6
  "main": "lib/index.js",
@@ -13,7 +13,7 @@
13
13
  "@pie-lib/drag": "^2.1.15",
14
14
  "@pie-lib/math-rendering": "^2.5.13",
15
15
  "@pie-lib/math-toolbar": "^1.11.23",
16
- "@pie-lib/render-ui": "^4.14.18",
16
+ "@pie-lib/render-ui": "^4.14.20-next.0+a87c5360",
17
17
  "change-case": "^3.0.2",
18
18
  "classnames": "^2.2.6",
19
19
  "debug": "^4.1.1",
@@ -47,6 +47,6 @@
47
47
  "publishConfig": {
48
48
  "access": "public"
49
49
  },
50
- "gitHead": "47aadfabcd94d6a6d98b8e8a2f61ae1c8f5f5ec8",
50
+ "gitHead": "a87c53601de6dba6d10ec8f87a53857d7de7c56a",
51
51
  "scripts": {}
52
52
  }
package/src/index.jsx CHANGED
@@ -109,6 +109,7 @@ export default class EditableHtml extends React.Component {
109
109
  if (position === 'beginning' && lastText) {
110
110
  c.moveFocusTo(lastText.key, 0).moveAnchorTo(lastText.key, 0);
111
111
  }
112
+ editorDOM.focus();
112
113
  });
113
114
  }
114
115
  };