{"id":13742594,"url":"https://github.com/hyzhak/fluid-feathers","last_synced_at":"2026-01-21T11:10:59.451Z","repository":{"id":5217998,"uuid":"6393954","full_name":"hyzhak/fluid-feathers","owner":"hyzhak","description":"Fluent interfaces for declarative description of GUI in FeathersUI also in Starling frameworks","archived":false,"fork":false,"pushed_at":"2015-04-01T21:59:25.000Z","size":159,"stargazers_count":13,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-09T11:45:36.455Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"ActionScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"sindresorhus/awesome","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hyzhak.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-10-25T20:24:44.000Z","updated_at":"2020-09-18T16:41:27.000Z","dependencies_parsed_at":"2022-09-11T07:20:44.659Z","dependency_job_id":null,"html_url":"https://github.com/hyzhak/fluid-feathers","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hyzhak/fluid-feathers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyzhak%2Ffluid-feathers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyzhak%2Ffluid-feathers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyzhak%2Ffluid-feathers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyzhak%2Ffluid-feathers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hyzhak","download_url":"https://codeload.github.com/hyzhak/fluid-feathers/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyzhak%2Ffluid-feathers/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28632378,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T05:00:33.915Z","updated_at":"2026-01-21T11:10:59.430Z","avatar_url":"https://github.com/hyzhak.png","language":"ActionScript","funding_links":[],"categories":["User Interface"],"sub_categories":["UI Components"],"readme":"Fluid feathers\n==============\n\nSkatch-up of fluent interfaces for declarative description of GUI in FeathersUI also Starling framework.\nInspired by Sibirjak DataProvider Controls Examples [https://github.com/kakenbok/ActionScript-DataProvider-Controls]\n\n\nExamples\n========\n\n## Form\n\n![HelloWorld Form](http://i.imgur.com/BxTQx.png)\n\n```actionscript\nvar b : UIBuilder = getUIBuilder();\n\nvar container : DisplayObject = b.vGroup()\n\t.gap(16)\n\t.contain(\n\t\tb.label()\n\t\t\t.text(\"Hello World!\")\n\t\t\t.build(),\n\t\tb.hGroup()\n\t\t\t.contain(\n\t\t\t\tb.label()\n\t\t\t\t\t.text(\"Long Blah-Blah-Blah\\nBlah-Blah-Blah\\nBlah-Blah-Blah\\nBlah-Blah-Blah!\")\n\t\t\t\t\t.build()\n\t\t\t).build(),\n\t\tb.hGroup()\n\t\t\t.gap(4)\n\t\t\t.contain(\n\t\t\t\tb.button()\n\t\t\t\t\t.label(\"Help\")\n\t\t\t\t\t.onTriggered(onButtonTriggered)\n\t\t\t\t\t.build(),\n\t\t\t\tb.button()\n\t\t\t\t\t.label(\"Ok\")\n\t\t\t\t\t.onTriggered(onButtonTriggered)\n\t\t\t\t\t.build(),\n\t\t\t\tb.button()\n\t\t\t\t\t.label(\"Cancel\")\n\t\t\t\t\t.onTriggered(onButtonTriggered)\n\t\t\t\t\t.build()\n\t\t\t).build()\n\t)\n\t.x(20).y(20)\n\t.width(stage.stageWidth)\n\t.height(stage.stageHeight)\n\t.buildAndAddTo(this);\n```\n\n## Button and Label\n\n```actionscript\n\n//Before -----------------------------------------------------\n\n_button = new Button();\n_button.label = \"Click Me\";\n_button.addEventListener(Event.TRIGGERED, button_triggeredHandler);\n_button.x = 200;\n_button.y = 200;\naddChild(_button);\n\nvar label:Label = new Label();\nlabel.text = \"Hello World!\";\nlabel.x = 50;\nlabel.y = 200;\naddChild(label);\n\n//After -----------------------------------------------------\n\nvar b : UIBuilder = getUIBuilder();\n\n_button = b.button()\n\t\t\t.label(\"Click Me\")\n\t\t\t.onTriggered(button_triggeredHandler)\n\t\t\t.x(200)\n\t\t\t.y(200)\n\t\t\t.buildAndAddTo(this) as Button;\n\nb.label()\n\t.text(\"Hello World!\")\n\t.x(50)\n\t.y(200)\n\t.buildAndAddTo(this);\n\n```\n\n## List\n\n```actionscript\n\n//Before -----------------------------------------------------\n\nvar buttonA:Button = new Button();\nbuttonA.label = \"Click Me A\";\nbuttonA.addEventListener(Event.TRIGGERED, button_triggeredHandler);\n\nvar buttonB:Button = new Button();\nbuttonB.label = \"Click Me B\";\nbuttonB.addEventListener(Event.TRIGGERED, button_triggeredHandler);\n\nvar label:Label = new Label();\nlabel.text = \"Hello World!\";\n\nvar listPicker:PickerList = new PickerList();\nlistPicker.dataProvider = new ListCollection([\n\t{label:\"item A\"},\n\t{label:\"item B\"},\n\t{label:\"item C\"}\n]);\n\n_list = new List();\n_list.isSelectable = false;\n_list.dataProvider = new ListCollection(\n\t[\n\t\t{ label: \"button A\", accessory: buttonA },\n\t\t{ label: \"button B\", accessory: buttonB },\n\t\t{ label: \"label\", accessory: label },\n\t\t{ label: \"listPicker\", accessory: listPicker }\n\t]);\t\t\t\naddChild(_list);\n\n_list.x = 0;\n_list.y = 0;\n_list.width = stage.stageWidth;\n_list.height = stage.stageHeight;\n\n//After -----------------------------------------------------\n\nvar b : UIBuilder = getUIBuilder();\n_list = b.list()\n\t\t\t.dataProvider(new ListCollection([\n\t\t\t\t{ \n\t\t\t\t\tlabel: \"button A\", \n\t\t\t\t\taccessory: b.button()\n\t\t\t\t\t\t\t\t\t.label(\"Click Me A\")\n\t\t\t\t\t\t\t\t\t.onTriggered(button_triggeredHandler)\n\t\t\t\t\t\t\t\t\t.build()\n\t\t\t\t},\n\t\t\t\t{ \n\t\t\t\t\tlabel: \"button B\", \n\t\t\t\t\taccessory: b.button()\n\t\t\t\t\t\t\t\t\t.label(\"Click Me B\")\n\t\t\t\t\t\t\t\t\t.onTriggered(button_triggeredHandler)\n\t\t\t\t\t\t\t\t\t.build()\n\t\t\t\t},\n\t\t\t\t{ \n\t\t\t\t\tlabel: \"label\", \n\t\t\t\t\taccessory: b.label()\n\t\t\t\t\t\t\t\t\t.text(\"Hello World!\")\n\t\t\t\t\t\t\t\t\t.build()\n\t\t\t\t},\n\t\t\t\t{ \n\t\t\t\t\tlabel: \"listPicker\", \n\t\t\t\t\taccessory: b.pickerList()\n\t\t\t\t\t\t\t\t\t.dataProvider(new ListCollection([\n\t\t\t\t\t\t\t\t\t\t{label:\"item A\"},\n\t\t\t\t\t\t\t\t\t\t{label:\"item B\"},\n\t\t\t\t\t\t\t\t\t\t{label:\"item C\"}\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t.build()\n\t\t\t\t}\n\t\t\t]))\n\t\t\t.selectable(false)\n\t\t\t.x(0).y(0)\n\t\t\t.width(stage.stageWidth)\n\t\t\t.height(stage.stageHeight)\n\t\t\t.buildAndAddTo(this) as List;\n\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyzhak%2Ffluid-feathers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyzhak%2Ffluid-feathers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyzhak%2Ffluid-feathers/lists"}