@pie-lib/render-ui 6.1.4-next.35 → 7.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
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
+ # [7.0.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/render-ui@6.1.3...@pie-lib/render-ui@7.0.0) (2026-08-21)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **theming:** move the grey palette reads onto --pie-\* tokens PIE-856 ([9bbaf10](https://github.com/pie-framework/pie-lib/commit/9bbaf10ab25a050e4d1b727f84c7ad9fdc952f6a)), closes [#C0C3](https://github.com/pie-framework/pie-lib/issues/C0C3)
11
+
12
+ - fix(render-ui)!: scope PreviewPrompt to its own node instead of a shared id PIE-927 ([6dc34c8](https://github.com/pie-framework/pie-lib/commit/6dc34c89df545dd675b5d17e107c30bca70af202))
13
+
14
+ ### BREAKING CHANGES
15
+
16
+ - PreviewPrompt no longer renders id="preview-prompt". Consumers
17
+ matching on that id must match the `.preview-prompt` class instead, e.g.
18
+ audio.closest('#preview-prompt') becomes audio.closest('.preview-prompt').
19
+ Affects 5 pie-elements packages: multiple-choice, categorize, drag-in-the-blank,
20
+ hotspot, image-cloze-association.
21
+
6
22
  ## [6.1.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/render-ui@6.1.2...@pie-lib/render-ui@6.1.3) (2026-07-01)
7
23
 
8
24
  **Note:** Version bump only for package @pie-lib/render-ui
package/lib/color.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.white = exports.visualElementsColors = exports.v = exports.transparent = exports.text = exports.tertiaryLight = exports.tertiary = exports.secondaryText = exports.secondaryLight = exports.secondaryDark = exports.secondaryBackground = exports.secondary = exports.primaryText = exports.primaryLight = exports.primaryDark = exports.primary = exports.missingWithIcon = exports.missing = exports.keypadEmptyPlaceholder = exports.keypadButtonOperatorHover = exports.keypadButtonOperator = exports.keypadButtonHover = exports.keypadButton = exports.keyBoardFocusIndicator = exports.incorrectWithIcon = exports.incorrectSecondary = exports.incorrect = exports.focusUncheckedBorder = exports.focusUnchecked = exports.focusCheckedBorder = exports.focusChecked = exports.fadedPrimary = exports.dropdownBackground = exports.disabledSecondary = exports.disabled = exports.defaults = exports.correctWithIcon = exports.correctTertiary = exports.correctSecondary = exports.correct = exports.buttonHoverBg = exports.buttonBorder = exports.borderLight = exports.borderGray = exports.borderDark = exports.border = exports.blueGrey900 = exports.blueGrey600 = exports.blueGrey300 = exports.blueGrey100 = exports.black = exports.backgroundDark = exports.background = void 0;
6
+ exports.white = exports.visualElementsColors = exports.v = exports.transparent = exports.text = exports.tertiaryLight = exports.tertiary = exports.secondaryText = exports.secondaryLight = exports.secondaryDark = exports.secondaryBackground = exports.secondary = exports.primaryText = exports.primaryLight = exports.primaryDark = exports.primary = exports.missingWithIcon = exports.missing = exports.keypadEmptyPlaceholder = exports.keypadButtonOperatorHover = exports.keypadButtonOperator = exports.keypadButtonHover = exports.keypadButton = exports.keyBoardFocusIndicator = exports.incorrectWithIcon = exports.incorrectSecondary = exports.incorrect = exports.focusUncheckedBorder = exports.focusUnchecked = exports.focusCheckedBorder = exports.focusChecked = exports.fadedPrimary = exports.dropdownBackground = exports.disabledSecondary = exports.disabled = exports.defaults = exports.correctWithIcon = exports.correctTertiary = exports.correctSecondary = exports.correct = exports.buttonHoverBg = exports.buttonFocusOutline = exports.buttonBorder = exports.borderLight = exports.borderGray = exports.borderDark = exports.border = exports.blueGrey900 = exports.blueGrey600 = exports.blueGrey300 = exports.blueGrey100 = exports.black = exports.backgroundDark = exports.background = void 0;
7
7
  var _colors = require("@mui/material/colors");
8
8
  var defaults = exports.defaults = {
9
9
  TEXT: 'black',
@@ -44,6 +44,8 @@ var defaults = exports.defaults = {
44
44
  FOCUS_CHECKED_BORDER: '#1565C0',
45
45
  FOCUS_UNCHECKED: '#E0E0E0',
46
46
  FOCUS_UNCHECKED_BORDER: '#757575',
47
+ // the keyboard focus ring on a button or toolbar control
48
+ BUTTON_FOCUS_OUTLINE: '#3B82F6',
47
49
  // this is used for select text tokens
48
50
  BLUE_GREY100: '#F3F5F7',
49
51
  BLUE_GREY300: '#C0C3CF',
@@ -189,6 +191,9 @@ var focusUnchecked = exports.focusUnchecked = function focusUnchecked() {
189
191
  var focusUncheckedBorder = exports.focusUncheckedBorder = function focusUncheckedBorder() {
190
192
  return pv('focus-unchecked-border', defaults.FOCUS_UNCHECKED_BORDER);
191
193
  };
194
+ var buttonFocusOutline = exports.buttonFocusOutline = function buttonFocusOutline() {
195
+ return pv('button-focus-outline', defaults.BUTTON_FOCUS_OUTLINE);
196
+ };
192
197
  var blueGrey100 = exports.blueGrey100 = function blueGrey100() {
193
198
  return pv('blue-grey-100', defaults.BLUE_GREY100);
194
199
  };
package/lib/color.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"color.js","names":["_colors","require","defaults","exports","TEXT","DISABLED","DISABLED_SECONDARY","CORRECT","green","CORRECT_SECONDARY","CORRECT_TERTIARY","CORRECT_WITH_ICON","INCORRECT","orange","INCORRECT_SECONDARY","red","INCORRECT_WITH_ICON","MISSING","MISSING_WITH_ICON","PRIMARY","indigo","PRIMARY_LIGHT","PRIMARY_DARK","SECONDARY","pink","A400","SECONDARY_LIGHT","SECONDARY_DARK","TERTIARY","TERTIARY_LIGHT","BACKGROUND","BACKGROUND_DARK","DROPDOWN_BACKGROUND","SECONDARY_BACKGROUND","BORDER","BORDER_LIGHT","BORDER_DARK","BORDER_GRAY","BLACK","WHITE","TRANSPARENT","FOCUS_CHECKED","FOCUS_CHECKED_BORDER","FOCUS_UNCHECKED","FOCUS_UNCHECKED_BORDER","BLUE_GREY100","BLUE_GREY300","BLUE_GREY600","BLUE_GREY900","FADED_PRIMARY","KEYPAD_BUTTON","KEYPAD_BUTTON_OPERATOR","KEYPAD_EMPTY_PLACEHOLDER","KEYPAD_BUTTON_HOVER","KEYPAD_BUTTON_OPERATOR_HOVER","KEY_BOARD_FOCUS_INDICATOR","BUTTON_BORDER","BUTTON_HOVER_BG","Object","freeze","v","prefix","_len","arguments","length","args","Array","_key","fallback","pop","reduceRight","acc","concat","pv","text","disabled","disabledSecondary","correct","correctSecondary","correctTertiary","correctWithIcon","incorrect","incorrectWithIcon","incorrectSecondary","missing","missingWithIcon","primary","primaryLight","primaryDark","primaryText","fadedPrimary","secondary","secondaryLight","secondaryDark","secondaryText","background","backgroundDark","secondaryBackground","dropdownBackground","tertiary","tertiaryLight","border","borderLight","borderDark","borderGray","black","white","transparent","focusChecked","focusCheckedBorder","focusUnchecked","focusUncheckedBorder","blueGrey100","blueGrey300","blueGrey600","blueGrey900","keypadButton","keypadButtonOperator","keypadEmptyPlaceholder","keypadButtonHover","keypadButtonOperatorHover","keyBoardFocusIndicator","buttonBorder","buttonHoverBg","visualElementsColors","AXIS_LINE_COLOR","ROLLOVER_FILL_BAR_COLOR","GRIDLINES_COLOR","PLOT_FILL_COLOR","SHAPES_FILL_COLOR"],"sources":["../src/color.js"],"sourcesContent":["import { green, indigo, orange, pink, red } from '@mui/material/colors';\n\nexport const defaults = {\n TEXT: 'black',\n DISABLED: 'grey',\n DISABLED_SECONDARY: '#ABABAB',\n CORRECT: green[500],\n CORRECT_SECONDARY: green[50],\n CORRECT_TERTIARY: '#0EA449',\n CORRECT_WITH_ICON: '#087D38',\n INCORRECT: orange[500],\n INCORRECT_SECONDARY: red[50],\n INCORRECT_WITH_ICON: '#BF0D00',\n MISSING: red[700],\n MISSING_WITH_ICON: '#6A78A1',\n PRIMARY: indigo[500],\n PRIMARY_LIGHT: indigo[200],\n PRIMARY_DARK: indigo[800],\n SECONDARY: pink.A400,\n SECONDARY_LIGHT: pink[200],\n SECONDARY_DARK: pink[900],\n TERTIARY: '#146EB3',\n TERTIARY_LIGHT: '#D0E2F0',\n BACKGROUND: 'rgba(255,255,255,0)',\n BACKGROUND_DARK: '#ECEDF1',\n DROPDOWN_BACKGROUND: '#E0E1E6', // this is used for inline-dropdown\n // this is only used for multi-trait-rubric, we might want to use BACKGROUND_DARK instead\n SECONDARY_BACKGROUND: 'rgba(241,241,241,1)',\n BORDER: '#9A9A9A',\n BORDER_LIGHT: '#D1D1D1',\n BORDER_DARK: '#646464',\n BORDER_GRAY: '#7E8494',\n BLACK: '#000000',\n WHITE: '#ffffff',\n TRANSPARENT: 'transparent',\n // this is used for multiple-choice accessibility\n FOCUS_CHECKED: '#BBDEFB',\n FOCUS_CHECKED_BORDER: '#1565C0',\n FOCUS_UNCHECKED: '#E0E0E0',\n FOCUS_UNCHECKED_BORDER: '#757575',\n // this is used for select text tokens\n BLUE_GREY100: '#F3F5F7',\n BLUE_GREY300: '#C0C3CF',\n BLUE_GREY600: '#7E8494',\n BLUE_GREY900: '#152452',\n // this is used for charting\n FADED_PRIMARY: '#DCDAFB',\n // these are used for the math keypad buttons\n KEYPAD_BUTTON: 'rgb(188, 194, 229)',\n KEYPAD_BUTTON_OPERATOR: 'rgb(255, 159, 192)',\n KEYPAD_EMPTY_PLACEHOLDER: 'rgba(245, 0, 87, 0.4)',\n KEYPAD_BUTTON_HOVER: 'rgb(214, 218, 239)',\n KEYPAD_BUTTON_OPERATOR_HOVER: 'rgb(255, 197, 217)',\n KEY_BOARD_FOCUS_INDICATOR: '#2B87FF',\n // these are used for graphing UI elements\n BUTTON_BORDER: 'rgba(0, 0, 0, 0.23)',\n BUTTON_HOVER_BG: 'rgba(0, 0, 0, 0.08)',\n};\n\nObject.freeze(defaults);\n\nexport const v =\n (prefix) =>\n (...args) => {\n const fallback = args.pop();\n return args.reduceRight((acc, v) => {\n return `var(--${prefix}-${v}, ${acc})`;\n }, fallback);\n };\n\nconst pv = v('pie');\n\nexport const text = () => pv('text', defaults.TEXT);\nexport const disabled = () => pv('disabled', defaults.DISABLED);\nexport const disabledSecondary = () => pv('disabled-secondary', defaults.DISABLED_SECONDARY);\nexport const correct = () => pv('correct', defaults.CORRECT);\nexport const correctSecondary = () => pv('correct-secondary', defaults.CORRECT_SECONDARY);\nexport const correctTertiary = () => pv('correct-tertiary', defaults.CORRECT_TERTIARY);\nexport const correctWithIcon = () => pv('correct-icon', defaults.CORRECT_WITH_ICON);\nexport const incorrect = () => pv('incorrect', defaults.INCORRECT);\nexport const incorrectWithIcon = () => pv('incorrect-icon', defaults.INCORRECT_WITH_ICON);\nexport const incorrectSecondary = () => pv('incorrect-secondary', defaults.INCORRECT_SECONDARY);\nexport const missing = () => pv('missing', defaults.MISSING);\nexport const missingWithIcon = () => pv('missing-icon', defaults.MISSING_WITH_ICON);\n\nexport const primary = () => pv('primary', defaults.PRIMARY);\nexport const primaryLight = () => pv('primary-light', defaults.PRIMARY_LIGHT);\nexport const primaryDark = () => pv('primary-dark', defaults.PRIMARY_DARK);\nexport const primaryText = () => pv('primary-text', 'text', defaults.TEXT);\nexport const fadedPrimary = () => pv('faded-primary', defaults.FADED_PRIMARY);\n\nexport const secondary = () => pv('secondary', defaults.SECONDARY);\nexport const secondaryLight = () => pv('secondary-light', defaults.SECONDARY_LIGHT);\nexport const secondaryDark = () => pv('secondary-dark', defaults.SECONDARY_DARK);\n\nexport const secondaryText = () => pv('secondary-text', 'text', defaults.TEXT);\nexport const background = () => pv('background', defaults.BACKGROUND);\nexport const backgroundDark = () => pv('background-dark', defaults.BACKGROUND_DARK);\nexport const secondaryBackground = () => pv('secondary-background', defaults.SECONDARY_BACKGROUND);\nexport const dropdownBackground = () => pv('dropdown-background', defaults.DROPDOWN_BACKGROUND);\n\nexport const tertiary = () => pv('tertiary', defaults.TERTIARY);\nexport const tertiaryLight = () => pv('tertiary-light', defaults.TERTIARY_LIGHT);\n\nexport const border = () => pv('border', defaults.BORDER);\nexport const borderLight = () => pv('border-light', defaults.BORDER_LIGHT);\nexport const borderDark = () => pv('border-dark', defaults.BORDER_DARK);\nexport const borderGray = () => pv('border-gray', defaults.BORDER_GRAY);\n\nexport const black = () => pv('black', defaults.BLACK);\nexport const white = () => pv('white', defaults.WHITE);\nexport const transparent = () => defaults.TRANSPARENT;\n\nexport const focusChecked = () => pv('focus-checked', defaults.FOCUS_CHECKED);\nexport const focusCheckedBorder = () => pv('focus-checked-border', defaults.FOCUS_CHECKED_BORDER);\nexport const focusUnchecked = () => pv('focus-unchecked', defaults.FOCUS_UNCHECKED);\nexport const focusUncheckedBorder = () => pv('focus-unchecked-border', defaults.FOCUS_UNCHECKED_BORDER);\n\nexport const blueGrey100 = () => pv('blue-grey-100', defaults.BLUE_GREY100);\nexport const blueGrey300 = () => pv('blue-grey-300', defaults.BLUE_GREY300);\nexport const blueGrey600 = () => pv('blue-grey-600', defaults.BLUE_GREY600);\nexport const blueGrey900 = () => pv('blue-grey-900', defaults.BLUE_GREY900);\n\nexport const keypadButton = () => pv('keypad-button', defaults.KEYPAD_BUTTON);\nexport const keypadButtonOperator = () => pv('keypad-button-operator', defaults.KEYPAD_BUTTON_OPERATOR);\nexport const keypadEmptyPlaceholder = () => pv('keypad-empty-placeholder', defaults.KEYPAD_EMPTY_PLACEHOLDER);\nexport const keypadButtonHover = () => pv('keypad-button-hover', defaults.KEYPAD_BUTTON_HOVER);\nexport const keypadButtonOperatorHover = () => pv('keypad-button-operator-hover', defaults.KEYPAD_BUTTON_OPERATOR_HOVER);\nexport const keyBoardFocusIndicator = () => pv('keyboard-focus-indicator', defaults.KEY_BOARD_FOCUS_INDICATOR);\nexport const buttonBorder = () => pv('button-border', defaults.BUTTON_BORDER);\nexport const buttonHoverBg = () => pv('button-hover-bg', defaults.BUTTON_HOVER_BG);\n\nexport const visualElementsColors = {\n AXIS_LINE_COLOR: '#5A53C9',\n ROLLOVER_FILL_BAR_COLOR: '#050F2D',\n GRIDLINES_COLOR: '#8E88EA',\n PLOT_FILL_COLOR: '#1463B3',\n SHAPES_FILL_COLOR: '#7986cb',\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"color.js","names":["_colors","require","defaults","exports","TEXT","DISABLED","DISABLED_SECONDARY","CORRECT","green","CORRECT_SECONDARY","CORRECT_TERTIARY","CORRECT_WITH_ICON","INCORRECT","orange","INCORRECT_SECONDARY","red","INCORRECT_WITH_ICON","MISSING","MISSING_WITH_ICON","PRIMARY","indigo","PRIMARY_LIGHT","PRIMARY_DARK","SECONDARY","pink","A400","SECONDARY_LIGHT","SECONDARY_DARK","TERTIARY","TERTIARY_LIGHT","BACKGROUND","BACKGROUND_DARK","DROPDOWN_BACKGROUND","SECONDARY_BACKGROUND","BORDER","BORDER_LIGHT","BORDER_DARK","BORDER_GRAY","BLACK","WHITE","TRANSPARENT","FOCUS_CHECKED","FOCUS_CHECKED_BORDER","FOCUS_UNCHECKED","FOCUS_UNCHECKED_BORDER","BUTTON_FOCUS_OUTLINE","BLUE_GREY100","BLUE_GREY300","BLUE_GREY600","BLUE_GREY900","FADED_PRIMARY","KEYPAD_BUTTON","KEYPAD_BUTTON_OPERATOR","KEYPAD_EMPTY_PLACEHOLDER","KEYPAD_BUTTON_HOVER","KEYPAD_BUTTON_OPERATOR_HOVER","KEY_BOARD_FOCUS_INDICATOR","BUTTON_BORDER","BUTTON_HOVER_BG","Object","freeze","v","prefix","_len","arguments","length","args","Array","_key","fallback","pop","reduceRight","acc","concat","pv","text","disabled","disabledSecondary","correct","correctSecondary","correctTertiary","correctWithIcon","incorrect","incorrectWithIcon","incorrectSecondary","missing","missingWithIcon","primary","primaryLight","primaryDark","primaryText","fadedPrimary","secondary","secondaryLight","secondaryDark","secondaryText","background","backgroundDark","secondaryBackground","dropdownBackground","tertiary","tertiaryLight","border","borderLight","borderDark","borderGray","black","white","transparent","focusChecked","focusCheckedBorder","focusUnchecked","focusUncheckedBorder","buttonFocusOutline","blueGrey100","blueGrey300","blueGrey600","blueGrey900","keypadButton","keypadButtonOperator","keypadEmptyPlaceholder","keypadButtonHover","keypadButtonOperatorHover","keyBoardFocusIndicator","buttonBorder","buttonHoverBg","visualElementsColors","AXIS_LINE_COLOR","ROLLOVER_FILL_BAR_COLOR","GRIDLINES_COLOR","PLOT_FILL_COLOR","SHAPES_FILL_COLOR"],"sources":["../src/color.js"],"sourcesContent":["import { green, indigo, orange, pink, red } from '@mui/material/colors';\n\nexport const defaults = {\n TEXT: 'black',\n DISABLED: 'grey',\n DISABLED_SECONDARY: '#ABABAB',\n CORRECT: green[500],\n CORRECT_SECONDARY: green[50],\n CORRECT_TERTIARY: '#0EA449',\n CORRECT_WITH_ICON: '#087D38',\n INCORRECT: orange[500],\n INCORRECT_SECONDARY: red[50],\n INCORRECT_WITH_ICON: '#BF0D00',\n MISSING: red[700],\n MISSING_WITH_ICON: '#6A78A1',\n PRIMARY: indigo[500],\n PRIMARY_LIGHT: indigo[200],\n PRIMARY_DARK: indigo[800],\n SECONDARY: pink.A400,\n SECONDARY_LIGHT: pink[200],\n SECONDARY_DARK: pink[900],\n TERTIARY: '#146EB3',\n TERTIARY_LIGHT: '#D0E2F0',\n BACKGROUND: 'rgba(255,255,255,0)',\n BACKGROUND_DARK: '#ECEDF1',\n DROPDOWN_BACKGROUND: '#E0E1E6', // this is used for inline-dropdown\n // this is only used for multi-trait-rubric, we might want to use BACKGROUND_DARK instead\n SECONDARY_BACKGROUND: 'rgba(241,241,241,1)',\n BORDER: '#9A9A9A',\n BORDER_LIGHT: '#D1D1D1',\n BORDER_DARK: '#646464',\n BORDER_GRAY: '#7E8494',\n BLACK: '#000000',\n WHITE: '#ffffff',\n TRANSPARENT: 'transparent',\n // this is used for multiple-choice accessibility\n FOCUS_CHECKED: '#BBDEFB',\n FOCUS_CHECKED_BORDER: '#1565C0',\n FOCUS_UNCHECKED: '#E0E0E0',\n FOCUS_UNCHECKED_BORDER: '#757575',\n // the keyboard focus ring on a button or toolbar control\n BUTTON_FOCUS_OUTLINE: '#3B82F6',\n // this is used for select text tokens\n BLUE_GREY100: '#F3F5F7',\n BLUE_GREY300: '#C0C3CF',\n BLUE_GREY600: '#7E8494',\n BLUE_GREY900: '#152452',\n // this is used for charting\n FADED_PRIMARY: '#DCDAFB',\n // these are used for the math keypad buttons\n KEYPAD_BUTTON: 'rgb(188, 194, 229)',\n KEYPAD_BUTTON_OPERATOR: 'rgb(255, 159, 192)',\n KEYPAD_EMPTY_PLACEHOLDER: 'rgba(245, 0, 87, 0.4)',\n KEYPAD_BUTTON_HOVER: 'rgb(214, 218, 239)',\n KEYPAD_BUTTON_OPERATOR_HOVER: 'rgb(255, 197, 217)',\n KEY_BOARD_FOCUS_INDICATOR: '#2B87FF',\n // these are used for graphing UI elements\n BUTTON_BORDER: 'rgba(0, 0, 0, 0.23)',\n BUTTON_HOVER_BG: 'rgba(0, 0, 0, 0.08)',\n};\n\nObject.freeze(defaults);\n\nexport const v =\n (prefix) =>\n (...args) => {\n const fallback = args.pop();\n return args.reduceRight((acc, v) => {\n return `var(--${prefix}-${v}, ${acc})`;\n }, fallback);\n };\n\nconst pv = v('pie');\n\nexport const text = () => pv('text', defaults.TEXT);\nexport const disabled = () => pv('disabled', defaults.DISABLED);\nexport const disabledSecondary = () => pv('disabled-secondary', defaults.DISABLED_SECONDARY);\nexport const correct = () => pv('correct', defaults.CORRECT);\nexport const correctSecondary = () => pv('correct-secondary', defaults.CORRECT_SECONDARY);\nexport const correctTertiary = () => pv('correct-tertiary', defaults.CORRECT_TERTIARY);\nexport const correctWithIcon = () => pv('correct-icon', defaults.CORRECT_WITH_ICON);\nexport const incorrect = () => pv('incorrect', defaults.INCORRECT);\nexport const incorrectWithIcon = () => pv('incorrect-icon', defaults.INCORRECT_WITH_ICON);\nexport const incorrectSecondary = () => pv('incorrect-secondary', defaults.INCORRECT_SECONDARY);\nexport const missing = () => pv('missing', defaults.MISSING);\nexport const missingWithIcon = () => pv('missing-icon', defaults.MISSING_WITH_ICON);\n\nexport const primary = () => pv('primary', defaults.PRIMARY);\nexport const primaryLight = () => pv('primary-light', defaults.PRIMARY_LIGHT);\nexport const primaryDark = () => pv('primary-dark', defaults.PRIMARY_DARK);\nexport const primaryText = () => pv('primary-text', 'text', defaults.TEXT);\nexport const fadedPrimary = () => pv('faded-primary', defaults.FADED_PRIMARY);\n\nexport const secondary = () => pv('secondary', defaults.SECONDARY);\nexport const secondaryLight = () => pv('secondary-light', defaults.SECONDARY_LIGHT);\nexport const secondaryDark = () => pv('secondary-dark', defaults.SECONDARY_DARK);\n\nexport const secondaryText = () => pv('secondary-text', 'text', defaults.TEXT);\nexport const background = () => pv('background', defaults.BACKGROUND);\nexport const backgroundDark = () => pv('background-dark', defaults.BACKGROUND_DARK);\nexport const secondaryBackground = () => pv('secondary-background', defaults.SECONDARY_BACKGROUND);\nexport const dropdownBackground = () => pv('dropdown-background', defaults.DROPDOWN_BACKGROUND);\n\nexport const tertiary = () => pv('tertiary', defaults.TERTIARY);\nexport const tertiaryLight = () => pv('tertiary-light', defaults.TERTIARY_LIGHT);\n\nexport const border = () => pv('border', defaults.BORDER);\nexport const borderLight = () => pv('border-light', defaults.BORDER_LIGHT);\nexport const borderDark = () => pv('border-dark', defaults.BORDER_DARK);\nexport const borderGray = () => pv('border-gray', defaults.BORDER_GRAY);\n\nexport const black = () => pv('black', defaults.BLACK);\nexport const white = () => pv('white', defaults.WHITE);\nexport const transparent = () => defaults.TRANSPARENT;\n\nexport const focusChecked = () => pv('focus-checked', defaults.FOCUS_CHECKED);\nexport const focusCheckedBorder = () => pv('focus-checked-border', defaults.FOCUS_CHECKED_BORDER);\nexport const focusUnchecked = () => pv('focus-unchecked', defaults.FOCUS_UNCHECKED);\nexport const focusUncheckedBorder = () => pv('focus-unchecked-border', defaults.FOCUS_UNCHECKED_BORDER);\nexport const buttonFocusOutline = () => pv('button-focus-outline', defaults.BUTTON_FOCUS_OUTLINE);\n\nexport const blueGrey100 = () => pv('blue-grey-100', defaults.BLUE_GREY100);\nexport const blueGrey300 = () => pv('blue-grey-300', defaults.BLUE_GREY300);\nexport const blueGrey600 = () => pv('blue-grey-600', defaults.BLUE_GREY600);\nexport const blueGrey900 = () => pv('blue-grey-900', defaults.BLUE_GREY900);\n\nexport const keypadButton = () => pv('keypad-button', defaults.KEYPAD_BUTTON);\nexport const keypadButtonOperator = () => pv('keypad-button-operator', defaults.KEYPAD_BUTTON_OPERATOR);\nexport const keypadEmptyPlaceholder = () => pv('keypad-empty-placeholder', defaults.KEYPAD_EMPTY_PLACEHOLDER);\nexport const keypadButtonHover = () => pv('keypad-button-hover', defaults.KEYPAD_BUTTON_HOVER);\nexport const keypadButtonOperatorHover = () =>\n pv('keypad-button-operator-hover', defaults.KEYPAD_BUTTON_OPERATOR_HOVER);\nexport const keyBoardFocusIndicator = () => pv('keyboard-focus-indicator', defaults.KEY_BOARD_FOCUS_INDICATOR);\nexport const buttonBorder = () => pv('button-border', defaults.BUTTON_BORDER);\nexport const buttonHoverBg = () => pv('button-hover-bg', defaults.BUTTON_HOVER_BG);\n\nexport const visualElementsColors = {\n AXIS_LINE_COLOR: '#5A53C9',\n ROLLOVER_FILL_BAR_COLOR: '#050F2D',\n GRIDLINES_COLOR: '#8E88EA',\n PLOT_FILL_COLOR: '#1463B3',\n SHAPES_FILL_COLOR: '#7986cb',\n};\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEO,IAAMC,QAAQ,GAAAC,OAAA,CAAAD,QAAA,GAAG;EACtBE,IAAI,EAAE,OAAO;EACbC,QAAQ,EAAE,MAAM;EAChBC,kBAAkB,EAAE,SAAS;EAC7BC,OAAO,EAAEC,aAAK,CAAC,GAAG,CAAC;EACnBC,iBAAiB,EAAED,aAAK,CAAC,EAAE,CAAC;EAC5BE,gBAAgB,EAAE,SAAS;EAC3BC,iBAAiB,EAAE,SAAS;EAC5BC,SAAS,EAAEC,cAAM,CAAC,GAAG,CAAC;EACtBC,mBAAmB,EAAEC,WAAG,CAAC,EAAE,CAAC;EAC5BC,mBAAmB,EAAE,SAAS;EAC9BC,OAAO,EAAEF,WAAG,CAAC,GAAG,CAAC;EACjBG,iBAAiB,EAAE,SAAS;EAC5BC,OAAO,EAAEC,cAAM,CAAC,GAAG,CAAC;EACpBC,aAAa,EAAED,cAAM,CAAC,GAAG,CAAC;EAC1BE,YAAY,EAAEF,cAAM,CAAC,GAAG,CAAC;EACzBG,SAAS,EAAEC,YAAI,CAACC,IAAI;EACpBC,eAAe,EAAEF,YAAI,CAAC,GAAG,CAAC;EAC1BG,cAAc,EAAEH,YAAI,CAAC,GAAG,CAAC;EACzBI,QAAQ,EAAE,SAAS;EACnBC,cAAc,EAAE,SAAS;EACzBC,UAAU,EAAE,qBAAqB;EACjCC,eAAe,EAAE,SAAS;EAC1BC,mBAAmB,EAAE,SAAS;EAAE;EAChC;EACAC,oBAAoB,EAAE,qBAAqB;EAC3CC,MAAM,EAAE,SAAS;EACjBC,YAAY,EAAE,SAAS;EACvBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EACtBC,KAAK,EAAE,SAAS;EAChBC,KAAK,EAAE,SAAS;EAChBC,WAAW,EAAE,aAAa;EAC1B;EACAC,aAAa,EAAE,SAAS;EACxBC,oBAAoB,EAAE,SAAS;EAC/BC,eAAe,EAAE,SAAS;EAC1BC,sBAAsB,EAAE,SAAS;EACjC;EACAC,oBAAoB,EAAE,SAAS;EAC/B;EACAC,YAAY,EAAE,SAAS;EACvBC,YAAY,EAAE,SAAS;EACvBC,YAAY,EAAE,SAAS;EACvBC,YAAY,EAAE,SAAS;EACvB;EACAC,aAAa,EAAE,SAAS;EACxB;EACAC,aAAa,EAAE,oBAAoB;EACnCC,sBAAsB,EAAE,oBAAoB;EAC5CC,wBAAwB,EAAE,uBAAuB;EACjDC,mBAAmB,EAAE,oBAAoB;EACzCC,4BAA4B,EAAE,oBAAoB;EAClDC,yBAAyB,EAAE,SAAS;EACpC;EACAC,aAAa,EAAE,qBAAqB;EACpCC,eAAe,EAAE;AACnB,CAAC;AAEDC,MAAM,CAACC,MAAM,CAAC1D,QAAQ,CAAC;AAEhB,IAAM2D,CAAC,GAAA1D,OAAA,CAAA0D,CAAA,GACZ,SADWA,CAACA,CACXC,MAAM;EAAA,OACP,YAAa;IAAA,SAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAATC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAJF,IAAI,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;IAAA;IACN,IAAMC,QAAQ,GAAGH,IAAI,CAACI,GAAG,CAAC,CAAC;IAC3B,OAAOJ,IAAI,CAACK,WAAW,CAAC,UAACC,GAAG,EAAEX,CAAC,EAAK;MAClC,gBAAAY,MAAA,CAAgBX,MAAM,OAAAW,MAAA,CAAIZ,CAAC,QAAAY,MAAA,CAAKD,GAAG;IACrC,CAAC,EAAEH,QAAQ,CAAC;EACd,CAAC;AAAA;AAEH,IAAMK,EAAE,GAAGb,CAAC,CAAC,KAAK,CAAC;AAEZ,IAAMc,IAAI,GAAAxE,OAAA,CAAAwE,IAAA,GAAG,SAAPA,IAAIA,CAAA;EAAA,OAASD,EAAE,CAAC,MAAM,EAAExE,QAAQ,CAACE,IAAI,CAAC;AAAA;AAC5C,IAAMwE,QAAQ,GAAAzE,OAAA,CAAAyE,QAAA,GAAG,SAAXA,QAAQA,CAAA;EAAA,OAASF,EAAE,CAAC,UAAU,EAAExE,QAAQ,CAACG,QAAQ,CAAC;AAAA;AACxD,IAAMwE,iBAAiB,GAAA1E,OAAA,CAAA0E,iBAAA,GAAG,SAApBA,iBAAiBA,CAAA;EAAA,OAASH,EAAE,CAAC,oBAAoB,EAAExE,QAAQ,CAACI,kBAAkB,CAAC;AAAA;AACrF,IAAMwE,OAAO,GAAA3E,OAAA,CAAA2E,OAAA,GAAG,SAAVA,OAAOA,CAAA;EAAA,OAASJ,EAAE,CAAC,SAAS,EAAExE,QAAQ,CAACK,OAAO,CAAC;AAAA;AACrD,IAAMwE,gBAAgB,GAAA5E,OAAA,CAAA4E,gBAAA,GAAG,SAAnBA,gBAAgBA,CAAA;EAAA,OAASL,EAAE,CAAC,mBAAmB,EAAExE,QAAQ,CAACO,iBAAiB,CAAC;AAAA;AAClF,IAAMuE,eAAe,GAAA7E,OAAA,CAAA6E,eAAA,GAAG,SAAlBA,eAAeA,CAAA;EAAA,OAASN,EAAE,CAAC,kBAAkB,EAAExE,QAAQ,CAACQ,gBAAgB,CAAC;AAAA;AAC/E,IAAMuE,eAAe,GAAA9E,OAAA,CAAA8E,eAAA,GAAG,SAAlBA,eAAeA,CAAA;EAAA,OAASP,EAAE,CAAC,cAAc,EAAExE,QAAQ,CAACS,iBAAiB,CAAC;AAAA;AAC5E,IAAMuE,SAAS,GAAA/E,OAAA,CAAA+E,SAAA,GAAG,SAAZA,SAASA,CAAA;EAAA,OAASR,EAAE,CAAC,WAAW,EAAExE,QAAQ,CAACU,SAAS,CAAC;AAAA;AAC3D,IAAMuE,iBAAiB,GAAAhF,OAAA,CAAAgF,iBAAA,GAAG,SAApBA,iBAAiBA,CAAA;EAAA,OAAST,EAAE,CAAC,gBAAgB,EAAExE,QAAQ,CAACc,mBAAmB,CAAC;AAAA;AAClF,IAAMoE,kBAAkB,GAAAjF,OAAA,CAAAiF,kBAAA,GAAG,SAArBA,kBAAkBA,CAAA;EAAA,OAASV,EAAE,CAAC,qBAAqB,EAAExE,QAAQ,CAACY,mBAAmB,CAAC;AAAA;AACxF,IAAMuE,OAAO,GAAAlF,OAAA,CAAAkF,OAAA,GAAG,SAAVA,OAAOA,CAAA;EAAA,OAASX,EAAE,CAAC,SAAS,EAAExE,QAAQ,CAACe,OAAO,CAAC;AAAA;AACrD,IAAMqE,eAAe,GAAAnF,OAAA,CAAAmF,eAAA,GAAG,SAAlBA,eAAeA,CAAA;EAAA,OAASZ,EAAE,CAAC,cAAc,EAAExE,QAAQ,CAACgB,iBAAiB,CAAC;AAAA;AAE5E,IAAMqE,OAAO,GAAApF,OAAA,CAAAoF,OAAA,GAAG,SAAVA,OAAOA,CAAA;EAAA,OAASb,EAAE,CAAC,SAAS,EAAExE,QAAQ,CAACiB,OAAO,CAAC;AAAA;AACrD,IAAMqE,YAAY,GAAArF,OAAA,CAAAqF,YAAA,GAAG,SAAfA,YAAYA,CAAA;EAAA,OAASd,EAAE,CAAC,eAAe,EAAExE,QAAQ,CAACmB,aAAa,CAAC;AAAA;AACtE,IAAMoE,WAAW,GAAAtF,OAAA,CAAAsF,WAAA,GAAG,SAAdA,WAAWA,CAAA;EAAA,OAASf,EAAE,CAAC,cAAc,EAAExE,QAAQ,CAACoB,YAAY,CAAC;AAAA;AACnE,IAAMoE,WAAW,GAAAvF,OAAA,CAAAuF,WAAA,GAAG,SAAdA,WAAWA,CAAA;EAAA,OAAShB,EAAE,CAAC,cAAc,EAAE,MAAM,EAAExE,QAAQ,CAACE,IAAI,CAAC;AAAA;AACnE,IAAMuF,YAAY,GAAAxF,OAAA,CAAAwF,YAAA,GAAG,SAAfA,YAAYA,CAAA;EAAA,OAASjB,EAAE,CAAC,eAAe,EAAExE,QAAQ,CAACgD,aAAa,CAAC;AAAA;AAEtE,IAAM0C,SAAS,GAAAzF,OAAA,CAAAyF,SAAA,GAAG,SAAZA,SAASA,CAAA;EAAA,OAASlB,EAAE,CAAC,WAAW,EAAExE,QAAQ,CAACqB,SAAS,CAAC;AAAA;AAC3D,IAAMsE,cAAc,GAAA1F,OAAA,CAAA0F,cAAA,GAAG,SAAjBA,cAAcA,CAAA;EAAA,OAASnB,EAAE,CAAC,iBAAiB,EAAExE,QAAQ,CAACwB,eAAe,CAAC;AAAA;AAC5E,IAAMoE,aAAa,GAAA3F,OAAA,CAAA2F,aAAA,GAAG,SAAhBA,aAAaA,CAAA;EAAA,OAASpB,EAAE,CAAC,gBAAgB,EAAExE,QAAQ,CAACyB,cAAc,CAAC;AAAA;AAEzE,IAAMoE,aAAa,GAAA5F,OAAA,CAAA4F,aAAA,GAAG,SAAhBA,aAAaA,CAAA;EAAA,OAASrB,EAAE,CAAC,gBAAgB,EAAE,MAAM,EAAExE,QAAQ,CAACE,IAAI,CAAC;AAAA;AACvE,IAAM4F,UAAU,GAAA7F,OAAA,CAAA6F,UAAA,GAAG,SAAbA,UAAUA,CAAA;EAAA,OAAStB,EAAE,CAAC,YAAY,EAAExE,QAAQ,CAAC4B,UAAU,CAAC;AAAA;AAC9D,IAAMmE,cAAc,GAAA9F,OAAA,CAAA8F,cAAA,GAAG,SAAjBA,cAAcA,CAAA;EAAA,OAASvB,EAAE,CAAC,iBAAiB,EAAExE,QAAQ,CAAC6B,eAAe,CAAC;AAAA;AAC5E,IAAMmE,mBAAmB,GAAA/F,OAAA,CAAA+F,mBAAA,GAAG,SAAtBA,mBAAmBA,CAAA;EAAA,OAASxB,EAAE,CAAC,sBAAsB,EAAExE,QAAQ,CAAC+B,oBAAoB,CAAC;AAAA;AAC3F,IAAMkE,kBAAkB,GAAAhG,OAAA,CAAAgG,kBAAA,GAAG,SAArBA,kBAAkBA,CAAA;EAAA,OAASzB,EAAE,CAAC,qBAAqB,EAAExE,QAAQ,CAAC8B,mBAAmB,CAAC;AAAA;AAExF,IAAMoE,QAAQ,GAAAjG,OAAA,CAAAiG,QAAA,GAAG,SAAXA,QAAQA,CAAA;EAAA,OAAS1B,EAAE,CAAC,UAAU,EAAExE,QAAQ,CAAC0B,QAAQ,CAAC;AAAA;AACxD,IAAMyE,aAAa,GAAAlG,OAAA,CAAAkG,aAAA,GAAG,SAAhBA,aAAaA,CAAA;EAAA,OAAS3B,EAAE,CAAC,gBAAgB,EAAExE,QAAQ,CAAC2B,cAAc,CAAC;AAAA;AAEzE,IAAMyE,MAAM,GAAAnG,OAAA,CAAAmG,MAAA,GAAG,SAATA,MAAMA,CAAA;EAAA,OAAS5B,EAAE,CAAC,QAAQ,EAAExE,QAAQ,CAACgC,MAAM,CAAC;AAAA;AAClD,IAAMqE,WAAW,GAAApG,OAAA,CAAAoG,WAAA,GAAG,SAAdA,WAAWA,CAAA;EAAA,OAAS7B,EAAE,CAAC,cAAc,EAAExE,QAAQ,CAACiC,YAAY,CAAC;AAAA;AACnE,IAAMqE,UAAU,GAAArG,OAAA,CAAAqG,UAAA,GAAG,SAAbA,UAAUA,CAAA;EAAA,OAAS9B,EAAE,CAAC,aAAa,EAAExE,QAAQ,CAACkC,WAAW,CAAC;AAAA;AAChE,IAAMqE,UAAU,GAAAtG,OAAA,CAAAsG,UAAA,GAAG,SAAbA,UAAUA,CAAA;EAAA,OAAS/B,EAAE,CAAC,aAAa,EAAExE,QAAQ,CAACmC,WAAW,CAAC;AAAA;AAEhE,IAAMqE,KAAK,GAAAvG,OAAA,CAAAuG,KAAA,GAAG,SAARA,KAAKA,CAAA;EAAA,OAAShC,EAAE,CAAC,OAAO,EAAExE,QAAQ,CAACoC,KAAK,CAAC;AAAA;AAC/C,IAAMqE,KAAK,GAAAxG,OAAA,CAAAwG,KAAA,GAAG,SAARA,KAAKA,CAAA;EAAA,OAASjC,EAAE,CAAC,OAAO,EAAExE,QAAQ,CAACqC,KAAK,CAAC;AAAA;AAC/C,IAAMqE,WAAW,GAAAzG,OAAA,CAAAyG,WAAA,GAAG,SAAdA,WAAWA,CAAA;EAAA,OAAS1G,QAAQ,CAACsC,WAAW;AAAA;AAE9C,IAAMqE,YAAY,GAAA1G,OAAA,CAAA0G,YAAA,GAAG,SAAfA,YAAYA,CAAA;EAAA,OAASnC,EAAE,CAAC,eAAe,EAAExE,QAAQ,CAACuC,aAAa,CAAC;AAAA;AACtE,IAAMqE,kBAAkB,GAAA3G,OAAA,CAAA2G,kBAAA,GAAG,SAArBA,kBAAkBA,CAAA;EAAA,OAASpC,EAAE,CAAC,sBAAsB,EAAExE,QAAQ,CAACwC,oBAAoB,CAAC;AAAA;AAC1F,IAAMqE,cAAc,GAAA5G,OAAA,CAAA4G,cAAA,GAAG,SAAjBA,cAAcA,CAAA;EAAA,OAASrC,EAAE,CAAC,iBAAiB,EAAExE,QAAQ,CAACyC,eAAe,CAAC;AAAA;AAC5E,IAAMqE,oBAAoB,GAAA7G,OAAA,CAAA6G,oBAAA,GAAG,SAAvBA,oBAAoBA,CAAA;EAAA,OAAStC,EAAE,CAAC,wBAAwB,EAAExE,QAAQ,CAAC0C,sBAAsB,CAAC;AAAA;AAChG,IAAMqE,kBAAkB,GAAA9G,OAAA,CAAA8G,kBAAA,GAAG,SAArBA,kBAAkBA,CAAA;EAAA,OAASvC,EAAE,CAAC,sBAAsB,EAAExE,QAAQ,CAAC2C,oBAAoB,CAAC;AAAA;AAE1F,IAAMqE,WAAW,GAAA/G,OAAA,CAAA+G,WAAA,GAAG,SAAdA,WAAWA,CAAA;EAAA,OAASxC,EAAE,CAAC,eAAe,EAAExE,QAAQ,CAAC4C,YAAY,CAAC;AAAA;AACpE,IAAMqE,WAAW,GAAAhH,OAAA,CAAAgH,WAAA,GAAG,SAAdA,WAAWA,CAAA;EAAA,OAASzC,EAAE,CAAC,eAAe,EAAExE,QAAQ,CAAC6C,YAAY,CAAC;AAAA;AACpE,IAAMqE,WAAW,GAAAjH,OAAA,CAAAiH,WAAA,GAAG,SAAdA,WAAWA,CAAA;EAAA,OAAS1C,EAAE,CAAC,eAAe,EAAExE,QAAQ,CAAC8C,YAAY,CAAC;AAAA;AACpE,IAAMqE,WAAW,GAAAlH,OAAA,CAAAkH,WAAA,GAAG,SAAdA,WAAWA,CAAA;EAAA,OAAS3C,EAAE,CAAC,eAAe,EAAExE,QAAQ,CAAC+C,YAAY,CAAC;AAAA;AAEpE,IAAMqE,YAAY,GAAAnH,OAAA,CAAAmH,YAAA,GAAG,SAAfA,YAAYA,CAAA;EAAA,OAAS5C,EAAE,CAAC,eAAe,EAAExE,QAAQ,CAACiD,aAAa,CAAC;AAAA;AACtE,IAAMoE,oBAAoB,GAAApH,OAAA,CAAAoH,oBAAA,GAAG,SAAvBA,oBAAoBA,CAAA;EAAA,OAAS7C,EAAE,CAAC,wBAAwB,EAAExE,QAAQ,CAACkD,sBAAsB,CAAC;AAAA;AAChG,IAAMoE,sBAAsB,GAAArH,OAAA,CAAAqH,sBAAA,GAAG,SAAzBA,sBAAsBA,CAAA;EAAA,OAAS9C,EAAE,CAAC,0BAA0B,EAAExE,QAAQ,CAACmD,wBAAwB,CAAC;AAAA;AACtG,IAAMoE,iBAAiB,GAAAtH,OAAA,CAAAsH,iBAAA,GAAG,SAApBA,iBAAiBA,CAAA;EAAA,OAAS/C,EAAE,CAAC,qBAAqB,EAAExE,QAAQ,CAACoD,mBAAmB,CAAC;AAAA;AACvF,IAAMoE,yBAAyB,GAAAvH,OAAA,CAAAuH,yBAAA,GAAG,SAA5BA,yBAAyBA,CAAA;EAAA,OACpChD,EAAE,CAAC,8BAA8B,EAAExE,QAAQ,CAACqD,4BAA4B,CAAC;AAAA;AACpE,IAAMoE,sBAAsB,GAAAxH,OAAA,CAAAwH,sBAAA,GAAG,SAAzBA,sBAAsBA,CAAA;EAAA,OAASjD,EAAE,CAAC,0BAA0B,EAAExE,QAAQ,CAACsD,yBAAyB,CAAC;AAAA;AACvG,IAAMoE,YAAY,GAAAzH,OAAA,CAAAyH,YAAA,GAAG,SAAfA,YAAYA,CAAA;EAAA,OAASlD,EAAE,CAAC,eAAe,EAAExE,QAAQ,CAACuD,aAAa,CAAC;AAAA;AACtE,IAAMoE,aAAa,GAAA1H,OAAA,CAAA0H,aAAA,GAAG,SAAhBA,aAAaA,CAAA;EAAA,OAASnD,EAAE,CAAC,iBAAiB,EAAExE,QAAQ,CAACwD,eAAe,CAAC;AAAA;AAE3E,IAAMoE,oBAAoB,GAAA3H,OAAA,CAAA2H,oBAAA,GAAG;EAClCC,eAAe,EAAE,SAAS;EAC1BC,uBAAuB,EAAE,SAAS;EAClCC,eAAe,EAAE,SAAS;EAC1BC,eAAe,EAAE,SAAS;EAC1BC,iBAAiB,EAAE;AACrB,CAAC","ignoreList":[]}
@@ -80,6 +80,10 @@ var StyledPromptContainer = (0, _styles.styled)('div')(function (_ref) {
80
80
  //Used these below to replace \\embed{newLine} with \\newline from prompt which will get parsed in MathJax
81
81
  var NEWLINE_BLOCK_REGEX = /\\embed\{newLine\}\[\]/g;
82
82
  var NEWLINE_LATEX = '\\newline ';
83
+
84
+ // stable hook for 'is this node inside a prompt' checks - a class rather than an id,
85
+ // so it stays valid when a page renders more than one prompt
86
+ var PROMPT_CLASS = 'preview-prompt';
83
87
  var PreviewPrompt = exports.PreviewPrompt = /*#__PURE__*/function (_Component) {
84
88
  function PreviewPrompt() {
85
89
  var _this;
@@ -88,6 +92,7 @@ var PreviewPrompt = exports.PreviewPrompt = /*#__PURE__*/function (_Component) {
88
92
  args[_key] = arguments[_key];
89
93
  }
90
94
  _this = _callSuper(this, PreviewPrompt, [].concat(args));
95
+ (0, _defineProperty2["default"])(_this, "promptRef", /*#__PURE__*/_react["default"].createRef());
91
96
  (0, _defineProperty2["default"])(_this, "parsedText", function (text) {
92
97
  var customAudioButton = _this.props.customAudioButton;
93
98
  var div = document.createElement('div');
@@ -213,7 +218,7 @@ var PreviewPrompt = exports.PreviewPrompt = /*#__PURE__*/function (_Component) {
213
218
  }, {
214
219
  key: "renderMathContent",
215
220
  value: function renderMathContent() {
216
- var container = document.getElementById('preview-prompt');
221
+ var container = this.promptRef.current;
217
222
  if (container && typeof _mathRendering.renderMath === 'function') {
218
223
  (0, _mathRendering.renderMath)(container);
219
224
  }
@@ -221,39 +226,40 @@ var PreviewPrompt = exports.PreviewPrompt = /*#__PURE__*/function (_Component) {
221
226
  }, {
222
227
  key: "alignImages",
223
228
  value: function alignImages() {
224
- var previewPrompts = document.querySelectorAll('#preview-prompt');
225
- previewPrompts.forEach(function (previewPrompt) {
226
- var images = previewPrompt.getElementsByTagName('img');
227
- if (images && images.length) {
228
- var _iterator = _createForOfIteratorHelper(images),
229
- _step;
230
- try {
231
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
232
- var image = _step.value;
233
- if (image.attributes && image.attributes.alignment && image.attributes.alignment.value) {
234
- var alignment = image.attributes.alignment.value;
235
- var justifyContent = alignment === 'center' ? 'center' : alignment === 'right' ? 'flex-end' : 'flex-start';
236
- var parentNode = image.parentElement;
237
- if (parentNode.tagName === 'DIV' && parentNode.style.display === 'flex' && parentNode.style.width === '100%') {
238
- parentNode.style.justifyContent = justifyContent;
239
- } else {
240
- var div = document.createElement('div');
241
- div.style.display = 'flex';
242
- div.style.width = '100%';
243
- div.style.justifyContent = justifyContent;
244
- var copyImage = image.cloneNode(true);
245
- div.appendChild(copyImage);
246
- parentNode.replaceChild(div, image);
247
- }
229
+ var previewPrompt = this.promptRef.current;
230
+ if (!previewPrompt) {
231
+ return;
232
+ }
233
+ var images = previewPrompt.getElementsByTagName('img');
234
+ if (images && images.length) {
235
+ var _iterator = _createForOfIteratorHelper(images),
236
+ _step;
237
+ try {
238
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
239
+ var image = _step.value;
240
+ if (image.attributes && image.attributes.alignment && image.attributes.alignment.value) {
241
+ var alignment = image.attributes.alignment.value;
242
+ var justifyContent = alignment === 'center' ? 'center' : alignment === 'right' ? 'flex-end' : 'flex-start';
243
+ var parentNode = image.parentElement;
244
+ if (parentNode.tagName === 'DIV' && parentNode.style.display === 'flex' && parentNode.style.width === '100%') {
245
+ parentNode.style.justifyContent = justifyContent;
246
+ } else {
247
+ var div = document.createElement('div');
248
+ div.style.display = 'flex';
249
+ div.style.width = '100%';
250
+ div.style.justifyContent = justifyContent;
251
+ var copyImage = image.cloneNode(true);
252
+ div.appendChild(copyImage);
253
+ parentNode.replaceChild(div, image);
248
254
  }
249
255
  }
250
- } catch (err) {
251
- _iterator.e(err);
252
- } finally {
253
- _iterator.f();
254
256
  }
257
+ } catch (err) {
258
+ _iterator.e(err);
259
+ } finally {
260
+ _iterator.f();
255
261
  }
256
- });
262
+ }
257
263
  }
258
264
  }, {
259
265
  key: "render",
@@ -266,10 +272,10 @@ var PreviewPrompt = exports.PreviewPrompt = /*#__PURE__*/function (_Component) {
266
272
  defaultClassName = _this$props2.defaultClassName;
267
273
  // legend tag was added once with accessibility tasks, we need extra style to make it work with images alignment
268
274
  var legendClass = tagName === 'legend' ? 'legend' : '';
269
- var customClasses = "".concat(className || '', " ").concat(defaultClassName || '', " ").concat(legendClass).trim();
275
+ var customClasses = "".concat(className || '', " ").concat(defaultClassName || '', " ").concat(legendClass, " ").concat(PROMPT_CLASS).trim();
270
276
  return /*#__PURE__*/_react["default"].createElement(StyledPromptContainer, {
271
277
  as: tagName || 'div',
272
- id: 'preview-prompt',
278
+ ref: this.promptRef,
273
279
  onClick: onClick,
274
280
  className: customClasses,
275
281
  tagName: tagName,
@@ -1 +1 @@
1
- {"version":3,"file":"preview-prompt.js","names":["_react","_interopRequireWildcard","require","_styles","_propTypes","_interopRequireDefault","color","_mathRendering","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_createForOfIteratorHelper","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","_n","F","s","done","value","TypeError","a","u","next","_arrayLikeToArray","toString","slice","constructor","name","from","test","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","apply","Boolean","prototype","valueOf","StyledPromptContainer","styled","_ref","theme","tagName","borderCollapse","backgroundColor","palette","common","black","padding","textAlign","verticalAlign","text","width","fontSize","paddingLeft","spacing","paddingBottom","concat","display","flexDirection","cursor","margin","NEWLINE_BLOCK_REGEX","NEWLINE_LATEX","PreviewPrompt","exports","_Component","_this","_classCallCheck2","_len","arguments","args","_key","_defineProperty2","customAudioButton","props","div","document","createElement","innerHTML","audio","querySelector","source","setAttribute","getAttribute","removeAttribute","appendChild","style","playButton","id","assign","height","backgroundImage","pauseImage","backgroundSize","borderRadius","border","parentNode","insertBefore","_inherits2","_createClass2","key","addCustomAudioButtonControls","_this$props","autoplayAudioEnabled","getElementById","play","then","addEventListener","handleAudioEnded","error","console","handlePlayClick","paused","includes","playImage","handleAudioPlay","handleAudioPause","_handlePlayClick","_handleAudioPlay","_handleAudioPause","_handleAudioEnded","removeCustomAudioButtonListeners","removeEventListener","componentDidMount","alignImages","setupMathRendering","componentDidUpdate","prevProps","prompt","renderMathContent","componentWillUnmount","container","renderMath","previewPrompts","querySelectorAll","forEach","previewPrompt","images","getElementsByTagName","_iterator","_step","image","attributes","alignment","justifyContent","parentElement","copyImage","cloneNode","replaceChild","err","render","_this$props2","className","onClick","defaultClassName","legendClass","customClasses","trim","as","dangerouslySetInnerHTML","__html","parsedText","replace","Component","PropTypes","string","func","bool","_default"],"sources":["../src/preview-prompt.jsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { styled } from '@mui/material/styles';\nimport PropTypes from 'prop-types';\nimport * as color from './color';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nconst StyledPromptContainer = styled('div')(({ theme, tagName }) => ({\n // presentation tables should not have any custom style\n // Base promptTable styles\n '&:not(.MathJax) > table:not([role=\"presentation\"])': {\n borderCollapse: 'collapse',\n },\n // Apply vertical striping when first column is a header (th) and NOT mixed with td\n '&:not(.MathJax) > table:not([role=\"presentation\"]):has(tbody tr > th:first-child):not(:has(tbody tr > td:first-child)) tbody td:nth-child(even)':\n {\n backgroundColor: '#f6f8fa',\n color: theme.palette.common.black,\n },\n // Apply horizontal striping for tables where first element is a data cell (td)\n '&:not(.MathJax) > table:not([role=\"presentation\"]):has(tbody tr > td:first-child) tbody tr:nth-child(even) td': {\n backgroundColor: '#f6f8fa',\n color: theme.palette.common.black,\n },\n // align table content to left as per STAR requirement PD-3687\n '&:not(.MathJax) table:not([role=\"presentation\"]) td, &:not(.MathJax) table:not([role=\"presentation\"]) th': {\n padding: '.6em 1em',\n textAlign: 'left',\n },\n // added this to fix alignment of text in prompt imported from studio (PD-3423)\n '&:not(.MathJax) > table td > p.kds-indent': {\n textAlign: 'initial',\n },\n\n // Conditional styles based on class names\n '&.prompt': {\n verticalAlign: 'middle',\n color: color.text(),\n },\n '&.legend': {\n width: '100%',\n fontSize: 'inherit !important',\n },\n '&.rationale': {\n paddingLeft: theme.spacing(4),\n paddingBottom: theme.spacing(1),\n },\n '&.prompt-label': {\n color: `${color.text()} !important`,\n display: 'flex',\n flexDirection: 'column',\n verticalAlign: 'middle',\n cursor: 'pointer',\n '& > p': {\n margin: '0 0 0 0 !important',\n },\n },\n}));\n\n//Used these below to replace \\\\embed{newLine} with \\\\newline from prompt which will get parsed in MathJax\nconst NEWLINE_BLOCK_REGEX = /\\\\embed\\{newLine\\}\\[\\]/g;\nconst NEWLINE_LATEX = '\\\\newline ';\n\nexport class PreviewPrompt extends Component {\n static propTypes = {\n prompt: PropTypes.string,\n tagName: PropTypes.string,\n className: PropTypes.string,\n onClick: PropTypes.func,\n defaultClassName: PropTypes.string,\n autoplayAudioEnabled: PropTypes.bool,\n customAudioButton: {\n playImage: PropTypes.string,\n pauseImage: PropTypes.string,\n },\n };\n\n static defaultProps = {\n onClick: () => {},\n };\n\n parsedText = (text) => {\n const { customAudioButton } = this.props;\n const div = document.createElement('div');\n div.innerHTML = text;\n\n const audio = div.querySelector('audio');\n if (audio) {\n const source = document.createElement('source');\n\n source.setAttribute('type', 'audio/mp3');\n source.setAttribute('src', audio.getAttribute('src'));\n\n audio.removeAttribute('src');\n audio.setAttribute('id', 'pie-prompt-audio-player');\n\n audio.appendChild(source);\n\n if (customAudioButton) {\n audio.style.display = 'none';\n\n const playButton = document.createElement('div');\n playButton.id = 'play-audio-button';\n\n Object.assign(playButton.style, {\n cursor: 'pointer',\n display: 'block',\n width: '128px',\n height: '128px',\n backgroundImage: `url(${customAudioButton.pauseImage})`,\n backgroundSize: 'cover',\n borderRadius: '50%',\n border: '1px solid #326295',\n });\n\n audio.parentNode.insertBefore(playButton, audio);\n }\n }\n\n return div.innerHTML;\n };\n\n addCustomAudioButtonControls() {\n const { autoplayAudioEnabled, customAudioButton } = this.props;\n const playButton = document.getElementById('play-audio-button');\n const audio = document.getElementById('pie-prompt-audio-player');\n\n if (autoplayAudioEnabled && audio) {\n audio\n .play()\n .then(() => {\n if (playButton && customAudioButton) {\n audio.addEventListener('ended', handleAudioEnded);\n }\n })\n .catch((error) => {\n console.error('Error playing audio', error);\n });\n }\n\n if (!playButton || !audio || !customAudioButton) return;\n\n const handlePlayClick = () => {\n // if already playing, don't play again\n if (!audio.paused) return;\n if (playButton.style.backgroundImage.includes(customAudioButton.pauseImage)) return;\n\n audio.play();\n };\n\n const handleAudioEnded = () => {\n playButton.style.backgroundImage = `url(${customAudioButton.playImage})`;\n };\n\n const handleAudioPlay = () => {\n Object.assign(playButton.style, {\n backgroundImage: `url(${customAudioButton.pauseImage})`,\n border: '1px solid #ccc',\n });\n };\n\n const handleAudioPause = () => {\n Object.assign(playButton.style, {\n backgroundImage: `url(${customAudioButton.playImage})`,\n border: '1px solid #326295',\n });\n };\n\n playButton.addEventListener('click', handlePlayClick);\n audio.addEventListener('play', handleAudioPlay);\n audio.addEventListener('pause', handleAudioPause);\n audio.addEventListener('ended', handleAudioEnded);\n\n // store event handler references so they can be removed later\n this._handlePlayClick = handlePlayClick;\n this._handleAudioPlay = handleAudioPlay;\n this._handleAudioPause = handleAudioPause;\n this._handleAudioEnded = handleAudioEnded;\n }\n\n removeCustomAudioButtonListeners() {\n const playButton = document.getElementById('play-audio-button');\n const audio = document.querySelector('audio');\n\n if (!playButton || !audio) return;\n\n // remove event listeners using stored references\n playButton.removeEventListener('click', this._handlePlayClick);\n audio.removeEventListener('play', this._handleAudioPlay);\n audio.removeEventListener('pause', this._handleAudioPause);\n audio.removeEventListener('ended', this._handleAudioEnded);\n }\n\n componentDidMount() {\n this.alignImages();\n this.addCustomAudioButtonControls();\n this.setupMathRendering();\n }\n\n componentDidUpdate(prevProps) {\n this.alignImages();\n\n if (prevProps.prompt !== this.props.prompt) {\n this.renderMathContent();\n }\n }\n\n componentWillUnmount() {\n this.removeCustomAudioButtonListeners();\n }\n\n setupMathRendering() {\n this.renderMathContent();\n }\n\n renderMathContent() {\n const container = document.getElementById('preview-prompt');\n if (container && typeof renderMath === 'function') {\n renderMath(container);\n }\n }\n\n alignImages() {\n const previewPrompts = document.querySelectorAll('#preview-prompt');\n\n previewPrompts.forEach((previewPrompt) => {\n const images = previewPrompt.getElementsByTagName('img');\n\n if (images && images.length) {\n for (let image of images) {\n if (image.attributes && image.attributes.alignment && image.attributes.alignment.value) {\n const alignment = image.attributes.alignment.value;\n const justifyContent =\n alignment === 'center' ? 'center' : alignment === 'right' ? 'flex-end' : 'flex-start';\n\n const parentNode = image.parentElement;\n\n if (\n parentNode.tagName === 'DIV' &&\n parentNode.style.display === 'flex' &&\n parentNode.style.width === '100%'\n ) {\n parentNode.style.justifyContent = justifyContent;\n } else {\n const div = document.createElement('div');\n div.style.display = 'flex';\n div.style.width = '100%';\n div.style.justifyContent = justifyContent;\n\n const copyImage = image.cloneNode(true);\n div.appendChild(copyImage);\n parentNode.replaceChild(div, image);\n }\n }\n }\n }\n });\n }\n\n render() {\n const { prompt, tagName, className, onClick, defaultClassName } = this.props;\n // legend tag was added once with accessibility tasks, we need extra style to make it work with images alignment\n const legendClass = tagName === 'legend' ? 'legend' : '';\n const customClasses = `${className || ''} ${defaultClassName || ''} ${legendClass}`.trim();\n\n return (\n <StyledPromptContainer\n as={tagName || 'div'}\n id={'preview-prompt'}\n onClick={onClick}\n className={customClasses}\n tagName={tagName}\n dangerouslySetInnerHTML={{\n __html: this.parsedText(prompt || '').replace(NEWLINE_BLOCK_REGEX, NEWLINE_LATEX),\n }}\n />\n );\n }\n}\n\nexport default PreviewPrompt;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"preview-prompt.js","names":["_react","_interopRequireWildcard","require","_styles","_propTypes","_interopRequireDefault","color","_mathRendering","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_createForOfIteratorHelper","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","_n","F","s","done","value","TypeError","a","u","next","_arrayLikeToArray","toString","slice","constructor","name","from","test","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","apply","Boolean","prototype","valueOf","StyledPromptContainer","styled","_ref","theme","tagName","borderCollapse","backgroundColor","palette","common","black","padding","textAlign","verticalAlign","text","width","fontSize","paddingLeft","spacing","paddingBottom","concat","display","flexDirection","cursor","margin","NEWLINE_BLOCK_REGEX","NEWLINE_LATEX","PROMPT_CLASS","PreviewPrompt","exports","_Component","_this","_classCallCheck2","_len","arguments","args","_key","_defineProperty2","React","createRef","customAudioButton","props","div","document","createElement","innerHTML","audio","querySelector","source","setAttribute","getAttribute","removeAttribute","appendChild","style","playButton","id","assign","height","backgroundImage","pauseImage","backgroundSize","borderRadius","border","parentNode","insertBefore","_inherits2","_createClass2","key","addCustomAudioButtonControls","_this$props","autoplayAudioEnabled","getElementById","play","then","addEventListener","handleAudioEnded","error","console","handlePlayClick","paused","includes","playImage","handleAudioPlay","handleAudioPause","_handlePlayClick","_handleAudioPlay","_handleAudioPause","_handleAudioEnded","removeCustomAudioButtonListeners","removeEventListener","componentDidMount","alignImages","setupMathRendering","componentDidUpdate","prevProps","prompt","renderMathContent","componentWillUnmount","container","promptRef","current","renderMath","previewPrompt","images","getElementsByTagName","_iterator","_step","image","attributes","alignment","justifyContent","parentElement","copyImage","cloneNode","replaceChild","err","render","_this$props2","className","onClick","defaultClassName","legendClass","customClasses","trim","as","ref","dangerouslySetInnerHTML","__html","parsedText","replace","Component","PropTypes","string","func","bool","_default"],"sources":["../src/preview-prompt.jsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { styled } from '@mui/material/styles';\nimport PropTypes from 'prop-types';\nimport * as color from './color';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nconst StyledPromptContainer = styled('div')(({ theme, tagName }) => ({\n // presentation tables should not have any custom style\n // Base promptTable styles\n '&:not(.MathJax) > table:not([role=\"presentation\"])': {\n borderCollapse: 'collapse',\n },\n // Apply vertical striping when first column is a header (th) and NOT mixed with td\n '&:not(.MathJax) > table:not([role=\"presentation\"]):has(tbody tr > th:first-child):not(:has(tbody tr > td:first-child)) tbody td:nth-child(even)':\n {\n backgroundColor: '#f6f8fa',\n color: theme.palette.common.black,\n },\n // Apply horizontal striping for tables where first element is a data cell (td)\n '&:not(.MathJax) > table:not([role=\"presentation\"]):has(tbody tr > td:first-child) tbody tr:nth-child(even) td': {\n backgroundColor: '#f6f8fa',\n color: theme.palette.common.black,\n },\n // align table content to left as per STAR requirement PD-3687\n '&:not(.MathJax) table:not([role=\"presentation\"]) td, &:not(.MathJax) table:not([role=\"presentation\"]) th': {\n padding: '.6em 1em',\n textAlign: 'left',\n },\n // added this to fix alignment of text in prompt imported from studio (PD-3423)\n '&:not(.MathJax) > table td > p.kds-indent': {\n textAlign: 'initial',\n },\n\n // Conditional styles based on class names\n '&.prompt': {\n verticalAlign: 'middle',\n color: color.text(),\n },\n '&.legend': {\n width: '100%',\n fontSize: 'inherit !important',\n },\n '&.rationale': {\n paddingLeft: theme.spacing(4),\n paddingBottom: theme.spacing(1),\n },\n '&.prompt-label': {\n color: `${color.text()} !important`,\n display: 'flex',\n flexDirection: 'column',\n verticalAlign: 'middle',\n cursor: 'pointer',\n '& > p': {\n margin: '0 0 0 0 !important',\n },\n },\n}));\n\n//Used these below to replace \\\\embed{newLine} with \\\\newline from prompt which will get parsed in MathJax\nconst NEWLINE_BLOCK_REGEX = /\\\\embed\\{newLine\\}\\[\\]/g;\nconst NEWLINE_LATEX = '\\\\newline ';\n\n// stable hook for 'is this node inside a prompt' checks - a class rather than an id,\n// so it stays valid when a page renders more than one prompt\nconst PROMPT_CLASS = 'preview-prompt';\n\nexport class PreviewPrompt extends Component {\n static propTypes = {\n prompt: PropTypes.string,\n tagName: PropTypes.string,\n className: PropTypes.string,\n onClick: PropTypes.func,\n defaultClassName: PropTypes.string,\n autoplayAudioEnabled: PropTypes.bool,\n customAudioButton: {\n playImage: PropTypes.string,\n pauseImage: PropTypes.string,\n },\n };\n\n static defaultProps = {\n onClick: () => {},\n };\n\n promptRef = React.createRef();\n\n parsedText = (text) => {\n const { customAudioButton } = this.props;\n const div = document.createElement('div');\n div.innerHTML = text;\n\n const audio = div.querySelector('audio');\n if (audio) {\n const source = document.createElement('source');\n\n source.setAttribute('type', 'audio/mp3');\n source.setAttribute('src', audio.getAttribute('src'));\n\n audio.removeAttribute('src');\n audio.setAttribute('id', 'pie-prompt-audio-player');\n\n audio.appendChild(source);\n\n if (customAudioButton) {\n audio.style.display = 'none';\n\n const playButton = document.createElement('div');\n playButton.id = 'play-audio-button';\n\n Object.assign(playButton.style, {\n cursor: 'pointer',\n display: 'block',\n width: '128px',\n height: '128px',\n backgroundImage: `url(${customAudioButton.pauseImage})`,\n backgroundSize: 'cover',\n borderRadius: '50%',\n border: '1px solid #326295',\n });\n\n audio.parentNode.insertBefore(playButton, audio);\n }\n }\n\n return div.innerHTML;\n };\n\n addCustomAudioButtonControls() {\n const { autoplayAudioEnabled, customAudioButton } = this.props;\n const playButton = document.getElementById('play-audio-button');\n const audio = document.getElementById('pie-prompt-audio-player');\n\n if (autoplayAudioEnabled && audio) {\n audio\n .play()\n .then(() => {\n if (playButton && customAudioButton) {\n audio.addEventListener('ended', handleAudioEnded);\n }\n })\n .catch((error) => {\n console.error('Error playing audio', error);\n });\n }\n\n if (!playButton || !audio || !customAudioButton) return;\n\n const handlePlayClick = () => {\n // if already playing, don't play again\n if (!audio.paused) return;\n if (playButton.style.backgroundImage.includes(customAudioButton.pauseImage)) return;\n\n audio.play();\n };\n\n const handleAudioEnded = () => {\n playButton.style.backgroundImage = `url(${customAudioButton.playImage})`;\n };\n\n const handleAudioPlay = () => {\n Object.assign(playButton.style, {\n backgroundImage: `url(${customAudioButton.pauseImage})`,\n border: '1px solid #ccc',\n });\n };\n\n const handleAudioPause = () => {\n Object.assign(playButton.style, {\n backgroundImage: `url(${customAudioButton.playImage})`,\n border: '1px solid #326295',\n });\n };\n\n playButton.addEventListener('click', handlePlayClick);\n audio.addEventListener('play', handleAudioPlay);\n audio.addEventListener('pause', handleAudioPause);\n audio.addEventListener('ended', handleAudioEnded);\n\n // store event handler references so they can be removed later\n this._handlePlayClick = handlePlayClick;\n this._handleAudioPlay = handleAudioPlay;\n this._handleAudioPause = handleAudioPause;\n this._handleAudioEnded = handleAudioEnded;\n }\n\n removeCustomAudioButtonListeners() {\n const playButton = document.getElementById('play-audio-button');\n const audio = document.querySelector('audio');\n\n if (!playButton || !audio) return;\n\n // remove event listeners using stored references\n playButton.removeEventListener('click', this._handlePlayClick);\n audio.removeEventListener('play', this._handleAudioPlay);\n audio.removeEventListener('pause', this._handleAudioPause);\n audio.removeEventListener('ended', this._handleAudioEnded);\n }\n\n componentDidMount() {\n this.alignImages();\n this.addCustomAudioButtonControls();\n this.setupMathRendering();\n }\n\n componentDidUpdate(prevProps) {\n this.alignImages();\n\n if (prevProps.prompt !== this.props.prompt) {\n this.renderMathContent();\n }\n }\n\n componentWillUnmount() {\n this.removeCustomAudioButtonListeners();\n }\n\n setupMathRendering() {\n this.renderMathContent();\n }\n\n renderMathContent() {\n const container = this.promptRef.current;\n if (container && typeof renderMath === 'function') {\n renderMath(container);\n }\n }\n\n alignImages() {\n const previewPrompt = this.promptRef.current;\n\n if (!previewPrompt) {\n return;\n }\n\n const images = previewPrompt.getElementsByTagName('img');\n\n if (images && images.length) {\n for (let image of images) {\n if (image.attributes && image.attributes.alignment && image.attributes.alignment.value) {\n const alignment = image.attributes.alignment.value;\n const justifyContent =\n alignment === 'center' ? 'center' : alignment === 'right' ? 'flex-end' : 'flex-start';\n\n const parentNode = image.parentElement;\n\n if (\n parentNode.tagName === 'DIV' &&\n parentNode.style.display === 'flex' &&\n parentNode.style.width === '100%'\n ) {\n parentNode.style.justifyContent = justifyContent;\n } else {\n const div = document.createElement('div');\n div.style.display = 'flex';\n div.style.width = '100%';\n div.style.justifyContent = justifyContent;\n\n const copyImage = image.cloneNode(true);\n div.appendChild(copyImage);\n parentNode.replaceChild(div, image);\n }\n }\n }\n }\n }\n\n render() {\n const { prompt, tagName, className, onClick, defaultClassName } = this.props;\n // legend tag was added once with accessibility tasks, we need extra style to make it work with images alignment\n const legendClass = tagName === 'legend' ? 'legend' : '';\n const customClasses = `${className || ''} ${defaultClassName || ''} ${legendClass} ${PROMPT_CLASS}`.trim();\n\n return (\n <StyledPromptContainer\n as={tagName || 'div'}\n ref={this.promptRef}\n onClick={onClick}\n className={customClasses}\n tagName={tagName}\n dangerouslySetInnerHTML={{\n __html: this.parsedText(prompt || '').replace(NEWLINE_BLOCK_REGEX, NEWLINE_LATEX),\n }}\n />\n );\n }\n}\n\nexport default PreviewPrompt;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/render-ui",
3
- "version": "6.1.4-next.35+fb8ae2fcd",
3
+ "version": "7.0.0",
4
4
  "description": "Some shared ui elements when rendering - but not worthy of their own package yet.",
5
5
  "module": "src/index.js",
6
6
  "main": "lib/index.js",
@@ -14,8 +14,8 @@
14
14
  "@emotion/styled": "^11.14.1",
15
15
  "@mui/icons-material": "^7.3.4",
16
16
  "@mui/material": "^7.3.4",
17
- "@pie-lib/icons": "^4.0.4-next.88+fb8ae2fcd",
18
- "@pie-lib/math-rendering": "^5.1.1-next.35+fb8ae2fcd",
17
+ "@pie-lib/icons": "^4.0.3",
18
+ "@pie-lib/math-rendering": "^5.1.0",
19
19
  "@pie-lib/test-utils": "^2.0.2",
20
20
  "debug": "^4.1.1",
21
21
  "lodash-es": "^4.17.23",
@@ -31,5 +31,5 @@
31
31
  "react": "^18.2.0",
32
32
  "react-dom": "^18.2.0"
33
33
  },
34
- "gitHead": "fb8ae2fcdb9b694e4d9db31209e59f280e63fab4"
34
+ "gitHead": "e6b46157ab321f4488117149f21783511f30970c"
35
35
  }
@@ -345,10 +345,30 @@ describe('PreviewPrompt - Extended Tests', () => {
345
345
  });
346
346
 
347
347
  describe('accessibility', () => {
348
- it('should have preview-prompt id for accessibility', () => {
349
- render(<PreviewPrompt prompt="Accessible text" />);
350
- const element = document.getElementById('preview-prompt');
351
- expect(element).toBeInTheDocument();
348
+ it('should mark the container with the stable preview-prompt class', () => {
349
+ const { container } = render(<PreviewPrompt prompt="Accessible text" />);
350
+ expect(container.firstChild).toHaveClass('preview-prompt');
351
+ });
352
+
353
+ it('should not emit an id on the container', () => {
354
+ const { container } = render(<PreviewPrompt prompt="Accessible text" />);
355
+ expect(container.firstChild).not.toHaveAttribute('id');
356
+ });
357
+
358
+ it('should leave no duplicate ids when a page renders many prompts', () => {
359
+ const { container } = render(
360
+ <div>
361
+ <PreviewPrompt prompt="Item 1" />
362
+ <PreviewPrompt prompt="Item 2" />
363
+ <PreviewPrompt prompt="Item 3" />
364
+ <PreviewPrompt prompt="Item 4" />
365
+ <PreviewPrompt prompt="Item 5" />
366
+ </div>,
367
+ );
368
+
369
+ const ids = Array.from(container.querySelectorAll('[id]')).map((el) => el.id);
370
+
371
+ expect(ids).toEqual(Array.from(new Set(ids)));
352
372
  });
353
373
 
354
374
  it('should preserve semantic HTML', () => {
@@ -375,5 +395,38 @@ describe('PreviewPrompt - Extended Tests', () => {
375
395
  expect(screen.getByText('Second prompt')).toBeInTheDocument();
376
396
  expect(screen.getByText('Third prompt')).toBeInTheDocument();
377
397
  });
398
+
399
+ it('should typeset each instance with its own node rather than the first prompt on the page', () => {
400
+ renderMath.mockClear();
401
+
402
+ render(
403
+ <div>
404
+ <PreviewPrompt prompt="First prompt" />
405
+ <PreviewPrompt prompt="Second prompt" />
406
+ <PreviewPrompt prompt="Third prompt" />
407
+ </div>,
408
+ );
409
+
410
+ const typesetNodes = renderMath.mock.calls.map(([node]) => node);
411
+
412
+ expect(typesetNodes).toHaveLength(3);
413
+ expect(new Set(typesetNodes).size).toBe(3);
414
+ expect(typesetNodes.map((node) => node.textContent)).toEqual(['First prompt', 'Second prompt', 'Third prompt']);
415
+ });
416
+
417
+ it('should align images within each instance independently', () => {
418
+ const { container } = render(
419
+ <div>
420
+ <PreviewPrompt prompt='<img src="a.png" alignment="center" />' />
421
+ <PreviewPrompt prompt='<img src="b.png" alignment="right" />' />
422
+ </div>,
423
+ );
424
+
425
+ const wrappers = container.querySelectorAll('.preview-prompt > div');
426
+
427
+ expect(wrappers).toHaveLength(2);
428
+ expect(wrappers[0].style.justifyContent).toBe('center');
429
+ expect(wrappers[1].style.justifyContent).toBe('flex-end');
430
+ });
378
431
  });
379
432
  });
package/src/color.js CHANGED
@@ -38,6 +38,8 @@ export const defaults = {
38
38
  FOCUS_CHECKED_BORDER: '#1565C0',
39
39
  FOCUS_UNCHECKED: '#E0E0E0',
40
40
  FOCUS_UNCHECKED_BORDER: '#757575',
41
+ // the keyboard focus ring on a button or toolbar control
42
+ BUTTON_FOCUS_OUTLINE: '#3B82F6',
41
43
  // this is used for select text tokens
42
44
  BLUE_GREY100: '#F3F5F7',
43
45
  BLUE_GREY300: '#C0C3CF',
@@ -115,6 +117,7 @@ export const focusChecked = () => pv('focus-checked', defaults.FOCUS_CHECKED);
115
117
  export const focusCheckedBorder = () => pv('focus-checked-border', defaults.FOCUS_CHECKED_BORDER);
116
118
  export const focusUnchecked = () => pv('focus-unchecked', defaults.FOCUS_UNCHECKED);
117
119
  export const focusUncheckedBorder = () => pv('focus-unchecked-border', defaults.FOCUS_UNCHECKED_BORDER);
120
+ export const buttonFocusOutline = () => pv('button-focus-outline', defaults.BUTTON_FOCUS_OUTLINE);
118
121
 
119
122
  export const blueGrey100 = () => pv('blue-grey-100', defaults.BLUE_GREY100);
120
123
  export const blueGrey300 = () => pv('blue-grey-300', defaults.BLUE_GREY300);
@@ -125,7 +128,8 @@ export const keypadButton = () => pv('keypad-button', defaults.KEYPAD_BUTTON);
125
128
  export const keypadButtonOperator = () => pv('keypad-button-operator', defaults.KEYPAD_BUTTON_OPERATOR);
126
129
  export const keypadEmptyPlaceholder = () => pv('keypad-empty-placeholder', defaults.KEYPAD_EMPTY_PLACEHOLDER);
127
130
  export const keypadButtonHover = () => pv('keypad-button-hover', defaults.KEYPAD_BUTTON_HOVER);
128
- export const keypadButtonOperatorHover = () => pv('keypad-button-operator-hover', defaults.KEYPAD_BUTTON_OPERATOR_HOVER);
131
+ export const keypadButtonOperatorHover = () =>
132
+ pv('keypad-button-operator-hover', defaults.KEYPAD_BUTTON_OPERATOR_HOVER);
129
133
  export const keyBoardFocusIndicator = () => pv('keyboard-focus-indicator', defaults.KEY_BOARD_FOCUS_INDICATOR);
130
134
  export const buttonBorder = () => pv('button-border', defaults.BUTTON_BORDER);
131
135
  export const buttonHoverBg = () => pv('button-hover-bg', defaults.BUTTON_HOVER_BG);
@@ -60,6 +60,10 @@ const StyledPromptContainer = styled('div')(({ theme, tagName }) => ({
60
60
  const NEWLINE_BLOCK_REGEX = /\\embed\{newLine\}\[\]/g;
61
61
  const NEWLINE_LATEX = '\\newline ';
62
62
 
63
+ // stable hook for 'is this node inside a prompt' checks - a class rather than an id,
64
+ // so it stays valid when a page renders more than one prompt
65
+ const PROMPT_CLASS = 'preview-prompt';
66
+
63
67
  export class PreviewPrompt extends Component {
64
68
  static propTypes = {
65
69
  prompt: PropTypes.string,
@@ -78,6 +82,8 @@ export class PreviewPrompt extends Component {
78
82
  onClick: () => {},
79
83
  };
80
84
 
85
+ promptRef = React.createRef();
86
+
81
87
  parsedText = (text) => {
82
88
  const { customAudioButton } = this.props;
83
89
  const div = document.createElement('div');
@@ -213,59 +219,61 @@ export class PreviewPrompt extends Component {
213
219
  }
214
220
 
215
221
  renderMathContent() {
216
- const container = document.getElementById('preview-prompt');
222
+ const container = this.promptRef.current;
217
223
  if (container && typeof renderMath === 'function') {
218
224
  renderMath(container);
219
225
  }
220
226
  }
221
227
 
222
228
  alignImages() {
223
- const previewPrompts = document.querySelectorAll('#preview-prompt');
224
-
225
- previewPrompts.forEach((previewPrompt) => {
226
- const images = previewPrompt.getElementsByTagName('img');
227
-
228
- if (images && images.length) {
229
- for (let image of images) {
230
- if (image.attributes && image.attributes.alignment && image.attributes.alignment.value) {
231
- const alignment = image.attributes.alignment.value;
232
- const justifyContent =
233
- alignment === 'center' ? 'center' : alignment === 'right' ? 'flex-end' : 'flex-start';
234
-
235
- const parentNode = image.parentElement;
236
-
237
- if (
238
- parentNode.tagName === 'DIV' &&
239
- parentNode.style.display === 'flex' &&
240
- parentNode.style.width === '100%'
241
- ) {
242
- parentNode.style.justifyContent = justifyContent;
243
- } else {
244
- const div = document.createElement('div');
245
- div.style.display = 'flex';
246
- div.style.width = '100%';
247
- div.style.justifyContent = justifyContent;
248
-
249
- const copyImage = image.cloneNode(true);
250
- div.appendChild(copyImage);
251
- parentNode.replaceChild(div, image);
252
- }
229
+ const previewPrompt = this.promptRef.current;
230
+
231
+ if (!previewPrompt) {
232
+ return;
233
+ }
234
+
235
+ const images = previewPrompt.getElementsByTagName('img');
236
+
237
+ if (images && images.length) {
238
+ for (let image of images) {
239
+ if (image.attributes && image.attributes.alignment && image.attributes.alignment.value) {
240
+ const alignment = image.attributes.alignment.value;
241
+ const justifyContent =
242
+ alignment === 'center' ? 'center' : alignment === 'right' ? 'flex-end' : 'flex-start';
243
+
244
+ const parentNode = image.parentElement;
245
+
246
+ if (
247
+ parentNode.tagName === 'DIV' &&
248
+ parentNode.style.display === 'flex' &&
249
+ parentNode.style.width === '100%'
250
+ ) {
251
+ parentNode.style.justifyContent = justifyContent;
252
+ } else {
253
+ const div = document.createElement('div');
254
+ div.style.display = 'flex';
255
+ div.style.width = '100%';
256
+ div.style.justifyContent = justifyContent;
257
+
258
+ const copyImage = image.cloneNode(true);
259
+ div.appendChild(copyImage);
260
+ parentNode.replaceChild(div, image);
253
261
  }
254
262
  }
255
263
  }
256
- });
264
+ }
257
265
  }
258
266
 
259
267
  render() {
260
268
  const { prompt, tagName, className, onClick, defaultClassName } = this.props;
261
269
  // legend tag was added once with accessibility tasks, we need extra style to make it work with images alignment
262
270
  const legendClass = tagName === 'legend' ? 'legend' : '';
263
- const customClasses = `${className || ''} ${defaultClassName || ''} ${legendClass}`.trim();
271
+ const customClasses = `${className || ''} ${defaultClassName || ''} ${legendClass} ${PROMPT_CLASS}`.trim();
264
272
 
265
273
  return (
266
274
  <StyledPromptContainer
267
275
  as={tagName || 'div'}
268
- id={'preview-prompt'}
276
+ ref={this.promptRef}
269
277
  onClick={onClick}
270
278
  className={customClasses}
271
279
  tagName={tagName}