diff --git a/assets/blockly.html b/assets/blockly.html index c098611..bc35648 100644 --- a/assets/blockly.html +++ b/assets/blockly.html @@ -237,64 +237,6 @@ - - - - - - - - - - - - - - - diff --git a/assets/blockly/ardublockly/ardublockly.js b/assets/blockly/ardublockly/ardublockly.js index 642d50d..f4ccc7a 100644 --- a/assets/blockly/ardublockly/ardublockly.js +++ b/assets/blockly/ardublockly/ardublockly.js @@ -558,6 +558,7 @@ Ardublockly.PREV_ARDUINO_CODE_ = 'void setup() {\n\n}\n\n\nvoid loop() {\n\n}'; * the blocks. */ Ardublockly.renderContent = function() { + Ardublockly.workspace.addChangeListener(Blockly.Events.disableOrphans); // Render Arduino Code with latest change highlight and syntax highlighting var arduinoCode = Ardublockly.generateArduino(); if (arduinoCode !== Ardublockly.PREV_ARDUINO_CODE_) { diff --git a/assets/blockly/ardublockly/ardublockly_toolbox.js b/assets/blockly/ardublockly/ardublockly_toolbox.js index 18481b5..0b650c1 100644 --- a/assets/blockly/ardublockly/ardublockly_toolbox.js +++ b/assets/blockly/ardublockly/ardublockly_toolbox.js @@ -15,9 +15,9 @@ Ardublockly.TOOLBOX_XML = ' ' + ' ' + ' ' + - /*' ' + - ' ' + - ' ' + */ + ' ' + + // ' ' + + // ' ' + ' ' + ' ' + ' ' + @@ -76,6 +76,45 @@ Ardublockly.TOOLBOX_XML = ' ' + ' ' + ' ' + + ' ' + + ' ' + + ' ' + + ' 0' + + ' ' + + ' ' + + ' ' + + ' ' + + ' 0' + + ' ' + + ' ' + + ' ' + + ' ' + + ' 0' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' 0' + + ' ' + + ' ' + + ' ' + + ' ' + + ' 0' + + ' ' + + ' ' + + ' ' + + ' ' + + ' 0' + + ' ' + + ' ' + + ' ' + + ' ' + + ' 0' + + ' ' + + ' ' + + ' ' + ' ' + ' ' + ' ' + @@ -127,11 +166,26 @@ Ardublockly.TOOLBOX_XML = ' ' + ' ' + ' ' + - ' ' + + ' ' + ' ' + + ' ' + ' ' + ' ' + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + ' ' + ' ' + ' ' + diff --git a/assets/blockly/ardublockly/font/droid/DroidSansMono.ttf b/assets/blockly/ardublockly/font/droid/DroidSansMono.ttf new file mode 100644 index 0000000..4546611 Binary files /dev/null and b/assets/blockly/ardublockly/font/droid/DroidSansMono.ttf differ diff --git a/assets/blockly/ardublockly/font/droid/NOTICE b/assets/blockly/ardublockly/font/droid/NOTICE new file mode 100644 index 0000000..c5b1efa --- /dev/null +++ b/assets/blockly/ardublockly/font/droid/NOTICE @@ -0,0 +1,190 @@ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + diff --git a/assets/blockly/ardublockly/font/droid/README.txt b/assets/blockly/ardublockly/font/droid/README.txt new file mode 100644 index 0000000..1a96dfd --- /dev/null +++ b/assets/blockly/ardublockly/font/droid/README.txt @@ -0,0 +1,18 @@ +Copyright (C) 2008 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +########## + +This directory contains the fonts for the platform. They are licensed +under the Apache 2 license. diff --git a/assets/blockly/ardublockly/font/material-design-icons/LICENSE.txt b/assets/blockly/ardublockly/font/material-design-icons/LICENSE.txt new file mode 100644 index 0000000..542f653 --- /dev/null +++ b/assets/blockly/ardublockly/font/material-design-icons/LICENSE.txt @@ -0,0 +1,428 @@ +https://github.com/google/material-design-icons/blob/master/LICENSE +https://github.com/FezVrasta/bootstrap-material-design/blob/master/fonts/LICENSE.txt + +Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More_considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 International Public +License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-ShareAlike 4.0 International Public License ("Public +License"). To the extent this Public License may be interpreted as a +contract, You are granted the Licensed Rights in consideration of Your +acceptance of these terms and conditions, and the Licensor grants You +such rights in consideration of benefits the Licensor receives from +making the Licensed Material available under these terms and +conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + l. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + m. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + + including for purposes of Section 3(b); and + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public licenses. +Notwithstanding, Creative Commons may elect to apply one of its public +licenses to material it publishes and in those instances will be +considered the "Licensor." Except for the limited purpose of indicating +that material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the public +licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/assets/blockly/ardublockly/font/material-design-icons/Material-Design-Icons.eot b/assets/blockly/ardublockly/font/material-design-icons/Material-Design-Icons.eot new file mode 100644 index 0000000..d9c296e Binary files /dev/null and b/assets/blockly/ardublockly/font/material-design-icons/Material-Design-Icons.eot differ diff --git a/assets/blockly/ardublockly/font/material-design-icons/Material-Design-Icons.svg b/assets/blockly/ardublockly/font/material-design-icons/Material-Design-Icons.svg new file mode 100644 index 0000000..def1e9b --- /dev/null +++ b/assets/blockly/ardublockly/font/material-design-icons/Material-Design-Icons.svg @@ -0,0 +1,769 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/blockly/ardublockly/font/material-design-icons/Material-Design-Icons.ttf b/assets/blockly/ardublockly/font/material-design-icons/Material-Design-Icons.ttf new file mode 100644 index 0000000..e12f0cc Binary files /dev/null and b/assets/blockly/ardublockly/font/material-design-icons/Material-Design-Icons.ttf differ diff --git a/assets/blockly/ardublockly/font/material-design-icons/Material-Design-Icons.woff b/assets/blockly/ardublockly/font/material-design-icons/Material-Design-Icons.woff new file mode 100644 index 0000000..201581f Binary files /dev/null and b/assets/blockly/ardublockly/font/material-design-icons/Material-Design-Icons.woff differ diff --git a/assets/blockly/ardublockly/font/material-design-icons/Material-Design-Icons.woff2 b/assets/blockly/ardublockly/font/material-design-icons/Material-Design-Icons.woff2 new file mode 100644 index 0000000..5efd1b9 Binary files /dev/null and b/assets/blockly/ardublockly/font/material-design-icons/Material-Design-Icons.woff2 differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Bold.eot b/assets/blockly/ardublockly/font/roboto/Roboto-Bold.eot new file mode 100644 index 0000000..b73776e Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Bold.eot differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Bold.ttf b/assets/blockly/ardublockly/font/roboto/Roboto-Bold.ttf new file mode 100644 index 0000000..68822ca Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Bold.ttf differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Bold.woff b/assets/blockly/ardublockly/font/roboto/Roboto-Bold.woff new file mode 100644 index 0000000..1f75afd Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Bold.woff differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Bold.woff2 b/assets/blockly/ardublockly/font/roboto/Roboto-Bold.woff2 new file mode 100644 index 0000000..350d1c3 Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Bold.woff2 differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Light.eot b/assets/blockly/ardublockly/font/roboto/Roboto-Light.eot new file mode 100644 index 0000000..072cdc4 Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Light.eot differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Light.ttf b/assets/blockly/ardublockly/font/roboto/Roboto-Light.ttf new file mode 100644 index 0000000..aa45340 Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Light.ttf differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Light.woff b/assets/blockly/ardublockly/font/roboto/Roboto-Light.woff new file mode 100644 index 0000000..3480c6c Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Light.woff differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Light.woff2 b/assets/blockly/ardublockly/font/roboto/Roboto-Light.woff2 new file mode 100644 index 0000000..9a4d98c Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Light.woff2 differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Medium.eot b/assets/blockly/ardublockly/font/roboto/Roboto-Medium.eot new file mode 100644 index 0000000..f9ad995 Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Medium.eot differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Medium.ttf b/assets/blockly/ardublockly/font/roboto/Roboto-Medium.ttf new file mode 100644 index 0000000..a3c1a1f Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Medium.ttf differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Medium.woff b/assets/blockly/ardublockly/font/roboto/Roboto-Medium.woff new file mode 100644 index 0000000..1186773 Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Medium.woff differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Medium.woff2 b/assets/blockly/ardublockly/font/roboto/Roboto-Medium.woff2 new file mode 100644 index 0000000..d10a592 Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Medium.woff2 differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Regular.eot b/assets/blockly/ardublockly/font/roboto/Roboto-Regular.eot new file mode 100644 index 0000000..9b5e8e4 Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Regular.eot differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Regular.ttf b/assets/blockly/ardublockly/font/roboto/Roboto-Regular.ttf new file mode 100644 index 0000000..0e58508 Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Regular.ttf differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Regular.woff b/assets/blockly/ardublockly/font/roboto/Roboto-Regular.woff new file mode 100644 index 0000000..f823258 Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Regular.woff differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Regular.woff2 b/assets/blockly/ardublockly/font/roboto/Roboto-Regular.woff2 new file mode 100644 index 0000000..b7082ef Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Regular.woff2 differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Thin.eot b/assets/blockly/ardublockly/font/roboto/Roboto-Thin.eot new file mode 100644 index 0000000..2284a3b Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Thin.eot differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Thin.ttf b/assets/blockly/ardublockly/font/roboto/Roboto-Thin.ttf new file mode 100644 index 0000000..8779333 Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Thin.ttf differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Thin.woff b/assets/blockly/ardublockly/font/roboto/Roboto-Thin.woff new file mode 100644 index 0000000..2a98c1e Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Thin.woff differ diff --git a/assets/blockly/ardublockly/font/roboto/Roboto-Thin.woff2 b/assets/blockly/ardublockly/font/roboto/Roboto-Thin.woff2 new file mode 100644 index 0000000..a38025a Binary files /dev/null and b/assets/blockly/ardublockly/font/roboto/Roboto-Thin.woff2 differ diff --git a/assets/blockly/ardublockly/index.html b/assets/blockly/ardublockly/index.html index 3492834..d16f9e7 100644 --- a/assets/blockly/ardublockly/index.html +++ b/assets/blockly/ardublockly/index.html @@ -20,7 +20,7 @@ - + --> diff --git a/assets/blockly/ardublockly/msg/de.js b/assets/blockly/ardublockly/msg/de.js index 1f00f18..e3c156f 100644 --- a/assets/blockly/ardublockly/msg/de.js +++ b/assets/blockly/ardublockly/msg/de.js @@ -107,6 +107,7 @@ Ardublockly.LOCALISED_TEXT = { catsenseBoxDisplay:"Display", catsenseBoxOutput_SD:"SD", catsenseBoxOutput_Web:"Web", + catsenseBoxOutput_Webserver:"Webserver", catLogic: "Logik", catLoops: "Schleifen", catMath: "Mathematik", diff --git a/assets/blockly/ardublockly/msg/en.js b/assets/blockly/ardublockly/msg/en.js index 38c5c70..36c0006 100644 --- a/assets/blockly/ardublockly/msg/en.js +++ b/assets/blockly/ardublockly/msg/en.js @@ -106,6 +106,7 @@ Ardublockly.LOCALISED_TEXT = { catsenseBoxDisplay:"Display", catsenseBoxOutput_SD:"SD", catsenseBoxOutput_Web:"Web", + catsenseBoxOutput_Webserver:"Webserver", catLogic: "Logic", catLoops: "Loops", catMath: "Math", diff --git a/assets/blockly/blockly/arduino_compressed.js b/assets/blockly/blockly/arduino_compressed.js index e645bce..292520c 100644 --- a/assets/blockly/blockly/arduino_compressed.js +++ b/assets/blockly/blockly/arduino_compressed.js @@ -55,8 +55,8 @@ Blockly.Arduino.addInclude("math","#include "),[a+"("+b+")",Blockly.Ardu Blockly.Arduino.math_change=function(a){var b=Blockly.Arduino.valueToCode(a,"DELTA",Blockly.Arduino.ORDER_ADDITIVE)||"0";return Blockly.Arduino.variableDB_.getName(a.getFieldValue("VAR"),Blockly.Variables.NAME_TYPE)+" += "+b+";\n"};Blockly.Arduino.math_round=Blockly.Arduino.math_single;Blockly.Arduino.math_trig=Blockly.Arduino.math_single;Blockly.Arduino.math_on_list=Blockly.Arduino.noGeneratorCodeInline; Blockly.Arduino.math_modulo=function(a){var b=Blockly.Arduino.valueToCode(a,"DIVIDEND",Blockly.Arduino.ORDER_MULTIPLICATIVE)||"0";a=Blockly.Arduino.valueToCode(a,"DIVISOR",Blockly.Arduino.ORDER_MULTIPLICATIVE)||"0";return[b+" % "+a,Blockly.Arduino.ORDER_MULTIPLICATIVE]}; Blockly.Arduino.math_constrain=function(a){var b=Blockly.Arduino.valueToCode(a,"VALUE",Blockly.Arduino.ORDER_NONE)||"0",c=Blockly.Arduino.valueToCode(a,"LOW",Blockly.Arduino.ORDER_NONE)||"0";a=Blockly.Arduino.valueToCode(a,"HIGH",Blockly.Arduino.ORDER_NONE)||"0";return["("+b+" < "+c+" ? "+c+" : ( "+b+" > "+a+" ? "+a+" : "+b+"))",Blockly.Arduino.ORDER_UNARY_POSTFIX]}; -Blockly.Arduino.math_random_int=function(a){var b=Blockly.Arduino.valueToCode(a,"FROM",Blockly.Arduino.ORDER_NONE)||"0";a=Blockly.Arduino.valueToCode(a,"TO",Blockly.Arduino.ORDER_NONE)||"0";var c=Blockly.Arduino.variableDB_.getDistinctName("math_random_int",Blockly.Generator.NAME_TYPE);Blockly.Arduino.math_random_int.random_function=c;return[Blockly.Arduino.addFunction("mathRandomInt",["int "+Blockly.Arduino.DEF_FUNC_NAME+"(int min, int max) {"," if (min > max) {\n // Swap min and max to ensure min is smaller.\n int temp = min;\n min = max;\n max = temp;\n }\n return min + (rand() % (max - min + 1));\n}"].join("\n"))+ -"("+b+", "+a+")",Blockly.Arduino.ORDER_UNARY_POSTFIX]};Blockly.Arduino.math_random_float=function(a){return["(rand() / RAND_MAX)",Blockly.Arduino.ORDER_UNARY_POSTFIX]};Blockly.Arduino.spi={}; +Blockly.Arduino.math_random_int=function(a){var b=Blockly.Arduino.valueToCode(a,"FROM",Blockly.Arduino.ORDER_NONE)||"0";a=Blockly.Arduino.valueToCode(a,"TO",Blockly.Arduino.ORDER_NONE)||"0";var c=Blockly.Arduino.variableDB_.getDistinctName("math_random_int",Blockly.Generator.NAME_TYPE);Blockly.Arduino.setups_.init_rand="randomSeed(analogRead(0));";Blockly.Arduino.math_random_int.random_function=c;return[Blockly.Arduino.addFunction("mathRandomInt",["int "+Blockly.Arduino.DEF_FUNC_NAME+"(int min, int max) {", +" if (min > max) {\n // Swap min and max to ensure min is smaller.\n int temp = min;\n min = max;\n max = temp;\n }\n return min + (rand() % (max - min + 1));\n}"].join("\n"))+"("+b+", "+a+")",Blockly.Arduino.ORDER_UNARY_POSTFIX]};Blockly.Arduino.math_random_float=function(a){return["(rand() / RAND_MAX)",Blockly.Arduino.ORDER_UNARY_POSTFIX]};Blockly.Arduino.spi={}; Blockly.Arduino.spi_setup=function(a){var b=a.getFieldValue("SPI_ID"),c=a.getFieldValue("SPI_SHIFT_ORDER"),d=a.getFieldValue("SPI_CLOCK_DIVIDE");a=a.getFieldValue("SPI_MODE");Blockly.Arduino.addInclude("spi","#include ");Blockly.Arduino.addSetup("spi_order",b+".setBitOrder("+c+");",!0);Blockly.Arduino.addSetup("spi_mode",b+".setDataMode("+a+");",!0);Blockly.Arduino.addSetup("spi_div",b+".setClockDivider("+d+");",!0);Blockly.Arduino.addSetup("spi_begin",b+".begin();",!0);return""}; Blockly.Arduino.spi_transfer=function(a){var b=a.getFieldValue("SPI_ID"),c=a.getFieldValue("SPI_SS"),d=Blockly.Arduino.valueToCode(a,"SPI_DATA",Blockly.Arduino.ORDER_ATOMIC)||"0";Blockly.Arduino.addInclude("spi","#include ");Blockly.Arduino.addSetup("spi_begin",b+".begin();",!1);for(var e=Blockly.Arduino.Boards.selected.spiPins[b],f=0;f\n Adafruit_NeoPixel rgb_led_"+a+" = Adafruit_NeoPixel(1,"+a+",NEO_GRB + NEO_KHZ800);\n";Blockly.Arduino.setups_["setup_rgb_led"+ +Blockly.Arduino.sensebox_rgb_led=function(){var a=this.getFieldValue("PIN"),b=Blockly.Arduino.valueToCode(this,"RED",Blockly.Arduino.ORDER_ATOMIC)||"0",c=Blockly.Arduino.valueToCode(this,"GREEN",Blockly.Arduino.ORDER_ATOMIC)||"0",d=Blockly.Arduino.valueToCode(this,"BLUE",Blockly.Arduino.ORDER_ATOMIC)||"0";Blockly.Arduino.definitions_["define_rgb_led"+a]="#include \n Adafruit_NeoPixel rgb_led_"+a+" = Adafruit_NeoPixel(1,"+a+",NEO_RGB + NEO_KHZ800);\n";Blockly.Arduino.setups_["setup_rgb_led"+ a]="rgb_led_"+a+".begin();";return"rgb_led_"+a+".setPixelColor(0,rgb_led_"+a+".Color("+b+","+c+","+d+"));\n"+("rgb_led_"+a+".show();")};Blockly.Arduino.sensebox_serial_print=function(){Blockly.Arduino.setups_.sensebox_serial_print="//Setup Serial Print\n Serial.begin(9600);\n";var a=this.getFieldValue("LINEBREAK");a="TRUE"==a?"ln":"";var b=Blockly.Arduino.valueToCode(this,"TEXT",Blockly.Arduino.ORDER_ATOMIC)||'"Keine Eingabe"';return"Serial.print"+a+"("+b+");\n"}; -Blockly.Arduino.sensebox_sd_create_file=function(a){a=this.getFieldValue("Filename");Blockly.Arduino.includes_.library_spi="#include ";Blockly.Arduino.includes_.library_sd="#include ";Blockly.Arduino.userFunctions_["define_sd"+a]="File dataFile"+a+";";Blockly.Arduino.setups_.sensebox_sd="SD.begin(28);";Blockly.Arduino.setups_["sensebox_sd"+a]="dataFile"+a+' = SD.open("'+a+'.txt", FILE_WRITE);\ndataFile'+a+".close();\n";return""}; +Blockly.Arduino.sensebox_sd_create_file=function(a){a=this.getFieldValue("Filename");Blockly.Arduino.includes_.library_spi="#include ";Blockly.Arduino.includes_.library_sd="#include ";Blockly.Arduino.codeFunctions_.define_sd="File dataFile"+a+";";Blockly.Arduino.setups_.sensebox_sd="SD.begin(28);";Blockly.Arduino.setups_["sensebox_sd"+a]="dataFile"+a+' = SD.open("'+a+'.txt", FILE_WRITE);\ndataFile'+a+".close();\n";return""}; Blockly.Arduino.sensebox_sd_open_file=function(a){var b=this.getFieldValue("Filename");Blockly.Arduino.valueToCode(this,"TEXT",Blockly.Arduino.ORDER_ATOMIC);a=Blockly.Arduino.statementToCode(a,"SD");return"dataFile"+b+' = SD.open("'+b+'.txt", FILE_WRITE);\n'+a+("dataFile"+b+".close();\n")}; Blockly.Arduino.sensebox_sd_write_file=function(a){if(null!=this.parentBlock_)var b=this.getSurroundParent().getFieldValue("Filename");a=Blockly.Arduino.valueToCode(this,"DATA",Blockly.Arduino.ORDER_ATOMIC)||'"Keine Eingabe"';var c=this.getFieldValue("linebreak");return"dataFile"+b+".print"+("TRUE"==c?"ln":"")+"("+a+");\n"}; -Blockly.Arduino.sensebox_display_beginDisplay=function(){Blockly.Arduino.includes_.library_spi="#include ";Blockly.Arduino.includes_.library_wire="#include ";Blockly.Arduino.includes_.library_AdafruitGFX="#include ";Blockly.Arduino.includes_.library_AdafruitSSD1306="#include ";Blockly.Arduino.includes_.library_senseBoxIO="#include ";Blockly.Arduino.userFunctions_.define_display="#define OLED_RESET 4\nAdafruit_SSD1306 display(OLED_RESET);"; +Blockly.Arduino.sensebox_display_beginDisplay=function(){Blockly.Arduino.includes_.library_spi="#include ";Blockly.Arduino.includes_.library_wire="#include ";Blockly.Arduino.includes_.library_AdafruitGFX="#include ";Blockly.Arduino.includes_.library_AdafruitSSD1306="#include ";Blockly.Arduino.includes_.library_senseBoxMCU='#include "SenseBoxMCU.h"';Blockly.Arduino.userFunctions_.define_display="#define OLED_RESET 4\nAdafruit_SSD1306 display(OLED_RESET);"; Blockly.Arduino.setups_.sensebox_display_begin="senseBoxIO.powerI2C(true);\ndelay(2000);\ndisplay.begin(SSD1306_SWITCHCAPVCC, 0x3D);\ndisplay.display();\ndelay(100);\ndisplay.clearDisplay();";return""};Blockly.Arduino.sensebox_display_clearDisplay=function(){return"display.clearDisplay();\n"}; Blockly.Arduino.sensebox_display_printDisplay=function(){var a=Blockly.Arduino.valueToCode(this,"X",Blockly.Arduino.ORDER_ATOMIC)||"0",b=Blockly.Arduino.valueToCode(this,"Y",Blockly.Arduino.ORDER_ATOMIC)||"0",c=Blockly.Arduino.valueToCode(this,"printDisplay",Blockly.Arduino.ORDER_ATOMIC)||'"Keine Eingabe"',d=Blockly.Arduino.valueToCode(this,"SIZE",Blockly.Arduino.ORDER_ATOMIC)||"1",e=this.getFieldValue("COLOR");a="display.setCursor("+a+","+b+");\n"+("display.setTextSize("+d+");\n")+("display.setTextColor("+ e+");\n");return a+="display.println("+c+");\n"};Blockly.Arduino.sensebox_display_show=function(a){return""+Blockly.Arduino.statementToCode(a,"SHOW")+"display.display();\n"}; Blockly.Arduino.sensebox_display_plotDisplay=function(){var a=Blockly.Arduino.valueToCode(this,"YLabel",Blockly.Arduino.ORDER_ATOMIC)||"Y",b=Blockly.Arduino.valueToCode(this,"XLabel",Blockly.Arduino.ORDER_ATOMIC)||"X",c=Blockly.Arduino.valueToCode(this,"Title",Blockly.Arduino.ORDER_ATOMIC)||"Title",d=Blockly.Arduino.valueToCode(this,"XRange1",Blockly.Arduino.ORDER_ATOMIC)||"0",e=Blockly.Arduino.valueToCode(this,"XRange2",Blockly.Arduino.ORDER_ATOMIC)||"0",f=Blockly.Arduino.valueToCode(this,"YRange1", Blockly.Arduino.ORDER_ATOMIC)||"0",g=Blockly.Arduino.valueToCode(this,"YRange2",Blockly.Arduino.ORDER_ATOMIC)||"0",h=Blockly.Arduino.valueToCode(this,"XTick",Blockly.Arduino.ORDER_ATOMIC)||"0",k=Blockly.Arduino.valueToCode(this,"YTick",Blockly.Arduino.ORDER_ATOMIC)||"0",l=Blockly.Arduino.valueToCode(this,"TimeFrame",Blockly.Arduino.ORDER_ATOMIC)||"0",m=Blockly.Arduino.valueToCode(this,"plotDisplay",Blockly.Arduino.ORDER_ATOMIC)||'"Keine Eingabe"';Blockly.Arduino.includes_.library_plot="#include "; -Blockly.Arduino.includes_.library_senseBoxIO="#include ";Blockly.Arduino.userFunctions_.define_plot_class="Plot DataPlot(&display);\n";Blockly.Arduino.variables_.define_plot_class="const double TIMEFRAME = "+l+";\n";Blockly.Arduino.setups_.sensebox_plot_setup="DataPlot.setTitle("+c+");\nDataPlot.setXLabel("+b+");\nDataPlot.setYLabel("+a+");\nDataPlot.setXRange("+d+","+e+");\nDataPlot.setYRange("+f+","+g+");\nDataPlot.setXTick("+h+");\nDataPlot.setYTick("+k+");\nDataPlot.setXPrecision(0);\nDataPlot.setYPrecision(0);\n"; -return"DataPlot.clear();"+("double starttime = millis();\ndouble t = 0;\nwhile (t <= TIMEFRAME) {\nt = (millis() - starttime) / 1000.0;\nfloat value = "+m+";\n")+"DataPlot.addDataPoint(t,value);\n}\n"};Blockly.Arduino.sensebox_gps_getValues=function(){Blockly.Arduino.includes_.library_senseBoxMCU='#include "SenseBoxMCU.h"';Blockly.Arduino.userFunctions_.define_gps="GPS gps;";Blockly.Arduino.setups_.sensebox_gps_begin="gps.begin();";return["gps.get"+this.getFieldValue("Values")+"()",Blockly.Arduino.ORDER_ATOMIC]}; -Blockly.Arduino.sensebox_interval_timer=function(a){var b=this.getFieldValue("interval");Blockly.Arduino.variables_.define_interval_variables="const long interval = "+b+";\nlong time_start = 0;\nlong time_actual = 0;";return"time_start = millis();\nif (time_start > time_actual + interval) {\n time_actual = millis();\n"+Blockly.Arduino.statementToCode(a,"DO")+"}\n"};Blockly.Arduino.loops={};Blockly.Arduino.controls_repeat=function(a){var b=Number(a.getFieldValue("TIMES")),c=Blockly.Arduino.statementToCode(a,"DO");c=Blockly.Arduino.addLoopTrap(c,a.id);a=Blockly.Arduino.variableDB_.getDistinctName("count",Blockly.Variables.NAME_TYPE);return"for (int "+a+" = 0; "+a+" < "+b+"; "+a+"++) {\n"+c+"}\n"}; +Blockly.Arduino.userFunctions_.define_plot_class="Plot DataPlot(&display);\n";Blockly.Arduino.variables_.define_plot_class="const double TIMEFRAME = "+l+";\n";Blockly.Arduino.setups_.sensebox_plot_setup="DataPlot.setTitle("+c+");\nDataPlot.setXLabel("+b+");\nDataPlot.setYLabel("+a+");\nDataPlot.setXRange("+d+","+e+");\nDataPlot.setYRange("+f+","+g+");\nDataPlot.setXTick("+h+");\nDataPlot.setYTick("+k+");\nDataPlot.setXPrecision(0);\nDataPlot.setYPrecision(0);\n";return"DataPlot.clear();"+("double starttime = millis();\ndouble t = 0;\nwhile (t <= TIMEFRAME) {\nt = (millis() - starttime) / 1000.0;\nfloat value = "+ +m+";\n")+"DataPlot.addDataPoint(t,value);\n}\n"};Blockly.Arduino.sensebox_display_fillCircle=function(){var a=Blockly.Arduino.valueToCode(this,"X",Blockly.Arduino.ORDER_ATOMIC)||"0",b=Blockly.Arduino.valueToCode(this,"Y",Blockly.Arduino.ORDER_ATOMIC)||"0",c=Blockly.Arduino.valueToCode(this,"Radius",Blockly.Arduino.ORDER_ATOMIC)||"0";return"TRUE"==this.getFieldValue("FILL")?"display.fillCircle("+a+","+b+","+c+",1);\n":"display.drawCircle("+a+","+b+","+c+",1);\n"}; +Blockly.Arduino.sensebox_display_drawRectangle=function(){var a=Blockly.Arduino.valueToCode(this,"X",Blockly.Arduino.ORDER_ATOMIC)||"0",b=Blockly.Arduino.valueToCode(this,"Y",Blockly.Arduino.ORDER_ATOMIC)||"0",c=Blockly.Arduino.valueToCode(this,"width",Blockly.Arduino.ORDER_ATOMIC)||"0",d=Blockly.Arduino.valueToCode(this,"height",Blockly.Arduino.ORDER_ATOMIC)||"0";return"TRUE"==this.getFieldValue("FILL")?"display.fillRect("+a+","+b+","+c+","+d+",1);\n":"display.drawRect("+a+","+b+","+c+","+d+",1);\n"}; +Blockly.Arduino.sensebox_gps_getValues=function(){Blockly.Arduino.includes_.library_senseBoxMCU='#include "SenseBoxMCU.h"';Blockly.Arduino.userFunctions_.define_gps="GPS gps;";Blockly.Arduino.setups_.sensebox_gps_begin="gps.begin();";return["gps.get"+this.getFieldValue("Values")+"()",Blockly.Arduino.ORDER_ATOMIC]}; +Blockly.Arduino.sensebox_interval_timer=function(a){var b=this.getFieldValue("interval");Blockly.Arduino.variables_.define_interval_variables="const long interval = "+b+";\nlong time_start = 0;\nlong time_actual = 0;";return"time_start = millis();\nif (time_start > time_actual + interval) {\n time_actual = millis();\n"+Blockly.Arduino.statementToCode(a,"DO")+"}\n"}; +Blockly.Arduino.sensebox_initialize_http_server=function(a){a=this.getFieldValue("Port");Blockly.Arduino.includes_.library_senseBoxMCU='#include "SenseBoxMCU.h"';Blockly.Arduino.codeFunctions_.define_wifi_server="WiFiServer server("+a+");";Blockly.Arduino.setups_.sensebox_wifi_server_beging="server.begin();";return""}; +Blockly.Arduino.sensebox_http_on_client_connect=function(a){a="WiFiClient client = server.available();\nif (client && client.available()) {\n String request_string = listenClient(client);\n Request request;\n if (parseRequestSafe(request_string, request)) {\n"+Blockly.Arduino.statementToCode(a,"ON_CONNECT")+" }\n";return a+" delay(1);\n client.stop();\n delay(1);\n}\n"};Blockly.Arduino.sensebox_http_method=function(a){return["request.method",Blockly.Arduino.ORDER_ATOMIC]}; +Blockly.Arduino.sensebox_http_uri=function(a){return["request.uri",Blockly.Arduino.ORDER_ATOMIC]};Blockly.Arduino.sensebox_http_protocol_version=function(a){return["request.protocol_version",Blockly.Arduino.ORDER_ATOMIC]};Blockly.Arduino.sensebox_http_user_agent=function(a){return["request.user_agent",Blockly.Arduino.ORDER_ATOMIC]}; +Blockly.Arduino.sensebox_generate_html_doc=function(a){var b=Blockly.Arduino.valueToCode(a,"HEADER",Blockly.Arduino.ORDER_NONE)||'""';a=Blockly.Arduino.valueToCode(a,"BODY",Blockly.Arduino.ORDER_NONE)||'""';return["buildHTML("+b+", "+a+")",Blockly.Arduino.ORDER_ATOMIC]};Blockly.Arduino.sensebox_generate_http_succesful_response=function(a){return"client.println(buildSuccessfulResponse(request, "+(Blockly.Arduino.valueToCode(a,"CONTENT",Blockly.Arduino.ORDER_NONE)||'""')+"));\n"}; +Blockly.Arduino.sensebox_generate_http_not_found_response=function(a){return"client.println(buildNotFoundResponse(request));\n"};Blockly.Arduino.sensebox_ip_address=function(a){return["b->getIpAddress()",Blockly.Arduino.ORDER_ATOMIC]}; +Blockly.Arduino.sensebox_general_html_tag=function(a){var b='buildTag("'+this.getFieldValue("TAG")+'",',c,d=Blockly.Arduino.valueToCode(a,"DO0",Blockly.Arduino.ORDER_NONE);b=0";Blockly.Arduino.includes_.library_sd="#include ";Blockly.Arduino.codeFunctions_["define_sd"+a]="File webFile;";Blockly.Arduino.setups_.sensebox_sd="SD.begin(28);";return[Blockly.Arduino.addFunction("generateHTML",["String generateHTML(){",' webFile = SD.open("'+a+'", FILE_READ);',' String finalString ="";\n while (webFile.available())\n {\n finalString+=(char)webFile.read();\n }\n return finalString;\n}'].join("\n"))+ +"()",Blockly.Arduino.ORDER_ATOMIC]};Blockly.Arduino.loops={};Blockly.Arduino.controls_repeat=function(a){var b=Number(a.getFieldValue("TIMES")),c=Blockly.Arduino.statementToCode(a,"DO");c=Blockly.Arduino.addLoopTrap(c,a.id);a=Blockly.Arduino.variableDB_.getDistinctName("count",Blockly.Variables.NAME_TYPE);return"for (int "+a+" = 0; "+a+" < "+b+"; "+a+"++) {\n"+c+"}\n"}; Blockly.Arduino.controls_repeat_ext=function(a){var b=Blockly.Arduino.valueToCode(a,"TIMES",Blockly.Arduino.ORDER_ADDITIVE)||"0",c=Blockly.Arduino.statementToCode(a,"DO");c=Blockly.Arduino.addLoopTrap(c,a.id);a="";var d=Blockly.Arduino.variableDB_.getDistinctName("count",Blockly.Variables.NAME_TYPE),e=b;b.match(/^\w+$/)||Blockly.isNumber(b)||(e=Blockly.Arduino.variableDB_.getDistinctName("repeat_end",Blockly.Variables.NAME_TYPE),a+="int "+e+" = "+b+";\n");return a+("for (int "+d+" = 0; "+d+" < "+ e+"; "+d+"++) {\n"+c+"}\n")};Blockly.Arduino.controls_whileUntil=function(a){var b="UNTIL"==a.getFieldValue("MODE"),c=Blockly.Arduino.valueToCode(a,"BOOL",b?Blockly.Arduino.ORDER_LOGICAL_OR:Blockly.Arduino.ORDER_NONE)||"false",d=Blockly.Arduino.statementToCode(a,"DO");d=Blockly.Arduino.addLoopTrap(d,a.id);b&&(c.match(/^\w+$/)||(c="("+c+")"),c="!"+c);return"while ("+c+") {\n"+d+"}\n"}; Blockly.Arduino.controls_for=function(a){var b=Blockly.Arduino.variableDB_.getName(a.getFieldValue("VAR"),Blockly.Variables.NAME_TYPE),c=Blockly.Arduino.valueToCode(a,"FROM",Blockly.Arduino.ORDER_ASSIGNMENT)||"0",d=Blockly.Arduino.valueToCode(a,"TO",Blockly.Arduino.ORDER_ASSIGNMENT)||"0",e=Blockly.Arduino.valueToCode(a,"BY",Blockly.Arduino.ORDER_ASSIGNMENT)||"1",f=Blockly.Arduino.statementToCode(a,"DO");f=Blockly.Arduino.addLoopTrap(f,a.id);if(Blockly.isNumber(c)&&Blockly.isNumber(d)&&Blockly.isNumber(e)){var g= parseFloat(c)<=parseFloat(d);a="for ("+b+" = "+c+"; "+b+(g?" <= ":" >= ")+d+"; "+b;b=Math.abs(parseFloat(e));a=(1==b?a+(g?"++":"--"):a+((g?" += ":" -= ")+b))+(") {\n"+f+"}\n")}else a="",g=c,c.match(/^\w+$/)||Blockly.isNumber(c)||(g=Blockly.Arduino.variableDB_.getDistinctName(b+"_start",Blockly.Variables.NAME_TYPE),a+="int "+g+" = "+c+";\n"),c=d,d.match(/^\w+$/)||Blockly.isNumber(d)||(c=Blockly.Arduino.variableDB_.getDistinctName(b+"_end",Blockly.Variables.NAME_TYPE),a+="int "+c+" = "+d+";\n"),d=Blockly.Arduino.variableDB_.getDistinctName(b+ "_inc",Blockly.Variables.NAME_TYPE),a+="int "+d+" = ",a=Blockly.isNumber(e)?a+(Math.abs(e)+";\n"):a+("abs("+e+");\n"),a=a+("if ("+g+" > "+c+") {\n")+(Blockly.Arduino.INDENT+d+" = -"+d+";\n"),a+="}\n",a+="for ("+b+" = "+g+";\n "+d+" >= 0 ? "+b+" <= "+c+" : "+b+" >= "+c+";\n "+b+" += "+d+") {\n"+f+"}\n";return a};Blockly.Arduino.controls_forEach=Blockly.Arduino.noGeneratorCodeLine; -Blockly.Arduino.controls_flow_statements=function(a){switch(a.getFieldValue("FLOW")){case "BREAK":return"break;\n";case "CONTINUE":return"continue;\n"}throw"Unknown flow statement.";};Blockly.Arduino.map={};Blockly.Arduino.base_map=function(a){var b=Blockly.Arduino.valueToCode(a,"NUM",Blockly.Arduino.ORDER_NONE)||"0";a=Blockly.Arduino.valueToCode(a,"DMAX",Blockly.Arduino.ORDER_ATOMIC)||"0";return["map("+b+", 0, 1024, 0, "+a+")",Blockly.Arduino.ORDER_NONE]};Blockly.Arduino.text={};Blockly.Arduino.text=function(a){return[Blockly.Arduino.quote_(a.getFieldValue("TEXT")),Blockly.Arduino.ORDER_ATOMIC]}; +Blockly.Arduino.controls_flow_statements=function(a){switch(a.getFieldValue("FLOW")){case "BREAK":return"break;\n";case "CONTINUE":return"continue;\n"}throw"Unknown flow statement.";};Blockly.Arduino.map={};Blockly.Arduino.base_map=function(a){var b=Blockly.Arduino.valueToCode(a,"NUM",Blockly.Arduino.ORDER_NONE)||"0",c=Blockly.Arduino.valueToCode(a,"FMIN",Blockly.Arduino.ORDER_ATOMIC)||"0",d=Blockly.Arduino.valueToCode(a,"FMAX",Blockly.Arduino.ORDER_ATOMIC)||"0",e=Blockly.Arduino.valueToCode(a,"DMIN",Blockly.Arduino.ORDER_ATOMIC)||"0";a=Blockly.Arduino.valueToCode(a,"DMAX",Blockly.Arduino.ORDER_ATOMIC)||"0";return["map("+b+","+c+","+d+","+e+","+a+")",Blockly.Arduino.ORDER_NONE]};Blockly.Arduino.text={};Blockly.Arduino.text=function(a){return[Blockly.Arduino.quote_(a.getFieldValue("TEXT")),Blockly.Arduino.ORDER_ATOMIC]}; Blockly.Arduino.text_join=function(a){if(0==a.itemCount_)return['""',Blockly.Arduino.ORDER_ATOMIC];if(1==a.itemCount_)return["String("+(Blockly.Arduino.valueToCode(a,"ADD0",Blockly.Arduino.ORDER_UNARY_POSTFIX)||'""')+")",Blockly.Arduino.ORDER_UNARY_POSTFIX];var b=[];for(var c=0;c{"use strict";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()')}); -a("es6-impl",function(){return!0});a("es7",function(){return b("2 ** 2 == 4")});a("es8",function(){return b("async () => 1, true")});a("es9",function(){return b("({...rest} = {}), true")});a("es_next",function(){return!1});return{target:c,map:d}},goog.Transpiler.prototype.needsTranspile=function(a,b){if("always"==goog.TRANSPILE)return!0;if("never"==goog.TRANSPILE)return!1;if(!this.requiresTranspilation_){var c=this.createRequiresTranspilation_();this.requiresTranspilation_=c.map;this.transpilationTarget_= -this.transpilationTarget_||c.target}if(a in this.requiresTranspilation_)return this.requiresTranspilation_[a]?!0:!goog.inHtmlDocument_()||"es6"!=b||"noModule"in goog.global.document.createElement("script")?!1:!0;throw Error("Unknown language mode: "+a);},goog.Transpiler.prototype.transpile=function(a,b){return goog.transpile_(a,b,this.transpilationTarget_)},goog.transpiler_=new goog.Transpiler,goog.protectScriptTag_=function(a){return a.replace(/<\/(SCRIPT)/ig,"\\x3c/$1")},goog.DebugLoader_=function(){this.dependencies_= -{};this.idToPath_={};this.written_={};this.loadingDeps_=[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory(goog.transpiler_);this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){for(var e=[],f=0;f 1, true")});a("es9",function(){return b("({...rest} = {}), true")});a("es_next",function(){return!1});return{target:c,map:d}},goog.Transpiler.prototype.needsTranspile=function(a,b){if("always"==goog.TRANSPILE)return!0;if("never"==goog.TRANSPILE)return!1;if(!this.requiresTranspilation_){var c=this.createRequiresTranspilation_();this.requiresTranspilation_=c.map;this.transpilationTarget_=this.transpilationTarget_|| +c.target}if(a in this.requiresTranspilation_)return this.requiresTranspilation_[a]?!0:!goog.inHtmlDocument_()||"es6"!=b||"noModule"in goog.global.document.createElement("script")?!1:!0;throw Error("Unknown language mode: "+a);},goog.Transpiler.prototype.transpile=function(a,b){return goog.transpile_(a,b,this.transpilationTarget_)},goog.transpiler_=new goog.Transpiler,goog.protectScriptTag_=function(a){return a.replace(/<\/(SCRIPT)/ig,"\\x3c/$1")},goog.DebugLoader_=function(){this.dependencies_={}; +this.idToPath_={};this.written_={};this.loadingDeps_=[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory(goog.transpiler_);this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){for(var e=[],f=0;f\x3c/script>")}else{var e=b.createElement("script");e.defer=goog.Dependency.defer_;e.async=!1;e.type="text/javascript";(d=goog.getScriptNonce())&&e.setAttribute("nonce",d);goog.DebugLoader_.IS_OLD_IE_?(a.pause(),e.onreadystatechange=function(){if("loaded"== -e.readyState||"complete"==e.readyState)a.loaded(),a.resume()}):e.onload=function(){e.onload=null;a.loaded()};e.src=this.path;b.head.appendChild(e)}}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),"deps.js"==this.relativePath?(goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."),a.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e)},goog.inherits(goog.Es6ModuleDependency, -goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(a,b){b?d.write('