(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{218:function(t,n,s){"use strict";s.r(n);var a=s(0),e=Object(a.a)({},function(){var t=this,n=t.$createElement,s=t._self._c||n;return s("div",{staticClass:"content"},[s("h1",{attrs:{id:"renderprops"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#renderprops","aria-hidden":"true"}},[t._v("#")]),t._v(" RenderProps "),s("Badge",{attrs:{text:"3.0.0"}})],1),t._v(" "),t._m(0),t._v(" "),t._m(1),t._v(" "),t._m(2),t._m(3),t._v(" "),t._m(4),t._m(5),t._v(" "),t._m(6),t._m(7),t._v(" "),t._m(8),s("hr"),t._v(" "),t._m(9),t._v(" "),t._m(10)])},[function(){var t=this.$createElement,n=this._self._c||t;return n("p",[n("code",[this._v("RenderProps")]),this._v(" encapsulates passing arguments from a node visitor to a node renderer.\nWithout hardcoding arguments into an API method calls.")])},function(){var t=this.$createElement,n=this._self._c||t;return n("p",[n("code",[this._v("RenderProps")]),this._v(" is the state collection for "),n("code",[this._v("Props")]),this._v(" that are set by a node visitor and\nretrieved by a node renderer.")])},function(){var t=this,n=t.$createElement,s=t._self._c||n;return s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{attrs:{class:"token class-name"}},[t._v("Prop")]),s("span",{attrs:{class:"token generics function"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("T"),s("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@NonNull")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{attrs:{class:"token generics function"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("T"),s("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),t._v(" Prop"),s("span",{attrs:{class:"token generics function"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("T"),s("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),t._v(" "),s("span",{attrs:{class:"token function"}},[t._v("of")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@NonNull")]),t._v(" String name"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{attrs:{class:"token class-name"}},[t._v("Prop")]),s("span",{attrs:{class:"token operator"}},[t._v("<")]),s("span",{attrs:{class:"token operator"}},[t._v(">")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("name"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),s("span",{attrs:{class:"token comment"}},[t._v("/* ... */")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,n=this._self._c||t;return n("p",[this._v("For example "),n("code",[this._v("CorePlugin")]),this._v(" defines a "),n("em",[this._v("Heading level")]),this._v(" prop (inside "),n("code",[this._v("CoreProps")]),this._v(" class):")])},function(){var t=this,n=t.$createElement,s=t._self._c||n;return s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("final")]),t._v(" Prop"),s("span",{attrs:{class:"token generics function"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("Integer"),s("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),t._v(" HEADING_LEVEL "),s("span",{attrs:{class:"token operator"}},[t._v("=")]),t._v(" Prop"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("of")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token string"}},[t._v('"heading-level"')]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])},function(){var t=this.$createElement,n=this._self._c||t;return n("p",[this._v("Then CorePlugin registers a "),n("code",[this._v("Heading")]),this._v(" node visitor and applies heading value:")])},function(){var t=this,n=t.$createElement,s=t._self._c||n;return s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@Override")]),t._v("\n"),s("span",{attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{attrs:{class:"token function"}},[t._v("configureVisitor")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@NonNull")]),t._v(" MarkwonVisitor"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Builder builder"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n builder"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("on")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Heading"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token keyword"}},[t._v("class")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{attrs:{class:"token class-name"}},[t._v("MarkwonVisitor"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("NodeVisitor")]),s("span",{attrs:{class:"token generics function"}},[s("span",{attrs:{class:"token punctuation"}},[t._v("<")]),t._v("Heading"),s("span",{attrs:{class:"token punctuation"}},[t._v(">")])]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@Override")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{attrs:{class:"token function"}},[t._v("visit")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@NonNull")]),t._v(" MarkwonVisitor visitor"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@NonNull")]),t._v(" Heading heading"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n \n "),s("span",{attrs:{class:"token comment"}},[t._v("/* Heading node handling logic */")]),t._v("\n\n "),s("span",{attrs:{class:"token comment"}},[t._v("// set heading level")]),t._v("\n CoreProps"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("HEADING_LEVEL"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("set")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("visitor"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("renderProps")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" heading"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("getLevel")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n \n "),s("span",{attrs:{class:"token comment"}},[t._v("// a helper method to apply span(s) for a node ")]),t._v("\n "),s("span",{attrs:{class:"token comment"}},[t._v("// (internally obtains a SpanFactory for Heading or silently ignores")]),t._v("\n "),s("span",{attrs:{class:"token comment"}},[t._v("// this call if no factory for a Heading is registered)")]),t._v("\n visitor"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("setSpansForNodeOptional")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("heading"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" start"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{attrs:{class:"token comment"}},[t._v("/* Heading node handling logic */")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,n=this._self._c||t;return n("p",[this._v("And finally "),n("code",[this._v("HeadingSpanFactory")]),this._v(" (which is also registered by "),n("code",[this._v("CorePlugin")]),this._v("):")])},function(){var t=this,n=t.$createElement,s=t._self._c||n;return s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),s("span",{attrs:{class:"token class-name"}},[t._v("HeadingSpanFactory")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("implements")]),t._v(" "),s("span",{attrs:{class:"token class-name"}},[t._v("SpanFactory")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@Nullable")]),t._v("\n "),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@Override")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("public")]),t._v(" Object "),s("span",{attrs:{class:"token function"}},[t._v("getSpans")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@NonNull")]),t._v(" MarkwonConfiguration configuration"),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{attrs:{class:"token annotation punctuation"}},[t._v("@NonNull")]),t._v(" RenderProps props"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{attrs:{class:"token class-name"}},[t._v("HeadingSpan")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n configuration"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("theme")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n CoreProps"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),t._v("HEADING_LEVEL"),s("span",{attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{attrs:{class:"token function"}},[t._v("require")]),s("span",{attrs:{class:"token punctuation"}},[t._v("(")]),t._v("props"),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])},function(){var t=this.$createElement,n=this._self._c||t;return n("p",[n("code",[this._v("Prop")]),this._v(" has these methods:")])},function(){var t=this,n=t.$createElement,s=t._self._c||n;return s("ul",[s("li",[s("code",[t._v("@Nullable T get(RenderProps)")]),t._v(" - returns value stored in RenderProps or "),s("code",[t._v("null")]),t._v(" if none is present")]),t._v(" "),s("li",[s("code",[t._v("@NonNull T get(RenderProps, @NonNull T defValue)")]),t._v(" - returns value stored in RenderProps or default value (this method always return non-null value)")]),t._v(" "),s("li",[s("code",[t._v("@NonNull T require(RenderProps)")]),t._v(" - returns value stored in RenderProps or "),s("em",[t._v("throws an exception")]),t._v(" if none is present")]),t._v(" "),s("li",[s("code",[t._v("void set(RenderProps, @Nullable T value)")]),t._v(" - updates value stored in RenderProps, passing "),s("code",[t._v("null")]),t._v(" as value is the same as calling "),s("code",[t._v("clear")])]),t._v(" "),s("li",[s("code",[t._v("void clear(RenderProps)")]),t._v(" - clears value stored in RenderProps")])])}],!1,null,null,null);e.options.__file="render-props.md";n.default=e.exports}}]);