Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
243 commits
Select commit Hold shift + click to select a range
652f655
release: Merge branch 'develop' into rc/v12.0.0
gonfunko Jun 26, 2024
0c24701
release: Update version number to 12.0.0
gonfunko Jun 26, 2024
b0b7d78
Merge pull request #8232 from google/develop
gonfunko Jun 27, 2024
989c91f
feat!: Add support for preserving block comment locations. (#8231)
gonfunko Jun 27, 2024
f097fc0
Merge pull request #8252 from google/develop
gonfunko Jul 8, 2024
d355b56
Merge pull request #8292 from google/develop
gonfunko Jul 10, 2024
f45270e
refactor: field_checkbox `dom.addClass` params (#8309)
ishon19 Jul 12, 2024
9ba791c
bug: Rename the blockly icon CSS classes to use camelCase (#8329) (#8…
ga-fleury Jul 12, 2024
5a32c3f
feat: added blocklyField to field's SVG Group (#8334)
nullHawk Jul 12, 2024
dd18edd
fix!: Make `IPathObject` styling methods optional (#8332)
shashwatpathak98 Jul 12, 2024
9684942
feat: Add a blocklyFieldText CSS class to fields' text elements (#829…
ga-fleury Jul 12, 2024
7c22c46
refactor: Add `addClass` and `removeClass` methods to blockSvg (#8337)
ishon19 Jul 15, 2024
00d090e
feat: Add a `blocklyVariableField` CSS class to variable fields (#8359)
shashwatpathak98 Jul 15, 2024
aecfe34
feat: add the IVariableMap and IVariableModel interfaces. (#8369)
gonfunko Jul 15, 2024
ae2fea4
fix!: Rename `blocklyTreeRow` and `blocklyToolboxCategory` CSS classe…
Abhinav-Chdhary Jul 16, 2024
c553206
feat: Add a blocklyTextBubble CSS class to the text bubble #8331 (#8333)
Nirmalkumar6112 Jul 16, 2024
bef8d83
refactor: make VariableModel implement IVariableModel. (#8381)
gonfunko Jul 16, 2024
8cca066
feat: Add a blocklyShadow class (#8336)
devesh-2002 Jul 17, 2024
33b5371
fix!: renamed blocklyTreeIcon Css class to blocklyToolboxCategoryIcon…
krishchvn Jul 17, 2024
ae80adf
fix!: Replace Closure UI CSS classes with Blockly CSS classes (#8339)
Arun-cn Jul 17, 2024
e298f55
feat: Added blocklyTrashcanFlyout CSS class (#8372)
ChaitanyaYeole02 Jul 17, 2024
a2a5749
feat: Add css classes from json block definitions (#8377)
ishon19 Jul 17, 2024
e1753ae
fix!: Renamed the blocklyToolboxContents CSS class to blocklyToolboxC…
ruthwikchikoti Jul 17, 2024
0a1524f
feat: added blocklyToolboxFlyout CSS class to the flyout (#8386)
nullHawk Jul 17, 2024
9fa4b2c
chore: fix package-lock
BeksOmega Jul 18, 2024
32f8e24
refactor: update the variable interfaces. (#8388)
gonfunko Jul 18, 2024
107403b
Merge pull request #8394 from google/develop
BeksOmega Jul 18, 2024
02e64be
refactor: make VariableMap implement IVariableMap. (#8395)
gonfunko Jul 19, 2024
294ef74
refactor: Use IVariableModel instead of VariableModel. (#8400)
gonfunko Jul 19, 2024
21c0a7d
refactor!: Use IVariableMap instead of VariableMap (#8401)
gonfunko Jul 22, 2024
26e6d80
refactor: clean up VariableModel. (#8416)
gonfunko Jul 22, 2024
58abf6e
fix: Remove references to getFastTextWidth (#8277) (#8307)
ga-fleury Jul 22, 2024
348313a
feat: Add a blocklyCollapsed CSS class to collapsed blocks' root SVG …
ga-fleury Jul 22, 2024
e29d7ab
fix!: Rename editing CSS class to blocklyEditing (#8287) (#8301)
ga-fleury Jul 22, 2024
76eebc2
feat: Add a blocklyBlock CSS class to the block's root SVG (#8397)
ChaitanyaYeole02 Jul 22, 2024
fb82c9c
feat: add `blocklyMiniWorkspaceBubble` css class (#8390)
ishon19 Jul 22, 2024
91892ac
refactor: deprecate and clean up variable-related methods. (#8415)
gonfunko Jul 23, 2024
2619fb8
feat: Add a blocklyNotEditable CSS class to the block's root SVG (#8391)
dianaPrahoveanu-SL Jul 23, 2024
5d825f0
chore: Removed @internal annotation from public Field methods. (#8426)
gonfunko Jul 25, 2024
af0a724
fix: use `:focus` pseudo class instead of `blocklyFocused` (#8360)
Skye967 Jul 27, 2024
82c7aad
feat: Add a VarTypeChange event. (#8402)
gonfunko Jul 29, 2024
4b95cb7
feat: Added blocklyImageField CSS class to image fields https://githu…
vexora-0 Jul 30, 2024
dc1f276
fix!: Redundant blockly non selectable #8328 (#8433)
dakshkanaujia Jul 30, 2024
9c88970
feat: added blocklyNotDetetable class to block_svg (#8406)
Shreshthaaa Jul 30, 2024
203e422
feat: add the block's type as a CSS class to the block's root SVG (#8…
CodeMaverick2 Jul 31, 2024
6393ab3
feat: add blocklyLabelField CSS class to label fields (#8423)
surajguduru Jul 31, 2024
17db603
fix!: Rename blocklyTreeIconOpen to blocklyToolboxCategoryIconOpen (…
UtkershBasnet Jul 31, 2024
8a1b015
feat: Add a blocklyNumberField CSS class to number fields (#8414)
Apocalypse96 Jul 31, 2024
6887940
feat: add a method for subclasses of FieldVariable to get the default…
gonfunko Aug 2, 2024
f10c3b0
fix!: Renamed the blocklyTreeSelected CSS class to blocklyToolboxSele…
omwagh28 Aug 6, 2024
9374c02
feat: added block's style as a CSS class to block's root SVG (#8436)
Shreshthaaa Aug 6, 2024
68dda11
fix!: deleted styles without associated classes from css.ts, issue #8…
aishwaryavenkatesan Aug 7, 2024
59fab94
feat: change blocklyEditableText to blocklyEditableField and blocklyN…
Adityajaiswal03 Aug 12, 2024
731fb40
feat: implement `WorkspaceSvg` class manipulation (#8473)
UCYT5040 Aug 13, 2024
64fd9ad
feat: added `blocklyHighlighted` CSS class to highlighted block's roo…
Shreshthaaa Aug 14, 2024
14d119b
fix: improve prompting when deleting variables (#8529)
gonfunko Aug 19, 2024
d6125d4
fix!: Remove the blocklyMenuItemHighlight CSS class and use the hover…
Arun-cn Aug 21, 2024
ba07623
fix: display the correct variable reference count when deleting a var…
gonfunko Aug 21, 2024
cb1c055
refactor: use getters for flyout width and height. (#8564)
gonfunko Sep 3, 2024
def80b3
fix: improve flyout performance (#8571)
gonfunko Sep 11, 2024
732bd7f
fix: size text with computed styles even when hidden (#8572)
gonfunko Sep 13, 2024
476d454
fix: include potential variables in variable dropdowns in the flyout …
gonfunko Sep 16, 2024
c79610c
refactor: remove redundant flyout positioning. (#8573)
gonfunko Sep 18, 2024
6ec1bc5
feat: Add the IFlyoutInflater interface. (#8581)
gonfunko Sep 25, 2024
489aded
feat: Add inflaters for flyout labels and buttons. (#8593)
gonfunko Sep 27, 2024
bdc43bd
feat: Add support for inflating flyout separators. (#8592)
gonfunko Sep 27, 2024
ec5b6e7
feat: Add a BlockFlyoutInflater class. (#8591)
gonfunko Sep 27, 2024
a4b5227
fix: Fix bug that prevented dismissing the widgetdiv in a mutator wor…
gonfunko Oct 2, 2024
e5c1a89
fix: Fix bug that caused fields in the flyout to use the main workspa…
gonfunko Oct 2, 2024
e777086
refactor!: Update flyouts to use inflaters. (#8601)
gonfunko Oct 2, 2024
14c9b1a
chore: remove obsolete comment. (#8606)
gonfunko Oct 2, 2024
2dfd8c3
feat: Allow specifying the placeholder text of workspace comments. (#…
gonfunko Oct 2, 2024
9fc6931
fix: Correctly calculate the bounds of hat blocks. (#8616)
gonfunko Oct 14, 2024
edd02f6
fix: Take the flyout into account when positioning the workspace afte…
gonfunko Oct 14, 2024
aeb1a80
feat: Allow specifying the default size of comments. (#8618)
gonfunko Oct 14, 2024
089179b
fix: Fix exception when disposing of a workspace with a variable bloc…
gonfunko Oct 15, 2024
e4eb975
fix: improve typings and export additional types (#8631)
gonfunko Oct 31, 2024
631190c
chore: Remove unneeded handling for @suppress and @alias. (#8633)
gonfunko Oct 31, 2024
2523093
refactor!: Remove the InsertionMarkerManager. (#8649)
gonfunko Nov 7, 2024
d804c1a
refactor!: Improve ability to use CSS to style Blockly. (#8647)
gonfunko Nov 7, 2024
8f22286
feat: Allow customizing GRID_UNIT for the Zelos renderer. (#8636)
gonfunko Nov 7, 2024
7bbbb95
feat!: Use CSS to specify field cursors. (#8648)
gonfunko Nov 11, 2024
ae2a140
refactor!: Use one map for toolbox contents. (#8654)
gonfunko Nov 12, 2024
af5905a
refactor!: Add setSelectedItem() to IToolbox. (#8650)
gonfunko Nov 12, 2024
4230956
fix: Create CSS vars for SVG patterns. (#8671)
johnnesky Dec 2, 2024
9fcd5a3
release: Merge branch 'rc/v11.2.0' into rc/v12.0.0
gonfunko Dec 4, 2024
389dd1a
chore: Post-merge fixits.
gonfunko Dec 4, 2024
aad5339
fix: Fix variable type change test.
gonfunko Dec 4, 2024
d2c2d6b
release: Update version number to 12.0.0-beta.0
gonfunko Dec 4, 2024
54ebfb7
fix: Fix unsafe cast in Input.setVisible(). (#8695)
gonfunko Jan 6, 2025
eeef2ed
chore!: Fix warnings when generating docs. (#8660)
gonfunko Jan 6, 2025
071814e
feat: Warn if a variable category is loaded without variable blocks. …
gonfunko Jan 6, 2025
503cd00
refactor: Reenable workspace resizing after reflowing flyouts. (#8683)
gonfunko Jan 6, 2025
956f272
feat: Add a generator for all fields on a block. (#8667)
gonfunko Jan 6, 2025
151d21e
refactor: Convert renderer typecheck methods to typeguards. (#8656)
gonfunko Jan 7, 2025
4dcffa0
fix: Don't create intermediate variables when renaming a procedure ar…
gonfunko Jan 8, 2025
80a6d85
refactor!: Use JSON instead of XML for defining dynamic toolbox categ…
gonfunko Jan 8, 2025
75efba9
fix: Fix bug that prevented keyboard navigation in flyouts. (#8687)
gonfunko Jan 9, 2025
bcdb65c
release: Merge branch 'develop' into rc/v12.0.0
gonfunko Jan 10, 2025
c68d645
release: Update version number to 12.0.0-beta.1
gonfunko Jan 10, 2025
c88ebf1
fix: Don't add padding around zero-width fields. (#8738)
gonfunko Jan 16, 2025
343c2f5
feat: Add support for toggling readonly mode. (#8750)
gonfunko Jan 30, 2025
e6e57dd
fix: Fix bug that caused blocks dragged from non-primary flyouts to b…
gonfunko Feb 4, 2025
3ae422a
feat: Add interfaces for focus management.
BenHenning Feb 14, 2025
de076a7
Empty commit to re-trigger CI flows.
BenHenning Feb 19, 2025
8c25c1f
Merge pull request #8774 from BenHenning/introduce-focus-system-inter…
BenHenning Feb 19, 2025
b343a13
fix: Fixes #8764 by moving the event grouping calls up to dragger.ts …
RoboErikG Feb 20, 2025
22dbd75
refactor: make CommentView more amenable to subclassing. (#8783)
gonfunko Feb 24, 2025
0ed6c82
fix: Disallow and ignore x and y attributes for blocks in toolbox def…
gonfunko Feb 27, 2025
fa4fce5
feat!: Added support for separators in menus. (#8767)
gonfunko Feb 27, 2025
b8f71b8
Merge branch 'rc/v12.0.0' into develop-v12-merge
gonfunko Mar 11, 2025
00d7745
Revert "fix!: Remove the blocklyMenuItemHighlight CSS class and use t…
gonfunko Mar 12, 2025
0983c43
Merge pull request #8798 from google/develop-v12-merge
gonfunko Mar 12, 2025
629d6e0
chore(deps): bump eslint-config-prettier from 9.1.0 to 10.1.1
dependabot[bot] Mar 17, 2025
0f07567
fix: Allow the marker's current node to be null. (#8802)
gonfunko Mar 20, 2025
e02d385
release: Update version number to 12.0.0-beta.2
gonfunko Mar 20, 2025
d9beacd
feat: add FocusManager
BenHenning Mar 21, 2025
63a4df6
fix: fix bug that modalInputs option is not working in toolbox area (…
zhiyan Mar 24, 2025
e6155fd
Merge pull request #8813 from google/master
gonfunko Mar 25, 2025
74ad061
chore(deps): bump chai from 5.1.2 to 5.2.0 (#8807)
dependabot[bot] Mar 26, 2025
ad6bbbc
Merge pull request #8806 from google/dependabot/npm_and_yarn/develop/…
BenHenning Mar 26, 2025
516e3af
feat: finish core impl + tests
BenHenning Mar 27, 2025
9ab77ce
chore: fix formatting issues
BenHenning Mar 27, 2025
3dc4d17
Update tests/mocha/index.html
BenHenning Mar 27, 2025
7a07b4b
refactor!: Remove old cursor and tab support. (#8803)
gonfunko Mar 28, 2025
212f13a
feat: Add a method for creating flyout options (#8829)
RoboErikG Mar 28, 2025
d85fcef
chore(deps): bump eslint-plugin-jsdoc from 50.6.0 to 50.6.9
dependabot[bot] Mar 31, 2025
7171350
fix!: Tighten and correct typings on ASTNode (#8835)
gonfunko Apr 1, 2025
209de21
Merge pull request #8831 from google/dependabot/npm_and_yarn/develop/…
BenHenning Apr 1, 2025
ca36272
refactor!: Backport LineCursor to core. (#8834)
gonfunko Apr 3, 2025
902b26b
chore: part 1 of addressing reviewer comments.
BenHenning Apr 3, 2025
720e8da
chore: part 2 of addressing reviewer comments.
BenHenning Apr 3, 2025
58cd954
feat: make getNextNode and getPreviousNode public (#8859)
rachel-fenichel Apr 3, 2025
c5404af
chore: lint fixes.
BenHenning Apr 3, 2025
17171ab
Merge pull request #8814 from BenHenning/introduce-focus-system-imple…
BenHenning Apr 3, 2025
49387ec
feat: add shouldHealStack method (#8872)
rachel-fenichel Apr 7, 2025
76b02de
feat: add getSearchRadius to BlockDragStrategy (#8871)
rachel-fenichel Apr 7, 2025
89194b2
fix: check potential variables for flyout variable fields (#8873)
maribethb Apr 8, 2025
a68827a
chore(deps): bump eslint from 9.17.0 to 9.24.0 (#8867)
dependabot[bot] Apr 8, 2025
2c05119
fix: change css class for disabled block pattern (#8864)
maribethb Apr 8, 2025
7aff866
release: update version to 12.0.0-beta.3
maribethb Apr 8, 2025
c5736bb
feat: make block and workspace implement IContextMenu (#8876)
maribethb Apr 10, 2025
3160e3d
feat: add getFirstNode and getLastNode to cursor with tests (#8878)
rachel-fenichel Apr 11, 2025
d1dc38f
feat: support menuOpenEvent, menuSelectEvent, location for context me…
maribethb Apr 11, 2025
3aa653d
chore(deps): bump webdriverio from 9.4.2 to 9.12.5
dependabot[bot] Apr 14, 2025
fac7504
feat: add loopback in cursor navigation, and add tests (#8883)
rachel-fenichel Apr 14, 2025
84ff802
Merge pull request #8886 from google/dependabot/npm_and_yarn/develop/…
BenHenning Apr 14, 2025
e0009e2
fix: update dependencies so adv compilation works (#8890)
maribethb Apr 14, 2025
547fed4
feat: menuOpenEvent, menuSelectEvent, and location for context menu i…
maribethb Apr 14, 2025
7a3eb62
fix: Don't visit invisible inputs with the cursor. (#8892)
gonfunko Apr 14, 2025
98cf5cb
feat: Add support for retrieving blocks' drag strategies. (#8893)
gonfunko Apr 14, 2025
e45471d
fix: Fix menu scrolling. (#8881)
gonfunko Apr 14, 2025
b1d7670
release: Update version number to 12.0.0-beta.4
gonfunko Apr 14, 2025
acca9ea
feat!: deprecate scopeType and include focusedNode in context menu op…
maribethb Apr 15, 2025
fd9263a
feat: Allow for HTML elements in dropdown field menus. (#8889)
gonfunko Apr 15, 2025
d63a888
feat: show context menu for connections (#8895)
maribethb Apr 16, 2025
5df6284
chore(deps): bump globals from 15.14.0 to 16.0.0 (#8865)
dependabot[bot] Apr 16, 2025
296ad33
fix: Fix bug that allowed some invisible fields/inputs to be navigate…
gonfunko Apr 17, 2025
a2d7621
Feature: Add a dropdown options setter (#8833)
RoboErikG Apr 17, 2025
5b103e1
fix: Fix bug that caused flyout items under the mouse to be selected …
gonfunko Apr 17, 2025
4fb054c
fix: Recreate the dropdowndiv when clearing it. (#8903)
gonfunko Apr 18, 2025
cece3f6
chore: Add messages from the keyboard experiment. (#8904)
gonfunko Apr 21, 2025
bb8df93
chore(deps): bump typescript from 5.6.3 to 5.8.3 (#8906)
dependabot[bot] Apr 21, 2025
9d12769
fix: Add some missing message strings. (#8908)
gonfunko Apr 21, 2025
0772a29
feat!: Introduce new focus tree/node functions.
BenHenning Apr 21, 2025
404c20e
chore: Remove unused isFocusable*() functions.
BenHenning Apr 21, 2025
c91fed3
chore: equality + doc cleanups
BenHenning Apr 21, 2025
4e8bb98
Revert "chore: Remove unused isFocusable*() functions."
BenHenning Apr 21, 2025
b3bce67
Fix: Remove the collapsed block warning when expanding a block (#8854)
RoboErikG Apr 21, 2025
c6e58c4
feat: Add support for displaying toast-style notifications. (#8896)
gonfunko Apr 21, 2025
7c0c853
fix: Fix broken FocusManager tree unregistration.
BenHenning Apr 22, 2025
0a95939
chore: Try another workflow permission. (#8811)
gonfunko Apr 23, 2025
e9ea69d
Merge branch 'rc/v12.0.0' into add-focus-manager-callbacks-and-improv…
BenHenning Apr 23, 2025
2564239
chore: Add private method documentation.
BenHenning Apr 23, 2025
096e771
chore: clean-up documentation comment.
BenHenning Apr 23, 2025
ac7fea1
Merge pull request #8909 from BenHenning/add-focus-manager-callbacks-…
BenHenning Apr 23, 2025
d7680cf
feat: Make WorkspaceSvg and BlockSvg focusable (#8916)
BenHenning Apr 24, 2025
5bc8380
feat: Make toolbox and flyout focusable (#8920)
BenHenning Apr 24, 2025
8f59649
fix: LineCursor can loop forward, but not back (#8926)
microbit-grace Apr 25, 2025
ada01da
chore(deps): bump jsdom from 25.0.1 to 26.1.0 (#8887)
dependabot[bot] Apr 25, 2025
c644fe3
Fix: Revert focus prs (#8933)
RoboErikG Apr 25, 2025
dee27b9
fix: Support RTL in WorkspaceSvg.scrollIntoBounds (#8936)
RoboErikG Apr 28, 2025
b9b40f4
fix: Fix bug in BlockSvg.prototype.setParent (#8934)
cpcallen Apr 29, 2025
b8c2b73
chore: update assignment workflow permissions for v12 (#8947)
BenHenning Apr 30, 2025
d82983f
feat: Make WorkspaceSvg and BlockSvg focusable (roll forward) (#8938)
BenHenning Apr 30, 2025
cac8f01
feat: Make toolbox and flyout focusable (roll forward) (#8939)
BenHenning Apr 30, 2025
f68081b
feat: Make fields focusable (#8923)
BenHenning Apr 30, 2025
0cbcc31
feat: Make connections focusable (#8928)
BenHenning Apr 30, 2025
45c1426
fix: remove black outline on focused items (#8951)
rachel-fenichel May 1, 2025
fdeaa76
feat: Update line cursor to use focus manager (#8941)
BenHenning May 2, 2025
778b7d5
fix: Fix conventional auto labeling (#8956)
BenHenning May 2, 2025
7b4f223
feat(WorkspaceSvg): Add support for tracking keyboard moves (#8959)
cpcallen May 2, 2025
3d1d80d
refactor!: Finish refactor of `WorkspaceSvg` `VariableMap` methods (#…
cpcallen May 2, 2025
1c79e1e
fix: Address remaining invisible input positions (#8948)
microbit-robert May 2, 2025
dd3133b
feat: add scope to keyboard shortcuts and use it (#8917)
maribethb May 2, 2025
a4e6166
fix!: Remove alt+key commands (#8961)
RoboErikG May 2, 2025
bc0e1c3
feat(WorkspaceSvg): Ignore gestures when keyboard move in progress (#…
cpcallen May 2, 2025
6b69541
chore: Merge branch 'develop' into rc/v12.0.0
cpcallen May 3, 2025
9b6a79c
chore(deps): bump eslint from 9.24.0 to 9.26.0 (#8985)
dependabot[bot] May 5, 2025
c18c7ff
fix: Fix Flyout auto-closing when creating a var. (#8982)
BenHenning May 5, 2025
bbd97ea
fix: Synchronize gestures and focus (#8981)
BenHenning May 5, 2025
233604a
fix: focus for autohideable flyouts (#8990)
maribethb May 5, 2025
e21d37d
chore(deps): bump typescript-eslint from 8.23.0 to 8.31.1 (#8984)
dependabot[bot] May 6, 2025
04a31f9
fix: Wrap toolbox refreshes in a timeout when modifying variables (#8…
RoboErikG May 6, 2025
eb5181e
fix: Add private to variableChangeCallback (#8995)
RoboErikG May 6, 2025
86c831a
fix: use copyable interface for cut action, add tests (#8993)
maribethb May 6, 2025
a3b3ea7
fix: Improve missing node resiliency (#8997)
BenHenning May 6, 2025
acdad98
refactor!: Use navigation rulesets instead of ASTNode to control keyb…
gonfunko May 7, 2025
bb76d6e
fix!: remove MarkerSvg and uses (#8991)
rachel-fenichel May 7, 2025
e5e3254
chore(deps): bump @microsoft/api-documenter from 7.26.7 to 7.26.26 (#…
dependabot[bot] May 7, 2025
8edd373
chore: bump version to 12.0.0-beta.5 (#9012)
rachel-fenichel May 8, 2025
b6b229e
fix!: delete marker move event and tests (#9013)
rachel-fenichel May 8, 2025
561129a
fix!: delete ASTNode and references (#9014)
rachel-fenichel May 8, 2025
92cad53
fix!: delete IASTNodeLocation and friends (#9015)
rachel-fenichel May 8, 2025
4074cee
feat!: Make everything ISelectable focusable (#9004)
BenHenning May 9, 2025
9cf9170
chore: remove now-unneeded cast (#9016)
maribethb May 9, 2025
40ec75b
chore(deps): bump eslint-plugin-prettier from 5.2.3 to 5.4.0 (#9024)
dependabot[bot] May 12, 2025
77bfa5b
fix: Don't fire events for changes to potential variables (#9025)
RoboErikG May 12, 2025
d9e5d95
chore(deps): bump globals from 16.0.0 to 16.1.0 (#9023)
dependabot[bot] May 12, 2025
a1be83b
refactor: Make INavigable extend IFocusableNode. (#9033)
gonfunko May 12, 2025
e7af75e
fix: Improve robustness of `IFocusableNode` uses (#9031)
BenHenning May 12, 2025
ece662a
Fix: don't visit connections with the cursor. (#9030)
gonfunko May 13, 2025
6bee1ca
chore: add node test for json with a dropdown field (#9019)
maribethb May 13, 2025
14e1ef6
fix: Fix regressions in `Field`. (#9011)
gonfunko May 13, 2025
556ee39
fix!: remove deprecated setEnabled and backwards event filtering (#9039)
maribethb May 13, 2025
e34a969
fix: Ensure selection stays when dragging blocks (#9034)
BenHenning May 13, 2025
ae22165
refactor: Remove INavigable in favor of IFocusableNode. (#9037)
gonfunko May 13, 2025
2b9d06a
fix: Use a unique focus ID for BlockSvg. (#9045)
BenHenning May 14, 2025
e117980
fix: Ensure cursor syncs with more than just focused blocks (#9032)
BenHenning May 14, 2025
7a7fad4
fix: Reenable support for tabbing between fields. (#9049)
gonfunko May 14, 2025
523dca9
fix: fieldDropdown.getText works in node (#9048)
maribethb May 14, 2025
205ef6c
fix!: deepMerge for arrays, shortcut keycodes returned as array (#9047)
maribethb May 14, 2025
651767b
release: Merge branch 'develop' into rc/v12.0.0
gonfunko May 14, 2025
cfa625a
release: Update version number to 12.0.0-beta.6
gonfunko May 14, 2025
4a2b743
fix: Fix bug when referencing HTMLElement in non-browser environments…
gonfunko May 14, 2025
083329a
feat: Add support for conditional ephemeral focus. (#9051)
BenHenning May 14, 2025
215fad8
fix: Remove un-typesafe cast. (#9052)
gonfunko May 14, 2025
8c0ee9f
release: update version number to 12.0.0-beta.7 (#9053)
rachel-fenichel May 15, 2025
ad0563d
fix: Make clickable but non-editable fields navigable. (#9054)
gonfunko May 15, 2025
c8ad30b
chore: Rollup of 2025 Q2 updates from TranslateWiki (#9056)
gonfunko May 15, 2025
f9337b2
chore: Update metadata for 2025 Q2 release (#9058)
gonfunko May 15, 2025
79ec694
release: Merge branch 'develop' into rc/v12.0.0
gonfunko May 15, 2025
e5de970
release: Update version number to 12.0.0
gonfunko May 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/workflows/assign_reviewers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ jobs:
requested-reviewer:
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
pull-requests: write
steps:
- name: Assign requested reviewer
uses: actions/github-script@v7
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/conventional-label.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
label:
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
pull-requests: write
steps:
- uses: bcoe/conventional-release-labels@v1
Expand Down
5 changes: 5 additions & 0 deletions api-extractor.json
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,11 @@
// Needs investigation.
"ae-forgotten-export": {
"logLevel": "none"
},

// We don't prefix our internal APIs with underscores.
"ae-internal-missing-underscore": {
"logLevel": "none"
}
},

Expand Down
2 changes: 1 addition & 1 deletion blocks/loops.ts
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ const CUSTOM_CONTEXT_MENU_CREATE_VARIABLES_GET_MIXIN = {
}
const varField = this.getField('VAR') as FieldVariable;
const variable = varField.getVariable()!;
const varName = variable.name;
const varName = variable.getName();
if (!this.isCollapsed() && varName !== null) {
const getVarBlockState = {
type: 'variables_get',
Expand Down
151 changes: 76 additions & 75 deletions blocks/procedures.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import type {Block} from '../core/block.js';
import type {BlockSvg} from '../core/block_svg.js';
import type {BlockDefinition} from '../core/blocks.js';
import * as common from '../core/common.js';
import {defineBlocks} from '../core/common.js';
import {config} from '../core/config.js';
import type {Connection} from '../core/connection.js';
Expand All @@ -27,15 +26,19 @@ import {FieldCheckbox} from '../core/field_checkbox.js';
import {FieldLabel} from '../core/field_label.js';
import * as fieldRegistry from '../core/field_registry.js';
import {FieldTextInput} from '../core/field_textinput.js';
import {getFocusManager} from '../core/focus_manager.js';
import '../core/icons/comment_icon.js';
import {MutatorIcon as Mutator} from '../core/icons/mutator_icon.js';
import '../core/icons/warning_icon.js';
import {Align} from '../core/inputs/align.js';
import type {
IVariableModel,
IVariableState,
} from '../core/interfaces/i_variable_model.js';
import {Msg} from '../core/msg.js';
import {Names} from '../core/names.js';
import * as Procedures from '../core/procedures.js';
import * as xmlUtils from '../core/utils/xml.js';
import type {VariableModel} from '../core/variable_model.js';
import * as Variables from '../core/variables.js';
import type {Workspace} from '../core/workspace.js';
import type {WorkspaceSvg} from '../core/workspace_svg.js';
Expand All @@ -48,7 +51,7 @@ export const blocks: {[key: string]: BlockDefinition} = {};
type ProcedureBlock = Block & ProcedureMixin;
interface ProcedureMixin extends ProcedureMixinType {
arguments_: string[];
argumentVarModels_: VariableModel[];
argumentVarModels_: IVariableModel<IVariableState>[];
callType_: string;
paramIds_: string[];
hasStatements_: boolean;
Expand Down Expand Up @@ -128,7 +131,7 @@ const PROCEDURE_DEF_COMMON = {
for (let i = 0; i < this.argumentVarModels_.length; i++) {
const parameter = xmlUtils.createElement('arg');
const argModel = this.argumentVarModels_[i];
parameter.setAttribute('name', argModel.name);
parameter.setAttribute('name', argModel.getName());
parameter.setAttribute('varid', argModel.getId());
if (opt_paramIds && this.paramIds_) {
parameter.setAttribute('paramId', this.paramIds_[i]);
Expand Down Expand Up @@ -196,7 +199,7 @@ const PROCEDURE_DEF_COMMON = {
state['params'].push({
// We don't need to serialize the name, but just in case we decide
// to separate params from variables.
'name': this.argumentVarModels_[i].name,
'name': this.argumentVarModels_[i].getName(),
'id': this.argumentVarModels_[i].getId(),
});
}
Expand Down Expand Up @@ -224,7 +227,7 @@ const PROCEDURE_DEF_COMMON = {
param['name'],
'',
);
this.arguments_.push(variable.name);
this.arguments_.push(variable.getName());
this.argumentVarModels_.push(variable);
}
}
Expand Down Expand Up @@ -352,7 +355,9 @@ const PROCEDURE_DEF_COMMON = {
*
* @returns List of variable models.
*/
getVarModels: function (this: ProcedureBlock): VariableModel[] {
getVarModels: function (
this: ProcedureBlock,
): IVariableModel<IVariableState>[] {
return this.argumentVarModels_;
},
/**
Expand All @@ -370,23 +375,23 @@ const PROCEDURE_DEF_COMMON = {
newId: string,
) {
const oldVariable = this.workspace.getVariableById(oldId)!;
if (oldVariable.type !== '') {
if (oldVariable.getType() !== '') {
// Procedure arguments always have the empty type.
return;
}
const oldName = oldVariable.name;
const oldName = oldVariable.getName();
const newVar = this.workspace.getVariableById(newId)!;

let change = false;
for (let i = 0; i < this.argumentVarModels_.length; i++) {
if (this.argumentVarModels_[i].getId() === oldId) {
this.arguments_[i] = newVar.name;
this.arguments_[i] = newVar.getName();
this.argumentVarModels_[i] = newVar;
change = true;
}
}
if (change) {
this.displayRenamedVar_(oldName, newVar.name);
this.displayRenamedVar_(oldName, newVar.getName());
Procedures.mutateCallers(this);
}
},
Expand All @@ -398,9 +403,9 @@ const PROCEDURE_DEF_COMMON = {
*/
updateVarName: function (
this: ProcedureBlock & BlockSvg,
variable: VariableModel,
variable: IVariableModel<IVariableState>,
) {
const newName = variable.name;
const newName = variable.getName();
let change = false;
let oldName;
for (let i = 0; i < this.argumentVarModels_.length; i++) {
Expand Down Expand Up @@ -473,12 +478,16 @@ const PROCEDURE_DEF_COMMON = {
const getVarBlockState = {
type: 'variables_get',
fields: {
VAR: {name: argVar.name, id: argVar.getId(), type: argVar.type},
VAR: {
name: argVar.getName(),
id: argVar.getId(),
type: argVar.getType(),
},
},
};
options.push({
enabled: true,
text: Msg['VARIABLES_SET_CREATE_GET'].replace('%1', argVar.name),
text: Msg['VARIABLES_SET_CREATE_GET'].replace('%1', argVar.getName()),
callback: ContextMenu.callbackFactory(this, getVarBlockState),
});
}
Expand Down Expand Up @@ -620,30 +629,49 @@ type ArgumentBlock = Block & ArgumentMixin;
interface ArgumentMixin extends ArgumentMixinType {}
type ArgumentMixinType = typeof PROCEDURES_MUTATORARGUMENT;

// TODO(#6920): This is kludgy.
type FieldTextInputForArgument = FieldTextInput & {
oldShowEditorFn_(_e?: Event, quietInput?: boolean): void;
createdVariables_: VariableModel[];
};
/**
* Field responsible for editing procedure argument names.
*/
class ProcedureArgumentField extends FieldTextInput {
/**
* Whether or not this field is currently being edited interactively.
*/
editingInteractively = false;

/**
* The procedure argument variable whose name is being interactively edited.
*/
editingVariable?: IVariableModel<IVariableState>;

/**
* Displays the field editor.
*
* @param e The event that triggered display of the field editor.
*/
protected override showEditor_(e?: Event) {
super.showEditor_(e);
this.editingInteractively = true;
this.editingVariable = undefined;
}

/**
* Handles cleanup when the field editor is dismissed.
*/
override onFinishEditing_(value: string) {
super.onFinishEditing_(value);
this.editingInteractively = false;
}
}

const PROCEDURES_MUTATORARGUMENT = {
/**
* Mutator block for procedure argument.
*/
init: function (this: ArgumentBlock) {
const field = fieldRegistry.fromJson({
type: 'field_input',
text: Procedures.DEFAULT_ARG,
}) as FieldTextInputForArgument;
field.setValidator(this.validator_);
// Hack: override showEditor to do just a little bit more work.
// We don't have a good place to hook into the start of a text edit.
field.oldShowEditorFn_ = (field as AnyDuringMigration).showEditor_;
const newShowEditorFn = function (this: typeof field) {
this.createdVariables_ = [];
this.oldShowEditorFn_();
};
(field as AnyDuringMigration).showEditor_ = newShowEditorFn;
const field = new ProcedureArgumentField(
Procedures.DEFAULT_ARG,
this.validator_,
);

this.appendDummyInput()
.appendField(Msg['PROCEDURES_MUTATORARG_TITLE'])
Expand All @@ -653,14 +681,6 @@ const PROCEDURES_MUTATORARGUMENT = {
this.setStyle('procedure_blocks');
this.setTooltip(Msg['PROCEDURES_MUTATORARG_TOOLTIP']);
this.contextMenu = false;

// Create the default variable when we drag the block in from the flyout.
// Have to do this after installing the field on the block.
field.onFinishEditing_ = this.deleteIntermediateVars_;
// Create an empty list so onFinishEditing_ has something to look at, even
// though the editor was never opened.
field.createdVariables_ = [];
field.onFinishEditing_('x');
},

/**
Expand All @@ -674,11 +694,11 @@ const PROCEDURES_MUTATORARGUMENT = {
* @returns Valid name, or null if a name was not specified.
*/
validator_: function (
this: FieldTextInputForArgument,
this: ProcedureArgumentField,
varName: string,
): string | null {
const sourceBlock = this.getSourceBlock()!;
const outerWs = sourceBlock!.workspace.getRootWorkspace()!;
const outerWs = sourceBlock.workspace.getRootWorkspace()!;
varName = varName.replace(/[\s\xa0]+/g, ' ').replace(/^ | $/g, '');
if (!varName) {
return null;
Expand Down Expand Up @@ -707,50 +727,31 @@ const PROCEDURES_MUTATORARGUMENT = {
return varName;
}

let model = outerWs.getVariable(varName, '');
if (model && model.name !== varName) {
const model = outerWs.getVariable(varName, '');
if (model && model.getName() !== varName) {
// Rename the variable (case change)
outerWs.renameVariableById(model.getId(), varName);
}
if (!model) {
model = outerWs.createVariable(varName, '');
if (model && this.createdVariables_) {
this.createdVariables_.push(model);
if (this.editingInteractively) {
if (!this.editingVariable) {
this.editingVariable = outerWs.createVariable(varName, '');
} else {
outerWs.renameVariableById(this.editingVariable.getId(), varName);
}
} else {
outerWs.createVariable(varName, '');
}
}
return varName;
},

/**
* Called when focusing away from the text field.
* Deletes all variables that were created as the user typed their intended
* variable name.
*
* @internal
* @param newText The new variable name.
*/
deleteIntermediateVars_: function (
this: FieldTextInputForArgument,
newText: string,
) {
const outerWs = this.getSourceBlock()!.workspace.getRootWorkspace();
if (!outerWs) {
return;
}
for (let i = 0; i < this.createdVariables_.length; i++) {
const model = this.createdVariables_[i];
if (model.name !== newText) {
outerWs.deleteVariableById(model.getId());
}
}
},
};
blocks['procedures_mutatorarg'] = PROCEDURES_MUTATORARGUMENT;

/** Type of a block using the PROCEDURE_CALL_COMMON mixin. */
type CallBlock = Block & CallMixin;
interface CallMixin extends CallMixinType {
argumentVarModels_: VariableModel[];
argumentVarModels_: IVariableModel<IVariableState>[];
arguments_: string[];
defType_: string;
quarkIds_: string[] | null;
Expand Down Expand Up @@ -1029,7 +1030,7 @@ const PROCEDURE_CALL_COMMON = {
*
* @returns List of variable models.
*/
getVarModels: function (this: CallBlock): VariableModel[] {
getVarModels: function (this: CallBlock): IVariableModel<IVariableState>[] {
return this.argumentVarModels_;
},
/**
Expand Down Expand Up @@ -1177,7 +1178,7 @@ const PROCEDURE_CALL_COMMON = {
const def = Procedures.getDefinition(name, workspace);
if (def) {
(workspace as WorkspaceSvg).centerOnBlock(def.id);
common.setSelected(def as BlockSvg);
getFocusManager().focusNode(def as BlockSvg);
}
},
});
Expand Down
9 changes: 4 additions & 5 deletions blocks/variables.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import '../core/field_label.js';
import {FieldVariable} from '../core/field_variable.js';
import {Msg} from '../core/msg.js';
import * as Variables from '../core/variables.js';
import type {WorkspaceSvg} from '../core/workspace_svg.js';

/**
* A dictionary of the block definitions provided by this module.
Expand Down Expand Up @@ -165,11 +164,11 @@ const deleteOptionCallbackFactory = function (
block: VariableBlock,
): () => void {
return function () {
const workspace = block.workspace;
const variableField = block.getField('VAR') as FieldVariable;
const variable = variableField.getVariable()!;
workspace.deleteVariableById(variable.getId());
(workspace as WorkspaceSvg).refreshToolboxSelection();
const variable = variableField.getVariable();
if (variable) {
Variables.deleteVariable(variable.getWorkspace(), variable, block);
}
};
};

Expand Down
Loading
Loading